Unidad_01

Post on 11-Apr-2016

7 views 0 download

description

En ciencias de la computación, un árbol binario es una estructura de datos en la cual cada nodo puede tener un hijo izquierdo y un hijo derecho. No pueden tener más de dos hijos (de ahí el nombre "binario"). Si algún hijo tiene como referencia a null, es decir que no almacena ningún dato, entonces este es llamado un nodo externo. En el caso contrario el hijo es llamado un nodo interno. Usos comunes de los árboles binarios son los árboles binarios de búsqueda, los montículos binarios y Codificación de Huffman.

Transcript of Unidad_01

Inteligencia Artificial IIUnidad 01

Busqueda no Informada

Luis Nibaldo Oyarzun AlavaIngeniero Electronico

utm.loyarzun@gmail.comloyarzun@utm.edu.ec

Universidad Tecnica de ManabıFacultad de Ciencias Informaticas

8 de junio de 2015

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 1 / 84

Tabla de Contentenidos

1 Busqueda No InformadaBusqueda

Arboles y GrafosBusqueda en AmplitudBusqueda en Profundidad

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 2 / 84

Reglas

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 3 / 84

Busquedas

En esta unidad vamos a tratar las busquedas, en especial las Busquedasno Informadas porque estas no presentan ninguna ayuda al momento debuscar una solucion rapida.La UNICA ayuda que presentan son las planteadas en el problema.Por su parte si la durante la busqueda hay ayudas o informacion relevanteestamos en el caso de Busquedas Informadas

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 4 / 84

Busquedas

Un ejemplo de “Busqueda Informada”serıa el siguiente:

Me interesa encontrar al menos una persona que le guste verAnime genero Mechas en el curso de “Inteligencia Artificial”.

El problema no da mayor informacion, salvo que es en el curso de“Inteligencia Artificial”. Por lo tanto se debera preguntar a cadaestudiante si le gusta el Anime genero Mechas o no.La busqueda que se realiza de manera informada tambien se llama“Busqueda a Ciegas”.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 5 / 84

Busquedas

Un ejemplo de “Busqueda Informada”serıa el siguiente:

Me interesa encontrar al menos una persona que le guste verAnime genero Mechas en el curso de “Inteligencia Artificial”.

El problema no da mayor informacion, salvo que es en el curso de“Inteligencia Artificial”. Por lo tanto se debera preguntar a cadaestudiante si le gusta el Anime genero Mechas o no.La busqueda que se realiza de manera informada tambien se llama“Busqueda a Ciegas”.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 5 / 84

Busquedas

Empecemos con un juego de ninos:El juego de bloques para construir

Este juego consiste en agrupar los bloques uno sobre otro (verticalmente)u ordenando estos en lınea de forma distinta (horizontalmente), es decir:ACB, ,CAB, BAC, BCA, CBA, etc. Con la unica limitante de poder moversolo un bloque a la vez.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 6 / 84

Busquedas

Empecemos con un juego de ninos:El juego de bloques para construir

Este juego consiste en agrupar los bloques uno sobre otro (verticalmente)u ordenando estos en lınea de forma distinta (horizontalmente), es decir:ACB, ,CAB, BAC, BCA, CBA, etc. Con la unica limitante de poder moversolo un bloque a la vez.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 6 / 84

Busquedas

Antes de comenzar a buscar soluciones se deben plantear algunaspreguntas:

1 ¿Cual es el espacio de estados del problema?

2 ¿Cual es el estado inicial y el final (objetivo)?

3 ¿Que operacion nos permite pasar de un estado a otro?

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 7 / 84

Busquedas

Antes de comenzar a buscar soluciones se deben plantear algunaspreguntas:

1 ¿Cual es el espacio de estados del problema?

2 ¿Cual es el estado inicial y el final (objetivo)?

3 ¿Que operacion nos permite pasar de un estado a otro?

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 7 / 84

Busquedas

Antes de comenzar a buscar soluciones se deben plantear algunaspreguntas:

1 ¿Cual es el espacio de estados del problema?

2 ¿Cual es el estado inicial y el final (objetivo)?

3 ¿Que operacion nos permite pasar de un estado a otro?

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 7 / 84

Busquedas

Antes de comenzar a buscar soluciones se deben plantear algunaspreguntas:

1 ¿Cual es el espacio de estados del problema?

2 ¿Cual es el estado inicial y el final (objetivo)?

3 ¿Que operacion nos permite pasar de un estado a otro?

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 7 / 84

Busquedas

Suponiendo que el estado inicial sea cualquier posicion de las piezas y elestado final sea las piezas ordenadas verticalmente.De igual forma para saber el numero de posibles ESPACIOS de ESTADOSprevios hay que aplicar las formulas de combinaciones, variaciones ypermutaciones, CON y SIN repeticion segun el caso.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 8 / 84

Busquedas

Para determinar las operaciones debemos definirlas en funcion de losestados que me permita explorar el sistema.De ahı que puedo definir las operaciones como:

Intercambios desde los extremos (E).

Intercambios Derecha-Centro (D).

Intercambios Izquierda-Centro (I).

Mover del Piso sobre un Bloque (PB).

Mover de Sobre un Bloque al Piso (BP).

Mover de un Bloque a otro Bloque (BB).

Teniendo en cuenta que solo puedo utilizar estas operaciones y sus estadosinicial y objetivo.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 9 / 84

Busquedas

Para determinar las operaciones debemos definirlas en funcion de losestados que me permita explorar el sistema.De ahı que puedo definir las operaciones como:

Intercambios desde los extremos (E).

Intercambios Derecha-Centro (D).

Intercambios Izquierda-Centro (I).

Mover del Piso sobre un Bloque (PB).

Mover de Sobre un Bloque al Piso (BP).

Mover de un Bloque a otro Bloque (BB).

Teniendo en cuenta que solo puedo utilizar estas operaciones y sus estadosinicial y objetivo.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 9 / 84

Busquedas

Para determinar las operaciones debemos definirlas en funcion de losestados que me permita explorar el sistema.De ahı que puedo definir las operaciones como:

Intercambios desde los extremos (E).

Intercambios Derecha-Centro (D).

Intercambios Izquierda-Centro (I).

Mover del Piso sobre un Bloque (PB).

Mover de Sobre un Bloque al Piso (BP).

Mover de un Bloque a otro Bloque (BB).

Teniendo en cuenta que solo puedo utilizar estas operaciones y sus estadosinicial y objetivo.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 9 / 84

Busquedas

Para determinar las operaciones debemos definirlas en funcion de losestados que me permita explorar el sistema.De ahı que puedo definir las operaciones como:

Intercambios desde los extremos (E).

Intercambios Derecha-Centro (D).

Intercambios Izquierda-Centro (I).

Mover del Piso sobre un Bloque (PB).

Mover de Sobre un Bloque al Piso (BP).

Mover de un Bloque a otro Bloque (BB).

Teniendo en cuenta que solo puedo utilizar estas operaciones y sus estadosinicial y objetivo.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 9 / 84

Busquedas

Para determinar las operaciones debemos definirlas en funcion de losestados que me permita explorar el sistema.De ahı que puedo definir las operaciones como:

Intercambios desde los extremos (E).

Intercambios Derecha-Centro (D).

Intercambios Izquierda-Centro (I).

Mover del Piso sobre un Bloque (PB).

Mover de Sobre un Bloque al Piso (BP).

Mover de un Bloque a otro Bloque (BB).

Teniendo en cuenta que solo puedo utilizar estas operaciones y sus estadosinicial y objetivo.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 9 / 84

Busquedas

Para determinar las operaciones debemos definirlas en funcion de losestados que me permita explorar el sistema.De ahı que puedo definir las operaciones como:

Intercambios desde los extremos (E).

Intercambios Derecha-Centro (D).

Intercambios Izquierda-Centro (I).

Mover del Piso sobre un Bloque (PB).

Mover de Sobre un Bloque al Piso (BP).

Mover de un Bloque a otro Bloque (BB).

Teniendo en cuenta que solo puedo utilizar estas operaciones y sus estadosinicial y objetivo.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 9 / 84

Busquedas

Para determinar las operaciones debemos definirlas en funcion de losestados que me permita explorar el sistema.De ahı que puedo definir las operaciones como:

Intercambios desde los extremos (E).

Intercambios Derecha-Centro (D).

Intercambios Izquierda-Centro (I).

Mover del Piso sobre un Bloque (PB).

Mover de Sobre un Bloque al Piso (BP).

Mover de un Bloque a otro Bloque (BB).

Teniendo en cuenta que solo puedo utilizar estas operaciones y sus estadosinicial y objetivo.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 9 / 84

Busquedas

Para determinar las operaciones debemos definirlas en funcion de losestados que me permita explorar el sistema.De ahı que puedo definir las operaciones como:

Intercambios desde los extremos (E).

Intercambios Derecha-Centro (D).

Intercambios Izquierda-Centro (I).

Mover del Piso sobre un Bloque (PB).

Mover de Sobre un Bloque al Piso (BP).

Mover de un Bloque a otro Bloque (BB).

Teniendo en cuenta que solo puedo utilizar estas operaciones y sus estadosinicial y objetivo.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 9 / 84

Arboles y Grafos

Conocidos los antecedentes hay que determinar:¿Como se debe representar el problema planteado para que este pueda serentendido por el computador?¿Como representar sus estados?¿Podrıa ser un vector o una lista? =⇒ [B,C,A]¿Podrıa ser una matriz o una matriz esparsa?¿Cuales serıan las limitantes de cada una?Podrıan ser validos, ¿Pero es la forma correcta para organizarlos?

¿Cual es el costo computacional de estos metodos?

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 10 / 84

Arboles y Grafos

Conocidos los antecedentes hay que determinar:¿Como se debe representar el problema planteado para que este pueda serentendido por el computador?¿Como representar sus estados?¿Podrıa ser un vector o una lista? =⇒ [B,C,A]¿Podrıa ser una matriz o una matriz esparsa?¿Cuales serıan las limitantes de cada una?Podrıan ser validos, ¿Pero es la forma correcta para organizarlos?

¿Cual es el costo computacional de estos metodos?

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 10 / 84

Arboles y Grafos

Conocidos los antecedentes hay que determinar:¿Como se debe representar el problema planteado para que este pueda serentendido por el computador?¿Como representar sus estados?¿Podrıa ser un vector o una lista? =⇒ [B,C,A]¿Podrıa ser una matriz o una matriz esparsa?¿Cuales serıan las limitantes de cada una?Podrıan ser validos, ¿Pero es la forma correcta para organizarlos?

¿Cual es el costo computacional de estos metodos?

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 10 / 84

Arboles y Grafos

Conocidos los antecedentes hay que determinar:¿Como se debe representar el problema planteado para que este pueda serentendido por el computador?¿Como representar sus estados?¿Podrıa ser un vector o una lista? =⇒ [B,C,A]¿Podrıa ser una matriz o una matriz esparsa?¿Cuales serıan las limitantes de cada una?Podrıan ser validos, ¿Pero es la forma correcta para organizarlos?

¿Cual es el costo computacional de estos metodos?

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 10 / 84

Arboles y Grafos

Conocidos los antecedentes hay que determinar:¿Como se debe representar el problema planteado para que este pueda serentendido por el computador?¿Como representar sus estados?¿Podrıa ser un vector o una lista? =⇒ [B,C,A]¿Podrıa ser una matriz o una matriz esparsa?¿Cuales serıan las limitantes de cada una?Podrıan ser validos, ¿Pero es la forma correcta para organizarlos?

¿Cual es el costo computacional de estos metodos?

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 10 / 84

Arboles y Grafos

Conocidos los antecedentes hay que determinar:¿Como se debe representar el problema planteado para que este pueda serentendido por el computador?¿Como representar sus estados?¿Podrıa ser un vector o una lista? =⇒ [B,C,A]¿Podrıa ser una matriz o una matriz esparsa?¿Cuales serıan las limitantes de cada una?Podrıan ser validos, ¿Pero es la forma correcta para organizarlos?

¿Cual es el costo computacional de estos metodos?

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 10 / 84

Arboles y Grafos

Conocidos los antecedentes hay que determinar:¿Como se debe representar el problema planteado para que este pueda serentendido por el computador?¿Como representar sus estados?¿Podrıa ser un vector o una lista? =⇒ [B,C,A]¿Podrıa ser una matriz o una matriz esparsa?¿Cuales serıan las limitantes de cada una?Podrıan ser validos, ¿Pero es la forma correcta para organizarlos?

¿Cual es el costo computacional de estos metodos?

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 10 / 84

Arboles y Grafos

Conocidos los antecedentes hay que determinar:¿Como se debe representar el problema planteado para que este pueda serentendido por el computador?¿Como representar sus estados?¿Podrıa ser un vector o una lista? =⇒ [B,C,A]¿Podrıa ser una matriz o una matriz esparsa?¿Cuales serıan las limitantes de cada una?Podrıan ser validos, ¿Pero es la forma correcta para organizarlos?

¿Cual es el costo computacional de estos metodos?

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 10 / 84

Arboles y Grafos

Una forma de representar los estados y sus resultados al aplicar unoperador es a traves de un Arbol que muestra como evolucionarıan losestados al ir aplicando las respectivas operaciones:

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 11 / 84

Arboles y Grafos

De acuerdo a la nomenclatura utilizada en arboles, llamaremos Nodos acada uno de los estados clasificandolos en:

A cada uno de los resultantes (Nodo Hijo)

Al nodo que genero un hijo se le llama (Nodo Padre)

Si varios nodos pertenecen a un mismo padre se llaman (NodosHermanos)

Solo el nodo superior no tiene un padre y se le llama (Nodo Raız)

Cuando un nodo no tiene hijos se le llama (Nodo Hoja)

Si un nodo tiene padre y al menos un hijo lo llamaremos (Rama)

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 12 / 84

Arboles y Grafos

El numero de operaciones que se pueden realizar a un nodo, es el numerode hijos que este puede tener.Al numero de hijos que un nodo puede tener se le llama “Factor deRamificacion”.En el caso de expandir un nodo a traves de las operaciones posibles se diceque este ha descendido un Nivel de jerarquıa.

NOTA: En un arbol pueden existir estados repetidos de acuerdo a laoperacion aplicada, por ejemplo si al Nodo Raız aplico una operacion (E) yluego la al nodo resultante se vuelve a aplicar, en nuevo nodo sera igualque el nodo raız.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 13 / 84

Arboles y Grafos

Para evitar este tipo de problemas podemos organizar la informacion enGrafos, que es una estructura similar al arbol, que permite unir los nodosa traves de ciclos.Los Grafos se representan uniendo los nodos a traves de aristas quepueden ser lıneas o flechas curvas.Donde si el estado actual permite regresar a su estado anterior se utilizauna lınea, caso contrario se utiliza una flecha indicando que el sentidoUNICO del recorrido.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 14 / 84

Arboles y Grafos

Cuando en el desarrollo del arbol se encuentran ciclos, como nos hapasado en este caso, la busqueda de la solucion podrıa no encontrarsenunca, ya que el programa podrıa quedar indefinidamente en esos ciclos,por lo que tendremos que evitarlos.Una forma habitual de hacerlo es “recordar”que nodos hemos visitadoalmacenandolos en memoria y cada vez que lleguemos a un nuevo nodo,comprobar que no lo hemos visitado ya con anterioridad.Encontrar una solucion a un problema consistira en hacer una busqueda enel arbol de estados o en un grafo para encontrar un nodo que contenga unestado objetivo.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 15 / 84

Arboles y Grafos

Busqueda en el ArbolEn general, el recorrido de un arbol (o grafo) se compone de los siguientespasos:

1 Seleccionamos el nodo raız y lo almacenamos en una lista quecontendra aquellos nodos que estan pendientes de visitar. A esta listala llamaremos frontera (tambien se conoce como lista abierta).

2 Cogemos un nodo de la lista de nodos frontera y comprobamos si esun nodo objetivo. Si lo es, hemos terminado.

3 Generamos todos los hijos del nodo seleccionado en el paso 2aplicando los operadores que hemos definido. Esto es lo que se llamaexpandir un nodo. Anadimos los nuevos nodos hijo a la lista de nodosfrontera.

4 Volvemos al paso 2 hasta que la lista de nodos frontera este vacıa.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 16 / 84

Arboles y Grafos

Busqueda en el GrafoSi en lugar de un arbol estamos trabajando con un grafo, el procesocambia ligeramente:

1 Seleccionamos el nodo raız y lo almacenamos en la lista de nodosfrontera.

2 Cogemos un nodo de la lista de nodos frontera y comprobamos si esun nodo objetivo. Si lo es, hemos terminado. Ademas, almacenamosel nodo en una lista llamada visitados, que contiene todos los nodosvisitados hasta el momento.

3 Generamos todos los hijos del nodo seleccionado en el paso 2aplicando los operadores que hemos definido. Para cada hijocomprobamos que no esta en la lista de nodos visitados, y si no esta,la anadimos a la lista de nodos frontera.

4 Volvemos al paso 2 hasta que la lista de nodos frontera este vacıa.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 17 / 84

Arboles y Grafos

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 18 / 84

Arboles y Grafos

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 19 / 84

Arboles y Grafos

Busqueda de CaminosLa busqueda de un camino (pathfinding) es un problema que se encuentraen la mayorıa de las aplicaciones desarrolladas en este campo. El problemase lo puede plantear de la siguiente manera:En un grado que representa es espacio de estados a traves de sus nodos yaristas, se necesita calcular la serie de nodos y aristas que se dan entre dosnodos.A cada camino se puede asignar un coste (numero de aristas recorridas,suma de longitudes de las aristas, etc.).El camino con menor coste sera el camino mınimo entre esos dos puntos.No siempre sera necesario buscar el camino mınimo, solamente conencontrar uno optimo es suficiente y ası se podra ahorrar recursos y en unjuego por ejemplo evitar que el jugador prevea los futuros pasos o jugadas.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 20 / 84

Arboles y Grafos

Busqueda de CaminosA partir de la representacion del mundo que se esta estudiado en elmodulo se puede generar un grid o un grafo que represente todos loscaminos por los que puede moverse un elemento.En un determinado momento, se puede necesitar saber el camino que deberecorrer un elemento para ir de un punto A a un punto B. Los algoritmosmas utilizados son:

Recorrido en profundidad

Recorrido en amplitud

Coste Uniforme

Dijkstra

A*, etc...

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 21 / 84

Busqueda en Amplitud

El recorrido en amplitud (Breadth First Search BFS) es uno de losalgoritmos mas sencillos existentes para la busdqueda de un camino en ungrafo.La BFS consiste en visitar TODOS los nodos posibles a partir del nodoinicial o raız, visitando seguidamente sus hijos (los Nodos Hermanos) en elsegundo nivel antes que los nodos hijos. Es decir que el algoritmo, permitevisitar TODOS los nodos de un nivel y luego sigue con el otro, hasta llegaral Nodo Objetivo o al ultimo nivel.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 22 / 84

Busqueda en Amplitud

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 23 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [1]Resultado [1]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 24 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [1, 2, 3, 4]Resultado [1, 2, 3, 4]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 25 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [2, 3, 4, 5, 6]Resultado [1, 2, 3, 4, 5, 6]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 26 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [3, 4, 5, 6]Resultado [1, 2, 3, 4, 5, 6]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 27 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [4, 5, 6, 7, 8]Resultado [1, 2, 3, 4, 5, 6, 7, 8]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 28 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [5, 6, 7, 8, 9, 10]Resultado [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 29 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [6, 7, 8, 9, 10]Resultado [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 30 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [7, 8, 9, 10, 11, 12]Resultado [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 31 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [8, 9, 10, 11, 12]Resultado [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 32 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [9, 10, 11, 12]Resultado [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 33 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [10, 11, 12]Resultado [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 34 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [11, 12]Resultado [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 35 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [12]Resultado [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 36 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [ ]Resultado [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 37 / 84

Busqueda en Amplitud

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 38 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [4]Resultado [4]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 39 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [4, 3, 5, 6]Resultado [4, 3, 5, 6]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 40 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [3, 5, 6, 2]Resultado [4, 3, 5, 6, 2]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 41 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [5, 6, 2, 1]Resultado [4, 3, 5, 6, 2, 1]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 42 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [6, 2, 1]Resultado [4, 3, 5, 6, 2, 1]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 43 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [2, 1]Resultado [4, 3, 5, 6, 2, 1]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 44 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [1]Resultado [4, 3, 5, 6, 2, 1]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 45 / 84

Busqueda en Amplitud

Pasos para hacer el recorrido:

Cola: [ ]Resultado [4, 3, 5, 6, 2, 1]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 46 / 84

Busqueda en Amplitud

Como un dato interesante la busqueda en amplitud utiliza una COLA(FIFO → Primero en Entrar, Primero en Salir) la cual almacena los nodosque se visitan y a continuacion los nodos hijos en el orden que van a servisitados.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 47 / 84

Busqueda en Amplitud

Pseudocodigo Inicialnodo inicial = estado inicialnodos frontera = Cola FIFOnodos visitados = Listaalmacenar nodo inicial en nodos fronteramientras nodos frontera no vacıo:

nodo actual = extraer un nodo de nodos fronterasi nodo actual == solucion:

salir con solucionintroducir nodo actual en nodos visitadospor cada operador:

nodo hijo = operador(nodo actual)si nodo hijo no en nodos visitados ni nodos frontera:

introducir nodo hijo en nodos frontera

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 48 / 84

Busqueda en Amplitud

Una desventaja de la BFS es que requiere generar y almacenar un arbolcuyo tamano es exponencial al llegar la final en el nodo meta. Algunaspreguntas de interes en este metodo serian:

¿La BSF encontrara una solucion?

¿Que tiempo demorara en llegar al nodo objetivo? → Cuando unalgoritmo cumple su cometido de inicio a fin, este es un algoritmoCOMPLETO y esta caracterıstica se llama Completitud.

¿Sera la solucion Optima? → Donde si el resultado de la ejecucion deun algoritmo es la optima, se dice que este algoritmo es optimo y estacaracterıstica se llama optimalidad

¿Es optima la busqueda en amplitud?

¿Cual es la Cota Superior Asintotica (Notacion O Grande)?

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 49 / 84

Busqueda en Profundidad

El recorrido en profundidad (Depth First Search DFS) al igual que el casoanterior es uno de los algoritmos mas sencillos existentes para labusdqueda de un camino en un grafo.La DFS consiste en visitar TODOS los nodos posibles a partir del nodoinicial o raız, visitando (los Nodos Descendientes) hasta llegar al nivelmaximo de profundidad de una rama. Es decir que el algoritmo, permitevisitar TODOS los nodos de una rama y luego sigue con otra, hasta llegaral Nodo Objetivo o hasta llegar a ultimo nodo de la ultima rama.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 50 / 84

Busqueda en Profundidad

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 51 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [1]Resultado [1]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 52 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [1, 2]Resultado [1, 2]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 53 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [1, 2, 3]Resultado [1, 2, 3]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 54 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [1, 2, 3, 4]Resultado [1, 2, 3, 4]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 55 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [1, 2, 3, 5]Resultado [1, 2, 3, 4, 5]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 56 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [1, 2, 3]Resultado [1, 2, 3, 4, 5]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 57 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [1, 2, 6]Resultado [1, 2, 3, 4, 5, 6]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 58 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [1, 2]Resultado [1, 2, 3, 4, 5, 6]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 59 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [1, 7]Resultado [1, 2, 3, 4, 5, 6, 7]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 60 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [1, 8]Resultado [1, 2, 3, 4, 5, 6, 7, 8]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 61 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [1, 8, 9]Resultado [1, 2, 3, 4, 5, 6, 7, 8, 9]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 62 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [1, 8, 9, 10]Resultado [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 63 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [1, 8, 9, 11]Resultado [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 64 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [1, 8, 9]Resultado [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 65 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [1, 8, 12]Resultado [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 66 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [1, 8]Resultado [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 67 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [1]Resultado [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 68 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: []Resultado [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 69 / 84

Busqueda en Profundidad

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 70 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [4]Resultado [4]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 71 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [4, 6]Resultado [4, 6]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 72 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [4, 3]Resultado [4, 6, 3]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 73 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [4, 3, 2]Resultado [4, 6, 3, 2]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 74 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [4, 3, 2, 5]Resultado [4, 6, 3, 2, 5]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 75 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [4, 3, 2, 5, 1]Resultado [4, 6, 3, 2, 5, 1]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 76 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [4, 3, 2, 5]Resultado [4, 6, 3, 2, 5, 1]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 77 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [4, 3, 2]Resultado [4, 6, 3, 2, 5, 1]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 78 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [4, 3]Resultado [4, 6, 3, 2, 5, 1]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 79 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [4]Resultado [4, 3, 5, 6, 2, 1]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 80 / 84

Busqueda en Profundidad

Pasos para hacer el recorrido:

Pila: [ ]Resultado [4, 3, 5, 6, 2, 1]

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 81 / 84

Busqueda en Profundidad

Como un dato interesante la busqueda en profundidad utiliza una PILA(LIFO → Ultimo en Entrar, Primero en Salir) la cual almacena los nodosque se visitan y a continuacion los nodos hijos en el orden que van a servisitados.

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 82 / 84

Busqueda en Profundidad

Pseudocodigo Inicialnodo inicial = estado inicialnodos frontera = Pila LIFOnodos visitados = Listaalmacenar nodo inicial en nodos fronteramientras nodos frontera no vacıo:

nodo actual = extraer un nodo de nodos fronterasi nodo actual == solucion:

salir con solucionintroducir nodo actual en nodos visitadospor cada operador:

nodo hijo = operador(nodo actual)si nodo hijo no en nodos visitados ni nodos frontera:

introducir nodo hijo en nodos frontera

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 83 / 84

Busqueda en Profundidad

Una desventaja de la DFS es que requiere generar y almacenar toda unarama del arbol cuyo tamano es n al llegar la final en el nodo meta.Algunas preguntas de interes en este metodo serian:

¿La DSF encontrara una solucion?

¿Que tiempo demorara en llegar al nodo objetivo? → Cuando unalgoritmo cumple su cometido de inicio a fin, este es un algoritmoCOMPLETO y esta caracterıstica se llama Completitud.

¿Sera la solucion Optima? → Donde si el resultado de la ejecucion deun algoritmo es la optima, se dice que este algoritmo es optimo y estacaracterıstica se llama optimalidad

¿Es optima la busqueda en profundidad?

¿Cual es la Cota Superior Asintotica (Notacion O Grande)?

Luis Oyarzun Alava (UTM) Unidad01 8 de junio de 2015 84 / 84