Подтвердить что ты не робот

Как работает Prolog технически? Что под капотом?

Я хочу узнать больше о внутренних компонентах Prolog и понять, как это работает.

Я знаю, как его использовать. Но не так, как это работает внутри страны. Каковы имена алгоритмов и понятий, используемых в Prolog?

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

Я действительно новичок в AI и понимаю, что Prolog, кажется, отличный способ начать, imho. Моя идея - попытаться перестроить нечто подобное и полностью пропустить парсер. Мне нужно знать направления, в которых я должен выполнять свои исследовательские работы.

4b9b3361

Ответ 1

AI - широкое поле, Prolog касается только символьного AI. Что касается Prolog, то внутренние работы слишком сложны для объяснения здесь, но поиск в googling даст вам много ресурсов. Например. http://www.amzi.com/articles/prolog_under_the_hood.htm.

Проверьте также статьи в Википедии, чтобы узнать о других областях ИИ.

Ответ 2

Каковы имена алгоритмов и понятий, используемых в Prolog?

См. Стерлинг и Шапиро, Искусство Пролога (MIT Press) для теории, лежащей в основе Пролога.

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

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

понимание Пролога, кажется, отличный способ начать, imho.

В зависимости от того, что вы хотите сделать, но знание Prolog конечно не повредит. Это совсем другой способ взглянуть на программирование. Знание Prolog помогло мне очень быстро понять функциональное программирование.

Моя идея - попытаться восстановить что-то подобное и полностью пропустить парсерную часть.

Вы имеете в виду пропустить синтаксис Prolog? Если вы знакомы с Scheme или Lisp, то посмотрите раздел 4.4 Abelson и Sussman, где они объясняют, как реализовать логическое программирование вариант схемы, на схеме.

Ответ 3

Вы также можете прочитать о Warren Abstract Machine
обычно код пролога преобразуется в инструкции WAM, а затем выполняется более эффективно.

Ответ 5

Стандарт ISO для Prolog также содержит модель исполнения. Модель исполнения представляет интерес, поскольку она дает хорошую модель управляющих конструкций, таких как cut!/0, if-then-else (- > )/2, catch/3 и throw/1. В нем также объясняется, как правильно обрабатывать голые переменные.

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

Самый дешевый источник - ANSI:
http://webstore.ansi.org/RecordDetail.aspx?sku=INCITS%2FISO%2FIEC+13211-1-1995+%28R2007%29

Ответ 6

В книге Стерлинга и Шапиро, упомянутой larsmans, на самом деле содержится модель исполнения Prolog. Это довольно приятно и ясно объясняет, как работает Prolog. И это отличная книга!

Есть и другие источники, которые вы могли бы попробовать. В частности, некоторые книги Lisp создают педагогически ориентированные интерпретаторы Prolog:

  • В Lisp от paul Graham (в Common Lisp, используя - и, возможно, злоупотребление - макросы)
  • Парадигмы программирования искусственного интеллекта Питера Норвига (в Common Lisp)
  • Структура и интерпретация компьютерных программ Абельсона и Суссмана (на схеме).

Из них последний является самым ясным (по моему скромному мнению). Однако вам нужно изучить некоторые Lisp (либо Common Lisp или Scheme), чтобы понять их.

Ответ 7

В Prolog используется подмножество логики предикатов первого порядка, называемой логикой Хорна. Алгоритм, используемый для получения ответов, называется разрешением SLD.