ВУЗ:
Составители:
Рубрика:
5
7. темный(Z):-черный(Z).
8. темный(Z):-коричневый(Z).
Вопрос:
темный(X),большой(X).
Шаги вычисления:
1) Исходный список целевых утверждений: темный(X),
большой(X).
2) Просмотр всей программы от начала к концу и поиск
предложения, у которого голова сопоставима с первым целевым
утверждением: темный(X).
Найдено предложение 7: темный(Z):-черный(Z).
Замена первого целевого утверждения конкретизированным
телом предложения 7 – порождение нового списка целевых ут-
верждений: черный(X), большой(X).
3)
Просмотр программы для нахождения предложения, со-
поставимого с черный(X). Найдено предложение 5: черный(кот).
У этого предложения нет тела, поэтому список целей при соответ-
ствующей конкретизации сокращается до большой(кот).
4) Просмотр программы в поисках этой цели завершается
неуспехом, и происходит возврат к шагу 3 и отмены конкретиза-
ции X=кот. Список целей вновь:
черный(X), большой(X).
Продолжение просмотра ниже предложения 5. Ни одно
предложение не найдено. Возврат к шагу 2 и продолжение про-
смотра ниже предложения 7. Найдено предложение 8: темный(Z):-
коричневый(Z). Замена первой цели в списке на коричневый(X)
дает: коричневый(X), большой(X).
5) Просмотр программы для обнаружения предложения, со-
поставимого с коричневый(X) дает коричневый(медведь). У этого
предложения нет
тела, поэтому список целей уменьшается до
большой(медведь).
6) Просмотр программы и обнаружение предложения боль-
шой(медведь).
У него нет тела, поэтому список целей становится пустым.
Это указывает на успешное завершение, а соответствующая кон-
кретизация переменных: X=медведь.
6
Забегая немного вперед, представляю запись этой же про-
граммы на Turbo Prolog'е. (Если используете VP v.5.2, можете пи-
сать по-русски все, за исключением типов встроенных перемен-
ных, наименований встроенных предикатов, наименований разде-
лов программы).
/* Раздел объявления предикатов*/
predicates
большой(string)
черный(string)
коричневый(string)
серый(string)
темный(string)
маленький(string)
/*Главная цель-вопрос*/
goal
темный(X), большой(X),
write(X).
/*Правила*/
clauses
большой(медведь).
большой(слон).
маленький(кот).
коричневый(медведь).
черный(кот).
серый(слон).
темный(Z):-черный(Z).
темный(Z):-коричневый(Z).
Можно изменить программу: записать факты в специальный
файл (с любым именем), а затем загрузить их в раздел фактов:
facts – f1
большой(string)
маленький(string)
коричневый(string)
черный(string)
темный(string)
серый(string)
7. темный(Z):-черный(Z). Забегая немного вперед, представляю запись этой же про-
8. темный(Z):-коричневый(Z). граммы на Turbo Prolog'е. (Если используете VP v.5.2, можете пи-
сать по-русски все, за исключением типов встроенных перемен-
Вопрос:
ных, наименований встроенных предикатов, наименований разде-
темный(X),большой(X).
лов программы).
Шаги вычисления: /* Раздел объявления предикатов*/
predicates
1) Исходный список целевых утверждений: темный(X),
большой(string)
большой(X).
черный(string)
2) Просмотр всей программы от начала к концу и поиск
коричневый(string)
предложения, у которого голова сопоставима с первым целевым
серый(string)
утверждением: темный(X).
темный(string)
Найдено предложение 7: темный(Z):-черный(Z).
маленький(string)
Замена первого целевого утверждения конкретизированным
/*Главная цель-вопрос*/
телом предложения 7 – порождение нового списка целевых ут-
goal
верждений: черный(X), большой(X).
темный(X), большой(X),
3) Просмотр программы для нахождения предложения, со-
write(X).
поставимого с черный(X). Найдено предложение 5: черный(кот).
/*Правила*/
У этого предложения нет тела, поэтому список целей при соответ-
clauses
ствующей конкретизации сокращается до большой(кот).
большой(медведь).
4) Просмотр программы в поисках этой цели завершается
большой(слон).
неуспехом, и происходит возврат к шагу 3 и отмены конкретиза-
маленький(кот).
ции X=кот. Список целей вновь: черный(X), большой(X).
коричневый(медведь).
Продолжение просмотра ниже предложения 5. Ни одно
черный(кот).
предложение не найдено. Возврат к шагу 2 и продолжение про-
серый(слон).
смотра ниже предложения 7. Найдено предложение 8: темный(Z):-
темный(Z):-черный(Z).
коричневый(Z). Замена первой цели в списке на коричневый(X)
темный(Z):-коричневый(Z).
дает: коричневый(X), большой(X).
5) Просмотр программы для обнаружения предложения, со- Можно изменить программу: записать факты в специальный
поставимого с коричневый(X) дает коричневый(медведь). У этого файл (с любым именем), а затем загрузить их в раздел фактов:
предложения нет тела, поэтому список целей уменьшается до facts – f1
большой(медведь). большой(string)
6) Просмотр программы и обнаружение предложения боль- маленький(string)
шой(медведь). коричневый(string)
У него нет тела, поэтому список целей становится пустым. черный(string)
Это указывает на успешное завершение, а соответствующая кон- темный(string)
кретизация переменных: X=медведь. серый(string)
5 6
