В.Н. Пильщиков - Язык Плэнер (1156455), страница 32
Текст из файла (страница 32)
Этот неуспех не должен возобновлять работу второго оператора, так как заранее известно, что в базе данных для каждого населенного пункта х имеется только одно утверждение вида (СТРАНА э УТОПИЯ), и искать другое такое же утверждение бессмысленно. Поэтому-то во втором операторе указана функция ЯЕАВСН1, а пе ЯЕАВСН.
В первом же операторе использована функция БЕАВСН, поскольку при неуспехе этот оператор должен воэобяовэть свою работу и найва название другого города. Еще одной функцией, осуществляющей поиск утверждений, является Функция САЕП1ПАТЕБ: [САМ01ПАТЕБ рог гуре?], РЯПВВ. На первый аргумент этой функции накладываются те же ограничения, что и в функции БЕАВСН, а 'аргумент гуре, который вычисляется, должен быть простой формой.
Если аргумента гуре нет или если его значением является атом АЯЯЕВТ»), то функция в качестве своего аначения выдает список всех утверждений бааы данных, соответствующих обраацу рад вместе с их списками свойств. Возможный пример: ,[САЕП1ПАТЕЯ (ВОХ .Х)] -» ((ВОХ А) (Я1ЕЕ 3) (ВОХ В) () (ВОХ С) (Б1ЕЕ 5 СО1ОПВ ВЕН)) Следует отметить, что функцня САЕП1ПАТЕЯ не выполняет полного сопоставления образца раз с утверждениями. Дело в том, .что такое сопоставление может иметь побочные эффекты, поатому сопоставление образца раз с разными утверждениями происходило бы в разных условиях.
Например, если переменная Х не имела значения, то после сопоставления образца (ВОХ .Х) с первым подходящим утверждением, скажем с (ВОХ А), переменная Х.получила бы значение А, после чего образец не соответствовал бы уже ни утвержденню (ВОХ В), ни утверждению (ВОХ С). Чтобы не бы»о а *Фу,» ~ »р * р» гуре см. $5.5, 153 ло таких нейужкых эффектов, данная функция осуществляет лишь частичное сопоставление, при котором ве вычисляются никакие функция и сопоставители нз обрааца рад не учитываются значеиня никаких переменных образца и никаким переменным ничего не присваивается. Проверяется лишь соответствие атомов и длин 1 списков с верхнего уровня образца раа Например, при таком частичном сопоставлении образец (ОХ [ВЬОСК) .Х) соответствует утверждению (ОХ ВЬОСК ТАВЬЕ) или утверждению (ОХ РВ1ЯМ СОВЕ), но не соответствует утверждениям (АВОУЕ ВЬОСК ТАВЬЕ) и (ОХ РВ13М), а образец (ХОТ (13 МАХ еХ)) соответствует (ХОТ (АТ А В1) ) и не соответствует' (ХОТ %ОМАХ).
Утверждения, которые соответствуют образцу ра1 при этом частичном сопоставлении, являются кандидатами на удачное полков сопоставление с данныи образцом, и именно сппсок таких утверждений и выдается в качестве значения функции САХВ1ВАТЕЯ.— Дапная функция используется в тех случаях, когда требуетсн определить операцию поиска по образцу, отличную от той, что реализуется функцией ЯЕАВСН. Например, можно следующим образом определить функцию ЯЕЕК, которая действует аналогично функции ЯЕАВСН (без ТЕЯТ-аргумента), ко возобновляет свою ра боту только при неуспехе, с которым связано сообщение ВЕРЕАТе [ВЕР1ХЕ ЯЕЕК (ЬАМВВА (еР ) [РВОС (1А А РЬ ) [РВЕТ 1А [САХО1ВАТЕЯ .Р ]] А [А1.Т () [СОХО ([Е1) [МЕЯЯ] ВЕРЕАТ] [СО А]) (Т [РА1Ь [МЕЯЯ]))]) В [СОХО ([ЕМРТг' .ЬА ] [РА1Ь ЯЕЕК]Ц [РЕЕМ [13 (аА «РЬ !еЬА ) ДА Ц [СОХО ([13 [РАТ .Р ],А ),А ) (Т [СО В)Ц ])] 4.5.
Другие. операции Следующие три встроенные функции осуществляют операции иад списками свойств утверждений. Функция СЕТА: [СЕТА аггт 1яа1], ЯПВВ. Эта функция действует аналогично функции СЕТ (см. $1Л7), но по отношению к списку свойств утверждения, совпадающего со значением аргумента агга Таким образом, функция СЕТА в иа честве своего значения выдает весь список свойств етого утвержденна, если при обращении к ней не задан второй аргумент, либо выдает значение только одного свойства — того, чье нааванне укавано аргументом 1вА Если в базе данных нет нужного утвержде.
ния, функция вырабатывает неуспех с сообщением СЕТА. Например, если значением переменной Х является список (АРКА С А В), то после выполнения [АЗЗЕКТ .Х (%1ТН СВЕРХУ С СЛЕВА А СПРАВА В)1 имеем [СЕТА .Х СЛЕВА) -~ А [СЕТА (АРКА С А В) СНИЗУ) -» () [6ЕТА .Х) -» (СВЕРХУ С СЛЕВА А СПРАВА В) Функции РЮТА: [РПТАча«гг глб и), ЗПВВ. Данная функция, аналогичная функции РОТ (см. $1.17), заменнет в списке свойств утверждении, заданного аргументом азгд прежнее значение свойства с названием П»Р иа новое значение У.
Попутно запоминается обратный оператор, который при распространении неуспеха восстановит прежнее' значение данного свойства. Если нужного утверждения в баас данных иет, то функция ничего не меняет и вырабатывает неуспех с сообщением РОТА. Пример: [РО [РОТА .Х СВЕРХУ Щ [СЕТА .Х)) (СВЕРХУ 0 СЛЕВА А СПРАВА В) Функция РРПТА: [РРСТА а»ж 1яб и), ЯПВВ. Это — «двойник» функции РОТА, при выполнении которого обратный оператор не запоминается. Следующая функция используется в тех случаях, когда нужно распечатать содержимое всей базы данных. Функция ВПМР: [ППМР).
Значением функции является целое число — количество утвержде-ний, имеющихся в настоящий момент в базе данных. Кроме того, функция выводит на печать в порядке возрастания длин все утверждения базы дашгых вместе с их списками свойств. Возможный вид печати: (БЛОК А) (ЦВЕТ СИНИЙ ФОРМА КУБ) (БЛОК В) (ФОРМА КУБ) (БЛОК С) (ФОРМА ПРИЗМА ЦВЕТ БЕЛЫЙ) (ОПОРА В С) () (ОПОРА А С) () (АРКА С А В) (СВЕРХУ С СЛЕВА А СПРАВА В) Если говорить более точно, то функция БПМР записывает утверждения и их списки свойств в активный файл вывода (см. $1И5). Поэтому, используя ету функцию, можно ваписать текущую базу данных в некоторый файл, расположенный во внешней памяти ЭВМ, чтобы затем воспользоваться этой баэой данных в какой-то другой плэнерской программе.
Осуществить такую вались в файл Р1ЬЕ можно, например, с цомощью следующей функции: [ВЕР1ХЕ ЯТОКЕ (ЬАМВВА (РПЕ) [РВОО (АР) [ЯЕТ АР [АСТ!ЧЕ РСТЦ [ОРЕР( .РП Е РОТ) [АСТ1ЧЕ .Р1ЬЕ РПТ1 [ППМР) [РК!ХТ ЕМЩ [С1 ОЯЕ .Р1ЬЕ РОТ) [АСТ1ЧЖ .АР РСТЦ Ц Считывание бааы данных из файла Р1ЬЕ можно описать в виде следующей функции: [ОЕР1ХЕ ВЕЯТОКЕ (ЬАМВПА (РПЕ) [РКОО (АР А РЬ) [ЯЕТ АР [АСТ1ЧЕ СЕЙ [ОРЕг1 .Р1ЬЕ СЕТ1 [АСТ1ЧЕ .РПЕ ОЕТ1 [)ЧН1ЬЕ [Р(ЕО ',[ЯЕТ А [КЕА))Ц ЕХЩ [ЯЕТ РЬ [ВЕАЭЦ [ВВ .А .РЬЦ [СЬОЯЕ .РПЕ СЕТ1 [АСТ1ЧЕ .АР ОЕТ1 ) Ц ГЛАВА 5 ТЕОРЕМЫ, 5Л. Основные понятия В языках программирования процедуры обычно вызываются по имени: в тексте программы явно указывается нмя процедуры, которая должна быть выполнена на очередном шаге вычислений.
В пленере так вызываются функции и сопоставнтели. Но в пленере жюможен н иной способ вывоза — «ывов во сбрагву, прн котором не указывается, какая конкретно процедура должна быть выполнена, а указывается лишь свойство, которым должна обладать вызываемая процедура. Так в языке вызываются процедуры, называемые теоремами. Каждая теорема кроме тела имеет еще и образец, используемый при ее вызове.
Вызов происходит так: в программе задается некоторый образец (будем называть его вызывающнм) и среди существующих теорем выбирается та, чей образец соответствует этому образцу; данная теорема и вызывается — вычисляется ее тело. Такой «безымянный» вызов является более гибким, чем вызов по имени. Прн вызове по образцу выбор теорем осуществляется во время вычисления программы, а не при написании ее. Поэтому теоремы могут быть добавлены к программе позже, могут быть даже построены в процессе вычисления самой программы, и при этом текст остальной части программы не должен меняться.
Вызов теорем по образцу сочетается с режимом возвратов, так как вызывающему образцу могут соответствовать образцы иескояьких теорем, Из всех атих теорем выбирается какая-нибудь одна, и она вычисляется. Если ее вычисление успешно, то остальные теоремы не рассматриваются, и вызов по образцу успешйо завершается. Но если вычисление теоремы оказалось неуспешным, то она «отзергается», и вызывается другая теорема с подходящим образцом.
Если и она неуспешна, выаывается третья 157 теорема и т. д. В конце копцов либо будет найдена теорема, вычисление которой успешно, и тогда вызов по образцу успешен, либо будет установлено, что все теоремы, обраацы которых соответствуют вызывающему образцу, вырабатывают неуспех. В последнем случае, как и в случае, когда теорем с подходящим образцом вообще нет, вызов по образцу считается неуспешным. Использовать теоремы и описанный способ нх вызова можно по-разному, по в язык они введены ради следующей цели. Как уже было сказано, планер предоставляет средства для описания задач, решение которых должны находить системы искусственного ийтеллекта, и средства для реализации процедур поиска решения этих задач.
Кроме рассмотренной в предыдущей главе базы данных, к таким средствам относятся и теоремы, которые используются для описания «цравил игрыэ в решаемой аадаче, т. е. Тех операций, которые раарешено применять при решении вадачи: правил логического вывода, элементарных действий робота, ходов в втровых задачах, правил нахождения ответов на простейпгие вопросы и т. п. Каждое.
такое правило описывается в виде теоремы, образец которой укааывает, чтб можно получить в реаультате применения данного правила, а ее тело определяет действия, которые следует выполнить для получения этого результата. Таким образом, образец теоремы описывает цель, а ее тела — способ достижения этой цели.