Ayuda urgentee
Publicado por Elena (1 intervención) el 14/05/2005 12:44:35
Hola a todos!
necesito ayuda en este tema, que no sé como hacerlo:
Construir un programa para dibujar una figura (un grafo) usando
una linea continua, sin pasar dos veces por el mismo arco ni levantar
el lapiz del papel. El predicado de entrada se llamara
dibuja(Nombre_Grafo, Camino)
donde "Nombre_Grafo" es el nombre asignado a una representacion del
grafo (_no_ la representacion del grafo) y "Camino" es una lista con
el orden de nodos por los que hay que pasar. Los posibles grafos a los
que se aplicara el programa se almacenaran mediante hechos del
predicado grafo/2, de la forma
grafo(Nombre_Grafo, Grafo) <- .
Por ejemplo, dado el grafo
a
/ \
b---c
|\ /|
| X |
|/ \|
d---e
(la X no es un nodo, es un cruce de lineas), su representacion podria ser
grafo(casa, [l(a,b),l(a,c),l(b,c),l(b,d),l(b,e),l(c,d),l(c,e),l(d,e)])
<- .
y la ejecucion del programa seria como la siguiente:
?- dibuja(casa, Recorrido).
Recorrido = [d,b,a,c,b,e,c,d,e] ? <return>
yes
- El grafo
b
/|\
a-+-d
\|/
c
representado por
grafo(diamante, [l(a,b),l(a,c),l(b,c),l(a,d),l(b,d),l(c,d)]) <- .
haria que el programa se comportase del siguiente modo:
?- dibuja(diamante, Recorrido).
no
ya que no hay ningun recorrido que cumpla las condiciones propuestas.
--------------------------------------------------------------------------------------------------
¿¿¿¿como se hace????
Muchisimas gracias,
Elena.
necesito ayuda en este tema, que no sé como hacerlo:
Construir un programa para dibujar una figura (un grafo) usando
una linea continua, sin pasar dos veces por el mismo arco ni levantar
el lapiz del papel. El predicado de entrada se llamara
dibuja(Nombre_Grafo, Camino)
donde "Nombre_Grafo" es el nombre asignado a una representacion del
grafo (_no_ la representacion del grafo) y "Camino" es una lista con
el orden de nodos por los que hay que pasar. Los posibles grafos a los
que se aplicara el programa se almacenaran mediante hechos del
predicado grafo/2, de la forma
grafo(Nombre_Grafo, Grafo) <- .
Por ejemplo, dado el grafo
a
/ \
b---c
|\ /|
| X |
|/ \|
d---e
(la X no es un nodo, es un cruce de lineas), su representacion podria ser
grafo(casa, [l(a,b),l(a,c),l(b,c),l(b,d),l(b,e),l(c,d),l(c,e),l(d,e)])
<- .
y la ejecucion del programa seria como la siguiente:
?- dibuja(casa, Recorrido).
Recorrido = [d,b,a,c,b,e,c,d,e] ? <return>
yes
- El grafo
b
/|\
a-+-d
\|/
c
representado por
grafo(diamante, [l(a,b),l(a,c),l(b,c),l(a,d),l(b,d),l(c,d)]) <- .
haria que el programa se comportase del siguiente modo:
?- dibuja(diamante, Recorrido).
no
ya que no hay ningun recorrido que cumpla las condiciones propuestas.
--------------------------------------------------------------------------------------------------
¿¿¿¿como se hace????
Muchisimas gracias,
Elena.
Valora esta pregunta
0