Prolog - Estudiante

 
Vista:

Estudiante

Publicado por yuniet (4 intervenciones) el 16/06/2006 03:17:39
Necesito la solucion del problema de reglas de produccion:

Un Sistemas Basado en Reglas de Producción está formado por una base de datos que contiene proposiciones que se cumplen con un determinado factor de certeza CF (certainty factor). Los valores de certeza significan la seguridad con que se afirma una proposición tomando valores entre –1 y 1. El valor -1 significa que algo es totalmente falso, 1 significa que algo es totalmente cierto o verdadero, mientras que 0 significa que se desconoce totalmente si es cierto o falso. El resto de los valores tienen un significado proporcional a su valor, por ejemplo 0.7 significa un valor de certeza bastante alto de que una proposición sea cierta. Si se conoce el valor de dos proposiciones, se puede calcular el valor de certeza CF de la conjunción de ellas usando la siguiente fórmula CF(A & B) = mínimo(CF(A), CF(B)). Igualmente se puede calcular el valor de la disyunción usando la fórmula CF(A  B) = máximo(CF(A), CF(B)). Por otra parte, a las reglas se les puede asociar un valor de certeza. Por ejemplo: E  H CF(H/E) = 0.8 significa que si el antecedente E toma valor de certeza 1, entonces el consecuente H tomará valor de certeza 0.8. En caso de que el antecedente tome otro valor de certeza menor que 1 pero mayor que 0 entonces la certeza de H se calcula usando la fórmula de contribución CTR que es la siguiente CF(H) = CTR(CF(E), CF(H/E)) = CF(E)*CF(H/E). SI la CF(E)<0, o sea, si el antecedente es falso, entonces la certeza de H es 0 usando esta regla. Si el antecedente E fuera complejo, por ejemplo E = A&B, o sea, que la regla fuera A&BH, entonces se debe primero usar la fórmula de conjunción para calcular la certeza del antecedente E y luego hacer la contribución para obtener la certeza de H. En el caso de existir alguna proposición negada, entonces puede usarse la fórmula de negación que dice que la certeza de la negación de A, o sea CF(-A) = - CF(A). Por último, si hubiera más de una regla que permite inferir una determinada proposición (es decir hay más de una regla que tiene como consecuente la misma proposición) se debe obtener la certeza acumulada de la proposición teniendo en cuanta ambos resultados. Por ejemplo: si hubiera una regla 1 que sea S&DH y otra regla 2 que sea GH, entonces debe primero calcularse la certeza de H por la regla 1 y luego por la regla 2, o sea CF(H:1) y CF(H:2). Con ambos valores ya se puede calcular el valor de H usando la fórmula siguiente llamada global CF(H) = GLOB(CF(H:1), CF(H:2)) = CF(H:1)+CF(H:2)-CF(H:1)*CF(H:2). Usando todas estas fórmulas puede inferirse la certeza de cualquier proposición que dependa de otra. Debe permitirse que el usuario defina cualquier nueva regla.

Programe lo necesario para que se pueda hacer la inferencia hacia atrás (backward chaining) que trabaja de un modo muy similar a como lo hace Prolog. Cuando el usuario pide el valor de certeza de una determinada proposición, se buscan todas las reglas que permiten inferirla y se buscan los valores de certezas de todas las proposiciones que están en los antecedentes de las reglas encontradas. Luego de calculados los valores de certeza de estas proposiciones, se calcula el valor de la proposición deseada utilizando las fórmulas anteriormente explicadas. Para calcular el valor de certeza de las proposiciones del antecedente se debe repetir recursivamente el mismo proceso que acaba de explicarse. En el caso de que se necesite el valor de certeza de una proposición que no tenga ninguna regla que permita inferirla entonces se el debe pedir al usuario el valor de certeza de la misma.

Lo mas rapido posible
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder