Разработка простейшего варианта дедуктивной базы данных

Страницы работы

6 страниц (Word-файл)

Содержание работы

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Новосибирский Государственный Технический Университет

Кафедра экономической информатики

nstu

Лабораторная работа №2

«Разработка простейшего варианта дедуктивной базы данных»

Вариант 5

Факультет: Бизнеса

Группа: ФБИ-71

Студенты: Габова Л.А.,

                  Хуторненко В.А.,

                  Щелконогова К.М.

Проверили: Авдеенко Т.В.,

           Бакаев М.А.

Новосибирск ,  2010

Цель работы

1)  Ознакомиться с особенностью работы Турбо(Visual версий 4-5.2) -оболочки для языка ПРОЛОГ, с принципами программирования и структурой программы в Турбо(Visual) -Прологе.

2)  На примере простейших баз данных научиться описывать факты и простейшие отношения между объектами в формально-логической модели представления знаний.

Задание:

5. Разработать базу данных - лекарства. Необходимо учесть симптомы болезни, возраст больного, противопоказания, стоимость, наличие и т.д. Система должна помогать фармацевту подбирать покупателям лекарства без рецептов (по ряду симптомов и противопоказаний) и в соответствии с их финансовыми возможностями.

Текст программы:

domains

age=integer.

minage=integer.

maxage=integer.

sympt1=symbol.

sympt2=symbol.

sympt3=symbol.

sympt4=symbol.

sympt5=symbol.

sympt6=symbol.

pr1=symbol.

pr2=symbol.

pr3=symbol.

cash=short.

namedrug=symbol.

cost=short.

nalichie=integer.

namedis=symbol.

predicates

   %nondeterm client(age,sympt1,sympt2,sympt3,pr3,cash).

   nondeterm drug(namedrug,minage,maxage,namedis,pr1,pr2,cost,nalichie).

   nondeterm disease(namedis,sympt4,sympt5,sympt6).

   nondeterm maxcost(namedrug,cost,namedis).

   nondeterm recept(namedrug,cost,pr3,sympt1,sympt2,sympt3,age,cash).

clauses

drug(erius,12,100,allergy,giperchuvstv,berem,487,0).

drug(zirtek,12,100,allergy, giperchuvstv,berem,182,10).

drug(suprastin,1,100,allergy,giperchuvstv,berem,138,20).

drug(otipax,1,100,otit,giperchuvstv,berem,117,25).

drug(enterosGel,0,100,foodpoisoning,o,o,185,8).

drug(ugolAkt,0,100,foodpoisoning,o,o,5,30).

drug(smekta30,0,100,foodpoisoning,giperchuvstv,o,326,5).

drug(smekta1,0,100,foodpoisoning,giperchuvstv,o,15,30).

drug(ketanov,16,100,bol,yazva,berem,31,25).

drug(nurofen,12,100,bol,serdechnaya_nedostatochnost,gemophiliya,127,15).

drug(sulfacil_natriya,0,100,konuktivit,gyperchuvstv,o,23,18).

drug(visin,2,100,konuktivit,gyperchuvstv,berem,154,12).

drug(antigrippin,12,100,gripp,gyperchuvstv,yazva,109,21).

drug(antigrippinD,3,12,gripp,gyperchuvstv,yazva,103,19).

drug(ksimelin,5,100,nasmork,o,o,87,50).

drug(pinasol,5,100,nasmork,o,o,62,45).

drug(korvalol,18,100,rastr_serd_sos_syst,gyperchuvstv,pochechn_nedost,12,14).

disease(allergy,chihanie,slezotochivost,kojnyvisip).

disease(otit,bol_v_uhe,zalozhennost_uha,o).

disease(foodpoisoning,toshnota,dirrhea,blednost).

disease(bol,ostraya_bol,prodolzhitelnaya,kratkovremennaya).

disease(nasmork,zalozhennost_nosa,vydelenia_is_nosa,vospalenie_slizistoy).

disease(konuktivit,pokrasnenie,gnoi,slezotochivost).

disease(gripp,tempr,oznob,bol_v_gorle).

disease(rastr_serd_sos_syst,nevroz,tahikordiya,bol_v_grudy).

maxcost(X,Y,Z):-drug(X,_,_,Z,_,_,Y,_),drug(S,_,_,Z,_,_,W,_),Y>W,!.

recept(X,Y,Z,W,U,V,Q,R):-drug(X,E,T,B1,I,H,Y,D),Q<T,Q>E,D>0,R>Y,disease(B1,A,B,C),A=W or A=U or A=V,!,B=W or B=U or B=V,!,C=W or C=U or C=V,!,Z=H or Z=I,!.

goal

%maxcost(X,Y,allergy).

%maxcost(X,Y,konuktivit).

%recept(X,Y,yazva,toshnota,dirrhea,blednost,5,300).

%recept(X,Y,berem,zalozhennost_nosa,vydelenia_is_nosa,vospalenie_slizistoy,25,150).

%recept(X,Y,net,tempr,oznob,bol_v_gorle,4,110).

%recept(X,Y,net,bol_v_uhe,zalozhennost_uha,o,35,300).

%recept(X,Y,serdechnaya_nedostatochnost,ostraya_bol,prodolzhitelnaya,kratkovremennaya,27,200).

%recept(X,Y,net,pokrasnenie,gnoi,slezotochivost,3,160).

recept(X,Y,berem,chihanie,slezotochivost,kojnyvisip,36,500).

Результаты выполнения:

1)  maxcost(X,Y,allergy).

Найти лекарство от аллергии с наибольшей ценой.

2)  maxcost(X,Y,konuktivit).

Найти лекарство от коньюктевита с наибольшей ценой.

Цели 3) - 9): Найти лекарство от болезни, которая определяется по симптомам, названным клиентом, учитывая противопоказания, возраст клиента, количество наличных денег и наличие лекарства на складе.

3)  recept(X,Y,yazva,toshnota,dirrhea,blednost,5,300).

Найти лекарство от болезни, которая определяется по симптомам, названным клиентом, учитывая противопоказания, возраст клиента, количество наличных денег и наличие лекарства на складе.

4) recept(X,Y,berem,zalozhennost_nosa,vydelenia_is_nosa,

vospalenie_slizistoy,25,150).

4)  recept(X,Y,net,tempr,oznob,bol_v_gorle,4,110).

5)  recept(X,Y,net,bol_v_uhe,zalozhennost_uha,o,35,300).

7) recept(X,Y,serdechnaya_nedostatochnost,ostraya_bol,prodolzhitelnaya, kratkovremennaya,27,200).

8) recept(X,Y,net,pokrasnenie,gnoi,slezotochivost,3,160).

9) recept(X,Y,berem,chihanie,slezotochivost,kojnyvisip,36,500).

Декларативный смысл фактов и правил:

drug(X,Z,Y,U,W,V,Q,P).

Лекарство с названием X, с возрастными ограничениями от Z до Y, для лечения болезни U, с противопоказаниями к применению W, V, ценой Q при наличии P штук.

disease(X,Y,Z,U).

Болезнь с названием X, с симптомами Y, Z, U.

maxcost(X,Y,Z):-drug(X,_,_,Z,_,_,Y,_),drug(S,_,_,Z,_,_,W,_),Y>W,!.

Если есть лекарство X, от болезни Z, с ценой Y и лекарство S, от болезни Z, с ценой W и Y больше W, то лекарство X имеет максимальную цену среди лекарств от болезни Z.

recept(X,Y,Z,W,U,V,Q,R):-drug(X,E,T,B1,I,H,Y,D),Q<T,Q>E,D>0,R>Y,disease(B1,A,B,C),A=W or A=U or A=V,!,B=W or B=U or B=V,!,C=W or C=U or C=V,!,Z<>H or Z<>I,!.

Если есть такое лекарство X с возрастными ограничениями к употреблению от E до T лет, от болезни B1, с противопоказаниями I и H, по цене Y и в наличии D штук, при условии, что возраст пациента больше E и меньше T, при условии, что лекарство есть в наличии, у пациента достаточно средств R для покупки лекарства по цене Y, и болезнь B1 с симптомами A, B, C, при равенстве этих симптомов симптомам пациента W,U,V и противопоказание клиента Z не равно противопоказаниям лекарства H,I.

Дерево поиска решений:

Для цели maxcost(X,Y,Z)

Похожие материалы

Информация о работе