40
Вычислительная модель Вычислительная модель логических программ логических программ Рекурсивно- Рекурсивно- логическое логическое программирование программирование Григорьева И.В. Григорьева И.В.

Вычислительная модель логических программ

  • Upload
    diallo

  • View
    45

  • Download
    3

Embed Size (px)

DESCRIPTION

Вычислительная модель логических программ. Рекурсивно-логическое программирование Григорьева И.В. Унификация. - PowerPoint PPT Presentation

Citation preview

Page 1: Вычислительная модель логических программ

Вычислительная Вычислительная модель логических модель логических

программпрограмм

Рекурсивно-Рекурсивно-логическое логическое

программированиепрограммирование

Григорьева И.В.Григорьева И.В.

Page 2: Вычислительная модель логических программ

УнификацияУнификация Основу вычислительной модели Основу вычислительной модели

логических программ составляет логических программ составляет алгоритм унификации. Унификация алгоритм унификации. Унификация является основой автоматической является основой автоматической дедукции и логического вывода в дедукции и логического вывода в задачах искусственного интеллекта. задачах искусственного интеллекта.

Вспомним, что терм Вспомним, что терм t t есть общий есть общий пример двух термов пример двух термов tt11 и и tt22, если , если существуют такие подстановки существуют такие подстановки 1 1 и и 2, 2, что что t t равно равно tt111 1 и и tt2222 . Терм . Терм s s называется называется более общим, более общим, чем терм чем терм tt, , если если tt-пример -пример ss, , но но s s не является не является примером примером tt. .

Page 3: Вычислительная модель логических программ

Терм Терм s s называетсяназывается алфавитным алфавитным вариантом вариантом терма терма tt, , если если tt-пример -пример s s и и ss--пример пример tt. . Алфавитные варианты Алфавитные варианты совпадают с точностью до совпадают с точностью до переименования переменных, переименования переменных, входящих в термы. Например, термы входящих в термы. Например, термы membermember((XX,,treetree((LeftLeft,,XX,,RightRight)) )) и и membermember((YY,,treetree ( (leftleft,,YY,,ZZ)) )) являются алфавитными вариантами. являются алфавитными вариантами.

Page 4: Вычислительная модель логических программ

Унификатором Унификатором двух термов двух термов называется подстановка, которая называется подстановка, которая делает термы одинаковыми. Если делает термы одинаковыми. Если существует унификатор двух существует унификатор двух термов, то термы называются термов, то термы называются унифицируемыми. унифицируемыми. Существует Существует тесная взаимосвязь между тесная взаимосвязь между унификаторами и общими унификаторами и общими примерами. Любой унификатор примерами. Любой унификатор определяет общий пример и определяет общий пример и обратно, любой общий пример обратно, любой общий пример определяет унификатор. определяет унификатор.

Page 5: Вычислительная модель логических программ

Например, Например, конк([1,2,3],[3,4],конк([1,2,3],[3,4],ListList) ) и и конк([конк([XX//XsXs],],YsYs,[,[XX//ZsZs]) ]) унифицируемы. унифицируемы. Унифицирующая подстановка Унифицирующая подстановка

{{X X = = 1,1, Xs Xs = = [2,3],[2,3],YsYs = [3,4], = [3,4], List List = = [[11,,ZsZs]}. ]}. Общий пример, задаваемый Общий пример, задаваемый этой подстановкойэтой подстановкой -- это это

конк ([конк ([11,2,3],[3,4],[,2,3],[3,4],[1 1 //ZZ]).]).

Page 6: Вычислительная модель логических программ

Наибольшим общим унификатором, Наибольшим общим унификатором, или или н. о. у, н. о. у, двух термов называется двух термов называется унификатор, соответствующий унификатор, соответствующий наиболее общему примеру. Если два наиболее общему примеру. Если два терма унифицируемы, то существует терма унифицируемы, то существует единственный наибольший общий единственный наибольший общий унификатор. Единственность унификатор. Единственность определена с точностью до определена с точностью до переименования переменных. Это переименования переменных. Это эквивалентно тому, что два терма эквивалентно тому, что два терма имеют единственный, с точностью имеют единственный, с точностью до изоморфизма, наибольший общий до изоморфизма, наибольший общий пример.пример.

Page 7: Вычислительная модель логических программ

Алгоритм унификации находит Алгоритм унификации находит наибольший общий унификатор двух наибольший общий унификатор двух термов, если такой существует. Если термов, если такой существует. Если термы не унифицируемы, алгоритм термы не унифицируемы, алгоритм сообщает об сообщает об отказе.отказе.

Описываемый алгоритм унификации Описываемый алгоритм унификации основан на решении системы основан на решении системы равенств. Входом алгоритма являются равенств. Входом алгоритма являются два терма два терма –Т1 –Т1 и и Т2 . Т2 . Результатом Результатом работы алгоритма является н. о. у. работы алгоритма является н. о. у. двух термов, если термы двух термов, если термы унифицируемы, или унифицируемы, или отказ, отказ, если термы если термы не унифицируемы. не унифицируемы.

Page 8: Вычислительная модель логических программ

Алгоритм использует стек для Алгоритм использует стек для хранения равенств, подлежащих хранения равенств, подлежащих решению, и ячейку памяти решению, и ячейку памяти для для построения выходной подстановки. В построения выходной подстановки. В начале работы ячейка начале работы ячейка пуста, в стек пуста, в стек помещается равенство помещается равенство Т1 Т1 = = Т2. Т2. Алгоритм состоит из цикла, Алгоритм состоит из цикла, в теле которого из стека считывается в теле которого из стека считывается и обрабатывается одно равенство. и обрабатывается одно равенство. Цикл завершается, если в процессе Цикл завершается, если в процессе работы появляется сообщение об работы появляется сообщение об отказе или стек оказывается пустым.отказе или стек оказывается пустым.

Page 9: Вычислительная модель логических программ

Рассмотрим возможные действия при Рассмотрим возможные действия при считывании равенства считывании равенства S S = = Т. Т.

Простейший случай, когда Простейший случай, когда S S и и ТТ -- одинаковые константы или одинаковые константы или переменные. Тогда равенство переменные. Тогда равенство корректно, и ничего делать не надо. корректно, и ничего делать не надо. Вычисление продолжается, из стека Вычисление продолжается, из стека считывается следующее равенство. считывается следующее равенство.

Page 10: Вычислительная модель логических программ

Если Если S S - переменная, а Т-терм, не - переменная, а Т-терм, не содержащий вхождений содержащий вхождений SS, , то то происходит следующее. В стеке происходит следующее. В стеке отыскиваются все вхождения отыскиваются все вхождения переменной переменной SS и каждое из них и каждое из них заменяется на заменяется на Т. Т. Аналогично все Аналогично все вхождения вхождения S S в в заменяются на заменяются на Т. Т. Затем подстановка Затем подстановка S S = = Т Т добавляется добавляется к к . Существенно, что . Существенно, что S S не входит в не входит в Т. Т. Проверка, соответствующая словам Проверка, соответствующая словам «не содержит вхождений», известна «не содержит вхождений», известна как как проверка на вхождение.проверка на вхождение.

Page 11: Вычислительная модель логических программ

Если Если TT-переменная, -переменная, SS-терм, не -терм, не содержащий содержащий Т, Т, т. е. т. е. Т Т удовлетворяет проверке на удовлетворяет проверке на вхождение относительно вхождение относительно SS, то , то выполняется аналогичная выполняется аналогичная последовательность действий. последовательность действий.

Page 12: Вычислительная модель логических программ

Равенства добавляются в стек, если Равенства добавляются в стек, если S S и и TT-составные термы с одним и тем -составные термы с одним и тем же главным функтором одной и той же главным функтором одной и той же арности, например: же арности, например: ff((SS1,...,1,...,SnSn) к ) к ff((TT1,...,1,...,TnTn). ). Для унификации термов Для унификации термов следует совместно унифицировать следует совместно унифицировать каждую пару аргументов, что каждую пару аргументов, что достигается помещением в стек достигается помещением в стек nn равенств вида равенств вида SiSi = = TiTi. .

Во всех остальных случаях выдается Во всех остальных случаях выдается сообщение об отказе, и работа сообщение об отказе, и работа алгоритма завершается. Если стек алгоритма завершается. Если стек пуст, то термы унифицируемы пуст, то термы унифицируемы и.унификатор содержится в 0. и.унификатор содержится в 0.

Page 13: Вычислительная модель логических программ

Вход:Вход: Два терма Два терма Т1Т1 и и TT2, 2, которые надо унифицировать.которые надо унифицировать.Результат: Результат: Подстановка Подстановка - н. о. - н. о. у. у. термов термов Т1Т1, и , и Т2 Т2 или отказ. или отказ. Алгоритм:Алгоритм:

Начальное значение подстановки Начальное значение подстановки пусто, стек содержит пусто, стек содержит равенство равенство Т1 Т1 = = Т2,Т2,failurefailure := := falsefalse, пока стек не пуст и не , пока стек не пуст и не failurefailure, выполнить, , выполнить,

считать считать X X = = YY из стека из стека ветвлениеветвление

Х-переменная, не входящая в Х-переменная, не входящая в YY::заменить все вхождения заменить все вхождения X X в стеке и в в стеке и в на на Y Y добавить добавить X X = = Y Y к к ..

YY-переменная, не входящая в -переменная, не входящая в XX::заменить все вхождения У в стеке и в на заменить все вхождения У в стеке и в на XX

добавить добавить YY= = X X к к . . X X и и YY-одинаковые константы или переменные: -одинаковые константы или переменные:

продолжать продолжать X X есть есть ff(Х1, ..., Х(Х1, ..., Хnn)) и и Y Y есть есть ff((YY1, ..., 1, ..., YnYn))для некоторого функтора для некоторого функтора ff и и nn > 1: > 1:

поместить поместить X X ==Y Y , для всех , для всех i i = 1, ...,= 1, ...,n n в стек в стекв остальных случаях:в остальных случаях:

failurefailure := := truetrueесли если failurefailure, то результат-отказ; иначе результат , то результат-отказ; иначе результат ..

Page 14: Вычислительная модель логических программ

Рассмотрим попытку унификации Рассмотрим попытку унификации термов термов конк([конк([aa,,bb],[],[cc,,dd],],LsLs)) и и конк([конк([XX| | XsXs],],YsYs,[,[XX||ZsZs])]) . .

Начальное состояние стека:Начальное состояние стека:

конк([конк([aa,,bb],[],[cc,,dd],],LsLs) = конк([) = конк([XX| | XsXs],],YsYs,[,[XX||ZsZs])])

Эти два терма имеют один и тот же Эти два терма имеют один и тот же функтор - функтор - конк конк одной арности 3, одной арности 3, поэтому в стек добавляются три поэтому в стек добавляются три равенства, соответствующие равенства, соответствующие подтермам двух термов: подтермам двух термов:

[a,b]= [X| Xs], [c,d]=Ys, Ls=[ X|Zs][a,b]= [X| Xs], [c,d]=Ys, Ls=[ X|Zs]..

Page 15: Вычислительная модель логических программ

Проверка на вхождение необходима, Проверка на вхождение необходима, чтобы предотвратить попытку чтобы предотвратить попытку унифицировать такие термы, как унифицировать такие термы, как ss((XX) ) и и XX. . Эти термы не имеют Эти термы не имеют конечного общего примера.конечного общего примера.

Page 16: Вычислительная модель логических программ

Абстрактный интерпретатор Абстрактный интерпретатор логических программ логических программ

Неформально процесс вычисления Неформально процесс вычисления логической программы может быть логической программы может быть описан следующим образом. Он описан следующим образом. Он начинается с некоторого исходного начинается с некоторого исходного (возможно, конъюнктивного) вопроса (возможно, конъюнктивного) вопроса G G и завершается одним из двух и завершается одним из двух результатов: успешное завершение результатов: успешное завершение или отказ. В случае успешного или отказ. В случае успешного завершения результатом должен быть завершения результатом должен быть доказанный пример доказанный пример GG..

Page 17: Вычислительная модель логических программ

Для данного вопроса может Для данного вопроса может существовать несколько успешных существовать несколько успешных вычислений, дающих различные вычислений, дающих различные результаты. Кроме того, могут иметь результаты. Кроме того, могут иметь место бесконечные вычисления, с место бесконечные вычисления, с которыми мы не связываем никаких которыми мы не связываем никаких результатов. результатов.

Вычисление развивается с помощью Вычисление развивается с помощью редукции целей. редукции целей. На каждом этапе На каждом этапе имеется некоторая резольвента, т. е. имеется некоторая резольвента, т. е. конъюнкция целей, которые следует конъюнкция целей, которые следует доказать. Выбираются такая цель в доказать. Выбираются такая цель в резольвенте и такое предложение в резольвенте и такое предложение в логической программе, что заголовок логической программе, что заголовок предложения унифицируем с целью. предложения унифицируем с целью.

Page 18: Вычислительная модель логических программ

Вычисление продолжается с новой Вычисление продолжается с новой резольвентой, полученной из старой резольвентой, полученной из старой заменой выбранной цели на тело заменой выбранной цели на тело выбранного предложения и выбранного предложения и последующим применением последующим применением наибольшего общего унификатора наибольшего общего унификатора заголовка предложения и заголовка предложения и выбранной цели. Вычисление выбранной цели. Вычисление завершается, если резольвента завершается, если резольвента пуста. В этом случае мы говорим, пуста. В этом случае мы говорим, что цель решена программой. что цель решена программой.

Page 19: Вычислительная модель логических программ

Для более формального описания Для более формального описания вычислений введем несколько вычислений введем несколько полезных понятий. полезных понятий. Вычислением Вычислением цели цели Q Q = = QQ0 0 программой программой Р Р называется, возможно бесконечная, называется, возможно бесконечная, последовательность троек последовательность троек ((QiQi,,GiGi,,CiCi)); ; здесь здесь QiQi - конъюнктивная цель, - конъюнктивная цель, GiGi--цель, входящая в цель, входящая в QiQi , , ССii - - предложение предложение AA:- В1,...,:- В1,...,Bk Bk в в Р Р cc таким таким переименованием, что новые переименованием, что новые символы переменных не символы переменных не встречаются в встречаются в QjQj, 0 <, 0 <jj < < ii. .

Page 20: Вычислительная модель логических программ

Для всех Для всех ii > 0 > 0 цель цель QiQi+1, +1, является является или результатом замены или результатом замены Gi Gi на тело на тело ССii в в QiQi, и применения подстановки , и применения подстановки QiQi наибольшего общего унификатора наибольшего общего унификатора термов термов Gi Gi и и ААii, , ((AiAi -заголовок -заголовок ССii), или константой ), или константой truetrue, , если если GiGi-единственная цель в -единственная цель в QiQi и тело и тело ССii пусто, или константой пусто, или константой отказ, отказ, если если GiGi и заголовок и заголовок ССi i - не - не унифицируемы. унифицируемы.

Page 21: Вычислительная модель логических программ

Цели Цели BiQiBiQi называются называются производнымипроизводными от цели от цели GjGj и правила и правила CjCj. Цель . Цель GjGj = = BikBik, где , где Bik Bik входит в тело входит в тело предложения предложения ССii, называется , называется порожденной порожденной GiGi и и CiCi.. Цель Цель GiGi, , называется называется предшественником предшественником любой порожденной ею цели. Две любой порожденной ею цели. Две цели с общим предшественником цели с общим предшественником называются называются родственными целямиродственными целями..

Page 22: Вычислительная модель логических программ

Протоколом Протоколом вычисления вычисления ((QiQi,,GiGi,,CiCi)) логической программы называется логической программы называется последовательность пар последовательность пар ((Gj Gj ii’)’), где , где ii’’-подмножество н. о. у. -подмножество н. о. у. ii полученного на полученного на ii-й редукции и ограниченного -й редукции и ограниченного переменными из переменными из GG..

Page 23: Вычислительная модель логических программ

Опишем абстрактный интерпретатор Опишем абстрактный интерпретатор логических программ. логических программ.

Следует позаботиться об избежании Следует позаботиться об избежании конфликта имен переменных в правилах. конфликта имен переменных в правилах. Дело в том, что переменные в Дело в том, что переменные в предложениях локальны. Поэтому предложениях локальны. Поэтому переменные с одними и теми же именами, переменные с одними и теми же именами, входящие в различные предложения, на входящие в различные предложения, на самом деле различны. Это различие самом деле различны. Это различие обеспечивается переименованием обеспечивается переименованием переменных в предложении всякий раз, переменных в предложении всякий раз, когда предложение выбрано для когда предложение выбрано для выполнения редукции. Среди новых имен не выполнения редукции. Среди новых имен не должно быть имен, ранее использованных в должно быть имен, ранее использованных в процессе вычисления. процессе вычисления.

Page 24: Вычислительная модель логических программ

Интерпретатор решает вопрос Интерпретатор решает вопрос G G с с помощью программы помощью программы Р. Р. Результатом Результатом работы интерпретатора будет работы интерпретатора будет пример пример GG, если найдено , если найдено доказательство такого примера, или доказательство такого примера, или отказ, отказ, если в процессе вычисления если в процессе вычисления возник отказ. Заметим, что возник отказ. Заметим, что интерпретатор может и отказаться интерпретатор может и отказаться закончить вычисления. закончить вычисления.

Page 25: Вычислительная модель логических программ

Вход:Вход: Логическая программа Логическая программа РРцель цель GG

Результат: Результат: GG, если это пример , если это пример GG, выводимый из , выводимый из Р. Р. или или отказ, отказ, если возник отказесли возник отказ

Алгоритм: Алгоритм: Начальная резольвента равнаНачальная резольвента равна входной цели входной цели G G Пока резольвента непуста, выполнитьПока резольвента непуста, выполнить

Выбрать такую цель Выбрать такую цель А А из резольвенты и такоеиз резольвенты и такое(переименованное) предложение(переименованное) предложениеА‘А‘::- - ВВ11, В2, ..., В, В2, ..., Вnn, , nn > 0 из > 0 из Р, Р, что что А и А‘А и А‘унифицируемы с и.о.у. унифицируемы с и.о.у. (если нет (если нет таких цели и правила, то выйти из цикла). таких цели и правила, то выйти из цикла).

Удалить Удалить А А и добавить и добавить ВВ11, В, В22, , ..., ..., ВВn n к к резольвенте.резольвенте.Применить Применить к резольвенте и к к резольвенте и к GG..

Если резольвента пуста, то результат-Если резольвента пуста, то результат-GG, иначе - , иначе - отказ.отказ.

Page 26: Вычислительная модель логических программ

Пример вопроса, для которого Пример вопроса, для которого найдено доказательство, найдено доказательство, называется называется решением решением вопроса.вопроса.

Метод, в соответствии с которым Метод, в соответствии с которым добавляются и удаляются цели в добавляются и удаляются цели в резольвентах, называется резольвентах, называется методом методом расписания расписания интерпретатора. В интерпретатора. В абстрактном интерпретаторе метод абстрактном интерпретаторе метод расписания не уточнен. расписания не уточнен.

Page 27: Вычислительная модель логических программ

Рассмотрим решение вопроса Рассмотрим решение вопроса конкконк(([[aa,,bb],[],[cc,,dd],],LsLs) с использованием ) с использованием приведенного интерпретатора. приведенного интерпретатора. Начальная резольвента Начальная резольвента -- конк конк(([[aa,,bb],],[[cc,,dd],],LsLs)). . Поскольку имеется Поскольку имеется единственная цель, то она и единственная цель, то она и выбирается для редукции. Выбранным выбирается для редукции. Выбранным правилом будет правилом будет

конк(конк([X|Xs], Ys, [X|Zs]):-[X|Xs], Ys, [X|Zs]):- конк конк(Xs, Ys, Zs).(Xs, Ys, Zs).Унификатор цели и заголовкаУнификатор цели и заголовка-- {X=a, Xs=[b], Ys=[c,d], Ls=[a,Zs] }.{X=a, Xs=[b], Ys=[c,d], Ls=[a,Zs] }.Новой резольвентой будет пример Новой резольвентой будет пример

терма конк(терма конк(XsXs, , YsYs, , ZsZs)) при применении при применении унификатора, т. е конкунификатора, т. е конк(([[bb],], [[cc,,dd],], Zs Zs) )

Page 28: Вычислительная модель логических программ

Эта цель выбирается на следующей Эта цель выбирается на следующей итерации цикла. Выбирается то же итерации цикла. Выбирается то же предложение для отношения предложение для отношения конк, конк, но но во избежание конфликта переменные во избежание конфликта переменные должны быть переименованы. Выберем должны быть переименованы. Выберем такой вариант:такой вариант:

конк(конк([Xl|Xsl], Ysl, [Xl|Zsl]):-[Xl|Xsl], Ysl, [Xl|Zsl]):- конк конк(Xsl,Ysl,Zsl).(Xsl,Ysl,Zsl).Унификатор цели и заголовкаУнификатор цели и заголовка-- {Xl=a, Xsl=[b], Ysl=[c,d], Zs=[b| Zsl] }.{Xl=a, Xsl=[b], Ysl=[c,d], Zs=[b| Zsl] }.Далее выбирается факт конкДалее выбирается факт конк([ ],Zs2,Zs2);([ ],Zs2,Zs2);вновь производятся необходимые вновь производятся необходимые

переименования переменных.переименования переменных.

Page 29: Вычислительная модель логических программ

На этот раз унификаторНа этот раз унификатор––

{Zs2=[c,d], Zs1=[c,d]}. {Zs2=[c,d], Zs1=[c,d]}. Новая Новая резольвента пуста, и вычисление резольвента пуста, и вычисление заканчивается. заканчивается.

Для получения результата вычислений Для получения результата вычислений применим соответствующую часть применим соответствующую часть вычисленного н. о. у. Первая вычисленного н. о. у. Первая унификация привела к изменению унификация привела к изменению LsLs на на [[аа|Zs|Zs].]. Во второй унификации Во второй унификации ZsZs превратилось в [превратилось в [b|Zslb|Zsl].]. Далее Далее ZslZsl стало стало [[cc,,dd]. Объединяя, получим, что ]. Объединяя, получим, что Li Li имеет имеет значение [значение [aa|[|[bb|[|[cc,,dd]]], или, упрощенно, ]]], или, упрощенно, [[a,b,c,da,b,c,d]. ].

Page 30: Вычислительная модель логических программ

Вычисление может быть представлено Вычисление может быть представлено протоколом. Для того чтобы протокол протоколом. Для того чтобы протокол был понятнее, цели напечатаны с был понятнее, цели напечатаны с отступом относительно отступом относительно предшественника. Цель имеет глубину предшественника. Цель имеет глубину отступа отступа dd+1, +1, если глубина отступа если глубина отступа предшественника предшественника - - dd..

конкконк([a,b],[c,d],Zs)([a,b],[c,d],Zs) Zs=[a|Zsl]Zs=[a|Zsl]

конкконк([b],[c,d],Zsl)([b],[c,d],Zsl) Zsl = [b| Zsl = [b| Zs2]Zs2]

конкконк([ ],[c,d], Zs2)([ ],[c,d], Zs2) Zs2 = [c,d]Zs2 = [c,d]

truetrue

Output: Zs = [a,b,c,d]Output: Zs = [a,b,c,d]

Page 31: Вычислительная модель логических программ

В качестве другого примера В качестве другого примера рассмотрим решение вопроса рассмотрим решение вопроса сын(сын(SS,аран).,аран). Вопрос редуцируется с Вопрос редуцируется с использованием предложения использованием предложения сын(Х,сын(Х,YY) :- отец(Х,) :- отец(Х,YY), мужчина (), мужчина (XX). ). Наибольший общий унификатор - Наибольший общий унификатор - {{X X = = SS, , YY = = аран]. аран]. Применение Применение подстановки дает новую резольвенту подстановки дает новую резольвенту --отец(аран, отец(аран, SS), мужчина (), мужчина (SS). ). ЭтоЭто -- конъюнктивная цель. В качестве конъюнктивная цель. В качестве очередной цели можно выбрать одну очередной цели можно выбрать одну из двух целей. Выбор цели из двух целей. Выбор цели отец отец (аран,(аран,SS) ) приводит к следующему приводит к следующему вычислению. вычислению.

Page 32: Вычислительная модель логических программ

Цель унифицируется с фактом Цель унифицируется с фактом отец (аран,лот), отец (аран,лот), имеющимся в программе, и вычисление имеющимся в программе, и вычисление продолжается с заменой продолжается с заменой S S на на лот. лот. Новая Новая резольвента - резольвента - мужчина (лот), мужчина (лот), она является она является фактом программы, и вычисление фактом программы, и вычисление завершается. Протокол вычисления приведен завершается. Протокол вычисления приведен в левой части рис.в левой части рис.

сын (сын (SS,,apapан)ан) сынсын (S,apa (S,apaнн) )

omeu(apaomeu(apaнн,S) S ,S) S = = лотлот мужчинамужчина((лотлот) S ) S = = лотлот

мужчинамужчина((лотлот)) отецотец ( (аранаран,,лотлот) )

true true truetrue

Рис. Различные протоколы, дающие Рис. Различные протоколы, дающие одинаковое решение. одинаковое решение.

Page 33: Вычислительная модель логических программ

Другая возможность получить ответ Другая возможность получить ответ S S = = лот лот состоит в выборе цели состоит в выборе цели мужчина (мужчина (SS) ) раньше цели раньше цели отец(аран,отец(аран,SS). ). Эта цель редуцируется Эта цель редуцируется фактом фактом мужчина(лот) мужчина(лот) с заменой с заменой S S на на лот. лот. Новая резольвента Новая резольвента -отец(аран, -отец(аран, лот), лот), которая с помощью которая с помощью соответствующего факта сводится к соответствующего факта сводится к пустой резольвенте. Протокол этого пустой резольвенте. Протокол этого вычисления приведен в правой вычисления приведен в правой части предыдущего рис. части предыдущего рис.

Page 34: Вычислительная модель логических программ

Решение вопроса, полученное с помощью Решение вопроса, полученное с помощью абстрактного интерпретатора, может абстрактного интерпретатора, может содержать переменные. Рассмотрим содержать переменные. Рассмотрим вопрос вопрос membermember ( (aa,,XsXs) ) относительно относительно программы, задающей отношение программы, задающей отношение membermember. .

member(X,[X|Xs]).member(X,[X|Xs]).member(X,[Y|Xs]):-member(X,Ys).member(X,[Y|Xs]):-member(X,Ys).Его можно рассматривать как вопрос о том, Его можно рассматривать как вопрос о том,

какой список какой список Xs Xs содержит содержит а а в качестве в качестве элемента. Одно из решений, вычисленноеэлемента. Одно из решений, вычисленное абстрактным интерпретаторомабстрактным интерпретатором ХХss =[ =[aa, , YsYs]] , , т.е. список с головой т.е. список с головой а а и и произвольным хвостом. Решение, произвольным хвостом. Решение, содержащее переменные, обозначает содержащее переменные, обозначает бесконечное множество решенийбесконечное множество решений -- все их все их основные примеры. основные примеры.

Page 35: Вычислительная модель логических программ

В интерпретаторе имеются два выбора: В интерпретаторе имеются два выбора: выбор цели для редукции и выбор выбор цели для редукции и выбор предложения для выполнения редукции. предложения для выполнения редукции. Оба выбора осуществляются в любой Оба выбора осуществляются в любой реализации вычислительной модели. реализации вычислительной модели. Природа этих выборов принципиально Природа этих выборов принципиально различна.различна.

Выбор цели для редукции произволен; для Выбор цели для редукции произволен; для успешного вычисления несущественно, успешного вычисления несущественно, какая цель выбрана. Если существует какая цель выбрана. Если существует успешное вычисление при выборе данной успешное вычисление при выборе данной цели, то существует успешное вычисление цели, то существует успешное вычисление и при выборе любой другой цели. Два и при выборе любой другой цели. Два протокола описывают успешные протокола описывают успешные вычислениявычисления ( (для задачи о сынедля задачи о сыне)), , различающиеся выбором цели на втором различающиеся выбором цели на втором шаге вычисления. шаге вычисления.

Page 36: Вычислительная модель логических программ

Выбор предложения для выполнения Выбор предложения для выполнения редукции является редукции является недетерминированным. Не каждый недетерминированным. Не каждый выбор приводит к успешному выбор приводит к успешному вычислению. Например, в обоих вычислению. Например, в обоих протоколах мы могли совершить протоколах мы могли совершить неверный выбор. Если бы мы неверный выбор. Если бы мы редуцировали цель редуцировали цель отец (аран,отец (аран,SS) ) с с помощью факта помощью факта отец(аран,иска), отец(аран,иска), то не то не смогли бы редуцировать появившуюся смогли бы редуцировать появившуюся цель цель мужчина (иска). мужчина (иска). Во втором Во втором вычислении, если бы мы редуцировали вычислении, если бы мы редуцировали цель цель мужчина(мужчина(SS) ) с помощью факта с помощью факта мужчина(исаак), мужчина(исаак), то цель то цель отец (аран,исаак) отец (аран,исаак) уже не могла быть уже не могла быть редуцирована. редуцирована.

Page 37: Вычислительная модель логических программ

В некоторых вычислениях на каждом В некоторых вычислениях на каждом шаге вычисления может быть шаге вычисления может быть использовано ровно одно использовано ровно одно предложение программы для предложение программы для редукции очередной цели. Такие редукции очередной цели. Такие вычисления называются вычисления называются детерминированными. детерминированными. Детерминированность вычисления Детерминированность вычисления означает, что нам не придется означает, что нам не придется заниматься недетерминированным заниматься недетерминированным угадыванием.угадыванием.

Page 38: Вычислительная модель логических программ

Альтернативные выборы, которые Альтернативные выборы, которые может сделать абстрактный может сделать абстрактный интерпретатор при попытке доказать интерпретатор при попытке доказать цель, неявно определяют дерево цель, неявно определяют дерево поиска. Если в дереве поиска поиска. Если в дереве поиска существует путь, соответствующий существует путь, соответствующий доказательству цели, то доказательству цели, то интерпретатор «угадывает» этот путь. интерпретатор «угадывает» этот путь. Однако могут быть построены и менее Однако могут быть построены и менее «умные», лишенные способности «умные», лишенные способности угадывать интерпретаторы, но угадывать интерпретаторы, но обладающие теми же возможностями, обладающие теми же возможностями, что и абстрактный интерпретатор. что и абстрактный интерпретатор.

Page 39: Вычислительная модель логических программ

Один из способов исследования дерева Один из способов исследования дерева поиска состоит в поиске в ширину, поиска состоит в поиске в ширину, т.е. в параллельном рассмотрении всех т.е. в параллельном рассмотрении всех возможных выборов. Этот способ возможных выборов. Этот способ гарантирует, что если существует гарантирует, что если существует конечное доказательство цели (т. е. конечное доказательство цели (т. е. конечный успешный путь в дереве конечный успешный путь в дереве поиска), то оно будет найдено.поиска), то оно будет найдено.

Другой возможный способ исследования Другой возможный способ исследования дерева поиска состоит в поиске в дерева поиска состоит в поиске в глубину. В отличие от поиска в ширину глубину. В отличие от поиска в ширину поиск в глубину не гарантирует поиск в глубину не гарантирует нахождения доказательства, даже если нахождения доказательства, даже если оно существует. оно существует.

Page 40: Вычислительная модель логических программ

Это объясняется тем, что дерево поиска может Это объясняется тем, что дерево поиска может содержать бесконечные пути, содержать бесконечные пути, соответствующие потенциально соответствующие потенциально бесконечным вычислениям бесконечным вычислениям недетерминированного интерпретатора. недетерминированного интерпретатора. Поиск в глубину может попасть на Поиск в глубину может попасть на бесконечный путь и никогда не обнаружить бесконечный путь и никогда не обнаружить конечного успешного пути, даже если такой конечного успешного пути, даже если такой путь существует.путь существует.

Говоря формально, поиск в ширину Говоря формально, поиск в ширину определяет определяет полную процедуру полную процедуру доказательства логических программ, а доказательства логических программ, а поиск в глубину поиск в глубину - неполную - неполную процедуру. процедуру. Несмотря на неполноту, в реализациях языка Несмотря на неполноту, в реализациях языка Пролог используется поиск в глубину, что Пролог используется поиск в глубину, что объясняется практическими соображениями.объясняется практическими соображениями.