Методы искусственного интеллекта для синтеза проектных решений. Подольский В.Е - 36 стр.

UptoLike

6.1. ОПИСАНИЕ ЯЗЫКА
Пролог-программы состоят из термов. Термэто либо константа, либо переменная, либо структура.
Каждый из этих термов записывается как последовательность символов алфавита:
1)
прописных букв латинского алфавита A – Z;
2)
строчных букв латинского алфавита a – z;
3)
прописных букв русского алфавита АЯ;
4)
строчных букв русского алфавита ая;
5)
цифр 0 – 9;
6)
специальных знаков: +, –, *, /, \, ^, <, >, ~, :, ., ?, ,, @, #, &, $.
Рассмотрим каждый из термов.
Константыэто поименованные конкретные объекты или конкретные отношения. Существует два вида констант:
атомы;
числа.
Атомы бывают двух видов:
1)
составленные из букв и цифр;
2)
составленные из специальных знаков.
Атомы, составленные из букв и цифр, должны начинаться со строчной буквы: sreda, conc, ask, a1, b2 и т.д.
Иногда возникает необходимость иметь атом, начинающийся с прописной буквы или цифры. Если атом заключается в
кавычки, то он может содержать любые литеры, например: “Prolog” “1причина”,”_ask” и т.д.
Атомы, составленные из спецзнаков, как правило, состоят только из специальных знаков, например: :–, ., ,.
Другой вид константчислаиспользуется для представления числовых данных, что позволяет выполнять
арифметические операции над ними, например: 0, 999, 54,23 и т.д.
Переменные могут менять своё значение в ходе работы программы. Имена переменных начинаются с прописной буквы
или знака подчёркивания: X, Y, Z, Ask, _1_a.
Иногда возникает необходимость в использовании переменной, имя которой не будет нигде употребляться. В этом
случае можно использовать анонимную переменнуюодиночный знак подчеркивания (_). Анонимная переменная позволяет
избавить программиста от необходимости придумывать разные имена переменным в тех случаях, когда эти имена в
утверждении нигде больше не употребляются.
Структураэто единый объект, состоящий из совокупности других объектов, называемых компонентами.
Компоненты группируются в структуру для удобства использования. Структура записывается на Прологе с помощью
указания её функтора и компонент. Компоненты заключаются в круглые скобки и разделяются запятыми. Функтор
записывается перед открывающейся круглой скобкой. Компоненты структурыэто константы, переменные или структуры.
Если структура не содержит переменных ни на каком уровне вложенных подструктур, она называется константной, иначе
переменной, например:
book(X, avtor(“Александр Пушкин”))
Следует отметить, что факт в языке Пролог описывается как структура, функтором которой является некоторый
предикат. Например, имеется факт: ″азотная кислота является кислотой″. На языке Пролог его можно записать: is(″азотная
кислота″, ″кислота″).
6.2. ТИПЫ ДАННЫХ В ЯЗЫКЕ ПРОЛОГ
В языке Пролог используются следующие типы данных:
symbol – последовательность букв, цифр и знаков подчеркивания, которая начинается со строчной буквы или
заключена в кавычки, например person, a1, b2, “Prolog”.
string – любая последовательность символов, которая заключена в кавычки, напримеркислота”, “123/456”.
char – отдельный символ, заключенный в апострофы, например ‘A’, ‘3’.
integer – целое число.
real – вещественное число.
file – имя файла.
Данные типа symbol в отличие от данных типа string запоминаются в таблице символов, которая размещается в
оперативной памяти, поэтому её использование обеспечивает наиболее быстрый поиск. Однако для построения таблицы
символов требуется дополнительное время.
6.3. РАВЕНСТВО И УСТАНОВЛЕНИЕ СООТВЕТСТВИЯ
В прологе существует особый предикат равенство, обозначаемый литерой “ = ”, например X = Y.
При согласовании с данными цели X = Y, где X, Y – любые термы, действуют следующие правила:
1.
Если X – неконкретизированная переменная, а переменная Y – конкретизирована, то выражение X = Y является
оператором присваивания.
2.
Если X, Y – конкретизированные термы, то выражение X = Y – операция сравнения.
3.
Две структуры равны, если они имеют один и тот же функтор и одинаковое число аргументов, причём все
соответствующие аргументы равны, например, при согласовании такого утверждения: is (“сернистая кислота”, “кислота”) =
is (Х, “кислота”), переменной Х будет присвоено конкретное значениесернистая кислота”.
Структуры могут быть вложены одна в другую на любую глубину. Если такие вложенные структуры проверяются на
равенство, проверка займёт больше времени, поскольку необходимо проверить все структуры, например, попытка
согласовать следующую цель: