Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекція_4_21_лог_зад.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
420.35 Кб
Скачать

3. Проблема слідчого

Програма LOGTASK4 імітує дії слідчого, що розкриває по наявних фактах злочин - убивство громадянки Романової. У якості фактів описані дані про підозрюваних осіб (прізвище, вік, стать, професія), коло їх знайомств, перераховані всі можливі мотиви злочину й доказу. Правила, наведені в програмі, дозволяють на основі наявних фактів зробити висновок про ймовірного злочинця.

domains name,sex,occupation,object,vice,substance=symbol %ім'я,

%стать, професія, річь, порок, сутність age=integer predicates person(name, age, sex, occupation) had_affair(name, name) %любовна афера killed_with(name, object) % вбитий предметом killed(name) % вбитий killer(name) % вбивця motive(vice) % мотив(порок) smeared_in(name, substance) %забруднений чимось owns(name, object) %дехто володіє річчю operates_identically(object, object) %діє ідентично owns_probably(name, object) %можливо володіє suspect(name) %підозрює clauses person("Кузьмін", 55, m, "шофер"). person("Попов", 25, m, "футболіст"). person("Александров", 25, m, "продавець"). person("Іванов", 25, m, "безробітний"). person("Назарова",20, w, "покоївка"). person("Гущина", 22, w, "студент"). person("Романова", 19, w, "продавець").

had_affair("Назарова", "Іванов"). had_affair("Назарова", "Кузьмін"). had_affair("Романова", "Іванов").

killed_with("Романова", "готель").

killed("Романова").

motive("невідомий"). motive("гроші"). motive("ревнощі"). motive("помста").

smeared_in("Кузьмін", "плями крові"). smeared_in("Романова", "плями крові"). smeared_in("Попов", "бруд"). smeared_in("Іванов", "плями кави"). smeared_in("Гущина", "плями кави").

owns("Кузьмін", "ніж"). owns("Іванов", "пістолет").

operates_identically("ніж", "готель"). operates_identically("бар", "готель"). operates_identically("перукарня", "готель"). operates_identically("ножиці", "перукарня"). operates_identically("бутси", "готель").

owns_probably(X,"бутси"):-person(X,_,_,"футболіст"). owns_probably(X,"ножиці"):-person(X,_,_,"перукар"). owns_probably(X, Object) :- owns(X, Object).

suspect(X) :- motive("невідомий"), killed_with("Романова", Weapon), %Weapon - зброя operates_identically(Object, Weapon), owns_probably(X, Object). suspect(X) :- motive("ревнощі"), person(X, _, m, _), had_affair("Романова", X). suspect(X) :- motive("ревнощі"), person(X, _, f, _), had_affair(X, Man),had_affair("Романова", Man). suspect(X):-motive("гроші"),person(X,_,_, "безробітний").

killer(Killer) :- person(Killer, _, _, _), killed(Killed), Killed <> Killer, suspect(Killer), smeared_in(Killer, X), smeared_in(Killed, X). goal killer(Killer),nl, write("Злочин зробив : ",Killer).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]