Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекц по Visual Prolog.doc
Скачиваний:
4
Добавлен:
02.05.2019
Размер:
937.47 Кб
Скачать

4. Механізми прологу

    1. Механізм узгодження цілі з базою даних

Базою даних Прологу вважають умовні твердження і факти. Виконання програми – процес узгодження цілі з базою даних. Ціль вважають узгодженою, якщо вона істина.

Ціль може бути складним або простим твердженням. При складній цілі, істинність цілі залежить від істинності предикатів, з яких вона складається. Предикати складної цілі розглядаються зліва направо і по черзі стають поточною ціллю.

Процес узгодження поточної цілі починається пошуком твердження умовного або безумовного з яким може зіставитися ціль. Для кожної поточної цілі пошук твердження ведеться з початку секції Clauses. Процес пошуку твердження при перегляді бази даних зверху вниз називають прямим трасуванням.

Процес зіставлення цілі з твердженням називають процедурою уніфікації.

Ціль може бути зіставлена з твердженням якщо:

  • Функтори цілі і твердження однакові;

  • Кількість аргументів у цілі і твердження однакові;

  • Типи аргументів, що стоять на відповідних місцях однакові;

  • Аргументи на відповідних місцях можна зіставити.

Аргументи можна зіставити якщо:

    • Вони обидва вільні змінні;

    • Один аргумент змінна вільна, а другий константа або конкретизована змінна;

    • Обидва аргументи однакові константи.

Передача параметрів від твердження до твердження завжди виконується при зіставленні поточного цільового твердження та інших тверджень бази даних.

Передача можлива через:

    • вільну змінну, яка зіставляється з константою або конкретизованою змінною;

    • механізм зчеплення вільних змінних.

Якщо знайдено твердження зіставимо з ціллю, то можливі такі варіанти:

  • Твердження факт і тоді поточна ціль узгоджена з базою даних;

  • Твердження умовне і воно буде істинним при істинності його умов. В цьому випадку для кожної умови повторюється процес, як у випадку зі складною ціллю.

Процес доведення істинності умов називають пошуком вглиб.

Після узгодження всіх поточних цілей необхідних для доведення цілі з секції Goal, ціль вважається узгодженою.

Розглянемо процес на прикладі: Нехай пасажиру треба з’ясувати час відходу потягів, що йдуть на Київ пізніше заданого часу. Програма одержує номера потягів, що йдуть на Київ пізніше заданого часу .

Predicates

Chas (integer, real, string)

oderg_chas

Goal

Clearwindow, oderg_chas.

Clauses

Chas (46,7.58,”Київ”).

Chas (83, 12.04, “Київ”).

Chas (75, 14.25, “Київ”).

Oderg_chas:- write(“Час ? ”), readreal(Ch),

Chas (N, Ch1,_), Ch1>Ch,

write (“ № поїзда ”, N, “ Час ”,Ch1),fail.

Oderg_chas.

Розглянемо дерево цілі для програми:

В прикладі ціль складне твердження:

  1. Перша поточна цільgoal стандартний предикат, який очищує вікно істинна;

  2. Друга поточна цільgoal істинна, вона вводить час;

  3. Третя поточна цільgoal зіставляється з умовним твердженням cina (V). Умовне твердження істинно, якщо істинні умови:

    1. Перша поточна цільcina істинна. Вона виводить на екран запитання;

    2. Друга поточна цільcina стандартний предикат “nl”- new line істинна;

    3. Третя поточна цільcina істинна вона вводить ознаку вагону;

    4. Четверта поточна цільcina істинна, якщо вірно введено тип вагону і тому ціль зіставляється з фактом.

Вивід: умовне твердження Cina істинне.

  1. Четверта поточна цільgoal істинна. Вона виводить на екран ціну білету.

  2. П’ята поточна цільgoal Chas (N, Vrem1) має вільні змінні і зіставляється з фактом. Ціль істинна.

  3. Шоста поточна цільgoal перевіряє умову Vrem1>Vrem, якщо умова невірна включається механізм звороту(пункт 6.1).

    1. Звільнюються значення змінних N і Vrem1, які одержано з факту.

    2. Перелагоджується ціль Chas (N, Vrem1) з наступним фактом.

    3. Повторюється пункт 6.При вірній умові виконується пункт 7.

  4. Сьома поточна цільgoal істинна. На екран виводиться № потягу і час відходу.

  5. Восьма поточна цільgoal стандартний предикат “new line” істинна.

  6. Дев’ята поточна цільgoal завжди невірна. Стандартний предикат fail завжди невірний.Включається механізм звороту, який передає керування на найближчий предикат, що розташовано ліворуч і має ще не переглянуті розв’язки. Це предикат Chas (N, Vrem1).

    1. Звільнюються значення змінних N і Vrem1, які одержано з факту.

    2. Перелагоджується ціль Chas (N, Vrem1) з наступним фактом.

    3. Повторюються пункти 6-9.

  7. Перебір фактів виконується до тих пір, поки будуть розв’язки у предиката Chas(N, Vrem1). По закінченню розв’язків ціль повертає fail. Однак необхідні відомості одержані.