You are on page 1of 6

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA

ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

LABORATORIO 4
LISTAS

Lab. Sistemas Expertos

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA


ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

Una de las estructuras de datos ms importantes de Prolog son las listas:


[esta, es, una, lista]
[]
a = [a]

Lab. Sistemas Expertos

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA


ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

El ltimo elemento de cualquier lista es la lista vaca [].


[a, b, c] = [a, b, c, []]

Toda lista no vaca puede separarse entre cabeza y cola. stas pueden separarse
con |:
[a| [b, c, d]] = [a, b, c, d]
[a| []] = [a]

1.

Listas en Prolog.

Lab. Sistemas Expertos

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA


ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS
1.1.1. Trata de predecir la unificacin que resulta en los siguientes ejemplos y
confirma luego ejecutndo:
???????-

[X|
[X,
[X,
[X,
[X,
[X,
[X,

Y]
Y|
Y|
Y,
Y,
Y,
Y|

= [a, b, c, d].
Z] = [a, b, c].
Z] = [a, b, c, d].
Z| A] = [a, b, c].
Z| A] = [a, b].
a] = [Z, b, Z].
Z] = [a, W].

OPERACIONES CON LISTAS

Lab. Sistemas Expertos

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA


ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

Leccin 5 - Laberinto
Tenemos el siguiente laberinto:

que se puede representar mediante la siguiente base de conocimientos, al estilo de un grafo:


%
% archivo: laberinto.pl
%
conectado(inicio, 2).
conectado(1, 7).
conectado(2, 3).
conectado(2, 8).
conectado(3, 4).
conectado(3, 9).
conectado(4, 10).
conectado(5, 6).
conectado(5, 11).
conectado(7, 13).
conectado(8, 9).
conectado(10, 16).
conectado(11, 17).
conectado(12, 18).

Lab. Sistemas Expertos

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA


ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS
conectado(13,
conectado(14,
conectado(14,
conectado(15,
conectado(16,
conectado(17,
conectado(18,
conectado(19,
conectado(20,
conectado(21,
conectado(23,
conectado(30,
conectado(25,
conectado(26,
conectado(27,
conectado(28,
conectado(30,
conectado(31,
conectado(32,
conectado(32,
conectado(33,
conectado(34,
conectado(35,

14).
15).
20).
21).
22).
23).
24).
25).
26).
22).
29).
36).
31).
27).
28).
34).
36).
32).
fin).
33).
34).
35).
36).

conectado_a(X, Y) :- conectado(Y, X).


conectado_a(X, Y) :- conectado(X, Y).

Fjate que se los ltimos dos predicados convierten al grafo dirigido (i.e. uno que posee arcos) en un grafo
no-dirigido (i.e. que posee aristas). Sin embargo, la descripcin de la propiedad de simetra tuvo que
realizarse por medio de un predicado auxiliar conectado_a para evitar loops infinitos en las consultas.

Lab. Sistemas Expertos

You might also like