class BaseDeConocimiento:
def init(self):
self.hechos = set()
self.reglas = []
def agregar_hecho(self, hecho):
self.hechos.add(hecho)
def agregar_regla(self, condiciones, conclusion):
self.reglas.append({"condiciones": condiciones, "conclusion": conclusion})
class SistemaExperto:
def init(self, base_conocimiento):
self.base = base_conocimiento
self.diagnosticos = []
def inferir(self):
cambios = True
while cambios:
cambios = False
for regla in self.base.reglas:
if all(cond in self.base.hechos for cond in regla["condiciones"]):
conclusion = regla["conclusion"]
if conclusion not in self.base.hechos:
self.base.agregar_hecho(conclusion)
self.diagnosticos.append(conclusion)
cambios = True
return self.diagnosticos
Crear base de conocimiento
base = BaseDeConocimiento()
Hechos reportados por el paciente
base.agregar_hecho("fiebre alta")
base.agregar_hecho("tos")
base.agregar_hecho("dificultad para respirar")
Reglas médicas
base.agregar_regla(["fiebre alta", "tos"], "infección respiratoria")
base.agregar_regla(["infección respiratoria", "dificultad para respirar"], "neumonía")
Crear sistema experto
sistema = SistemaExperto(base)
Inferir diagnóstico
diagnosticos = sistema.inferir()
print("Diagnósticos inferidos:")
for d in diagnosticos:
print(f"- {d}")