Решение логической задачи на языке Prolog
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
Московский Авиационный Институт
КУРСОВАЯ РАБОТА
по дисциплине Интеллектуальные Информационные Системы
Решение логической задачи на языке Prolog
Выполнил: студент группы 03-432
Виноградов А.А.
Москва 2012г
Введение
Пролог - язык и система логического программирования, основанные на языке предикатов математической логики дизъюнктов Хорна, представляющей собой подмножество логики предикатов первого порядка.
Основными понятиями в языке Пролог являются факты, правила логического вывода и запросы, позволяющие описывать базы знаний, процедуры логического вывода и принятия решений.
Факты в языке Пролог описываются логическими предикатами с конкретными значениями. Правила в Прологе записываются в форме правил логического вывода с логическими заключениями и списком логических условий.
Особую роль в интерпретаторе Пролога играют конкретные запросы к базам знаний, на которые система логического программирования генерирует ответы истина и ложь. Для обобщённых запросов с переменными в качестве аргументов созданная система Пролог выводит конкретные данные в подтверждение истинности обобщённых сведений и правил вывода.
Факты в базах знаний на языке Пролог представляют конкретные сведения (знания). Обобщённые сведения и знания в языке Пролог задаются правилами логического вывода (определениями) и наборами таких правил вывода (определений) над конкретными фактами и обобщёнными сведениями.
Начало истории языка относится к 1970-м годам. Будучи декларативным языком программирования, Пролог воспринимает в качестве программы некоторое описание задачи или баз знаний и сам производит логический вывод, а также поиск решения задач, пользуясь механизмом поиска с возвратом и унификацией.
Почему Prolog?
Пролог самый популярный язык логического программирования с многолетней историей развития, огромным сообществом и достаточным количеством качественной литературы, в отличие, к примеру от языка Lisp. Решение на Прологе задач, требующие логических выводов, наиболее лаконично, по сравнению с любым из структурированных языков. Чем решение короче и понятнее, тем легче разобраться в его нюансах, что немало важно при работе программистов в команде.
История головоломок
Некоторые головоломки известны с глубокой древности. Оригинальные логические задачи находят на стенах египетских пирамид, в древнегреческих манускриптах и в других исторических памятниках. Эпохой расцвета в средневековой истории головоломок можно считать конец IX века. Рост уровня образования и снижение религиозной нетерпимости к наукам привели к расширению круга любителей логических задач. В это время появилась и первая книга головоломок в Европе - сборник ирландского просветителя Алкуина Задачи для развития молодого ума.
Наиболее широкое распространение головоломки получили на рубеже XIX и XX веков. Благодаря деятельности американца Сэма Лойда и англичанина Генри Дьюдени головоломки проникли во многие периодические издания, стали популярны среди широких слоев населения. Лойд считается автором популярнейшей во всем мире головоломки Пятнашки. Игра была настолько популярной, что некоторые работодатели вынуждены были издать приказ о запрете приносить её на работу.
Следующим толчком в развитии головоломок стало изобретение в 1974 году венгром Эрнё Рубиком знаменитого кубика. Кубик Рубика стал не только игрушкой, но и объектом исследований математиков и инженеров. С тех пор по всему миру регулярно проводятся соревнования по скоростной сборке кубика. Современная индустрия головоломок стремительно развивается. Постоянно на рынке появляются новые игры, конструкции и издания, призванные держать интеллект человека в тонусе, развивать логику, тренировать нестандартное мышление и повышать интеллектуальный уровень в целом.
С 1992 года проводятся чемпионаты мира по пазлспорту - интеллектуальному виду состязаний, в котором участники соревнуются в скоростном решении головоломок на бумаге.
Задача
В некоторой далекой стране рыцари всегда говорили только правду и никогда не лгали,а лжецы всегда только лгали и никогда не говорили правды. А теперь мы подходим к самой интересной задаче, торжественно объявил Король.
Некий мистер Энтони присутствовал однажды на суде. Слушалось дело по обвинению в шпионаже. На скамье подсудимых сидело трое А, В и С, относительно которых в начале заседания было известно лишь, что один из них рыцарь, другой лжец и третий шпион.
Подсудимого А судья спросил: Вы шпион? А ответил односложно ("да" или "нет"). Затем судья спросил подсудимого В: Правду ли сказал А? В дал односложный ответ ("да" или "нет"), после чего судья, указав на одного из подсудимых, заявил: Вы не шпион, освобождаетесь из-под стражи и можете быть свободны! Тот с радостью покинул зал заседаний. Затем судья спросил у одного из двух оставшихся на скамье подсудимых, шпион ли его сосед. Тот ответил односложно ("да" или "нет"), после чего судья с уверенностью установил, кто шпион.
Пока ты еще не можешь определить, кто шпион, сказал Король Алисе, необходимы дополнительные данные.
Слушай, что было дальше.
Мистер Энтони рассказал о процессе своему д