Anda di halaman 1dari 6

Actividades y Ejercicios

INTELIGENCIA ARTIFICIAL 2da. UNIDAD

En un documento en Word elabore un algoritmo de bsqueda de un rbol binario y


un algoritmo de bsqueda usando grafos de algn juego. Enva tu archivo a travs
de este medio.

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.

INGENIERIA DE SISTEMAS E INFORMATICA

Alumno : Castro Rosado, Edwin Antonio

JUEGO SOPA DE LETRAS

En la figura que vern a continuacin, se muestra un ejemplo de una sopa de letras.

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:

En la figura anterior se puede observar la forma de buscar una palabra en la matriz


de letras, para este caso la palabra a buscar es NADIE.

INGENIERIA DE SISTEMAS E INFORMATICA

Alumno : Castro Rosado, Edwin Antonio

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

INGENIERIA DE SISTEMAS E INFORMATICA

Alumno : Castro Rosado, Edwin Antonio

Una representacin en ndice invertido de lo anterior sera:


esa: {t1, t2}
es: {t1, t2, t3}
color: {t1, t2}
manzana: {t1}
mira: {t2}
lo:{t3}, etc.
La palabra que aparece en el lado izquierdo separado por los dos puntos y encerrada entre comillas, es una palabra que aparece en alguno de los 3 textos del
ejemplo, llamada en el ndice invertido como vocabulario. Las expresiones encerradas entre llaves que aparecen en la parte derecha, son los textos donde aparece la
palabra de la izquierda, esta parte del ndice invertido es llamada lista de posteo.
De lo anterior se puede concluir que: Cada palabra que aparece en cada uno de los
textos es asociada (mapeada) con el texto o los textos donde esta aparece. As
que, esta estructura tiene la obligacin de permitir una bsqueda ms rpida en
una consulta, lo cual hace de esta tcnica algo valioso para algunos de los motores
de base de datos ms famosos en el mundo.
Volviendo a nuestro pequeo problemita de la sopa de letras, al preguntarnos por
que necesito un ndice invertido?, pues bien, la solucin que proponamos en la
parte de nuestro anlisis era inicialmente realizar una bsqueda secuencial, esto lo
hacamos Preguntando en cada letra de nuestra matriz si era igual a la primera letra de la palabra a buscar, y si era as, verificbamos en las direcciones validas
donde se poda encontrar la solucin, bueno eso no estara mal, pero hablando en
trminos mayores, que pasara si existiese una matriz de 1000 X 1000, que da un
total de 1.000.000 de letras y que al momento de buscar la solucin a una palabra
de 4 letras, dicha solucin estuviera en la posicin 999.996 y su direccin sea hacia
la derecha?, no se hubiese perdido bastante tiempo en comparaciones innecesarias con el resto de letras en la matriz? O en el caso en que hubiese en otra posicin de la matriz, una letra parecida a la letra inicial de la palabra buscada pero no
era la solucin, entonces se hizo una bsqueda y verificacin que no tena que hacerse. Y esta situacin solo est ocurriendo para buscar una sola palabra, ahora
imagnate si tuvieses que buscar 5 o ms palabras.
Lo que propongo con el uso del ndice invertido, es conocer de antemano, en que
posiciones estn las letras candidatas a ser evaluadas y luego hacer uso del backtracking para verificar la solucin a la palabra buscada.

INGENIERIA DE SISTEMAS E INFORMATICA

Alumno : Castro Rosado, Edwin Antonio

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.

INGENIERIA DE SISTEMAS E INFORMATICA

Alumno : Castro Rosado, Edwin Antonio

4. Seleccionar una de las direcciones: (ABAJO, ARRIBA, DERECHA, IZQUIERDA,


DIAGONAL_INFERIOR_IZQUIERDA,
DIAGONAL_INFERIOR_DERECHA,
DIAGONAL_SUPERIOR_DERECHA, DIAGONAL_SUPERIOR_IZQUIERDA).
5. Verificar la siguiente letra de la palabra buscada en una de las direcciones seleccionada.
6. Si es igual entonces: ir al paso 5.
7. No es igual entonces: ir al paso 4.
8. 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 10.
9. Si ya no hay mas direcciones en donde buscar la solucin entonces ir al paso 3.
10. Pasar a la siguiente palabra buscada.
11. No existen ms palabras por buscar, entonces debemos mostrar las soluciones
encontradas.

INGENIERIA DE SISTEMAS E INFORMATICA

Alumno : Castro Rosado, Edwin Antonio

Anda mungkin juga menyukai