Языки и технологии логического программирования PROLOG, LISP

7.2.1.Prolog — один из старейших и все еще один из наиболее популярных языков логического программирования, хотя он значительно менее популярен, чем основные императивные языки. Он используется в системах обработки естественных языков, исследованиях искусственного интеллекта, экспертных системах, онтологиях и других предметных областях, для которых естественно использование логической парадигмы [104].

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

Prolog использует один тип данных, терм, который бывает нескольких типов [104]:

1) атом— имя, без особого смысла, используемое для построения составных термов;

2) числа и строки такие же, как и в других языках;

3) переменная обозначается именем, начинающимся с прописной буквы, и используется как символ-заполнитель для любого другого терма;

4) составной терм состоит из атома-функтора, за которым следует несколько аргументов, каждый из которых в свою очередь является атомом.

Целью выполнения программы на Prolog является оценивание одного целевого предиката. Имея этот предикат и набор правил и фактов, заданные в программе, Prolog пытается найти привязки (значения) переменных, при которых целевой предикат принимает значение истинности [104].

Prolog-программа является собранием правил и фактов. Решение задачи достигается интерпретацией этих правил и фактов. При этом пользователю не требуется обеспечивать детальную последовательность инструкций, чтобы указать, каким образом осуществляется управление ходом вычислений на пути к результату. Вместо этого он только определяет возможные решения задачи и обеспечивает программу фактами и правилами, которые позволяют ей отыскать требуемое решение [105].

Prolog относится к так называемым декларативным языкам, требующим от автора умения составить формальное описание ситуации. Поэтому программа на Prolog не содержит управляющих конструкций типа if … then, while … do; нет также оператора присваивания [105].

В Prolog задействованы другие механизмы. Задача описывается в терминах фактов и правил, а поиск решения Prolog берет на себя посредством встроенного механизма логического вывода.

Перечень возможных синтаксических конструкций Prolog невелик и в этом смысле язык прост для изучения.

Prolog реализован, практически, для всех известных операционных систем и платформ. В число операционных систем входят OS для мэйнфреймов, всё семейство Unix, Windows, OS для мобильных платформ [106].

7.2.2.Lisp -[93]

Контрольные вопросы и задания для самостоятельной работы по главе 7

7.1.Эффективность информированных стратегий поиска?

7.2. Жадный поиск по первому наилучшему совпадению?

7.3. Поиск Языки и технологии логического программирования PROLOG, LISP - student2.ru : минимизация суммарной оценки стоимости решения Языки и технологии логического программирования PROLOG, LISP - student2.ru , где Языки и технологии логического программирования PROLOG, LISP - student2.ru - стоимость достижения данного узла, и Языки и технологии логического программирования PROLOG, LISP - student2.ru - стоимость прохождения от данного узла до цели?

7.4. Поиск Языки и технологии логического программирования PROLOG, LISP - student2.ru с использованием алгоритма жадного поиска является оптимальным, если функция Языки и технологии логического программирования PROLOG, LISP - student2.ru преемственна?

7.5. Эвристический поиск с ограничением объема памяти (для поиска Языки и технологии логического программирования PROLOG, LISP - student2.ru применяется идея итеративного углубления эвристического поиска, за счет условия останова развертывания Языки и технологии логического программирования PROLOG, LISP - student2.ru стоимости Языки и технологии логического программирования PROLOG, LISP - student2.ru , а не глубины)?

7.6. Зависимость производительности поиска от точности эвристической функции?

7.7. Составление допустимых эвристических функций?

7.8. Нечеткие события?

7.9. Мера необходимости?

7.10. Нечеткие элементы, нечеткие множества?

7.11. Принцип относительности возможности?

7.12. Оптимальное оценивание и принятие решений?

7.13. Оценивание параметра нечеткого множества?

7.14. Решения в известной и неизвестной ситуациях?

7.15. Байесовская стратегия решения?

7.16. Логические аспекты здравого смысла?

7.17. Использование обычных средств программирования?

7.18. Использование дополнительных пакетов?

7.19. Языки искусственного интеллекта: Lisp?

7.20. Языки искусственного интеллекта: Prolog?

Глава 8. Послесловие

Наши рекомендации