En el de informática, un algoritmo de búsqueda del, por lo general, es un algoritmo que toma un problema como entrada y vuelve una solución al problema, generalmente después de evaluar un número de soluciones posibles. La mayor parte de los algoritmos estudiados por los informáticos que solucionan problemas son clases de algoritmos de búsqueda. El sistema de todas las soluciones posibles a un problema se llama el espacio de búsqueda . Búsqueda de la fuerza bruta o " naïve" los algoritmos de búsqueda de /uninformed utilizan el más simple, la mayoría del método intuitivo de búsqueda a través del espacio de búsqueda, mientras que los algoritmos de búsqueda informados utilizan las funciones heurísticas para aplicar conocimiento sobre la estructura del espacio de búsqueda para intentar reducir la cantidad de búsqueda pasada del tiempo.
Búsqueda mal informada
Un
algoritmo de búsqueda mal informado es uno que no considera la naturaleza específica del problema. Como tal, pueden ser ejecutados generalmente y entonces la misma puesta en práctica se puede utilizar en una amplia gama de los gracias de los problemas a la abstracción . La desventaja es que la mayoría de los espacios de
búsqueda son extremadamente grandes, y una búsqueda mal informada (especialmente de un árbol) llevará una cantidad de tiempo razonable solamente para los pequeños ejemplos. Como tal, acelerar el proceso, a veces solamente una búsqueda informada hará.
Búsqueda de la lista
Los algoritmos de búsqueda de la lista son quizás la clase más básica de algoritmo de búsqueda. La meta es encontrar un elemento de un sistema por una cierta
llave (quizás conteniendo otro relacionado con la información a la llave). Pues esto es un problema común en el de informática, la
complejidad de cómputo de estos algoritmos se ha estudiado bien. El más simple tal algoritmo es la
búsqueda linear, que examina simplemente cada elemento de la lista en orden. Tiene tiempo en marcha O (n) costoso, donde está el número el n de artículos en la lista, pero
puede ser utilizado directo en cualquier lista sin procesar. Un algoritmo de búsqueda más sofisticado de la lista es la búsqueda binaria ; funciona en
tiempo O ( n del registro). Esto es perceptiblemente mejor que la búsqueda linear para las listas grandes de datos, pero requiere que la lista esté clasificada antes de buscar (véase el
algoritmo de clasificación ) y también sea el de acceso aleatorio. La búsqueda de
interpolación es mejor que la búsqueda binaria para las listas clasificadas grandes con bastante incluso distribuciones, pero tiene un tiempo en marcha a lo peor de O ( n ).
El algoritmo de Grover es un algoritmo del quántum que ofrece speedup cuadrático sobre la búsqueda linear clásica para las listas sin clasificar. Sin embargo, requiere una computadora actual no existente del quántum en la cual funcionar.
Las tablas de elección arbitraria también se utilizan para la búsqueda de la lista, requiriendo solamente el tiempo constante para la búsqueda en el caso medio, pero más gastos indirectos del espacio y tiempo de búsqueda a lo peor terrible de O ( n ). Otra búsqueda basada en las estructuras de datos especializadas utiliza el Uno mismo-que balancea los árboles de busqueda binaria y requiere tiempo de O ( n del registro) para buscar; éstos se pueden ver como ampliar las ideas principales de la búsqueda binaria de permitir la inserción y el retiro rápidos. Ver el arsenal asociativo para más discusión de las estructuras de datos de la búsqueda de la lista.
La mayoría de los algoritmos de búsqueda de la lista, tales como búsqueda linear, búsqueda binaria, y los árboles de busqueda binaria de uno mismo-equilibrio, se pueden ampliar con poco coste adicional para encontrar todos los valores menos que o mayor que una llave dada, una operación llamada la búsqueda de la gama del . La excepción glaring es las tablas de elección arbitraria, que no pueden realizar tal búsqueda eficientemente.
Búsqueda de árbol
Los algoritmos de búsqueda de árbol son el corazón de buscar técnicas. Éstos buscan los árboles de los nodos si ese árbol está explícito o implícito (generado en el ir). El principio de base es que un nodo está tomado de una
estructura de datos, sus sucesores examinados y agregados a la estructura de datos. Manipulando la estructura de datos, el árbol es explorado en diversas órdenes por ejemplo llanas el nivel (búsqueda Breadth-first ) o alcanzando un
nodo de hoja primero y retrocediendo (la Profundidad-primera búsqueda ). Otros ejemplos de árbol-buscan incluyen la búsqueda de Iterativo-profundización, la búsqueda Profundidad-limitada, la búsqueda bidireccional y la búsqueda del Uniformar-coste.
Búsqueda del gráfico
Muchos de los problemas en la
teoría de gráfico se pueden solucionar usar algoritmos del traversal del gráfico, tales como algoritmo de Dijkstra, algoritmo de Kruskal, el algoritmo vecino más cercano, y algoritmo remilgado . Éstos se pueden ver como extensiones del árbol-buscan algoritmos.
Búsqueda informada
En una búsqueda informada, un heurístico que es
específico al problema se utiliza como guía. Un buen heurístico hará que una búsqueda informada dramáticamente supera cualquier búsqueda mal informada.
Hay poco informado prominente lista-busca algoritmos. Un miembro posible de esa categoría es una tabla de elección arbitraria con una función de picado que sea una heurística basada en el problema actual. La mayoría de los algoritmos de búsqueda informados exploran árboles. Éstos incluyen la Mejor-primera búsqueda, y el A* . Como los algoritmos mal informados, pueden ser extendidos al trabajo para los gráficos también.
Búsqueda de Adversarial
En juegos tales como ajedrez, hay un árbol de juego de todos los movimientos posibles por ambos jugadores y las
configuraciones resultantes del tablero, y podemos buscar este árbol para encontrar una estrategia que juega eficaz. Este tipo de problema tiene la
característica única que debemos explicar cualquier movimiento posible que nuestro opositor pudiera hacer. Para explicar esto, juego-jugando programas de computadora, tan
bien como otras formas de la inteligencia artificial tener gusto del planeamiento, a menudo algoritmos de búsqueda del uso como el algoritmo del punto de silla, poda del árbol de la búsqueda, y poda Alfa-beta de la máquina.
Satisfacción del constreñimiento
Éste es un tipo de búsqueda que solucione los problemas de satisfacción del constreñimiento donde, algo que buscando una trayectoria, está simplemente un sistema la
solución de valores asignados a un sistema de variables. Porque las variables se pueden procesar en cualquier orden, los algoritmos de búsqueda generalmente de árbol son demasiado ineficaces. Los métodos de solucionar los problemas del constreñimiento incluyen la búsqueda combinatoria y la
vuelta hacia atrás, que se aprovechan de la libertad asociada a problemas del constreñimiento. El campo común trampea o
las técnicas implicadas en la vuelta hacia atrás son la propagación de constreñimiento, que es una forma general adelante de comprobación. Otros algoritmos de búsqueda locales, tales como algoritmo genérico, que reducen al mínimo los conflictos, también hacen un buen trabajo.
Otros tipos
La búsqueda de los algoritmos de búsqueda de secuencia para los patrones dentro encadena ; una estructura de datos popular que hace este más eficiente es el árbol del sufijo
Ideas genéticas del uso de los algoritmos de la evolución como heurística para reducir el espacio de búsqueda
Algoritmos de clasificación necesarios para ejecutar ciertos algoritmos de búsqueda
de recocido simulado es un algoritmo de búsqueda de probabilidad
La búsqueda Tabu es una técnica para evitar las búsquedas discretas que consiguen pegadas en mínimos locales
Búsqueda federada
El punto de silla que puede estar alto - optimizado usar la poda Alfa-beta es un algoritmo a buscar para los buenos movimientos en juegos de suma cero
Búsqueda ternaria
Ver también
Algoritmo de la selección
ninguÌn almuerzo libre en la búsqueda y la optimización
El problema de la secretaria es (IE presentado secuencialmente) un problema de búsqueda en línea con la información imperfecta, y una estrategia estadístico óptima.
ZenithicChinese dragon