2010-10-13 4 views
17

Как и многие программисты, я изучал Prolog в университете, но только очень мало. Я понимаю, что Prolog и Datalog тесно связаны, но Datalog проще? Кроме того, я считаю, что я читал, что Datalog не зависит от упорядочения логических предложений, но я не уверен, почему это преимущества. Предполагается, что CLIPS совершенно разные, но для меня это слишком тонко. Может кто-то угодить, чтобы предоставить общие основные моменты языков над другими языками?Datalog vs CLIPS vs Prolog

+0

http: //en.wikipedia.org/wiki/Datalog – starblue

ответ

15

datalog является подмножеством пролога. подмножество, которое несет DataLog имеет две вещи в виду:

  1. принять API, которые поддерживают бы правила и запросов
  2. убедитесь, что все запросы прекратить

пролог является Тьюринга. datalog нет.

Получение datalog из пути, давайте посмотрим, как пролог сравнивается с клипами.

Опыт пролога - «решение проблем», а клипы - «экспертная система». если я правильно понимаю, «решение проблем» предполагает опыт использования кода и данных. «Экспертные системы» в основном используют структуры данных для выражения опыта. см http://en.wikipedia.org/wiki/Expert_system#Comparison_to_problem-solving_systems

другой способ смотреть на него есть:

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

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

+1

Относительно Prolog, Datalog не имеет функциональных символов (и, следовательно, не имеет древовидных структур для работы, просто констант и переменных) и является чисто декларативным (без разрезов и без изменения поведения путем перестановки клаузулов). –

+2

Для CLIPS (производственная система с родословной OPS5) идея состоит в том, чтобы «выводить» новые факты (или действия огня) всякий раз, когда происходит совпадение с существующими фактами в базе данных фактов, и база данных фактов может меняться при вычислении. Это «хаки/неряшливость» и слабая теория. Для Пролога философия «доказывает» теорему из известных последствий и фактов в базе данных, которая не должна изменяться! Это основано на теории звука (логика первого порядка, основанной на предложениях Хорна), которая может быть ослаблена по желанию, вытягивая «не логические» элементы языка (подобно добавлению GOTO к хорошему коду). –

+0

... и, наконец, вы можете реализовать forward-chainer в Prolog. –

21

Разница между CLIPS и Prolog/Datalog заключается в том, что CLIPS - это «система производственных правил», которая работает с форвардной цепью: учитывая набор фактов и правил, она попытается сделать все возможное, чтобы получить новые факты и храните их в памяти. Затем запрос отвечает, проверяя, соответствует ли он чему-либо в хранилище фактов. Так, в клипах, если у вас есть (псевдо-синтаксис):

parent(X,Y) => child(Y,X) 
parent(john,mary) 

будет немедленно вывести child(mary,john) и помнить, что факт. Это может быть очень быстро, но накладывает ограничения на возможный набор правил и занимает память.

Пролог и Datalog работают от обратного соединения, что означает, что на запрос (предикатный вызов) отвечает попытка доказать запрос, то есть запустить программу Prolog/Datalog. Prolog - полный язык программирования Turing, поэтому любой алгоритм может быть реализован в нем.

Datalog - это не полное Тьюринга подмножество Prolog, которое не позволяет, например, отрицать. Его главным преимуществом является то, что каждая программа Datalog завершается (без бесконечных циклов). Это делает его полезным для так называемых «дедуктивных баз данных», то есть баз данных с правилами в дополнение к фактам.

+4

В частности, Datalog предназначен для «запросов к реляционным базам данных» и эквивалентен рекурсивному SQL. См. [Эту презентацию] (http://webdam.inria.fr/College/090512Abiteboul.pdf). База данных [Datomic] (http://www.flyingmachinestudios.com/programming/datomic-for-five-year-olds/) поддерживает запросы Datalog. –

+1

В отличие от Prolog, ничто в семантике datalog не указывает на обратную цепочку. Можно использовать и использовать как прямую, так и обратную цепочку. – seanmcl

+0

@seanmcl Прямая цепочка также возможна в Prolog, используя [правила обработки ограничений] (https://en.wikipedia.org/wiki/Constraint_Handling_Rules). –

 Смежные вопросы

  • Нет связанных вопросов^_^