You are on page 1of 15

Semestre 2014-2

12/09/2014
Tema:
Recursividad en Prolog
Ing. Jos Espinal
FACULTAD DE INGENIERA
ESCUELA ACADEMICO PROFESIONAL DE INGENIERIA
DE SISTEMAS
Inteligencia Artificial
INTRODUCCION

2
Inteligencia Artificial
RECURSIVIDAD
La Recursividad representa la estructura mas importante
en el desarrollo del PROLOG. En la sintaxis del PROLOG,
no existen los bucles ni los saltos, ya que las variables solo
pueden unificarse una sola vez.
La recursividad es el mecanismo de inferencia mas
importante en el PROLOG es la funcin que se invoca a el
mismo.
3
Inteligencia Artificial
EJEMPLO: CALCULAR FACTORIAL
DE UN NUMERO
factorial(0, 1).
factorial(N, M):- N1 is N - 1, factorial(N1, M1), M is N*M1.

Pregunta:
? factorial(5,X).
X=120
4
Inteligencia Artificial
Como lee PROLOG: 3! =1x2x3=6
F(0, 1).
F(N, M):- N1 is N - 1, F(N1, M1), M is N*M1.


F(3, M) :- N1 is 3-1 , F(2 , M1) , M is 3 * M1.
F(2, 2).

F(2, M) :- N1 is 2-1 , F(1, M1) , M is 2 * M1.
F(1, 1).

F(1. M) :- N1 is 1-1 , F(0, M1) . M is 1 * M1.

F(0, 1).


5
BACKTRACKING
Inteligencia Artificial
APLICACIN CON GRAFOS
Existe una conexin entre A e I?
Con qu nodos est conectado F y cul es el costo de cada conexin.
Construir una regla para determinar si un nodo tiene aristas.
Construir una regla para determinar cual es el costo de ir de un nodo X a
un nodo Z pasando por Y.
6
D
H
I
A
F G
B
C
7
8
10
11
9
4
2
Inteligencia Artificial
APLICACIN CON GRAFOS
Existe una conexin entre A e I?
Con qu nodos est conectado F y cul es el costo de cada conexin.
Construir una regla para determinar si un nodo tiene aristas.
Construir una regla para determinar cual es el costo de ir de un nodo X a
un nodo Z pasando por Y.
7
D
H
I
A
F G
B
C
7
8
10
11
9
4
2
conexin(d , h , 4).
conexin(h , f , 9).
conexin(i , f , 11).
conexin(f , g , 10).
conexin(f , a , 8).
conexin(a , b , 7).
conexin(d , i , 2).
Inteligencia Artificial
APLICACIN CON GRAFOS
Existe una conexin entre A e I?
Con qu nodos est conectado F y cul es el costo de cada conexin.
Construir una regla para determinar si un nodo tiene aristas.
Construir una regla para determinar cual es el costo de ir de un nodo X a
un nodo Z pasando por Y.
8
D
H
I
A
F G
B
C
7
8
10
11
9
4
2
? Conexin (a, i , _ ).
False



? Conexin (f, X, Costo).
X=G,
Costo=10;

X=A,
Costo=8;

Inteligencia Artificial
APLICACIN CON GRAFOS
Existe una conexin entre A e I?
Con qu nodos est conectado F y cul es el costo de cada conexin.
Construir una regla para determinar si un nodo tiene aristas.
Construir una regla para determinar cual es el costo de ir de un nodo X a
un nodo Z pasando por Y.
9
D
H
I
A
F G
B
C
7
8
10
11
9
4
2
tieneArista(X):- conexin(X,_,_).
? tieneArista(a).
True
Inteligencia Artificial
APLICACIN CON GRAFOS
Existe una conexin entre A e I?
Con qu nodos est conectado F y cul es el costo de cada conexin.
Construir una regla para determinar si un nodo tiene aristas.
Construir una regla para determinar cual es el costo de ir de un nodo X a
un nodo Z pasando por Y.
10
D
H
I
A
F G
B
C
7
8
10
11
9
4
2
Llegar(Inicio,Destino,Int,Costo) :- Conexin(Inicio,Int,C1), conexin(Int,Destino,C2),Costo is C1 + C2.
? Llegar (d, f, i, X).
X=13
Inteligencia Artificial
RECURSIVIDAD
Como saber si existe un camino entre dos nodos
11
D
H
I
A
F G
B
C
7
8
10
11
9
4
2
Inteligencia Artificial
RECURSIVIDAD
Como saber si existe un camino entre dos nodos
12
D
H
I
A
F G
B
C
7
8
10
11
9
4
2
CAMINO(X,Y) :- CONEXIN(X,Y).
CAMINO(X,Y) :- CONEXIN(X,Z), CAMINO(Z,Y).
Inteligencia Artificial
APLICACIN DE RECURSIVIDAD
Como saber si existe un camino entre dos nodos
13
D
H
I
A
F
G
B
C
7
8
10
11
9
4
2
Inteligencia Artificial
ACTIVIDAD
14
CALCULE LOS 14 PRIMEROS NUMEROS DE FIBONACCI.
EXPLIQUE LOS NIVELES CON LA RECURSIVIDAD Y EL BACKTRACKING


CODIFIQUE EN SWI-PROLOG TODOS LOS CASOS DEL GRAFO ANTERIOR
Y COMPRUEBE.
1
2
Inteligencia Artificial
GRACIAS

You might also like