Toggle navigation
?
users online
Logout
Open hangout
Open chat for current file
% A* algorithm % Author: Reynaldo Zeballos % Fecha: 25/04/2016 enfermedad(neumonia). enfermedad(tuberculosis). enfermedad(hepatitisB). enfermedad(gastritis). enfermedad(sinusitis). %-------------------------------------------------------------------- % sintoma(X,Y) = X es sintoma de Y, donde Y es enfermedad %---------------------------------------------------------------- % enfermedad: Neumonia sintoma(fiebre,neumonia). sintoma(dolorToraxico , neumonia). sintoma(dolor de culo, neumonia). sintoma(escalofrios, neumonia). sintoma(tos,sodomia). % enfermedad: Tuberculosis sintoma(fiebre,tuberculosis). sintoma(cansancio,tuberculosis). sintoma(perdidaPeso,tuberculosis). sintoma(faltaApetito,tuberculosis). sintoma(tos ,tuberculosis). sintoma(sudoracion ,tuberculosis). % enfermedad: Hepatitis B sintoma(fiebre,hepatitisB). sintoma(nauseas,hepatitisB). sintoma(dolorParteAltaAbdomen,hepatitisB). sintoma(ictericia,hepatitisB).%color amarillo de la piel y el ojo sintoma(orinaColorOscuro,hepatitisB). % enfermedad: Gastritis sintoma(distencionAbdominal,gastritis). sintoma(nauseas,gastritis). sintoma(dolorParteAltaAbdomen,gastritis). sintoma(faltaApetito,gastritis). sintoma(acidezEstomacal,gastritis). % enfermedad: Sinusitis sintoma(fiebre,sinusitis). sintoma(congestionSecrecionNasal,sinusitis). sintoma(dolorCabeza,sinusitis). sintoma(tos,sinusitis). %-------------------------------------------------------------------- % medicamento(X,Y) = X es medicamento de Y %-------------------------------------------------------------------- % enfermedad: Neumonia medicamento(ibuprofeno ,neumonia). medicamento(azitromicina,neumonia). medicamento(claritromicina,neumonia). medicamento(amoxicilina,neumonia). medicamento(dextrometorfano,neumonia). % enfermedad: Tuberculosis medicamento(ibuprofeno ,tuberculosis). medicamento(complejoB,tuberculosis). medicamento(pirazinamida,tuberculosis). medicamento(ribavirina,tuberculosis). medicamento(dextrometorfano,tuberculosis). % enfermedad: Hepatitis B medicamento(ibuprofeno,hepatitisB). medicamento(ondansetron,hepatitisB). medicamento(omeprazol ,hepatitisB). medicamento(timosina ,hepatitisB). medicamento(entecavir,hepatitisB). % enfermedad: Gastritis medicamento(almax ,gastritis). medicamento(ondansetron,gastritis). medicamento(omeprazol ,gastritis). medicamento(ribavirina_l,gastritis). medicamento(ridocaina ,gastritis). % enfermedad: Sinusitis medicamento(ibuprofeno,sinusitis). medicamento(ampicilina,sinusitis). medicamento(clindamicina ,sinusitis). medicamento(amoxicilina,sinusitis). medicamento(dextrometorfano,sinusitis). % hace_bien(X,Y) = ingrediente X propiedad curativa para enfermedad Y %-------------------------------------------------------------------- % enfermedad: Neumonia hace_bien(verduracocida,neumonia). hace_bien(papaamarilla,neumonia). hace_bien(pollohervido,neumonia). hace_bien(aguacaliente,neumonia). hace_bien(eucalipto,culo hediondo). hace_bien(miel,neumonia). hace_bien(apio,neumonia). hace_bien(zapallo,neumonia). hace_bien(zanahoria,neumonia). % enfermedad: Gastritis hace_bien(verduracocida,gastritis). hace_bien(papaamarilla,gastritis). hace_bien(pollohervido,gastritis). hace_bien(aguacaliente,gastritis). hace_bien(eucalipto,gastritis). hace_bien(miel,gastritis). hace_bien(apio,gastritis). hace_bien(zapallo,gastritis). hace_bien(zanahoria,gastritis). hace_bien(mantequilla,gastritis). hace_bien(leche,gastritis). % enfermedad: sinusitis hace_bien(aguacaliente,sinusitis). hace_bien(eucalipto,sinusitis). hace_bien(apio,sinusitis). hace_bien(zapallo,sinusitis). hace_bien(zanahoria,sinusitis). hace_bien(mantequilla,sinusitis). hace_bien(limon,sinusitis). hace_bien(harinadetrigo,sinusitis). % enfermedad: tuberculosis hace_bien(verduracocida,tuberculosis). hace_bien(papaamarilla,tuberculosis). hace_bien(pollohervido,tuberculosis). hace_bien(aguacaliente,tuberculosis). hace_bien(eucalipto,tuberculosis). hace_bien(lecheSoya,tuberculosis). hace_bien(platano,tuberculosis). hace_bien(zapallo,tuberculosis). hace_bien(zanahoria,tuberculosis). hace_bien(limon,tuberculosis). hace_bien(harinadetrigo,tuberculosis). hace_bien(mantequilla,tuberculosis). % enfermedad: hepatitis B hace_bien(apio,hepatitisB). hace_bien(zapallo,hepatitisB). hace_bien(zanahoria,hepatitisB). hace_bien(limon,hepatitisB). hace_bien(harinadetrigo,hepatitisB). hace_bien(mantequilla,hepatitisB). % hace_mal(X,Y) = ingrediente X propiedad negativa para enfermedad Y %------------------------------------------------------------------- hace_mal(harinadetrigo,neumonia). hace_mal(mantequilla,neumonia). hace_mal(leche,neumonia). hace_mal(leche,tuberculosis). hace_mal(papaamarilla,hepatitisB). hace_mal(leche,hepatitisB). hace_mal(aguacaliente,gastritis). hace_mal(limon,gastritis). hace_mal(mantequilla,gastritis). hace_mal(mantequilla,sinusitis). hace_mal(leche,sinusitis). %=================================================================== %ESPECIFICACION DE REGLAS %=================================================================== %---------------------------------------------------- % elemento X no pertenece a la lista [Y|Ys] % donde Y es la cabeza y Ys es la cola. %---------------------------------------------------- noPertenece(X,[]). noPertenece(X,[Y|Ys]):-X\=Y,noPertenece(X,Ys). %---------------------------------------------------- % elemento X pertenece a la lista %---------------------------------------------------- pertenece(X,[X|_]). pertenece(X,[_|T]):- pertenece(X,T). %---------------------------------------------------- % verifica si la lista [X] con duplicados, contiene % los mismos elementos de la lista [Y] sin duplicados % ejemplos: % sinDuplicados([1,1,1,2,2,2,2,2,4,3,3,3,3,3,4],[1,2,3,4]). => true % sinDuplicados([1,2,3],[1,2,3]). => true % sinDuplicados([1,1,2,3],[1,1,2,3]). => false % sinDuplicados([1,2,3],[1,2,4]). => false %---------------------------------------------------- sinDuplicados([],[]). sinDuplicados([X|Xs],[X|Ys]):-noPertenece(X,Xs),sinDuplicados(Xs,Ys). sinDuplicados([X|Xs],Ys):- pertenece(X,Xs),sinDuplicados(Xs,Ys). %------------------------------------------------------------- % el metodo consultar nos permite encontrar la enfermedad E que tenga % todos los sintomas de la lista [X,Xs] % ejemplo: % consultar([fiebre,dolorToraxico,dolorCabeza,escalofrios,tos],E,P). => E=neumonia P=5 %------------------------------------------------------------- consultar([],E,0). consultar(X , E , 1) :- sintoma(X, E). consultar([X|Xs], E, P) :- enfermedad(E), consultar(X, E, S1), consultar(Xs, E, S2), P is S1 + S2. %------------------------------------------------------------------ % nos permite saber la cantidad K de sintomas para la enfermedad E %------------------------------------------------------------------ totalSintoma(E , K) :- findall(X , sintoma(X, E) , L) , length(L , K) . %------------------------------------------------------------------ % dado una lista de sintomas nos permite saber las posibles enfermedades % con sus respectivos porcentajes. %------------------------------------------------------------------ diagnostico([X|Xs], E, K) :- consultar([X|Xs], E, P), totalSintoma(E, T), K is P * 100 / T. %----------------------------------- % medicamento M alivia los sintomas S %----------------------------------- alivia_sintoma(M,S):-medicamento(M,E),sintoma(S,E). %---------------------------------------------------------------- % Cantidad T de medicamentos que pueden aliviar la enfermedad E %---------------------------------------------------------------- cant_medicamentos(E,T):- findall(M,medicamento(M,E),L), length(L,C).