Implementación de algoritmos de búsqueda

19
UNIVERSIDAD MAYOR DE SAN ANDRES Facultad de Ciencias Puras y Naturales Postgrado en Informática Sistemas Expertos Implementación De Algoritmos De Búsqueda Para La Solución Del Rompecabezas Numérico De 6 Posiciones Presentado a: Dr. Daniel Gálvez L. Presentado por: Roger Saravia A. La Paz, Bolivia - Junio de 2007

Transcript of Implementación de algoritmos de búsqueda

Page 1: Implementación de algoritmos de búsqueda

UNIVERSIDAD MAYOR DE SAN ANDRES

Facultad de Ciencias Puras y Naturales

Postgrado en Informática

Sistemas Expertos

Implementación De Algoritmos De Búsqueda Para La Solución Del Rompecabezas Numérico De 6 Posiciones

Presentado a: Dr. Daniel Gálvez L.

Presentado por: Roger Saravia A.

La Paz, Bolivia - Junio de 2007

Page 2: Implementación de algoritmos de búsqueda

Resumen

En este trabajo se propone la solución computarizada mediante búsqueda para los rompecabezas numéricos rectangulares de 6 posiciones. Para tal efecto, primero se hace el planteamiento del problema dentro del área de Inteligencia Artificial. Luego, se procede con una revisión teórica de conceptos importantes como espacio de estados, algoritmos de búsqueda y otros. Posteriormente, se tiene un desarrollo teórico de la propuesta de solución. Para probar el diseño de solución, se ha elaborado un software bautizado como “Rompe6” en Visual Basic y sobre Excel. Mediante la ejecución de dicho software se analizan dos casos de estudio de distinto grado de dificultad. Finalmente, se hacen algunas conclusiones para próximos estudios y también algunas recomendaciones para su aplicación práctica en otras áreas.

Page 3: Implementación de algoritmos de búsqueda

1

Índice

1 Escenario ................................................................................................................2

2 Problema Identificado.............................................................................................2

3 Abordaje del Problema ...........................................................................................2

4 Objetivos .................................................................................................................2

4.1 Objetivo General .................................................................................................2

4.2 Objetivos Específicos..........................................................................................3

5 Marco Teórico.........................................................................................................3

5.1 ¿Qué es Inteligencia Artificial? ...........................................................................3

Inteligencia Artificial ¿para qué?..........................................................................4

5.2 La Búsqueda .......................................................................................................4

5.2.1 Características de la Búsqueda en Inteligencia Artificial ............................4

5.2.2 Elementos de la Definición de un Problema ...............................................5

5.3 Rompecabezas de 6 piezas................................................................................5

5.4 Búsqueda Primero a lo Ancho (Breadth-First Search) .......................................6

5.5 Búsqueda Primero en Profundidad (Depth-First Search)...................................7

6 Desarrollo Teórico ..................................................................................................7

6.1 Algoritmo del Grafo .............................................................................................7

6.2 Algoritmo de Búsqueda Primero a lo Ancho.......................................................8

6.3. Algoritmo de Búsqueda Primero en Profundidad ...............................................9

7 Desarrollo Práctico ...............................................................................................10

7.1 Implementación del Algoritmo de Grafo en Visual Basic 6 (VB)...................................10

7.2 Implementación de los Algoritmos de Búsqueda en VB...................................12

8 Caso de Estudio ...................................................................................................13

Generación del Grafo.........................................................................................13

Búsqueda Primero a lo Ancho ...........................................................................13

Búsqueda Primero en Profundidad....................................................................15

9 Conclusiones ........................................................................................................16

10 Recomendaciones ................................................................................................17

11 Referencias...........................................................................................................17

Page 4: Implementación de algoritmos de búsqueda

2

1 Escenario

El escenario de este proyecto es el enigma del rompecabezas de 6 posiciones dentro del área de Inteligencia Artificial en Ciencias de la Computación.

2 Problema Identificado

El principal problema identificado es el cómo reordenar el rompecabezas a partir de una solución estudiada y metodológica.

3 Abordaje del Problema

Se abordará el problema mediante la implementación de 3 algoritmos de Inteligencia Artificial:

Un algoritmo para la solución del grafo de estados (espacio de estados) del rompecabezas.

Un algoritmo para la búsqueda primero a lo ancho dentro del grafo de estados.

Un algoritmo para la búsqueda primero en profundidad dentro del grafo de estados.

Nota:

Por razones de exposición y comparación se aplicarán los dos algoritmos de búsqueda puesto que en la práctica basta solo uno.

4 Objetivos

4.1 Objetivo General

Lograr una reordenación destino (estado objetivo) del rompecabezas de 6 posiciones a partir de una disposición origen (estado inicial) y mediante la ejecución de un programa en Visual Basic creado a partir de algoritmos de Inteligencia Artificial (operaciones).

Page 5: Implementación de algoritmos de búsqueda

3

4.2 Objetivos Específicos

Diseñar y programar (implementar) un algoritmo para la generación del grafo correspondiente a los posibles desplazamientos de la fichas (espacio de estados) desde cierta posición inicial dada.

Diseñar y programar un algoritmo de búsqueda primero a lo ancho mediante la técnica de la cola.

Diseñar y programar un algoritmo de búsqueda primero a profundidad mediante la técnica de la pila.

5 Marco Teórico

5.1 ¿Qué es Inteligencia Artificial?

Alan Turing expresó:

“…si durante el intercambio entre una computadora y el usuario este último cree que está intercambiado con otro humano, entonces se dice que el programa es inteligente…”

Según Schildlt:

"…un programa inteligente es uno que muestra un comportamiento similar al humano cuando se enfrenta a un problema."

Según Elaine Rich:

”…la Inteligencia Artificial es el estudio de cómo lograr que las computadoras hagan cosas que por el momento las personas hacen mejor.”

No es necesario que el programa resuelva el problema de la misma forma que el hombre.

Una computadora encuentra los ceros de una ecuación más rápido y con mayor exactitud que el hombre; sin embargo, el hombre reconoce mucho mejor un conjunto de caracteres.

La Inteligencia Artificial ofrece técnicas para enfrentar 2 clases de problemas:

i. Los que por su dimensión es difícil usar un algoritmo conocido.

ii. Los que carecen de un algoritmo para ser resueltos.

Page 6: Implementación de algoritmos de búsqueda

4

Inteligencia Artificial ¿para qué?

Para el lenguaje:

Traducción, comprensión y reconocimiento de la voz.

Para el conocimiento:

Representación, adquisición y recuperación de conocimiento.

Para la visión:

Datos visuales complejos y OCR (reconocimiento óptico de caracteres).

Para aprender:

Por deducción, inducción, analogía e instrucción.

5.2 La Búsqueda

La búsqueda es la base de los métodos de solución de problemas (MSP) en la Inteligencia Artificial. Siempre se tiene un espacio de búsqueda.

¿Qué opciones se tiene en el ajedrez?

En la primera jugada se tienen 20 posibilidades.

En la segunda jugada se tienen 400 posibilidades.

Y así progresivamente.

5.2.1 Características de la Búsqueda en Inteligencia Artificial

• En IA se busca en un espacio problema y no un dato en particular.

• En IA se busca un camino que conecte la descripción inicial del problema con una descripción del estado objetivo para el problema.

• En IA el proceso de buscar una solución a un problema produce un espacio solución.

Page 7: Implementación de algoritmos de búsqueda

5

5.2.2 Elementos de la Definición de un Problema

Espacio de estado: Es el conjunto de todos los estados alcanzables a partir del estado inicial mediante una secuencia de acciones cualquiera.

Estado inicial : Condiciones iniciales del problema.

Estado objetivo: Solución del problema.

Estado actual: Estado donde se encuentra el agente.

Operadores: Representan las acciones disponibles en cada estado. La aplicación del conjunto de operadores a un estado X nos da el conjunto de estados alcanzables desde X.

Criterio objetivo: Es el criterio para aplicarlo a la descripción de un estado y para determinar si este es un estado objetivo.

Camino: En el espacio de estado, es una secuencia de acciones que conduce de un estado a otro.

Solución: Es un camino desde el estado inicial a un estado que satisface el criterio objetivo.

5.3 Rompecabezas de 6 piezas

Es en un tablero de 6 posiciones (3x2) con 5 fichas numeradas y una en blanco. Una ficha numerada puede ser movida a la posición en blanco quedando la que estaba numerada en blanco y la que estaba en blanco numerada. La esencia del rompecabezas es lograr un orden específico a partir de una determinada disposición.

1 2 4 1 2 35 3 4 5

La formulación del problema es:

Estados: La descripción de un estado especifica la ubicación de cada número y la del espacio en blanco.

Page 8: Implementación de algoritmos de búsqueda

6

Operadores: La ficha cercana al espacio en blanco puede moverse a la izquierda, derecha, arriba o abajo.

Criterio objetivo: Los 5 números quedan en un orden especificado.

Este problema parece simple pero tiene 6! (igual a 720) diferentes ordenamientos por lo que el método de generar estados y probar si cumplen el criterio objetivo lleva a una alta expansión del tipo combinatoria.

1 2 45 3

1 2 1 2 45 3 4 5 3

1 2 1 4 1 2 45 3 4 5 2 3 5 3

1 2 1 3 25 3 4 5 4

Importante: Durante la generación de estados debe cuidarse de no "mover" las fichas que generarían un estado ya generado.

5.4 Búsqueda Primero a lo Ancho (Breadth-First Search)

La búsqueda primero a lo ancho puede usarse para buscar objetivos en grafos. Esta búsqueda usa la estrategia de la cola que se caracteriza por añadir los elementos pendientes al final de los existentes. Los pasos son los siguientes:

1. Iniciar una cola de un elemento que contenga el nodo de partida (raíz).

Page 9: Implementación de algoritmos de búsqueda

7

2. Iterar de a) hasta c) mientras la cola no esté vacía:

a. Verificar si el primer elemento de la cola es solución.

b. Salir con "verdadero" si el elemento verificado es solución.

c. Si no es solución, añadir sus sucesores al final de la cola.

3. Salir con "falso" si no se encuentra una solución.

Nota: La búsqueda a lo ancho es la mejor técnica cuando tenga que buscarse en reglas (otro tipo de problemas).

5.5 Búsqueda Primero en Profundidad (Depth-First Search)

La búsqueda primero en profundidad puede usarse para buscar objetivos en grafos profundos pero también en no profundos. Esta búsqueda usa la estrategia de la pila que se caracteriza por añadir los elementos pendientes al principio de los existentes. Los pasos son los siguientes:

1. Iniciar una pila de un elemento con en el nodo raíz (de partida).

2. Iterar de a) hasta c) hasta que la pila este vacía:

a. Verificar si el elemento del tope de la pila es solución.

b. Salir con "verdadero" si el elemento verificado es solución.

c. Si no es solución, añadir sus sucesores al tope de la pila.

3. Salir con "falso" si no se halla una solución.

Nota: La búsqueda primero en profundidad es la mejor técnica cuando los objetivos están en los cuadrantes más profundos.

6 Desarrollo Teórico

6.1 Algoritmo del Grafo

Al diseñar el algoritmo del grafo de espacio de estados fue necesario considerar un módulo de verificación para no obtener el estado anterior. También fue necesario implementar la estrategia de la pila.

Page 10: Implementación de algoritmos de búsqueda

8

6.2 Algoritmo de Búsqueda Primero a lo Ancho

Al diseñar el algoritmo de la búsqueda primero a lo ancho fue necesario pensar en módulos que representen a funciones propias de la técnica de la cola.

No debe olvidarse que el elemento a considerar siempre se toma de la cabeza de la cola. Y cualquier elemento se añade siempre al final de la cola.

Page 11: Implementación de algoritmos de búsqueda

9

6.3. Algoritmo de Búsqueda Primero en Profundidad

Al diseñar el algoritmo de búsqueda primero en profundidad fue necesario considerar mecanismos para la técnica de la pila.

No debe olvidarse que el elemento a considerar siempre se toma de la cabeza de la pila. Y cualquier elemento se añade siempre al tope de la pila.

Page 12: Implementación de algoritmos de búsqueda

10

Colocar enla Pila

Pila Vacía?

GenerarEstados

Sucesores

EstadoSolución?

Tomar un Estado

Fin

Sí No

No

Tomar EstadoInicial

7 Desarrollo Práctico

La programación de los algoritmos y la consecuente construcción de la aplicación, fue realizada totalmente en Visual Basic 6 sobre la plataforma Microsoft Excel.

7.1 Implementación del Algoritmo de Grafo en Visual Basic 6 (VB)

Para la programación del algoritmo del grafo en VB, se tuvo que codificar en funciones y subrutinas encargadas de tareas menores y comandadas desde una subrutina principal de módulo.

A continuación una descripción de las subrutinas más importantes en orden de aparición:

Subrutina o función: Descripción:

verif(r) Retorna verdadero solo cuando un estado "r" recién generado es nuevo en el grafo.

Page 13: Implementación de algoritmos de búsqueda

11

s02 Carga de una hoja del libro (Excel) la matriz de desplazamientos.

s03 Genera nuevos estados a partir de aquellos que se encuentran en una pila.

spm1 Subrutina principal de módulo para llamar a las otras subrutinas.

Nota: La matriz de desplazamientos es la estrategia usada para calcular los posibles movimientos de cada ficha a partir de un estado dado.

El algoritmo del grafo reside en el módulo 1 y hace uso de la hoja llamada "Grafo" de la plataforma Excel.

A continuación se tiene el listado de la subrutina s03 que construye el espacio de estados.

' genera el grafo de estados Sub s03() s = Pila.Cells(1, 1) If s > "" Then Pila.Rows(1).Delete For i = 1 To d For j = 1 To p If op(i, j) <> 0 Then t = s w = i + op(i, j) If Mid(t, w, 1) = z Then Mid(t, w, 1) = Mid(t, i, 1) Mid(t, i, 1) = z If verif(t) Then f3 = f3 + 1 Grafo.Cells(f3, 1) = s Grafo.Cells(f3, 2) = t Pila.Rows(1).Insert Pila.Cells(1, 1) = t End If End If End If Next j Next i End If End Sub

Page 14: Implementación de algoritmos de búsqueda

12

7.2 Implementación de los Algoritmos de Búsqueda en VB

La búsqueda primero a lo ancho y la búsqueda primero en profundidad se programaron juntas en un mismo módulo. Dado que el VB no dispone de sentencias nativas relacionadas con la cola o la pila, las mismas tuvieron que ser programadas desde cero en base a arreglos.

A continuación una descripción de las estructuras más importantes contenidas en el módulo 2 y que hacen uso de la hoja llamada "Memoria" de la plataforma Excel.

Subrutina o función: Descripción:

obsu(e) Retorna en un arreglo todos los sucesores de "e" encontrados en el espacio de estados.

Ico Inicia la cola.

aco(e) Añade "e" al final de la cola.

tco() Función que extrae y retorna la cabeza de la cola.

Ipi Inicia la pila.

api(e) Añade "e" al tope de la pila.

tpi() Función que extrae y retorna el tope de la pila.

bp(a,o) Es el código generalizado de búsqueda del espacio objetivo. Cuando "a" es 1 ejecuta una búsqueda primero a lo ancho. Si "a" es 2, una búsqueda primero en profundidad.

spm2(t,o) Es la subrutina principal de módulo que comanda el proceso de búsqueda. El parámetro "t" lo recibe del botón de búsqueda apretado por el usuario y "o" es el objetivo también entrado por el usuario.

Page 15: Implementación de algoritmos de búsqueda

13

8 Caso de Estudio

En esta parte se va a exponer paso a paso los resultados del programa dado el siguiente problema:

Estado Inicial (135_24) Estado Objetivo (1_3245)

1 3 52 4

1 32 4 5

Generación del Grafo

En la hoja "Grafo" se genera un espacio de estados de 421 filas a partir del estado inicial mostrado arriba. Este espacio de estados se muestra por completo en la siguiente página.

Es importante notar que un grafo no contiene absolutamente todos los estados posibles sino un subconjunto de ellos que descienden desde el estado inicial. Si un grafo tuviese todos los estados posibles, entonces bastaría generar un solo grafo para solucionar de una sola vez todos los problemas del rompecabezas.

Búsqueda Primero a lo Ancho

Dentro la plataforma Excel y en la hoja "Memoria" se pueden encontrar los resultados intermedios y finales de la búsqueda de primero a lo ancho. Para el presente caso puede apreciarse el historial de la cola hasta llegar al estado objetivo. Véase este historial luego del espacio de estados de la siguiente página.

Es importante notar que la cola tiene un comportamiento dinámico durante el proceso. Algunas veces queda vacía un instante intermedio y otras veces está llena de estados.

Atención: La cola queda vacía en partes intermedias del pleno proceso pero no en partes determinantes que terminarían la búsqueda.

El historial de la cola para este proceso tiene exactamente 20 filas.

Y la solución (el camino) consta de 4 movimientos a partir de la posición o estado inicial del rompecabezas. Este camino está resaltado en el mencionado espacio de estados de la hoja siguiente.

Page 16: Implementación de algoritmos de búsqueda

14

135_24 _35124 52_341 5_2341 3154_2 31542_ 5_2134 _52134 512_43 5124_3 15_342 1_5342135_24 1352_4 5_2341 _52341 31542_ 31_425 5_2134 5321_4 5124_3 5_2413 1_5342 _153421352_4 1_5234 5_2341 5423_1 31_425 3_1425 5321_4 532_14 5124_3 51243_ 1_5342 1453_21352_4 13524_ 5423_1 542_31 3_1425 _31425 5321_4 53214_ 51243_ 51_432 1453_2 145_3213524_ 13_245 5423_1 54231_ 3_1425 3214_5 53214_ 53_142 51_432 5_1432 1453_2 14532_13_245 1_3245 54231_ 54_312 3214_5 321_45 532_14 _32514 5_1432 _51432 14532_ 14_3251_3245 _13245 542_31 _42531 3214_5 32145_ _32514 3_2514 5_1432 5314_2 145_32 _451321_3245 1432_5 _42531 4_2531 32145_ 32_451 3_2514 32_514 5314_2 531_42 _15342 315_421432_5 143_25 4_2531 42_531 32_451 3_2451 3_2514 3125_4 5314_2 53142_ 152_34 _521341432_5 14325_ 4_2531 4325_1 3_2451 _32451 3125_4 312_54 53142_ 53_421 _12354 312_5414325_ 14_253 4325_1 432_51 3_2451 3524_1 3125_4 31254_ 53_421 5_3421 124_35 _2413514_253 1_4253 4325_1 43251_ 3524_1 352_41 31254_ 31_542 5_3421 _53421 _24135 2_41351_4253 _14253 43251_ 43_512 3524_1 35241_ 31_542 3_1542 5_3421 5234_1 2_4135 24_1351_4253 1542_3 43_512 4_3512 35241_ 35_412 3_1542 _31542 5234_1 523_41 2_4135 2341_51542_3 154_23 4_3512 _43512 352_41 _52341 3_1542 3415_2 5234_1 52341_ 2341_5 234_151542_3 15423_ 4_3512 4135_2 _32451 432_51 3415_2 341_52 52341_ 52_413 2341_5 23415_15423_ 15_234 4135_2 413_52 321_45 _21345 3415_2 34152_ 52_413 5_2413 23415_ 23_15415_234 1_5234 4135_2 41352_ _31425 431_25 34152_ 34_521 5_2413 _52413 23_154 2_31541_5234 _15234 41352_ 41_523 431_25 4312_5 34_521 3_4521 _52413 452_13 2_3154 _23154_15234 215_34 41_523 4_1523 4312_5 4_1235 3_4521 _34521 523_41 _23541 2_3154 2531_4215_34 2153_4 4_1523 _41523 4312_5 43125_ 3_4521 3245_1 _23541 2_3541 2531_4 253_142153_4 2_5314 4_1523 4215_3 43125_ 43_251 3245_1 324_51 2_3541 23_541 2531_4 25314_2153_4 21534_ 4215_3 421_53 43_251 4_3251 3245_1 32451_ 2_3541 2435_1 25314_ 25_14321534_ 21_345 4215_3 42153_ 4_3251 _43251 32451_ 32_514 2435_1 243_51 25_143 2_514321_345 2_1345 42153_ 42_531 4_3251 4532_1 324_51 _24351 2435_1 24351_ 2_5143 _251432_1345 _21345 421_53 _21453 4532_1 453_21 _34521 534_21 24351_ 24_513 2_5143 2451_32_1345 2413_5 _21453 2_1453 4532_1 45321_ 534_21 5342_1 24_513 2_4513 2451_3 245_132413_5 241_35 2_1453 21_453 45321_ 45_213 5342_1 5_4231 2_4513 _24513 2451_3 24513_2413_5 24135_ 2_1453 2514_3 45_213 4_5213 5342_1 53421_ 2_4513 2145_3 24513_ 24_13524135_ 24_351 2514_3 251_43 4_5213 _45213 53421_ 53_214 2145_3 214_53 245_13 _4521324_351 2_4351 2514_3 25143_ 4_5213 4152_3 53_214 5_3214 2145_3 21453_ _25143 125_432_4351 _24351 25143_ 25_431 4152_3 415_23 5_3214 _53214 21453_ 21_534 253_14 _532142_4351 2543_1 25_431 2_5431 4152_3 41523_ 5_3214 5132_4 21_534 2_1534 _23154 123_542543_1 254_31 2_5431 _25431 41523_ 41_235 5132_4 513_24 2_1534 _21534 234_15 _342152543_1 25431_ 2_5431 2354_1 41_235 4_1235 5132_4 51324_ 2_1534 2315_4 345_21 _4532125431_ 25_314 2354_1 235_41 4_1235 _41235 51324_ 51_243 2315_4 231_54 _45321 4_532125_314 2_5314 2354_1 23541_ _41235 241_35 51_243 5_1243 2315_4 23154_ 4_5321 45_3212_5314 _25314 23541_ 23_415 415_23 _15423 5_1243 _51243 23154_ 23_541 4_5321 4253_1_25314 325_14 23_415 2_3415 _15423 1_5423 5_1243 5412_3 231_54 _31254 4253_1 425_31325_14 3251_4 2_3415 _23415 1_5423 15_423 5412_3 541_23 _31254 3_1254 4253_1 42531_3251_4 3_5124 2_3415 2134_5 1_5423 1254_3 5412_3 54123_ 3_1254 31_254 42531_ 42_3153251_4 32514_ 2134_5 213_45 1254_3 125_43 54123_ 54_231 3_1254 3512_4 42_315 4_231532514_ 32_145 2134_5 21345_ 1254_3 12543_ 54_231 5_4231 3512_4 351_24 4_2315 _4231532_145 3_2145 21345_ 21_453 12543_ 12_435 5_4231 _54231 3512_4 35124_ 4_2315 4123_53_2145 _32145 213_45 _13245 12_435 1_2435 _54231 254_31 35124_ 35_241 4123_5 412_353_2145 3421_5 _23415 423_15 1_2435 _12435 541_23 _41523 35_241 3_5241 4123_5 41235_3421_5 342_15 423_15 4231_5 1_2435 1324_5 _51243 251_43 3_5241 _35241 41235_ 41_3523421_5 34215_ 4231_5 4_3125 1324_5 132_45 513_24 _13524 3_5241 3452_1 41_352 4_135234215_ 34_152 4231_5 42315_ 1324_5 13245_ _13524 1_3524 3452_1 345_21 4_1352 _4135234_152 3_4152 42315_ 42_153 13245_ 13_452 1_3524 13_524 3452_1 34521_ 4_1352 4513_23_4152 _34152 42_153 4_2153 13_452 1_3452 1_3524 1235_4 34521_ 34_215 4513_2 451_323_4152 3541_2 4_2153 _42153 1_3452 _13452 1235_4 123_54 34_215 3_4215 4513_2 45132_3541_2 354_12 4_2153 4521_3 1_3452 1534_2 1235_4 12354_ 3_4215 _34215 45132_ 45_3213541_2 35412_ 4521_3 452_13 1534_2 153_42 12354_ 12_543 3_4215 3142_5 451_32 _5143235412_ 35_124 4521_3 45213_ 1534_2 15342_ 12_543 1_2543 3142_5 314_25 _41352 341_5235_124 3_5124 45213_ 45_132 15342_ 15_423 1_2543 _12543 3142_5 31425_ 412_35 _124353_5124 _35124 45_132 4_5132 153_42 _53142 1_2543 1425_3 31425_ 31_254 _42315 342_15354_12 _54312 4_5132 _45132 _53142 5_3142 1425_3 142_53 314_25 _14325 425_31 _25431_54312 5_4312 4_5132 4351_2 5_3142 53_142 1425_3 14253_ _14325 1_4325 _35241 235_415_4312 54_312 4351_2 435_12 5_3142 5431_2 14253_ 14_532 1_4325 14_325 351_24 _513245_4312 5143_2 4351_2 43512_ 5431_2 543_12 14_532 1_4532 1_4325 1243_5 _21534 521_345143_2 514_32 43512_ 43_125 5431_2 54312_ 1_4532 _14532 1243_5 124_35 214_53 _142535143_2 51432_ 43_125 4_3125 54312_ 54_123 1_4532 1345_2 1243_5 12435_ _24513 524_1351432_ 51_324 4_3125 _43125 54_123 5_4123 1345_2 134_52 12435_ 12_354 243_51 _4325151_324 5_1324 _43125 143_25 5_4123 _54123 1345_2 13452_ 12_354 1_2354 _53421 453_215_1324 _51324 435_12 _35412 5_4123 5241_3 13452_ 13_524 1_2354 _12354 531_42 _315425_1324 5213_4 _35412 3_5412 5241_3 524_13 134_52 _34152 1_2354 1523_4 _54123 154_235213_4 521_34 3_5412 35_412 5241_3 52413_ _14532 514_32 1523_4 152_34 543_12 _435125213_4 52134_ 3_5412 3154_2 52413_ 52_134 142_53 _42153 1523_4 15234_ _13452 413_5252134_ 52_341 3154_2 315_42 52_134 5_2134 _12543 512_43 15234_ 15_342 132_45 _32145

3_5124 _35124

Page 17: Implementación de algoritmos de búsqueda

15

Primero a lo ancho (usando la cola): [] [[135_24]] [] [[_35124,135_24]] [[_35124,135_24],[1352_4,135_24]] [[1352_4,135_24]] [] [[1_5234,1352_4,135_24]] [[1_5234,1352_4,135_24],[13524_,1352_4,135_24]] [[13524_,1352_4,135_24]] [[13524_,1352_4,135_24],[_15234,1_5234,1352_4,135_24]] [[_15234,1_5234,1352_4,135_24]] [[_15234,1_5234,1352_4,135_24],[13_245,13524_,1352_4,135_24]] [[13_245,13524_,1352_4,135_24]] [[13_245,13524_,1352_4,135_24],[215_34,_15234,1_5234,1352_4,135_24]] [[215_34,_15234,1_5234,1352_4,135_24]] [[215_34,_15234,1_5234,1352_4,135_24],[1_3245,13_245,13524_,1352_4,135_24]] [[1_3245,13_245,13524_,1352_4,135_24]] [[1_3245,13_245,13524_,1352_4,135_24],[2153_4,215_34,_15234,1_5234,1352_4,135_24]] [[2153_4,215_34,_15234,1_5234,1352_4,135_24]] Solución: [1_3245,13_245,13524_,1352_4,135_24]

Búsqueda Primero en Profundidad

En la hoja "Memoria" también se pueden encontrar los resultados intermedios y finales para la búsqueda primero en profundidad. Para el problema actual puede apreciarse un historial pero en este caso de la pila:

Primero en profundidad (usando la pila): [] [[135_24]] [] [[_35124,135_24]] [[1352_4,135_24],[_35124,135_24]] [[_35124,135_24]] [[1_5234,1352_4,135_24],[_35124,135_24]] [[13524_,1352_4,135_24],[1_5234,1352_4,135_24],[_35124,135_24]] [[1_5234,1352_4,135_24],[_35124,135_24]] [[13_245,13524_,1352_4,135_24],[1_5234,1352_4,135_24],[_35124,135_24]] [[1_5234,1352_4,135_24],[_35124,135_24]] [[1_3245,13_245,13524_,1352_4,135_24],[1_5234,1352_4,135_24],[_35124,135_24]] [[1_5234,1352_4,135_24],[_35124,135_24]] Solución: [1_3245,13_245,13524_,1352_4,135_24]

Page 18: Implementación de algoritmos de búsqueda

16

Se puede ver que la pila también tiene un comportamiento dinámico durante el proceso. A veces queda vacía un instante intermedio y a veces está repleta de estados.

Importante: La pila queda vacía en partes intermedias del pleno proceso y no así en partes determinantes puesto que sino terminaría la búsqueda.

El historial de la pila para este proceso tiene exactamente 13 filas.

Y la solución (el camino) es la misma que la anterior; es decir, consta de 4 movimientos a partir del estado inicial del rompecabezas.

Si se desea la animación para este problema, podría usarse la hoja "Resultados" que contiene una serie de subrutinas dedicadas a la representación gráfica del problema del rompecabezas de 6 piezas.

9 Conclusiones

Pese a las sofisticadas computadoras disponibles actualmente, el problema de combinaciones que implica un problema como el del rompecabezas sigue siendo una tarea pesada en cuanto a ciclos de ejecución y en cuanto a necesidades de memoria.

La generación de un grafo de espacio de estados sigue siendo un tema detallado y cuidadoso que requiere de la implementación de un algoritmo dedicado para garantizar la no repetición de estados iguales adyacentes.

La búsqueda primero a lo ancho es una técnica que funciona bien pero requiere tiempo y memoria porque hace uso de la estrategia de la cola. La búsqueda a lo ancho es la mejor opción cuando el estado objetivo reside en un cuadrante próximo al nodo raíz o estado inicial.

La búsqueda primero en profundidad es una técnica que siempre funciona además requiere menos tiempo y memoria que la estrategia anterior; esto, porque hace uso de la técnica de la pila que es más eficiente. Este tipo de búsqueda ha demostrado ser ideal para encontrar objetivos que residen en las profundidades del grafo. En consecuencia, es la mejor opción para el problema del rompecabezas estudiado.

Un rompecabezas de 6 posiciones como el estudiado aún consume notable tiempo y memoria para reordenarse entre 2 estados diagonalmente distantes. Y tiene 720 posibles ordenaciones.

Page 19: Implementación de algoritmos de búsqueda

17

10 Recomendaciones

Se recomienda usar técnicas de memoria virtual para codificar programas que puedan resolver rompecabezas de un mayor número de posiciones como los de 9 (3x3) u otros.

Se recomienda que los algoritmos de grafo y de búsqueda de IA usados en la solución del rompecabezas puedan aplicarse a problemas prácticos de otras áreas. Por ejemplo, en Ingeniería Civil se tiene el conflicto del reordenamiento de cargas que hasta hoy se hace mediante simplificaciones de los ingenieros pero que no representan la mejor solución económica. Al calcular un edificio se busca la combinación (posición) de estados de carga (ocupacionales) que ocasionan los máximos esfuerzos en los elementos de la estructura; esto, para lograr un diseño confiable y económico.

11 Referencias

DANIEL GÁLVEZ L. "Sistemas Expertos"; Presentación PowerPoint; Post Grado en Informática, UMSA; LP-BOL; 2007.

PETER NORTON "New Inside The PC"; Second Edition; SAMS; Indiana-USA; 2002.