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

Datalog против CLIPS vs Prolog

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

4b9b3361

Ответ 1

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

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

Пролог завершает Тьюринг. datalog нет.

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

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

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

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

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

Ответ 2

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

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

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

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

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