Algoritmos
Enviado por Vinil_69 • 20 de Marzo de 2015 • 363 Palabras (2 Páginas) • 200 Visitas
Objetos
-Simples Constantes Átomos
Números
Variables
-Estructuras
Átomos: cualquier cosa que empiece por minúscula
Números: un número cualquiera(naturales positivos principalmente.)
Variables: cualquier cosa que empieza por mayúscula o que empiece por guion bajo “_”. Al guion bajo se le denomina variable anónima.
Estructura: es un functor/aridad. El functor se desarrolla en lógica de primer orden y va a ser un átomo, ya que empieza por minúscula, y la aridad es el número de argumentos que va a tener esa estructura. Puede tener desde 0 hasta lo que queramos.
Archivos
Están formados por predicados. Son los archivos “___.pl”.
Predicados
Un predicado es un conjunto de cláusulas que comparten la cabeza.
Una clausula podrá ser un hecho o una regla
Un hecho es una estructura que acaba en un punto.
Una regla es un hecho o conjuntos de hechos.
Hecho:-
Hecho,
… Si esto se cumple, se cumple la regla.
Hecho.
La aritmética de Peano
Dice que los números son:
0 0
S(0) 1
S(S(0))2
…
Pero definir los naturales de Peano sería muy extenso (∞). Lo realizaremos de manera recursiva.
C1: natural (0).
C2: natural (S(X)):-
natural (X).
El prompt de prolog es el símbolo “?-“
Luego si ponemos en prolog:
?-natural(S(S(0)).
YES Sera lo que devolverá prolog
?-natural(S(S(1)).
NO
?-natural(X).
X=0 Esto será lo primero que devuelva prompt y si pulsamos “N” o “;”
X=S(0) nos devolverá la siguiente instrucción de la query.
Ejemplo
Suma/3 Es decir, que el 3º sea la suma del 1º y el 2º.
Caso base:
C3 Suma(0,X,X):-
natural(X).
Caso recursivo:
C4: Suma(S(X),Y,S(Z)):- X+1+Y=Z+1
Suma(X,Y,Z) X+Y=Z
Este caso de pie a otros como por ejemplo:
Suma(X,Y,S(S(0)))
X=0 Y=S(S(0))
X=S(0) Y=S(0)
Y salen muchos más casos solo desde uno. Así funciona prolog. Con poco código se pueden realizar varias “querys” o consultas.
El concepto de árbol de búsqueda
Si metiésemos a prolog lo siguiente:
?-suma(S(0), S(0), X) Esto encajaría solo con la C4
C4
X1=0
Y1=S(0)
X=S(Z1)
Suma(0,S(0),Z1) Esta encajaría con la C3
C3
X2=S(0)
Z1=S(0)
natural(S(0)) Esta encaja con C2
C2
X3=0
Natural(0) Encaja
...