ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Algoritmos

Vinil_6920 de Marzo de 2015

363 Palabras (2 Páginas)226 Visitas

Página 1 de 2

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 con C1

C1

Éxito X=S(S(0)) //Ya que Z1=S(0) y x=S(Z1)

El concepto de lista

Lista([ ])

Lista([X | L]):- X es la cabeza(elemento) y L la cola(lista)

Lista(L)

Representación:

[a,b,c]≡[a | [b,c]]≡[a,b | [c]]

[a,[b],[c,d]]≡[a | [b],[c,d]]

Ejemplo

Miembro/2 El primer argumento forma parte de la lista que se pasa como 2º argumento.

Caso base:

Miembro(X,[X | L]):-

Lista(L). //Opcional, declararía que L es una lista.

Caso recursivo

Miembro(X,[ _ | L]):- // _ quiere decir que nos da igual lo que haya. (Variable anónima)

Miembro(X,L).

...

Descargar como (para miembros actualizados) txt (3 Kb)
Leer 1 página más »
Disponible sólo en Clubensayos.com