• Miércoles 20 de Noviembre de 2024, 10:40

Autor Tema:  Búsqueda de caminos  (Leído 1283 veces)

player_

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Búsqueda de caminos
« en: Viernes 27 de Agosto de 2010, 01:12 »
0
Hola, tengo un fichero de texto con un laberinto de este estilo que lo cargo en una matriz:

##############E######## ####
#  ##  # ####                  # #
#                               ########
########### #####S#########

Una vez cargado, quiero comprobar si existe un camino válido, es decir, que puedo llegar desde E(entrada) hasta S (salida) sin problemas. En este caso debería indicarme que sí, pero por ejemplo, en este otro:


##############E######## ####
#  ##  # ####               ###  ## #
#                            ##########
########### #####S#########

Debería decirme que no porque hay una '#' bloqueando la entrada, tampoco podría si bloquea la salida o hay símbolos '#' que cortan el paso entre la entrada y la salida en cualquier punto de la matriz.


La entrada y salida pueden estar en cualquiera de los bordes del rectangulo, asi que cada vez habra que buscar un camino distinto según la situación.

Tenéis algún ejemplo o link para hacer esto con algún algoritmo de búsqueda en amplitud o algo parecido?

Lo necesitaría en C o C++.

Gracias.

Gared12

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Búsqueda de caminos
« Respuesta #1 en: Viernes 27 de Agosto de 2010, 09:12 »
0
Que tal player, mi recomendación sería que copiaras todo tu  archivo a una matriz de
  • [y] tu le pones los valores dependiendo de tu fichero puedes usar un contador de lecturas para calcular cuantas filas y columnas como máximo contiene, ya teniendo el fichero en memoria nada mas tendrias que identificar la Entrada y la Salida y ya mediante las coordenadas donde se encuentran revisar en la coordenas alrededor es decir  si en (X,Y) se encuentra la entrada revisas en (X-1,Y) Y EN (X+1,Y) esto es para revisar que no se encuentre un "#" a la izquieda o la derecha y despues con una bandera marcas si se encuentra bloqueda por esos lados despues buscas en la (X+Y-1) Y EN (X+Y+1) y esto es para buscar a los lados si tu Entrada o Tu salida resultan con "#" en las 4 coordenadas alrededor entonces no se puede completar el camino.


Saludos espero que te ayude.
 :hitcomp: Gared

player_

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Búsqueda de caminos
« Respuesta #2 en: Domingo 29 de Agosto de 2010, 21:55 »
0
Gracias, lo tendré en cuenta.