Решение задачи на языке программирования Турбо-Пролог



Решение:

Для начала надо задать информацию о мальчиках и девочках при помощи фактов пролога:

 

Затем, мы можем попросить пролог найти все возможные сочетания пар, при этом сразу зададим 6 пар, в каждой из которых будет лишь одна переменная:

 

Если мы запустим такой код, то на экране получим следующее (приведен фрагмент):

 

 

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

 

 

Мы помещаем все переменные, соответствующие девушкам и юношам в списки и требуем уникальность их элементов. Теперь после запуска программы мы увидим, что все переменные в решении инициализированы уникальным именем (приведен фрагмент):

 

 

Теперь мы видим, что пролог считает правильным решение, когда Коля любит Аню, а Аня – Колю, однако в условии задачи говорится, что любовь должна быть без взаимности. Добавить такое ограничение можно следующим образом:

 

 

Тут мы требуем, чтобы в решении не было двух таких пар, в которых мальчик и девочка любят друг друга. При этом используется функция member для выбора элемента из списка. В данном случае, первый вызов member пытается инициализировать переменные Boy и Girl, всеми вариантами, содержащимися в списке Solution, а второй вызов member проверяет взаимность отношения. Чтобы переписать этот фрагмент на Turbo Prolog – фрагмент проверяющий взаимность надо будет поместить в отдельный предикат, а вместо оператора \+использовать NOT.

Теперь при запуске на экране мы увидим следующие варианты решения (фрагмент):

 

 

Остается лишь добавить логических условий о том, кто кого любит чтобы в задаче остался лишь один вариант решения:

Чтобы на языке Prolog написать, что “Коля любит девушку, влюбленную в юношу, который любит Лену”, мы должны сначала найти в варианте решения юношу, который любит Лену, затем аналогичным образом найти девушку, которая любит его, и наконец, при помощи все того же предиката member задать ограничение – потребовать чтобы в решении Коля любил именно эту девушку:

 

Заключение

Турбо-Пролог - это осуществленная реализация языка программирования высокого уровня Пролог компиляторного типа. Ее отличает большая скорость компиляции и счета. Турбо-Пролог предназначен для выдачи ответов, которые он логически выводит при посредстве своих мощных внутренних процедур. Так, программа на Турбо-Прологе в несколько строк, может заменить несколько страниц текста при программировании на каком-либо другом языке. Благодаря наличию мощных средств сопоставления, Турбо-Пролог пригоден не только для использования в приложениях, относящихся к области искусственного интеллекта и обработке естественно- языковых конструкций, но также применим в таких традиционных областях, как, например, управление базами данных. Турбо-Пролог предназначен для машин класса IBM PC и совместимых с ними.

Турбо-Пролог имеет несколько отличий. В нем отсутствуют некоторые элементы C&M, но такие, которые встречаются только в очень сложных про- граммах. Самым существенным отличием от упомянутого стандарта (как и от других версий языка) является наличие в Турбо-Прологе строгой типизации элементов данных. Сделанные отступления от неофициального стандарта позволили значительно увеличить скорость трансляции и счета программ. И хотя некоторые программисты возражают против этих отступлений, говоря что Турбо-Пролог не есть Пролог "в чистом виде", однако имен- но в таком виде язык имеет массу преимуществ, например наличие графики и возможность работы с окнами. Этих средств нет в других реализациях. Не- зависимо от того, является ли Турбо-Пролог "чистым" Прологом или нет, он тем не менее является очень современным, полноценным и гибким языком программирования.

Данная работа состоит из двух глав:

1. В первой главе мною проведен анализ языка программирования Турбо-Пролог где изложены основные понятия.

2. Во второй главе решена задача в Турбо-Пролог. Цели и задачи поставленные в данной курсовой работе выполнены.


 

Список использованной литературы:

1. Ин Ц., Соломон Д. Использование Турбо­ Пролога /Пер. с англ. ­ М.: Мир, 2010.

2. Янсон А. Турбо-­Пролог в сжатом изложении /Пер. с нем. ­ М.: Мир, 2012.

3. Логическое программирование: Пер. с англ. и фр. - М.: Мир, 2009.

4. Братко И. Программирование на языке Пролог для искусственного интеллекта: Пер. с англ. - М.: Мир, 2011.

5. Абилов В. Г., Зинченко Н. И. Turbo и Arity : два подхода к логическому программированию. // Мир ПК - 2010 - N2 - c. 32-42. - (часть 1).

6. Абилов В. Г., Зинченко Н. И. Turbo и Arity : два подхода к логическому программированию. // Мир ПК - 2010 - N3 - c. 31-43. - (часть 2).

7. Скляров В.А. Программное и лингвистическое обеспечение персональных ЭВМ. Системы общего назначения: Справ. пособие.- Минск: Выш. шк., 2014.- 462 с.

8.  Д. Марселлус Программирование экспертных систем на Турбо-Прологе М.: Финансы и статистика, 2010.-108 с.

9. Язык Пролог в пятом поколении ЭВМ: Сб.статей 2000-2002 гг.: Пер. с англ./ Сост. Н.И. Ильинский. – М.: Мир, 2009.

10. Дж. Малпас. Реляционный язык Пролог и его применение. М.: Наука, 2013. – 111 с.

 


Дата добавления: 2018-02-28; просмотров: 857; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!