IIC2613 / Syllabus

Repositorio oficial Inteligencia Artificial 2020-2
7 stars 1 forks source link

Parte 4 P4 #21

Closed raimundomartinez closed 3 years ago

raimundomartinez commented 4 years ago

Hola. ¿Que cómo puedo yo saber cuantas cláusulas se generan por instanciación? Por ejemplo, r(1..3) nodo(X) :- r(X) ¿La línea dos genera 3 cláusulas? Y en este ejemplo, r(1..3) nodo(X) :- r(X),r(Y). ¿La línea dos genera 9 cláusulas? ¿Cómo funciona? Estoy confundido. Y lo otro, en el enunciado sale, "Es mejor si aquí utilizas la notación O(·)". ¿Cuál es esta notación?

jabaier commented 4 years ago

La instanciación es un procedimiento complejo en clingo. Por eso es que vimos la definición matemática y también discutimos más o menos por encima cómo lo hace clingo. (Específicamente lo que es relevante acá es que clingo determina el 'dominio' de las variables usando los predicados en donde éstas aparecen positivamente.)

En el programa 1 se generan 3 cláusulas, en el 2, según la definición son 9 cláusulas aunque es posible que clingo acá se dé cuenta de que no es necesario generar 9, sino que solo 3 porque el r(Y) no aporta nada. En todo caso, en programa que generas en la tarea no van a existir reglas con información irrelevante.

Mira con detención las slides de clases donde está la definición de instanciación. No uses la notación O si no la conoces; solo di cuántas reglas instanciadas se van generando de acuerdo a lo que entiendes.

raimundomartinez commented 4 years ago

Ya bacan, muchas gracias profe.