Почему Пролог хорош для программирования ИИ? [закрыто]

25

Я изучаю языки программирования, используемые для программирования AI. Я знаю, что LISP преподается как язык программирования ИИ в моем университете, но Пролог редко. Мне нравится Пролог, но я не программист ИИ, поэтому я не считаю себя достаточно квалифицированным, чтобы самому судить, почему Пролог лучше, чем LISP / Scheme. Мне было интересно, если программисты имели какой-либо вклад в эту тему.

Как вы можете утверждать, что Пролог будет более полезным для программирования ИИ?

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

Что еще можно сказать о Прологе в ИИ?

2rs2ts
источник
1
Написать компилятор / интерпретатор Prolog на Лиспе не так много. У Пола Грэма есть пример в « На Лиспе» .
Ларри Коулман
Один из моих одноклассников тоже говорил мне это. Мне показалось действительно интересным, что символические манипуляции LISP позволили мне воссоздать Пролог. Спасибо за приятное в сторону!
2rs2ts
4
@ Ларри Коулман: Не так много работы, чтобы написать наивный компилятор / интерпретатор Пролога на Лиспе. Создание эффективного и полностью функционального нетривиально на любом языке.
Просто мое правильное мнение

Ответы:

19

От предисловия к прологическому программированию для искусственного интеллекта :

Prolog - это язык программирования, основанный на небольшом наборе базовых механизмов, включая сопоставление с образцом, структурирование данных на основе дерева и автоматический возврат. Этот небольшой набор представляет собой удивительно мощную и гибкую среду программирования. Пролог особенно хорошо подходит для задач, которые включают объекты - в частности, структурированные объекты - и отношения между ними. Например, в Прологе легко выразить пространственные отношения между объектами, например, когда синяя сфера находится позади зеленой. Также легко сформулировать более общее правило: если объект X ближе к наблюдателю, чем объект Y, а Y ближе, чем Z, то X должен быть ближе, чем Z. Теперь Пролог может рассуждать о пространственных отношениях и их согласованности с уважение к общему правилу. Такие функции делают Prolog мощным языком для искусственного интеллекта (AI) и нечислового программирования в целом. Есть хорошо известные примеры символьных вычислений, реализация которых на других стандартных языках занимала десятки страниц неусваиваемого кода. Когда те же алгоритмы были реализованы в Прологе, результатом стала кристально чистая программа, легко помещающаяся на одной странице.

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

ПРОСТО МОЕ правильное мнение
источник
Мое незначительное добавление здесь заключается в том, что Пролог позволяет вам объявить факты , а затем правила, основанные на этих фактах. Затем ваши правила могут быть использованы Прологом для обоснования и ответа на другие запросы путем логического вывода ответов. Например, если факт утверждает, что A является предком B, а другой факт утверждает, что B является предком C, то Пролог может сделать вывод, что A должен быть предком C, без необходимости написания алгоритма для его проверки.
code_dredd
25

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

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

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

Природа Пролога делает очень простым внедрение правил и фактов (в Прологе все является правилом или фактом), а затем «запрос к базе данных» (получение ответа на ваш вопрос), даже если у вас есть тысячи этих правил и фактов ,

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

Bitgarden
источник
В своих исследованиях я прочитал, что Prolog упрощает внедрение экспертных систем. Спасибо за поддержку этого с некоторым объяснением :)
2rs2ts
16

Разница немного похожа на использование SQL для запросов к базе данных, а не на написание программы, скажем, на C. В SQL вы говорите, что хотите, но вам не нужно (напрямую) указывать алгоритм, используемый для его получения.

Программу Пролог иногда называют базой данных, но на самом деле это набор логических операторов предикатов. Механизм оценки принимает запрос и выполняет его подстановки на основе логических операторов предиката, выполняя поиск для нахождения правильных решений. Все необходимые алгоритмы поиска (гораздо более сложные, чем SQL-запрос) встроены в компилятор Prolog.

SQL-запрос, если бы вы наивно реализовывали ту же логику в C, не потребовал бы гораздо большего, чем зацикливание и условные выражения if / else.

Запрос Пролога, реализованный в C, потребует (как минимум) обратного поиска с использованием метода union-find. И это опять-таки наивное решение.

Определенный вид программирования ИИ включает в себя множество типов поиска, которые выполняет Пролог. Неудивительно, что на самом деле - изначально программирование ИИ осуществлялось на Лиспе или каком-либо другом языке, но Пролог был написан специально для этой работы.

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

Steve314
источник
3

Я взял 2 модуля Пролог в университете, и мне очень понравилось развивать язык.

Это особенно хорошо для экспертных систем, я написал медицинский симптом диагноз.

Мне объяснили, что в некоторых странах Лисп используется чаще, а в других - Пролог.

С точки зрения того, что лучше, я лишь кратко описал Лисп, когда делал лямбда-исчисление в модуле «Теоретическая информатика», поэтому я склонен к Прологу.

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

DazManCat
источник