fbpx
Wikipedia

Búsquedas no informadas

En ciencias de la computación, los métodos de búsqueda no informados o ciegos son estrategias de búsqueda en las cuales se evalúa el siguiente estado sin conocer a priori si este es mejor o peor que el anterior.

Búsqueda informada vs no informada

Un problema típico de la Inteligencia Artificial consiste en buscar un estado concreto entre un conjunto determinado, al que se le llama espacio de estados. Imaginemos, por ejemplo, una habitación con baldosines en la que hay un libro. Un robot se desea desplazar por la habitación con el fin de llegar a dicho libro. ¿De qué manera lo hará? En este punto es donde entran en juego las estrategias y los algoritmos de búsqueda.

Cuando el sistema agente (en este caso, el robot) posee algún tipo de información del medio, se utilizan técnicas de búsquedas informadas; sin embargo, si carece de conocimiento alguno, se deberán emplear algoritmos de búsqueda no informadas. En nuestro ejemplo, y para este último caso, podemos imaginar un robot que no posea ningún tipo de visión artificial, que únicamente sea capaz de moverse en horizontal o vertical de un baldosín a otro y detectar si en el baldosín se halla el libro.

 

En general los algoritmos ciegos son más ineficientes en tiempo y memoria que otros métodos, tales como los heurísticos o la búsqueda con adversario:

Representación del espacio de estados

El conjunto de estados que el agente (en nuestro ejemplo, el robot) debe recorrer, generalmente se representa mediante un grafo, aunque en algunos casos concretos utilizaremos árboles. Siguiendo con nuestro ejemplo, cada nodo del grafo representará a uno de los baldosines de la habitación, y dos nodos serán adyacentes si también lo son sus baldosines correspondientes.

El grafo del dibujo en la parte inferior representa el tablero de manera parcial, y cada nodo es identificado por un número. Suponemos que la posición inicial del robot es el baldosín marcado con el número 1. En este grafo se aplica una correspondencia entre los nodos del mismo y los baldosines numerados de igual forma. Como se puede observar en el tablero, por ejemplo, el baldosín 1 es adyacente al 2 y al 5, y este hecho queda plasmado en el dibujo mostrado.

 

Tipos de métodos de búsqueda no informada

Búsqueda en profundidad

Supongamos que nuestro robot no tiene ninguna capacidad especial para poder moverse por la habitación de una manera eficiente (desconoce cualquier información útil para poder llegar al libro de la forma más corta): entonces deberá seguir un algoritmo de búsqueda no informada (“un método ciego”) para llegar hasta él. En general, este tipo de algoritmos recorre el espacio de estados de una forma concreta hasta dar con el objetivo (en este caso, el libro). Nuestro primer método se denomina búsqueda en profundidad.

 

Supongamos el árbol del dibujo representando un espacio de estados cualquiera. Vemos que, teniendo este árbol delante con sus nodos numerados, tenemos distintas formas de recorrerlo. ¿Cómo lo hacemos en profundidad? Siendo el 1 el nodo inicial y 7 el nodo objetivo que se debe alcanzar, hacemos lo siguiente: buscaremos en todas las ramas que cuelgan, de izquierda a derecha, y exploramos cada rama hasta llegar a una hoja. Para cada hijo buscamos a su vez en profundidad, parando cuando se encuentre el objetivo. En este ejemplo, la secuencia a seguir está indicada por el número de los nodos: 1-> 2-> 3-> 4-> 5-> 6-> 7.

Si el camino tiene longitud k y factor de ramificación r, la complejidad espacial del algoritmo está en O (kr). Su complejidad temporal depende tanto del factor de ramificación como de la profundidad de la solución. Siendo n el número medio de hijos expandidos, y si la solución se alcanza en el nivel p, la complejidad temporal está en O (n^p); es, por tanto, un coste exponencial.

Este algoritmo de búsqueda, además, no es completo, ya que si existe solución y se mete por una rama infinita puede que no termine nunca. Tampoco es óptimo, ya que puede encontrar la solución pero haciendo un recorrido mayor del necesario en general. Se ha usado una estructura pila LIFO para implementarlo.

halla_objetivo_profundidad (A: espacio_de_busquedas)

 { /* dev objetivo*/ Pila lista_nodos; Boolean acabar = false; lista_nodos.apilar (A.nodo_raiz); while ((!lista_nodos.esVacia()) AND (!acabar)) do { nodo_actual = lista_nodos.cima(); lista_nodos.desapila(); if (esObjetivo (nodo_actual) ) then {  acabar = true; } else {  nodo_actual.expandir(); //se añaden los hijos del nodo actual  lista_nodos.apilarMuchos (nodos_expandidos_de_nodo_actual); } } return nodo_actual; } 

Búsqueda en anchura

Otra opción para recorrer el espacio de estados sin conocer ninguna información acerca del mismo es recorrerlo en anchura. Como su nombre indica, el recorrido realizado se lleva a cabo visitando todos los nodos de un nivel, de izquierda a derecha, pasando posteriormente al nivel siguiente, hasta que se encuentre el nodo objetivo, momento en el que se detiene el algoritmo. Lo vemos en el dibujo con el mismo ejemplo de antes, numerando los nodos con el orden que les corresponde según el recorrido en anchura.

 

En efecto, los nodos que con este algoritmo se visitan hasta encontrar el objetivo (8) son: 1-> 2-> 3-> 4-> 5-> 6-> 7-> 8

Su complejidad tanto espacial como temporal es exponencial, y está en O (n^p), siendo n el número medio de sucesores, y p el nivel donde se alcanza la solución; por ello, esta estrategia es sólo aplicable a problemas no demasiado amplios.

Este procedimiento es completo, ya que encontrará siempre una solución si es que la hay, pero en general no es óptimo. Para implementarlo se ha hecho uso de una cola FIFO.

halla_objetivo_anchura (A: espacio_de_busquedas)

 { /* dev objetivo*/ Cola lista_nodos; Boolean acabar = false; lista_nodos.encolar (A.nodo_raiz); while ((!lista_nodos.esVacia()) AND (!acabar)) do { nodo_actual = lista_nodos.primero(); lista_nodos.quitaPrimero(); if (esObjetivo (nodo_actual) ) then {  acabar = true; } else {  nodo_actual.expandir(); //se añaden los hijos del nodo actual  lista_nodos.encolarMuchos (nodos_expandidos_de_nodo_actual); } } return nodo_actual; } 

Búsqueda en profundidad limitada

Es una variante de la búsqueda en profundidad, donde se establece un límite de profundidad.

Búsqueda en profundidad iterativa

Es una variante de la búsqueda en profundidad limitada, donde la cota de profundidad elegida va aumentando si no encuentra una solución.

Búsqueda en coste uniforme

La búsqueda comienza por el nodo raíz y continúa visitando el siguiente nodo que tiene menor costo total desde la raíz, es decir con menor costo acumulado. Se controla el acumulado, pero no se estima lo que falta (para ello debería ser un algoritmo heurístico. Es una variante del algoritmo de Dijkstra. También es una variante de la búsqueda en anchura donde el coste es la profundidad del camino.

Se trata de una búsqueda completa, si no se producen bucles. Así mismo, es una búsqueda óptima, si es función del coste.

Búsqueda bidireccional

Es un método en el cual se realiza simultáneamente una búsqueda desde el estado inicial y otra búsqueda desde el estado objetivo.

Véase también

Enlaces externos


    •   Datos: Q5736569

    búsquedas, informadas, ciencias, computación, métodos, búsqueda, informados, ciegos, estrategias, búsqueda, cuales, evalúa, siguiente, estado, conocer, priori, este, mejor, peor, anterior, Índice, búsqueda, informada, informada, representación, espacio, estado. En ciencias de la computacion los metodos de busqueda no informados o ciegos son estrategias de busqueda en las cuales se evalua el siguiente estado sin conocer a priori si este es mejor o peor que el anterior Indice 1 Busqueda informada vs no informada 2 Representacion del espacio de estados 3 Tipos de metodos de busqueda no informada 3 1 Busqueda en profundidad 3 2 Busqueda en anchura 3 3 Busqueda en profundidad limitada 3 4 Busqueda en profundidad iterativa 3 5 Busqueda en coste uniforme 3 6 Busqueda bidireccional 4 Vease tambien 5 Enlaces externosBusqueda informada vs no informada EditarUn problema tipico de la Inteligencia Artificial consiste en buscar un estado concreto entre un conjunto determinado al que se le llama espacio de estados Imaginemos por ejemplo una habitacion con baldosines en la que hay un libro Un robot se desea desplazar por la habitacion con el fin de llegar a dicho libro De que manera lo hara En este punto es donde entran en juego las estrategias y los algoritmos de busqueda Cuando el sistema agente en este caso el robot posee algun tipo de informacion del medio se utilizan tecnicas de busquedas informadas sin embargo si carece de conocimiento alguno se deberan emplear algoritmos de busqueda no informadas En nuestro ejemplo y para este ultimo caso podemos imaginar un robot que no posea ningun tipo de vision artificial que unicamente sea capaz de moverse en horizontal o vertical de un baldosin a otro y detectar si en el baldosin se halla el libro En general los algoritmos ciegos son mas ineficientes en tiempo y memoria que otros metodos tales como los heuristicos o la busqueda con adversario Algoritmos heuristicos destacan las Busquedas Primero el Mejor Algoritmo voraz o Greedy y Algoritmo de busqueda A y de Mejora Iterativa Algoritmo Escalada Simple Hill Climbing y Escalada por Maxima Pendiente Algoritmos de Busqueda con adversario destacan el Minimax y el Poda alfa beta Representacion del espacio de estados EditarEl conjunto de estados que el agente en nuestro ejemplo el robot debe recorrer generalmente se representa mediante un grafo aunque en algunos casos concretos utilizaremos arboles Siguiendo con nuestro ejemplo cada nodo del grafo representara a uno de los baldosines de la habitacion y dos nodos seran adyacentes si tambien lo son sus baldosines correspondientes El grafo del dibujo en la parte inferior representa el tablero de manera parcial y cada nodo es identificado por un numero Suponemos que la posicion inicial del robot es el baldosin marcado con el numero 1 En este grafo se aplica una correspondencia entre los nodos del mismo y los baldosines numerados de igual forma Como se puede observar en el tablero por ejemplo el baldosin 1 es adyacente al 2 y al 5 y este hecho queda plasmado en el dibujo mostrado Tipos de metodos de busqueda no informada EditarBusqueda en profundidad Editar Articulo principal Busqueda en profundidad Supongamos que nuestro robot no tiene ninguna capacidad especial para poder moverse por la habitacion de una manera eficiente desconoce cualquier informacion util para poder llegar al libro de la forma mas corta entonces debera seguir un algoritmo de busqueda no informada un metodo ciego para llegar hasta el En general este tipo de algoritmos recorre el espacio de estados de una forma concreta hasta dar con el objetivo en este caso el libro Nuestro primer metodo se denomina busqueda en profundidad Supongamos el arbol del dibujo representando un espacio de estados cualquiera Vemos que teniendo este arbol delante con sus nodos numerados tenemos distintas formas de recorrerlo Como lo hacemos en profundidad Siendo el 1 el nodo inicial y 7 el nodo objetivo que se debe alcanzar hacemos lo siguiente buscaremos en todas las ramas que cuelgan de izquierda a derecha y exploramos cada rama hasta llegar a una hoja Para cada hijo buscamos a su vez en profundidad parando cuando se encuentre el objetivo En este ejemplo la secuencia a seguir esta indicada por el numero de los nodos 1 gt 2 gt 3 gt 4 gt 5 gt 6 gt 7 Si el camino tiene longitud k y factor de ramificacion r la complejidad espacial del algoritmo esta en O kr Su complejidad temporal depende tanto del factor de ramificacion como de la profundidad de la solucion Siendo n el numero medio de hijos expandidos y si la solucion se alcanza en el nivel p la complejidad temporal esta en O n p es por tanto un coste exponencial Este algoritmo de busqueda ademas no es completo ya que si existe solucion y se mete por una rama infinita puede que no termine nunca Tampoco es optimo ya que puede encontrar la solucion pero haciendo un recorrido mayor del necesario en general Se ha usado una estructura pila LIFO para implementarlo halla objetivo profundidad A espacio de busquedas dev objetivo Pila lista nodos Boolean acabar false lista nodos apilar A nodo raiz while lista nodos esVacia AND acabar do nodo actual lista nodos cima lista nodos desapila if esObjetivo nodo actual then acabar true else nodo actual expandir se anaden los hijos del nodo actual lista nodos apilarMuchos nodos expandidos de nodo actual return nodo actual Busqueda en anchura Editar Articulo principal Busqueda en anchura Otra opcion para recorrer el espacio de estados sin conocer ninguna informacion acerca del mismo es recorrerlo en anchura Como su nombre indica el recorrido realizado se lleva a cabo visitando todos los nodos de un nivel de izquierda a derecha pasando posteriormente al nivel siguiente hasta que se encuentre el nodo objetivo momento en el que se detiene el algoritmo Lo vemos en el dibujo con el mismo ejemplo de antes numerando los nodos con el orden que les corresponde segun el recorrido en anchura En efecto los nodos que con este algoritmo se visitan hasta encontrar el objetivo 8 son 1 gt 2 gt 3 gt 4 gt 5 gt 6 gt 7 gt 8Su complejidad tanto espacial como temporal es exponencial y esta en O n p siendo n el numero medio de sucesores y p el nivel donde se alcanza la solucion por ello esta estrategia es solo aplicable a problemas no demasiado amplios Este procedimiento es completo ya que encontrara siempre una solucion si es que la hay pero en general no es optimo Para implementarlo se ha hecho uso de una cola FIFO halla objetivo anchura A espacio de busquedas dev objetivo Cola lista nodos Boolean acabar false lista nodos encolar A nodo raiz while lista nodos esVacia AND acabar do nodo actual lista nodos primero lista nodos quitaPrimero if esObjetivo nodo actual then acabar true else nodo actual expandir se anaden los hijos del nodo actual lista nodos encolarMuchos nodos expandidos de nodo actual return nodo actual Busqueda en profundidad limitada Editar Articulo principal Busqueda en profundidad limitada Es una variante de la busqueda en profundidad donde se establece un limite de profundidad Busqueda en profundidad iterativa Editar Articulo principal Busqueda en profundidad iterativa Es una variante de la busqueda en profundidad limitada donde la cota de profundidad elegida va aumentando si no encuentra una solucion Busqueda en coste uniforme Editar Articulo principal Busqueda de costo uniforme La busqueda comienza por el nodo raiz y continua visitando el siguiente nodo que tiene menor costo total desde la raiz es decir con menor costo acumulado Se controla el acumulado pero no se estima lo que falta para ello deberia ser un algoritmo heuristico Es una variante del algoritmo de Dijkstra Tambien es una variante de la busqueda en anchura donde el coste es la profundidad del camino Se trata de una busqueda completa si no se producen bucles Asi mismo es una busqueda optima si es funcion del coste Busqueda bidireccional Editar Es un metodo en el cual se realiza simultaneamente una busqueda desde el estado inicial y otra busqueda desde el estado objetivo Vease tambien EditarArbol estructura de datos Busqueda en anchura Busqueda en profundidad Inteligencia artificial Cola estructura de datos Pila estructura de datos Enlaces externos EditarNoticias sobre IA en ingles Datos Q5736569Obtenido de https es wikipedia org w index php title Busquedas no informadas amp oldid 119658733, wikipedia, wiki, leyendo, leer, libro, biblioteca,

    español

    , española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos