Autor Tema: Búsqueda en anchura en un grafo con arcos con el mismo coste

0 Usuarios y 1 Visitante están viendo este tema.

08 Febrero, 2008, 05:45 pm
Leído 3323 veces

Gach

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 3
  • Karma: +0/-0
  • Sexo: Masculino
Hola, soy un alumno de informática al que se le ha ocurrido una teoría y me gustaría que me dijerais si estoy en lo cierto.

En el algoritmo de búsqueda en anchura, por ejemplo este:

Código: [Seleccionar]
FUNCION BUSQUEDA-EN-ANCHURA()
1. Hacer ABIERTOS la cola formada por el nodo inicial (es decir, el nodo
cuyo estado es *ESTADO-INICIAL* y cuyo camino es vacío);
Hacer CERRADOS vacío
2. Mientras que ABIERTOS no este vacía,
2.1 Hacer ACTUAL el primer nodo de ABIERTOS
2.2 Hacer ABIERTOS el resto de ABIERTOS
2.3 Poner el nodo ACTUAL en CERRADOS.
2.4 Si ES-ESTADO-FINAL(ESTADO(ACTUAL)),
2.4.1 devolver el nodo ACTUAL y terminar.
2.4.2 en caso contrario,
2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL)
cuyo estado no está ni en ABIERTOS ni en CERRADOS
2.4.2.2 Hacer ABIERTOS el resultado de incluir
NUEVOS-SUCESORES al final de ABIERTOS
3. Devolver FALLO.

FUNCION SUCESOR(NODO,OPERADOR)
1. Hacer ESTADO-SUCESOR igual a APLICA(OPERADOR,ESTADO(NODO))
2. Si ESTADO-SUCESOR=NO-APLICABLE
devolver NO-APLICABLE
en caso contrario,
devolver un nodo cuyo estado es ESTADO-SUCESOR y cuyo camino
es el resultado de añadir OPERADOR a CAMINO(NODO)
FUNCION SUCESORES(NODO)
1. Hacer SUCESORES vacío
2. Para cada OPERADOR en *OPERADORES*,
si SUCESOR(NODO,OPERADOR) =/= NO-APLICABLE,
incluir SUCESOR(NODO,OPERADOR) en SUCESORES
3. Devolver SUCESORES

Según tengo entendido, cuando hacemos una búsqueda en anchura en un grafo cuyos arcos son todos bidireccionales y tienen el mismo coste, cada nodo "actual" posee una longitud de camino mínima. Cuando generamos sus sucesores, comprobamos si ese sucesor ya había sido explorado anteriormente, o lo que es lo mismo, comprobamos si se encuentra en el conjunto "cerrados".

Mi duda es, para cada sucesor, ¿Es cierto que no podría existir en el conjunto de los nodos cerrados un nodo con el mismo estado y una cuya longitud sea la misma que el sucesor menos 2?

Lo que me lleva a pensar esto es que si existiera tal nodo, significaría que existe un camino entre el nodo que se encuentra en cerrados y el nodo actual (al que le habíamos generado los sucesores) por lo tanto existiría un camino con una longitud menor que la que ya habíamos calculado.

Si mi teoría es correcta me vendría muy bien para optimizar una búsqueda que tengo que hacer para un trabajo de la universidad, ya que en vez de buscar si los sucesores se encuentran en abiertos y cerrados, solo tendría que buscar entre los nodos abiertos y los nodos en cerrados a distancia máxima 2 del nodo actual.

Un saludo, y gracias por adelantado por la contestación

08 Febrero, 2008, 07:36 pm
Respuesta #1

León

  • Lathi
  • Mensajes: 903
  • Karma: +0/-0
  • Sexo: Masculino
Mi duda es, para cada sucesor, ¿Es cierto que no podría existir en el conjunto de los nodos cerrados un nodo con el mismo estado y una cuya longitud sea la misma que el sucesor menos 2?

Mmm... me cuesta entender la pregunta y me falta un poco de contexto, creo.

Supongo que la lista de OPERADORES es estática.

Aparentemente, el algoritmo asegura que en el momento que agregas un sucesor, no se conecta con ningún nodo que ya esté en CERRADOS -sólo se conecta con el nodo ACTUAL que pasa a estar en CERRADOS a partir de ese momento, y posiblemente con otros que estén en ABIERTOS o todavía no tocados.

Pero, seguro, si el grafo no es demasiado trivial habrá en algún momento en CERRADOS nodos para los cuales la longitud del camino asignado será la del sucesor menos 2. Obviamente, el sucesor no es  sucesor directo de esos nodos, así que el camino mas corto (o, mejor dicho, uno de los caminos mas cortos) sigue siendo el que da el algoritmo.

Sospecho que estoy malinterpretando tu pregunta -necesitaría una aclaración si es así.


08 Febrero, 2008, 11:41 pm
Respuesta #2

Gach

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 3
  • Karma: +0/-0
  • Sexo: Masculino
Voy a intentar hacer una demostración por reducción al absurdo, a ver si así queda más claro.

Sea g un grafo de arcos bidireccionales y todos con el mismo costo

Sea "inicial" el nodo inicial del que partimos para hacer la búsqueda en anchura

Sea "actual" el nodo al que le estamos obteniendo sus sucesores, por teoría sabemos que el camino calculado por el algoritmo tiene longitud mínima (esto solo ocurre en el caso de grafos bidimensionales con todos los arcos del mismo coste), llamemos le n a esta longitud.

Sea "sucesor" uno de los nodos adyacentes al nodo "actual". Si existiera un camino entre el nodo "inicial" y "sucesor" cuyo coste fuera n-2 entonces, al ser "sucesor" adyacente a "actual" entonces existirá un camino entre el nodo "inicial" y el nodo "actual" de longitud n-1, lo cual entra en contradicción con que el camino mínimo del nodo "actual" es n

09 Febrero, 2008, 12:36 am
Respuesta #3

León

  • Lathi
  • Mensajes: 903
  • Karma: +0/-0
  • Sexo: Masculino
Si. Esa demostración es convincente, y el algoritmo te asegura que no pasa eso -mientras, si, se trate de un grafo donde todos los arcos tengan el mismo costo (no importa mucho si es bidireccional o no).

Lo que no aclara del todo tu último mensaje es qué es lo que te estás cuestionando. En definitiva ¿estás tratando de probar que el algoritmo es correcto? ¿Estás tratando de encontrar un algoritmo mas eficiente para un caso particular?

09 Febrero, 2008, 01:50 pm
Respuesta #4

Gach

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 3
  • Karma: +0/-0
  • Sexo: Masculino
Estoy intentando optimizar el algoritmo en un caso en particular, en concreto es un trabajo de la asignatura inteligencia artificial en la que tengo que encontrar el camino mínimo para resolver el 15 puzzle. La optimización la usaría para acelerar la búsqueda de patrones ya que el espacio de estados es inmenso, más concretamente he encontrado 60480 patrones para el 8puzzle y 2947133 patrones para el 15puzzle solo hasta profundidad 23. Te agradezco muchísimo tus respuestas. Un saludo.

09 Febrero, 2008, 03:01 pm
Respuesta #5

León

  • Lathi
  • Mensajes: 903
  • Karma: +0/-0
  • Sexo: Masculino

Uh, que divertido -y difícil- lo tuyo. Suerte con eso.