Я изучаю языки программирования, используемые для программирования AI. Я знаю, что LISP преподается как язык программирования ИИ в моем университете, но Пролог редко. Мне нравится Пролог, но я не программист ИИ, поэтому я не считаю себя достаточно квалифицированным, чтобы самому судить, почему Пролог лучше, чем LISP / Scheme. Мне было интересно, если программисты имели какой-либо вклад в эту тему.
Как вы можете утверждать, что Пролог будет более полезным для программирования ИИ?
Я немного исследовал это, и основной аргумент, который я видел снова и снова, состоит в том, что, поскольку мысли представлены в логике, а Пролог - это язык логического программирования, Пролог может легко создавать машины принятия решений или что-то в этом роде.
Что еще можно сказать о Прологе в ИИ?
Ответы:
От предисловия к прологическому программированию для искусственного интеллекта :
По сути, это отличный язык для выражения различных отношений и целей в сжатой, (в основном) читаемой и (полу) естественной форме. Эквивалентный код, скажем, в Лиспе имеет тенденцию быть более многословным и более запутанным по своему замыслу, потому что вы тратите много времени на внутренности и управление отношениями и рассуждения о них.
источник
В моем старшекурснике я познакомился с курсом по искусственному интеллекту, который использовал Пролог, чтобы мы внедрили экспертную систему.
Экспертная система - это часть программного обеспечения, которая используется для решения очень специфической проблемы, решение которой зависит от большого числа правил и переменных.
Например, вы можете представить себе экспертную систему, которая говорит вам, следует ли брать с собой зонтик, когда вы выходите на улицу или нет; Вы бы предоставили ему набор данных (облачно ли, шел ли дождь днем ранее, в какое время года и т. д.), и экспертная система будет следовать правилам, чтобы дать вам ответ (если облачно и идет дождь. за день до этого надо взять зонтик).
Природа Пролога делает очень простым внедрение правил и фактов (в Прологе все является правилом или фактом), а затем «запрос к базе данных» (получение ответа на ваш вопрос), даже если у вас есть тысячи этих правил и фактов ,
Если вам интересна эта тема, я бы порекомендовал вам установить интерпретатор Prolog и попытаться внедрить очень простую экспертную систему, чтобы почувствовать ее - это может помочь вам понять, почему это такой мощный инструмент для этих задач.
источник
Разница немного похожа на использование SQL для запросов к базе данных, а не на написание программы, скажем, на C. В SQL вы говорите, что хотите, но вам не нужно (напрямую) указывать алгоритм, используемый для его получения.
Программу Пролог иногда называют базой данных, но на самом деле это набор логических операторов предикатов. Механизм оценки принимает запрос и выполняет его подстановки на основе логических операторов предиката, выполняя поиск для нахождения правильных решений. Все необходимые алгоритмы поиска (гораздо более сложные, чем SQL-запрос) встроены в компилятор Prolog.
SQL-запрос, если бы вы наивно реализовывали ту же логику в C, не потребовал бы гораздо большего, чем зацикливание и условные выражения if / else.
Запрос Пролога, реализованный в C, потребует (как минимум) обратного поиска с использованием метода union-find. И это опять-таки наивное решение.
Определенный вид программирования ИИ включает в себя множество типов поиска, которые выполняет Пролог. Неудивительно, что на самом деле - изначально программирование ИИ осуществлялось на Лиспе или каком-либо другом языке, но Пролог был написан специально для этой работы.
Логика предикатов - это естественный подход к определению этого стиля проблемы ИИ, и в Прологе, когда у вас есть это определение, вы можете запустить его напрямую, без необходимости реализовывать все эти неуклюжие алгоритмы поиска.
источник
Я взял 2 модуля Пролог в университете, и мне очень понравилось развивать язык.
Это особенно хорошо для экспертных систем, я написал медицинский симптом диагноз.
Мне объяснили, что в некоторых странах Лисп используется чаще, а в других - Пролог.
С точки зрения того, что лучше, я лишь кратко описал Лисп, когда делал лямбда-исчисление в модуле «Теоретическая информатика», поэтому я склонен к Прологу.
Если вы разрабатываете приложение для работы с правилами и фактами для получения ответов, Prolog очень хорош и, естественно, поддерживает возврат.
источник