BFS y DFS

Anonim

BFS vs DFS

La búsqueda en primer lugar (también conocida como BFS) es un método de búsqueda utilizado para ampliar todos los nodos de un gráfico en particular. Realiza esta tarea buscando todas las soluciones para examinar y expandir estos nodos (o una combinación de secuencias en ellos). Como tal, un BFS no utiliza un algoritmo heurístico (o un algoritmo que busca una solución a través de múltiples escenarios). Una vez que se obtienen todos los nodos, se agregan a una cola conocida como la cola Primero en entrar, Primero en salir. Los nodos que no se han explorado se "almacenan" en un contenedor marcado como "abierto"; una vez explorados, se transportan a un contenedor marcado como "cerrado".

Depth First Search (también conocido como DFS) es un método de búsqueda que se adentra en un nodo secundario de una búsqueda hasta que se alcanza un objetivo (o hasta que haya un nodo sin otras permutaciones o "hijos"). Después de que se encuentra un objetivo, la búsqueda retrocede a un nodo anterior que se ha ido con una solución, repitiendo el proceso hasta que todos los nodos se hayan buscado con éxito. Como tal, los nodos continúan siendo apartados para una mayor exploración, esto se denomina implementación no recursiva.

Las características de BFS son la complejidad de espacio y tiempo, integridad, prueba de integridad y optimalidad. La complejidad del espacio se refiere a la proporción del número de nodos en el nivel más profundo de una búsqueda. La complejidad del tiempo se refiere a la cantidad real de "tiempo" utilizado para considerar cada ruta que un nodo tomará en una búsqueda. La integridad es, esencialmente, una búsqueda que encuentra una solución en un gráfico, independientemente del tipo de gráfico que sea. La prueba de la integridad es el nivel más bajo en el que se encuentra una meta en un nodo a una profundidad definida. Finalmente, la optimalidad se refiere a un BFS que no está ponderado, es decir, un gráfico que se utiliza para el costo unitario.

Un DFS es la salida más natural que utiliza un árbol de expansión, que es un árbol formado por todos los vértices y algunos bordes en un gráfico no dirigido. En esta formación, el gráfico se divide en tres clases: Bordes delanteros, que apuntan desde un nodo a un nodo secundario; bordes posteriores, apuntando desde un nodo a un nodo anterior; Y los bordes transversales, que tampoco hacen ninguno de estos.

Resumen:

1. Un BFS busca cada solución en un gráfico para expandir sus nodos; un DFS entierra profundamente en un nodo secundario hasta que se alcanza un objetivo.

2. Las características de un BFS son la complejidad del espacio y el tiempo, la integridad, la prueba de integridad y la optimización; el resultado más natural para un DFS es un árbol de expansión con tres clases: bordes delanteros, bordes posteriores y bordes transversales.