Автор: Пользователь скрыл имя, 13 Декабря 2010 в 19:59, курсовая работа
Программа имитирует действия следователя, раскрывающего по имеющимся фактам преступление – убийство гражданки Романовой. В качестве фактов описаны данные о подозреваемых лицах (фамилия, возраст, пол, профессия), круг их знакомств, перечислены все возможные мотивы преступления и улики.
Задание_________________________________________________________ 3
1. Назначение программного продукта_______________________________ 4
2. Описание данных_______________________________________________ 5
3. Описание методов решения_______________________________________ 7
4. Описание программы____________________________________________ 9
5. Описание пользовательского интерфейса ___________________________ 10
Список литературы________________________________________________ 12
ПРИЛОЖЕНИЕ. Исходный текст программы _________________________ 13
Далее
в программе указываем
5. Описание пользовательского интерфейса
Программа, следуя введенному в нее алгоритму решения, найдет преступника и выдаст соответсвующие данные о лице, совершившем убийство, которые включают в себя мотив преступления и орудие преступления. Программа выдаст решение, вызывая команду, записанную в запросе goal:
goal
do_expert_crime.
В результате работы программы было получено следующее решение задачи о расследовании преступления гражданки Романовой:
Из
выданного программой решения следует,
что убийство было совершено мужским
парикмахером гражданкой Гурченко, работающей
в той же гостинице, что и Романова. Мотивом
данного преступления является месть
гражданке Романовой за то, что та увела
у Гурченко любимого мужчину бизнесмена
Кириенко. Орудием убийства послужили
обыкновенные ножницы для стрижки
волос, которыми Гурченко нанесла смертельные
повреждения Романовой. На одежде Гурченко
были найдены пятна крови, соответствующие
крови горничной Романовой. Состав найденной
крови на одежде полностью совпадает с
составом крови Романовой. Исследование
на идентичность крови было проведено
в специальной химической лаборатории.
Из выше перечисленного следует, что наказание
за содеянное преступление должна понести
гражданка Гурченко.
Список
литературы
1) Иван Братко. Алгоритмы искусственного интеллекта на языке PROLOG— М.: Вильямс, 2004.
2) Анатолий Адаменко, Андрей Кучуков. Логическое программирование и Visual Prolog— СПб.: «БХВ-Петербург», 2003.
3)
Клоксин У., Меллиш К. «Программирование
на языке пролог», 1987 г.
ПРИЛОЖЕНИЕ
Исходный текст программы
domains
name, sex, occupation, object, vice, substance = symbol
age=integer
predicates
do_expert_crime
do_consulting
person(name, age, sex, occupation)
had_affair(name, name)
killed_with(name, object)
killed(name)
killer(name)
motive(vice, name)
smeared_in(name, substance)
owns(name, object)
owns_probably(name, object)
clauses
do_expert_crime:-
makewindow(1,7,7,"Expert System",1,3,22,71),
nl,write("
------------------------------
nl,write(" A Crime Expert "),
nl,write(" "),
nl,write("
------------------------------
nl,nl,
do_consulting,
write("Press space bar."),nl,
readchar(_),
removewindow,
exit.
do_consulting:-
motive(Y,X),!,nl,
write("Motive is ",Y,"."),nl,
killer(X),!,nl,
write("Crime is done by ",X,".").
person("Tarasov", 55, m, "povar").
person("Kataev", 35, m, "taxist").
person("Kirienko", 26, m, "businesman").
person("Filatov", 28, m, "workless").
person("Gurchenko", 19, w, "barber").
person("Romanova", 19, w, "gornichnaia").
had_affair("Gurchenko", "Kirienko").
had_affair("Romanova", "Tarasov").
had_affair("Romanova", "Kirienko").
killed_with("Romanova", "nognici").
killed("Romanova").
smeared_in("Tarasov", "bloud").
smeared_in("Romanova", "bloud").
smeared_in("Kataev", "dirt").
smeared_in("Gurchenko", "bloud").
smeared_in("Kirienko", "coffee").
owns("Kirienko", "pistol").
owns_probably(X, "nognici") :-
person(X, _, _, "barber").
owns_probably(X, "knife") :-
person(X, _, _, "povar").
owns_probably(X, Object) :-
owns(X, Object).
motive("revnost", X):-
killed_with("Romanova", Weapon),
owns_probably(X, Weapon),
person(X, _, m, _) ,
had_affair("Romanova", X).
motive("mest", X):-
killed_with("Romanova", Weapon),
owns_probably(X, Weapon),
person(X, _, w, _) ,
had_affair(X, Man) ,
had_affair("Romanova", Man).
motive("money", X):-
killed_with("Romanova", Weapon),
owns_probably(X, Weapon),
person(X, _, _, "workless").
killer(Killer) :-
person(Killer, _, _, _) ,
killed(Killed) ,
Killed <> Killer ,
motive(_, Killer),
smeared_in(Killer, X) ,
smeared_in(Killed, X).
goal
do_expert_crime.
Информация о работе Расследование преступления на языке логического программирования