Академический Документы
Профессиональный Документы
Культура Документы
ALGORITMO DE BUSQUEDA
Un algoritmo de bsqueda es aquel que est diseado para localizar un elemento
con ciertas propiedades dentro de una estructura de datos; por ejemplo, ubicar el
registro correspondiente a cierta persona en una base de datos, o el mejor movimiento en una partida de ajedrez.
La variante ms simple del problema es la bsqueda de un nmero en un vector.
Los algoritmos presentan diferencias entre ellos que los convierten en ms o menos eficientes y prcticos segn sea la rapidez y la eficiencia demostrada por cada
uno de ellos.
Juegos Combinatorios
Los juegos combinatorios son juegos donde n = 2, se posee informacin perfecta y no hay acciones aleatorias con ganar-perder como nicos resultados.
Tal juego est determinado por un conjunto de posiciones hasta que una posicin terminal es alcanzada.
Juegos imparciales son aquellos en los cuales el conjunto de movimientos
desde cualquier posicin es igual para ambos jugadores, de otra forma son
juegos no imparciales.
Son ajedrez y damas juegos imparciales?
Juegos de Grafos
Ahora damos una descripcin equivalente de los juegos combinatorios utilizando grafos dirigidos.
Esto es hecho identificando posiciones en el juego con vrtices en los grafos y movimientos con bordes de el grafo.
De all definiremos una funcin conocida como la funcin Sprague-Grundy
que contiene ms informacin que saber slo la posiciones P y S.
Una sopa de letras se puede definir como un juego de destreza y rapidez mental,
donde se tiene que encontrar un nmero finito de palabras. Dichas palabras estn
definidas previamente en el mismo juego y estn ocultas en una matriz cuadrada
de letras. La bsqueda de las palabras en la matriz se puede realizar de la siguiente forma:
ALGORITMOS DE DESARROLLO.
Algunas de las aplicaciones que le dan solucin a una sopa de letras lo hacen por
medio de la tcnica llamada backtracking (vuelta atrs). Es una estrategia para encontrar soluciones a problemas que satisfacen restricciones, usada muy frecuentemente en sistema multi-soluciones. Uno de los ejemplos que podemos encontrar
en la aplicacin de este algoritmo para el contexto que estamos tratando, es la solucin del famoso sudoku, o encontrar el camino que da la salida en un laberinto, o
en un juego de ajedrez, podamos usarlo para aplicarle cierta inteligencia artificial a
la CPU. El backtracking tambin es usado como base lgica en sistemas de reglas
de inferencia, como es el caso de prolog.
Aunque la solucin que propone el backtracking parece ser buena frente a otras
alternativas de bsqueda para este tipo de aplicaciones, el tiempo de respuesta
puede variar dependiendo del tamao de la matriz. Las causas de esta caracterstica radican en la forma de implementacin, y si no se usa otra tcnica que lo complemente para dar con la solucin, puede consumir mayor tiempo para encontrar
las respuestas. Por ejemplo, si intentramos solucionar la sopa de letra con la nica implementacin del backtracking tendramos entonces que:
1. Comparar cada letra de la matriz, verificar si dicha letra es igual a la primera
letra de la palabra buscada.
2. Si es igual entonces:
3. Seleccionar una de las direcciones: (ABAJO, ARRIBA, DERECHA, IZQUIERDA,
DIAGONAL_INFERIOR_IZQUIERDA,
DIAGONAL_INFERIOR_DERECHA,
DIAGONAL_SUPERIOR_DERECHA, DIAGONAL_SUPERIOR_IZQUIERDA).
4. Verificar la siguiente letra de la palabra buscada en una de las direcciones seleccionada.
5. Si es igual entonces: ir al paso 4.
6. No es igual entonces: ir al paso 3.
7. Si ya no hay mas letras que buscar en la palabra buscada, entonces la palabra
ha sido encontrada en la direccin seleccionada y en la posicin de letra de la
matriz comparada. ir al paso 9.
8. Si ya no hay mas direcciones en donde buscar la solucin entonces ir al paso 1.
9. Si existen ms palabras por buscar, Pasar a la siguiente palabra buscada.
10. No existen ms palabras por buscar, entonces debemos mostrar las soluciones
encontradas.
QUE ES UN NDICE INVERTIDO?
Un ndice invertido es una estructura de datos para almacenamiento que mapea
contenido tales como palabras o nmeros con sus ubicaciones en un archivo de
base de datos, en un documento o en un conjunto de documentos. Digamos que
tenemos los siguientes textos:
T1: "esa manzana es de color verde"
T2: mira, esa pelota es de color azul
T3: eso es lo que es
Lo primero que haramos para resolver la sopa de letra anterior, es crear nuestro
ndice invertido, tomando como vocabulario la primera letra de cada palabra a buscar y como lista de posteo las posiciones de esa letra en la matriz de letras, de esta
forma tendramos los siguientes datos:
A: {(0,5), (0,8), (6,6)}
E: {(0,0), (9,0), (9,9)}
El par ordenado que se encuentra en la lista de posteo corresponde a la expresin
(fila, columna) en la matriz de letras. As, por ejemplo, la letra A con la que comienza la palabra AULA, se encuentra en la matriz, en las posiciones (0,5) (0,8) y
(6,6). La letra E que corresponde a la palabra ESTUDIANTE, se encuentra en
las posiciones (0,0) (9,0) y (9,9). En el caso de la palabra XITO, si nos damos
cuenta la letra inicial es la misma que la de ESTUDIANTE por lo tanto ya tenemos
esa referencia guardada previamente en el ndice invertido.
La idea general para armar esta estructura, es:
1. Recorrer una sola vez la matriz, preguntando en cada letra si se parece a algunas de las letras con que comienzan las palabras que se quieren buscar,
2. Si se parecen, preguntar si ya existe en el ndice invertido. Si ya existe ir al paso 4 sino ir al paso 3.
3. Almacenar la letra como vocabulario y asignar una referencia de la fila y la columna.
4. Si la posicin no existe en la lista de posteo, guardar la posicin de la forma (fila, columna).
Una vez tengamos el ndice invertido construido, ser ms fcil encontrar la solucin de las palabras buscada, ya que tenemos una mayor precisin en la bsqueda. Entonces, el algoritmo que tenamos anteriormente en la primera parte de nuestro tutorial, lo podemos ajustar a la siguiente forma:
1. Crear un ndice invertido para la sopa de letras.
2. Tomar como entrada la primera palabra a buscar y la lista de posteo asociada a
esta.
3. Se toma como pivote la letra de la matriz en la posicin del par ordenado que se
encuentra en la lista de posteo.