Upgrade to Pro — share decks privately, control downloads, hide ads and more …

IA - U2

IA - U2

Inteligencia Artificial
Unidad 2: Técnicas de Búsqueda

Jaime Jesús Delgado Meraz

September 18, 2015
Tweet

More Decks by Jaime Jesús Delgado Meraz

Other Decks in Programming

Transcript

  1. U : TécnicasdeBúsqueda Inteligencia Artificial MSC. Jaime Jesús Delgado Meraz

    Instituto Tecnológico de Ciudad Valles agosto – diciembre
  2. Introducción / La resolución de problemas se describe a menudo

    como una búsqueda en un enorme laberinto de posibilidades, un laberinto que describe el entorno. Para resolver exitosamente un problema se requiere explorar el laberinto de forma selectiva y con ello reducirlo a proporciones manejables. Las máquinas aún no pueden reducir automáticamente los problemas a proporciones manejables, es por ello que los seres humanos tienen que formular los problemas y proponer estrategias para encontrar su solución.
  3. Introducción / En algunos tipos de problemas lo importante es

    encontrar una solución, aunque esta no sea la mejor debe ser una solución aceptable, en otros casos es necesario encontrar el camino que nos lleva a esa solución. De manera general, cualquier estrategia de búsqueda ambos requisitos, requiriendo únicamente pequeños ajustes en sus métodos generales.
  4. Solución de problemas con búsqueda Solucion de problemas con búsqueda

    / La resolución de problemas es fundamental para la mayoría de las aplicaciones de Inteligencia Artificial. De hecho, la capacidad de resolver problemas suele usarse como una medida de la inteligencia tanto para el ser humano como para la computadora. Hay principalmente dos clases de problemas. Una primera clase puede ser resuelta usando algún tipo de procedimiento determinista cuyo éxito esté garantizado. A este procedimiento se le llama de computación. La resolución por computación normalmente sólo se aplica a aquellos tipos de problemas para los que existan tales procedimientos, como en matemáticas.
  5. Solucion de problemas con búsqueda / Se puede con frecuencia

    traducir los métodos usados para resolver estos problemas de manera fácil, a un algoritmo que pueda ser ejecutado por una computadora. No obstante, a pesar de que pocos problemas reales se prestan a soluciones computables, deben ser situados en la segunda categoría, que consiste en problemas que se resuelven con la búsqueda de una solución. Este es el método de resolución de problemas del que se preocupa la IA.
  6. En busca de las llaves Solucion de problemas con búsqueda

    / Recámara Recámara Baño Cocina Salón Recámara Principal Sala X Imaginemos que hemos perdido las llaves del coche. Sabemos que están en algún lugar de la casa. La X indica que estamos en la puerta principal.
  7. En busca de las llaves Solucion de problemas con búsqueda

    / Recámara Recámara Baño Cocina Salón Recámara Principal Sala X Al empezar la búsqueda primero vamos a la sala de estar. Luego vamos por el salón hacia el primer dormitorio, después volvemos al salón y vamos al segundo dormitorio, y de nuevo al salón para ir al dormitorio principal.
  8. En busca de las llaves Solucion de problemas con búsqueda

    / Recámara Recámara Baño Cocina Salón Recámara Principal Sala X Como aún no hemos encontrado las llaves, volvemos hacia atrás pasando por la sala de estar hacia la cocina, donde encontraremos las llaves.
  9. Espacios de estados Espacios de estados / Estado Es la

    representación de un problema en un instante dado. Para definir espacio de estados o espacio de búsqueda (el conjunto de nodos), no es necesario hacer una exhaustiva enumeración de todos los estado válidos, sino que es posible definirlo de manera más general. Estado Inicial consiste en uno o varios estados en los que puede comenzar el problema. Estado Objetivo o estado meta consiste en uno o varios estados finales que se consideran solución aceptable.
  10. Espacios de estados / Reglas describen las acciones u operadores

    que posibilitan un pasaje de estados. Podríamos decir que una regla tiene una parte izquierda y una derecha. La parte izquierda determina la aplicabilidad de la regla, es decir, describe los estados a los que puede aplicarse la regla. La parte derecha describe la operación que se lleva a cabo si se aplica la regla (acción). Heurística es la información acerca de la posibilidad de que un nodo específico sea mejor para intentar la próxima elección que cualquier otro nodo. Camino solución es el grafo dirigido de los nodos visitados que nos llevan a la solución.
  11. Un juego de ajedrez Espacios de estados / Espacio de

    estados La totalidad de tableros que se pueden generar en un juego de ajedrez. Estado Inicial Puede ser el tablero de × donde cada cuadro contiene un símbolo(p.e R corresponde a Torre) de acuerdo a las piezas situadas. Estado final Cualquier posición de tablero en la que el contrario no puede realizar ningún movimiento legal y su rey esté amenazado.
  12. Un juego de ajedrez (cont.) Espacios de estados / Reglas

    Son los movimientos legales, que pueden describirse mediante una parte patrón para ser contrastado con la posición actual del tablero y otra parte que describe el cambio que debe producirse en el tablero. Dado que escribir todas las posiciones del tablero sería imposible, las reglas deben escribirse de manera más general posible. Heurística Podemos elegir tableros en donde el contrincante tenga el menor número de piezas desplegadas. Camino solución El conjunto de movimientos para llegar al estado final.
  13. Espacios de estados / La búsqueda de una solución no

    es tan simple como empezar en el principio y seguir su camino hasta su conclusión. En un caso extremadamente simple de las llaves perdidas, este método de búsqueda es una buena manera de llevarlo a cabo. No obstante, en la mayoría de los problemas en los que se quiera usar una computadora para hallar la solución, la situación es diferente. Generalmente, se usará una computadora para resolver problemas en los que el número de nodos en el espacio de búsqueda sea muy grande y, como el espacio de búsqueda va creciendo, de igual modo se incrementarán el número de diferentes caminos posibles hasta la meta.
  14. Espacios de estados / El problema estriba en que cada

    nodo añadido al espacio de búsqueda añade más de un camino; por lo que el número de caminos hasta la meta se incrementará rápidamente con cada nuevo nodo. Debido a que el número de posibilidades crece tan rápidamente, tan sólo los problemas más simples se prestan a búsquedas exhaustivas. Mientras que la técnica exhaustiva, o de fuerza bruta, teóricamente siempre funciona, normalmente no es práctica porque consume o demasiado tiempo o demasiado recursos de computación, e incluso ambos. Por esa razón, otras técnicas de búsqueda han sido desarrolladas.
  15. Métodos de Búsqueda Métodos de búsqueda / Los métodos o

    algoritmos de búsqueda, tienen una razón de ser en el campo de la inteligencia artificial. Sabemos que todo problema no determinístico, es posible representarlo mediante un espacio de estados. Los algoritmos de búsqueda, permiten entonces, asociar un conjunto de estados para definir una solución. Requieren de estados iniciales por donde comenzar, y buscan estados meta (finales) para dar una solución. Además hay operadores para pasar de un estado a otro (reglas).
  16. Grafos Métodos de búsqueda / Grafo Formalmente, un grafo, se

    define como un conjunto de vértices (también llamados nodos) V y por un conjunto de aristas E que conectan a cualesquiera par de nodos, que pueden estar dirigidos o no. De manera sencilla, un grafo puede representarse como estructura de datos, con una matriz de adyacencia, la cual es un arreglo de n × n, donde n = |V|. Además cada entrada (i, j) de dicha matriz sera: Si hay una arista de i a j. Sino la hay.
  17. Primero en Profundidad (DFS) Métodos de búsqueda / El algoritmo

    de búsqueda primero en profundidad (DFS, Depth-first search), es un procedimiento en tiempo lineal que revela gran información de un grafo. La pregunta básica que busca responder es: ¿Qué partes de un grafo son alcanzables desde un nodo dado? Una búsqueda primero en profundidad explora cada camino posible hasta su conclusión(meta) antes de intentar otro camino. Esta técnica de búsqueda pertenece a las estrategias de búsqueda no informada, es decir la búsqueda no utiliza más que la información proporcionada por la definición del problema.
  18. Primero en Profundidad (DFS) Métodos de búsqueda / La búsqueda

    primero en profundidad tiene unos requisitos muy modestos de memoria. Necesita almacenar sólo un camino desde la raíz a un nodo hoja, junto con los nodos hermanos restantes no expandidos para cada nodo del camino. Una vez que un nodo se ha expandido, se puede quitar de la memoria tan pronto como todos sus descendientes han sido explorados.
  19. Explorar Métodos de búsqueda / Require: G = (V, E)

    sea un grafo; v ∈ V Ensure: visitado[u] verdadero para todos los nodos u alcanzables desde v : function E (G,v) : visitado[v] = verdadero : P (v) : for all arista(u,v) ∈ E do : if visitado[u] = falso then : E (G,u) : end if : end for : P (v) : end function
  20. Previsita y Postvisita Métodos de búsqueda / : function P

    (v) : pre[v] = clock : clock = clock + : end function : function P (v) : post[v] = clock : clock = clock + : end function
  21. Búsqueda Primero en Profundidad Métodos de búsqueda / : function

    DFS(G, v) : for all v ∈ V do : visitado[v] = falso : end for : for all v ∈ V do : if ¬visitado[v] then : E (G, v) : end if : end for : end function
  22. Ejemplo Métodos de búsqueda / E S A D C

    B Grafo Original S A D B E C DFS
  23. Primero en Anchura (BFS) Métodos de búsqueda / La búsqueda

    primero en amplitud o en anchura (BFS, Breadth-First Search) es una estrategia sencilla en la que se expande primero el nodo raíz, a continuación se expanden todos los sucesores del nodo raíz, después sus sucesores, etcétera. En general, se expanden todos los nodos a una misma profundidad en el árbol de búsqueda, antes de expandir cualquier nodo del próximo nivel.
  24. Primero en Anchura (BFS) Métodos de búsqueda / La búsqueda

    primero en anchura se puede implementar utilizando una estructura de tipo cola FIFO (First-In,First-Out), asegurándose que los nodos primeros visitados serán los primeros expandidos. La principal desventaja de la búsqueda en anchura es los requisitos de memoria para almacenar todos los nodos que no han sido expandidos durante la búsqueda.
  25. Búsqueda Primero en Anchura Métodos de búsqueda / Require: G

    = (V, E) sea un grafo, dirigido o no; s ∈ V Ensure: Para todos los vértices u alcanzables desde s, dist[u] contiene la distancia de s a u : function BFS(G,s) : for all u ∈ V do : dist[u] = ∞ : end for : dist[s] = : Q = [s] Cola FIFO conteniendo a s : while Q no este vacía do : u = sacar(Q) : for all arista(u,v) ∈ E do : if dist[v] = ∞ then : meter(Q,v) : dist[v] = dist[u] + : end if
  26. Ejemplo Métodos de búsqueda / E S A D C

    B Grafo Original S A C D E B BFS
  27. DFS VS BFS Métodos de búsqueda / S A D

    B E C DFS S A C D E B BFS
  28. Búsqueda A* Métodos de búsqueda / El algoritmo de búsqueda

    A* (pronunciado “A asterisco” o “A estrella”) se clasifica dentro de los algoritmos de búsqueda en grafos, y es la forma más ampliamente conocida de la búsqueda primero el mejor (Best-First Search). Este algoritmo encuentra, siempre y cuando se cumplan unas determinadas condiciones, el camino de menor coste entre un nodo origen y uno objetivo. La estrategia de búsqueda A* es muy satisfactoria de entre todos los algoritmos vistos anteriormente, lamentablemente, no significa que A* sea la respuesta a todas nuestras necesidades de búsqueda.
  29. Búsqueda A* Métodos de búsqueda / La dificultad es que,

    para la mayoría de los problemas, el número de nodos a expandir son exponenciales en longitud de la solución. El tiempo computacional no es, sin embargo, la desventaja principal de A*. Por lo general, se queda sin mucho espacio antes de que se quede sin tiempo. Por esta razón no es práctico para problemas grandes.
  30. Búsqueda A* Métodos de búsqueda / : function A*(G,inicio,meta) :

    cerrados = {} Nodos ya evaluados : abiertos = {inicio} Nodos a evaluar : viene_de = {} Nodos navegados : costo_g[inicio] = Costo desde inicio : costo_f[inicio] = g_score[inicio] + hce(inicio,meta) : hce: Heurística de Costo Estimado : while abiertos no este vacío do : actual = nodo en abiertos con el menor costo_f : if actual == meta then : return R R (viene_de,meta) : end if : Sacar actual de abiertos : Añade actual a cerrados
  31. Búsqueda A* (cont.) Métodos de búsqueda / : for all

    vecino ∈ vecinos_de(actual) do : costo_g_tentativo = costo_g[actual] + dist(actual, vecino) : if vecino ∈ cerrados and costo_g_tentativo >= costo_g[vecino] then : Iterar : end if : if ¬(vecino ∈ abiertos) or costo_g_tentativo < costo_g[vecino] then : viene_de[vecino] = actual : costo_g[vecino] = costo_g_tentativo : costo_f[vecino] = costo_g[vecino] + hce(vecino,meta) : if ¬(vecino ∈ abiertos) then : Añade vecino a abiertos : end if : end if : end for
  32. Búsqueda A* (cont.) Métodos de búsqueda / : end while

    : return Fallo : end function : : function R R (viene_de, nodo_actual) : if nodo_actual ∈ viene_de then : p = R R (viene_de, viene_de[nodo_actual]) : return p + nodo_actual : else : return nodo_actual : end if : end function
  33. Satisfacción de Restricciones Satisfaccion de Restricciones / En problemas que

    satisfacen restricciones (PSR) los estados se definen mediante valores de un conjunto de variables y la comprobación de meta. Esto especifica un conjunto de restricciones que los estados deben satisfacer. La solución de PSR da valores a todas las variables satisfaciendo las restricciones establecidas. Las restricciones son de diversos tipos. Las unarias se refieren a los valores de una sola variable. Las binarias se refieren a pares de variables. Las terciarias a una tripleta de variables, etcétera. Cada variable, di, de un PSR tiene un dominio Di, que es el conjunto de posibles valores que puede adoptar la variable. El dominio puede ser discreto o continuo.
  34. Satisfaccion de Restricciones / El estado inicial contiene las restricciones

    que dan la descripción del problema. Un estado meta es aquel que satisface las restricciones “suficientemente”, donde “suficientemente” debe definirse para cada problema. El diseño de tareas puede contemplarse como PSR, dado que el diseño debe realizarse contemplando unos límites fijos de tiempo, costo y materiales. Un procedimiento de búsqueda para resolver un problema de criptoaritmética podría trabajar en un espacio de soluciones en el que a las letras se les asignan números, que serían sus valores.
  35. Teoría de Juegos Teoría de Juegos / La teoría de

    juegos es el estudio de la toma de decisiones estratégicas. De manera formal, se puede definir como “el estudio de los modelos matemáticos de conflicto y cooperación entre tomadores de decisiones inteligentes y racionales”. Los “juegos” estudiados en teoría de juegos, son objetos matemáticos bien definidos. Un juego consiste en un conjunto de jugadores, un conjunto de movimientos (o estrategias) disponibles para esos jugadores y una especificación de los costos de cada combinación de estrategias.
  36. Teoría de Juegos / Es posible representar estos juegos de

    dos maneras: extensiva y normal, que definen juegos cooperativos y no cooperativos respectivamente. La teoría de juegos ha sido usada para estudiar una gran variedad de comportamientos humanos y animales. Fue desarrollada inicialmente con un enfoque en la economía para analizar comportamientos de firmas, mercados y consumidores. Pero ha sido usada exitósamente en las ciencias sociales aplicada a comportamientos políticos, sociales y psicológicos.
  37. El dilema del prisionero Teoría de Juegos / El dilema

    del prisionero es un problema fundamental de la teoría de juegos que muestra que dos personas pueden no cooperar incluso si en ello va el interés de ambas. Las técnicas de análisis de la teoría de juegos estándar, por ejemplo determinar el equilibrio de Nash, pueden llevar a cada jugador a escoger traicionar al otro, pero ambos jugadores obtendrían un resultado mejor si colaborasen. La enunciación clásica del dilema del prisionero es la siguiente:
  38. El dilema del prisionero Teoría de Juegos / Dilema del

    prisionero La policía arresta a dos sospechosos. No hay pruebas suficientes para condenarlos y tras haberlos separado, los visita a cada uno y les ofrece el mismo trato. Si uno confiesa y su cómplice no, el cómplice será condenado a la pena total, diez años, y el primero será liberado. Si uno calla y el cómplice confiesa, el primero recibirá esa pena y será el cómplice quien salga libre. Si ambos confiesan, ambos serán condenados a seis años. Si ambos lo niegan, todo lo que podrán hacer será encerrarlos durante seis meses por un cargo menor.
  39. El dilema del prisionero Teoría de Juegos / Lo que

    puede resumirse a: Tú confiesas Tú lo niegas Él confiesa Ambos son condenados a años El sale libre y tu eres condenado a años Él lo niega Él es condenado a años y tú sales libre Ambos son condenados a meses Vamos a suponer que ambos prisioneros son completamente egoístas y su única meta es reducir su propia estancia en la cárcel.
  40. El dilema del prisionero Teoría de Juegos / Los prisioneros

    tienen dos opciones: cooperar con su cómplice y permanecer callado, o traicionar a su cómplice y confesar. El resultado de cada elección depende de la elección del cómplice. Por desgracia, uno no conoce qué ha elegido hacer el otro. Incluso si pudiesen hablar entre sí, no podrían estar seguros de confiar mutuamente. Si uno espera que el cómplice escoja cooperar con él y permanecer en silencio, la opción óptima para el primero sería confesar, lo que significaría que sería liberado inmediatamente, mientras el cómplice tendrá que cumplir una condena de años.
  41. El dilema del prisionero Teoría de Juegos / Si espera

    que su cómplice decida confesar, la mejor opción es confesar también, ya que al menos no recibirá la condena completa de años, y sólo tendrá que esperar , al igual que el cómplice. Sin embargo, si ambos decidiesen no cooperar y permanecer en silencio, ambos serían liberados en sólo meses.
  42. El dilema del prisionero Teoría de Juegos / Confesar es

    una estrategia dominante para ambos jugadores. Sea cual sea la elección del otro jugador, pueden reducir siempre su sentencia confesando. Por desgracia para los prisioneros, esto conduce a un resultado regular, en el que ambos confiesan y ambos reciben largas condenas. Aquí se encuentra el punto clave del dilema. El resultado de las interacciones individuales produce un resultado que no es óptimo; existe una situación tal que la utilidad de uno de los detenidos podría mejorar (incluso la de ambos) sin que esto implique un empeoramiento para el resto. En otras palabras, el resultado en el cual ambos detenidos no confiesan domina al resultado en el cual los dos eligen confesar.