Языки и технологии логического программирования 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. Поиск : минимизация суммарной оценки стоимости решения , где - стоимость достижения данного узла, и - стоимость прохождения от данного узла до цели?
7.4. Поиск с использованием алгоритма жадного поиска является оптимальным, если функция преемственна?
7.5. Эвристический поиск с ограничением объема памяти (для поиска применяется идея итеративного углубления эвристического поиска, за счет условия останова развертывания стоимости , а не глубины)?
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. Послесловие