Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Prolog и логическое программирование

 

Логическое программирование – это направление в программировании, основанное на идеях и методах математической логики. Термин логическое программирование в литературе по информатике трактуется в широком и узком смысле.

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

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

Программирование с использованием таких систем называется хорновским или резолюционным, но чаще всего – логическим программированием, перенося узкую трактовку термина на более широкое понятие.

Самыми известными системами такого рода являются реализации языка Prolog (программирование в терминах логики – Programming in logic). Рассмотрим основные идеи и понятие ЛП в узком смысле.

Неформально логическая программа описывает множество объектов, множество функций и отношения этих объектов. Строится логическая программа как набор утверждений об объектах, функциях и отношениях. Такое описание является статистическим и никакого вычислительного процесса не задаёт, т.е. можно считать, что это описание определяет БД в которой хранятся объекты и заданные на них функции и отношения, например, в виде графиков. К конкретному применению логической программы относится понятие запроса (цели) – например, каково значение функции заданной логической программой при данном значении аргумента. Вычисление ответа на запрос соответствует доказательству существования такого объекта. Правила, по которым проводятся вычисления, образуют процедурно-операционную семантику логической программы. Успехи языка Prolog обусловлены тем, что с одной стороны, с помощью используемых в них логических формул – хорновских дизъюнктов – можно описать многие практические задания, а с другой – найдена простота интерпретации этих формул и построена достаточно эффективная реализация системы ЛП.

Правила в Prolog имеют вид , где – это заголовок, – атомы (тело правила). Тело может быть пустым (при m=0), такие правила называются фактами. Атом имеет вид , где – n-арный предикатный символ или имя отношения; а – термы.

Терм – это либо имя переменной, либо константа, либо составной терм вида , – это n-арный функциональный символ.

Функции, задаваемые при логическом программировании, представляются в виде отношений – n-местная функция представляется в виде (n+1) местного отношения вида .

Запрос (это цель) имеет вид: , где и – атомы.

Каждое правило допускает логическую и процедурную интерпретацию (в семантике). Логическая интерпретация правила – «истинность А0 следует из истинности А1…Аm» или «А0 истинно только, если истинны А1…Аm».

Т.о. правила рассматриваются, как формулы языка логики предикатов вида: , где:

– квантор общности.

– логическая связка «И».

– логическая связка «если, то»

В Prolog данные, формулы записываются в обратную сторону и используются другие обозначения:

или «and».

или «or».

или «: –» или .

Формулы с использованием связок может быть преобразовано в эквивалентную, но имеющую связки , формулу вида: .

Такие формулы и называются хорновскими дизъюнкциями, а стиль программирования хорновским.

Метод резолюции – получив на вход логическую программу с присоединёнными к ней запросами в виде множества хорновских дизъюнктов, пытается построить вывод пустого дизъюнкта, обозначаемого символом “□”. Если это ему удаётся, тогда цель допускается, в противном случае отвергается. Реализуется метод резолюции и помощью двух правил:

1 Правило резолюции или правило склейки, которое во время работы вызывает процедуру унификации – сопоставления.

Унификация – это процесс, на вход которого поступает два терма и для них находится унификатор.

Унификатором двух термов называется подстановка, которая делает термы одинаковыми и если унификатор существует, то термы называются унифицируемыми и для них отыскивается наиболее общий унификатор, если нет – процедура унификации сообщает об отказе.

<== предыдущая лекция | следующая лекция ==>
Оболочки или “пустые ЭС” | Правило резолюции
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 772; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.