Professional Documents
Culture Documents
Informtica (200910)
2 / 52
3 / 52
Representacin de grafos
I
Ejemplo de grafo
4 / 52
Representacin de grafos
I
5 / 52
Bsqueda en profundidad
I
6 / 52
Bsqueda en profundidad
I
7 / 52
Bsqueda en anchura
I
8 / 52
9 / 52
10 / 52
11 / 52
12 / 52
13 / 52
14 / 52
Coste de un camino
I
(costeCamino
ejemplo,
costeCamino
costeCamino
costeCamino
ej_grafo [4,1]
ej_grafo [4,2,1]
ej_grafo [4,3,1]
40
50
70
15 / 52
Insercin de un camino
I
16 / 52
17 / 52
19 / 52
21 / 52
22 / 52
data Vrtice = A | B | C | D | E
deriving (Show,Eq,Enum)
instance Grafo Vrtice where
vrtices = [A .. E]
suc A = [B,C,D]
suc B = [C]
suc C = [A,D]
suc D = [C]
suc E = []
23 / 52
24 / 52
data Vrtice = A | B | C | D | E
deriving (Show,Eq,Enum)
instance Grafo Vrtice where
vrtices = [A .. E]
suc A = [B,C,D]
suc B = [C]
suc C = [A,D]
suc D = [C]
suc E = []
tv x ys = notElem x ys && x /= B
25 / 52
26 / 52
data Vrtice = A | B | C | D | E
deriving (Show,Eq,Enum)
instance Grafo Vrtice where
vrtices = [A .. E]
suc A = [B,C,D]
suc B = [C]
suc C = [A,D]
suc D = [C]
suc E = []
tv x ys = notElem x (ys \\ [x])
27 / 52
29 / 52
30 / 52
La clase de los grafos con bsqueda con pesos de tipo v consta de los
siguientes mtodos primitivos:
1. vrtices es la lista de los vrtices del grafo.
2. (suc x) es la lista de los sucesores del vrtice x, donde cada sucesor de un
vrrtice x es un Arco y p donde y es el vrtice sucesor de x y p es el coste
de ir de x a y.
Para definir un grafo basta determinar los vrtices y sucesores. Los tres
restantes mtodos estn definidos a partir de ellos.
31 / 52
33 / 52
instance
suc 1
suc 3
suc 2
I
calcular
[[4,1]]
[[4,2,1],[4,1]]
[[4,2,1],[4,3,1],[4,1]]
resultado para resolver las
34 / 52
35 / 52
36 / 52
38 / 52
39 / 52
40 / 52
J 0 (s)
J (s-my) my
J (s) 0
J mx (s-mx)
41 / 52
42 / 52
43 / 52
44 / 52
45 / 52
type Canbales
type Misioneros
= Int
= Int
46 / 52
47 / 52
viajes :: [(Misioneros,Canbales)]
viajes = [(x,y) | x <- [0..2], y <- [0..2],
0 < x+y, x+y <= 2]
Para el presente caso
viajes
[(0,1),(0,2),(1,0),(1,1),(2,0)]
Para aumentar la capacidad de la barca basta sustituir 2 por la
nueva capacidad.
48 / 52
49 / 52
50 / 52
misioneros :: [[EMisioneros]]
misioneros =
caminosDesde (EM 3 3 Izq) ((==) (EM 0 0 Der)) []
51 / 52
problema de
Izq,
Izq,
Izq]
misionerosMsCorta :: [EMisioneros]
misionerosMsCorta = msCorta misioneros
52 / 52