Даталог против клипов против пролога - PullRequest
21 голосов
/ 13 октября 2010

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

Ответы [ 2 ]

23 голосов
/ 14 октября 2010

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

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

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

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

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

16 голосов
/ 11 апреля 2011
Регистр данных

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

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

Пролог завершен по Тьюрингу. нет данных.

убирая данные с пути, посмотрим, как пролог сравнивается с клипами.

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

Другой способ взглянуть на это:

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

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

...