1626434812-e667f6b6e7e69d3a0798830a58e9075b (844135), страница 31
Текст из файла (страница 31)
Системы, осиоваииые иа зиаииях 157 Сору (С~г1-С) Копирование выделенного фрагмента в буфер обмена. Райе ~С$г1-Ч) Копирование содержимого буфера обмена в окно редактирования. Удаление выделенного фрагмента. 6.3.4. Пример решения задачи с помощью СЫР8 6.3.4.1. Постановка задачи Написать программу для решения следующего ребуса: ОЕКА1.Р + ЙОХАН) = КОВЕКТ В словах бЕКА1Л), 0ОХА1.0 и КОВЕКТ вместо букв необходимо поставить цифры таким образом, чтобы получилось математически правильное выражение. Причем разным буквам должны соответствовать разные цифры. 6.3.4.3. Решение задачи в С1.1РЗ Итак, сформулируем описанный выше подход к решению в терминах С1 1РБ. Представим комбинации из одной буквы и одной цифры в виде фактов: 6З.4.2.
Алгоритм решения Рассмотрим первые разряды всех трех чисел, Считаем, что первый разряд— это единицы, второй разряд — это десятки, третий — сотни и тд. Очевидно, что нахождение множества пар (буква — цифра), входящих в решение задачи, должно удовлетворять условию: ~ ( ~ О + 0 ) пюд 10 ) = Т ) Й ( О? Т ) (6.3.1) Теперь рассмотрим второй разряд вместе с первым. Необходимо подобрать такие числа 1.
и К, чтобы остаток от деления суммы (Ь*10+ 1 ~10+?Э+ О) на 100 был равен (К~10+ Т). И при этом 1. и К не были равны между собой и не были равны О и Т. Т.е. среди множества пар ~буква — цифра), удовлетворяющих первому условию, необходимо найти такие, что, ((( 1."'10+ 1.~10+ О+ О) гпод 100) (6.3.2) = 1' К*10 + Т ) ) а ~ В . Т . 1.. К ). Продолжая действовать подобным образом, можно выписать конечное условие, которому должны удовлетворять пары ~буква — цифра), входящие в решение данной задачи.
Базы данных. Интеллектуальна» обработка информации (сотЬ)папоп 0 0)„(сотЪ|пайоп 0 1), (сотЬ1пайоп А 1) и т.д. Для начала составим правило для нахождения комбинаций (буква — цифра), удовлетворяюших условию (6.3.1): (бейхи1е й1.пс) вс).пт.з.сп (сов)э~пав.~оп В ?д) (ссгпЬ1па~хсп Т ?сй-?с() (~аз~ (= (и'сс( (+ ?д М) 10) ? г.) ) => (рт1.п1опт. ~ "А БсХц~1оп ~а:" т. ~) (рг1пгсц1 ~ " В = " ?б 1) (рг~пт.опГ.
~ " Т = " ?с с) ) Данное правило выполнимо только в том случае, если в списке фактов сушествуют факты, удовлетворяюшие условиям: 1. (сотЬ1пабоп О?д) — все факты, в которых в первой и во второй позициях стоят "сотЬ1пайоп" и "0" соответственно. А в третьей позиции любое значение, это значение присваивается переменной?д. 2. (сотЬ(па11оп Т?(й-?д) — все факты, в которых в первой и во второй позициях стоят "сотЬ1па(юп" и "Т" соответственно. А в третьей позиции любое значение, только не то, которое было присвоено переменной?д, это значение присваивается переменной?~. Знак й означает логическое АЫВ, а знак - — логическое НОТ.
Выражение?(й-? д означает, что переменная ?~ может принимать значение, не равное значению переменной?д. 3. ((ез( (= (пюд (+?д?д) 10)?()) — это условие проверяет на равенство два выражения (хпод (+?д?д) 10) и (?1) (см. условие (6.3.1)). Команда (рпп(оШ т "А 8о!цпоп 1з:" й й) выводит на экран информацию. Информация, которую необходимо вывести на экран, указывается в полях, разделенных пробелами, после команды. Чтобы вывести текст, его необходимо заключить в кавычки, а перед кавычками поставить букву 1. Эта буква указывает, что в следующем поле находится текст в кавычках, который необходимо напечатать.
Если после буквы ( нет текста в кавычках, то происходит перевод курсора на новую строку. Перевести курсор на новую строку можно параметром сгГ. Он указывается без кавычек. Чтобы вывести значение переменной, надо просто указать имя переменной. Например: (рх'1.ПГ,ОПГ. Г. " Т = " ?~ ~) сначала выводит текст Т=, затем значение переменной?~ и затем переводит курсор на новую строку. Данное правило позволяет найти все комбинации (буква — цифра), удовлетворяюшие условию для первых разрядов трех чисел.
По аналогии с этим правилам и используя соображения, высказанные в п. 6.3.4.2, составим конечное правило для нахождения решения: Глава 6. Системы, основанные на знаниях (бейгц1е Хйпб-зо1ы~1оп (сотпЬюа11оп 0 ?б) (совЬ1паг1оп Т ?гй-?б) (~ез~ (= (гпоб (+ ?б ?б) 10) ?~)) (согпЬ1па11оп 1, ?1й-?бй-?1) (сотЬ1паг1оп В ?гй-?бй-?~й-?1) (гез~ (= (хпоб (+ ?б ?б (* 10 ?1) (* 10 ?1)) 100) (+ (* 10 ?г) ?Г.))) (соп~Ь1па~~оп Ь ?ай-?бй-?гй-?1й-?г) (совЬхпаг.акоп Е ?ей-?бй-?~й-?1й-?гй-?а) (~ез~ (= (тоб (+ ?б ?б (* 10 ?1) (* 10 ?1) (* 100 ?а) (* 100 ?а) ) 1000) (+ (» 100 ?е) (* 10 ?г) ?~) ) ) (соп~Ь1па~~оп Н ?пй-?бй-?1й-?1й-?гй-?ай ?е) (сопй1паг1оп В ?Ьй-?бй-?И-?1й-?гй-?ай-?ей-?п) (гезу (= (тоб (+ ?б ?б (* 10 ?1) (* 10 ?1) (* 100 ?а) (* 100 ?а) (* 1000 ?г) (* 1000 ?и)) 10000) (+ (* 1000 ?Ь) (" 100 ?е) (* 10 ?г) ?~))) (союз.пагюп О ?ой»?бй-?~й-?1й-?гй-?ай-?ей-?пй»?Ь) (соп~Ь~па~1оп 6 ?дй-?бй-?~й-?1й-?гй-?ай-?ей-?пй-?Ьй?о) (гезу (= (+ ?б ?б (* 10 ?1) (* 10 ?1) (" 100 ?а) (* 100 ?а) (* 1000 ?г) (* 1000 ?и) (» 10000 ?е) (" 10000 ?о) (* 100000 ?д) (* 100000 ?б) ) (+ (» 100000 ?г) (* 10000 ?о) (* 1000 ?Ь) (* 100 ?е) (* 10 ?г) ?~) ) ) (ргхпгоп~ ~ "А Яо1ыТ1оп 1з:" г ~) (рпп~о~г.
~ " 6 = " ?ц г.) (рг1п1оц~ ~ " Е = " ?е г.) (ргзпг.си~ 1 " В. = " ?г г.) (ргхпТои~ ~ " А = " ?а ~) (рг~пгоцг 1 " 1 = " ?1 1) (ргЫ~оп1 г. " 0 = " ?б г) (рг1п~оыг. ~ " О = " ?о ~) (рп.пг.оы~ Т " И = " ?п ~) (рг1пгоц~ г. " Я = " ~Ь г.) Базы данных. Интеллектуальная о6работка информации (рг1п~оц~ с " Т = " ?~ ~) (рг1пг.оц~ ~ ~) (рг1псоцг г " " ?д ?е ?г ?а ?1 ?б г) (рг'п~оцг ~ " + " М ?о .и ?а ?1 Ы г.) (рг1пгоц+- ~.
и п и 1~ (рг1пгоог г " = " ?х ?о ?Ь ?е ?г ?г. ~ г) ) Теперь для поиска решения остается занести факты, соответствующие ком- бинациям из одной буквы и одной цифры, в список фактов. Эго можно сделать командой аззег~. (авзегг. (сотЬ1паг1оп В О) (совЬ1паг.акоп В 1) (согпЬз.паг.1оп Ь 1) (сопЬЫас1оп 1 9) -.) Однако, т.к. количество фактов равно 100, лучше поступить по-другому. Сопоставим буквам и цифрам следующие факты: (пшпЬег О), (пцгпЬег 1), (пцтЬег 2), ..., (пшпЬег 9) . (1е~~ег 6), (1естег Е), (1е~~ег В), (1ессег Л), (1еГ~ег 1), (1естег Щ, (1еГсег 0), (1есСег И), (1ег.гег Б), (1ессег Т) . Составим правило, по которому в список фактов будут заноситься факты, соответствующие комбинациям из одной буквы и одной цифры.
(с1еХгц1е депегаге совЬЫаг1оп (пшаЬег ?х) (1егсег ?у) > (аавег1 (соп1Ь3-па1хоп (?у ?х) ) ) ) Согласно данному правилу, если в списке фактов присутствуют факты, име- ющие вид (пшпЬег ?х), (1еггег ?у),где вместо переменных стоят вполне конкретные значения, в список фактов добавляется еще один факт— (соп~ЬЫа11оп ? у ? х), в котором вместо переменных стоят значения из фактов. И наконец, составим правило, по которому, во-первых, на экран будет вы- водиться условие задачи, а во-вторых, в список фактов будут заноситься фак- ты, соответствующие буквам и цифрам. Т.к.
это правило должно выполняться всегда, его условная часть будет пустой, (бейго1е а~аггцр — > (рг1пгоц~ ~ Г "Тпе ргоЬ1ев з.в" 1 1) (ргз.пг.оп~ ~ " ( ЕВА1.0" с) Глава 6. Системы, основанные на знаниях Подведем итог. Наша программа состоит из трех правил: я1агхцр, депега(е сотЫпа(1оп и бпла яо!ц6оп. Первое из них выводит на экран условие задачи и добавляет к списку фактов факты, соответствующие отдельным буквам и цифрам. Второе правило, используя факты, введенные в список фактов первым правилом, заносит в список фактов факты, которые представляют собой всевозможные комбинации из десяти цифр и десяти букв. Третье правило позволяет найти среди этих фактов те, которые удовлетворяют условию задачи, и выводит на экран полученное решение.
6.3.4.4. Запуск СЕ|РБ Система СПРЗ 6.1 реализована в виде исполняемого файла с11рячп.ехе, предназначенного для работы в операционных системах %1пдоиа 95 и Мпдоъ я МТ 4.0. После запуска на экране появится диалоговое окно, представленное на пис. 6.5. (рххп1сп1 1 " + (рх Ысоц1 ~ (рх*'проц~ х. (азэехх.
(пигпЬех (пцпй~ех (птпЬег (пыже х (пыпЬех. (пцгпЬех (и Ьех (повЬех (пцп~Ьех (пип~Ьех (1е1т.ех (1ехсех (1ех.х,ех (1есхех (1ег.х.ех (1е1~ех (1ех.хех (1ег.х.ех (1егхех (1есхех ОСИЛЕН" ~) И ~) вовквт" г. ~) О) 1) 2) 3) 4) 5) б) 7) 8) 9) 6) Е) К) А) 1) Ю) О) Ы) 8) Т) ) ) Базы данных Интеллектуальная обработка информации иг Рис, 6.5.
Гчавиое окно СЫРБ 6.1 Рис. 6.6. Открытие всех окон Данная команда открывает все окна. Окно Расй содержит факты из списка фактов. Окно Ааепда содержит все правила из списка активных правил, Для того чтобы иметь возможность наблюдать за всеми изменениями, происходящими в состоянии СЫРЗ, выполните команду А1! АЬоче (см. рис, б.б). Глава б. Системы, основанные на знаниях 6.3.4.5. Ввод программы Ввести программу в СЫРБ можно непосредственно из диалогового окна, появившегося после запуска. Но в этом случае все написанные правила после закрьггия СЫРБ будут потеряны.
Чтобы этого не происходило, необходимо сохранить текст программы в каком-либо файле. Для редактирования файлов в СЕ1РЯ имеется встроенный редактор, Запустить редактор можно, как показано на рис. 6.7: Рис. 6.7. Вызов редактора Внешний вид редактора представлен на рис. 6.8; Рис. 6.8. Главное окно редактора При запуске редактора автоматически создается новый файл с именем шййес1.