ВУЗ:
Составители:
Рубрика:
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