Grafos en Haskell
Publicado por MTe (1 intervención) el 19/12/2013 19:20:29
Hola!
Estoy atascada en la realización de un ejercicio de Haskell.
Se trata de una operación que obtiene una lista con todos los elementos que NO son adyacentes a un nodo dado.
Luego hay que hacer otra función que añada un arco entre dicho nodo y cada uno de sus no adyacentes.
Nos dan ya hecho lo siguiente:
data Grafo a = GVacio | Nodo a (Grafo a) | Arco a a (Grafo a) deriving (Show, Eq)
adyacentes :: (Eq a) => a -> a -> Grafo a -> Bool
adyacentes x y (Arco u v g) = x==u && y==v || x==v && y==u || adyacentes x y g
adyacentes _ _ _ = False
Esto es lo que yo he intentado hacer para la lista de no adyacentes:
noadylista :: (Eq a) => Grafo a -> a -> [a]
noadylista GVacio _ = []
noadylista (Arco x y g) a = if ((adyacentes a x g))
then (noadylista (Nodo y g) a)
else x:(noadylista (Nodo y g) a)
La parte de poner el arco sí que no sé como hacerla...
¿Alguien me lo puede resolver?
Muchas gracias de antemano
Estoy atascada en la realización de un ejercicio de Haskell.
Se trata de una operación que obtiene una lista con todos los elementos que NO son adyacentes a un nodo dado.
Luego hay que hacer otra función que añada un arco entre dicho nodo y cada uno de sus no adyacentes.
Nos dan ya hecho lo siguiente:
data Grafo a = GVacio | Nodo a (Grafo a) | Arco a a (Grafo a) deriving (Show, Eq)
adyacentes :: (Eq a) => a -> a -> Grafo a -> Bool
adyacentes x y (Arco u v g) = x==u && y==v || x==v && y==u || adyacentes x y g
adyacentes _ _ _ = False
Esto es lo que yo he intentado hacer para la lista de no adyacentes:
noadylista :: (Eq a) => Grafo a -> a -> [a]
noadylista GVacio _ = []
noadylista (Arco x y g) a = if ((adyacentes a x g))
then (noadylista (Nodo y g) a)
else x:(noadylista (Nodo y g) a)
La parte de poner el arco sí que no sé como hacerla...
¿Alguien me lo puede resolver?
Muchas gracias de antemano
Valora esta pregunta


0