Introducción a los algoritmos: No golpee la pared de ladrillo no mira hacia atrás ---- algoritmo de búsqueda en profundidad (DFS)
Introducción a los algoritmos
Sobre algoritmo DFS
ligeramente
pensamiento algoritmo DFS
- En primer lugar, un vértice no es visitado como el vértice de partida, vaya vértice no visitado a lo largo del borde del vértice actual; cuando no hay un vértice no visitado, luego de vuelta a un vértice, continuará acceso de prueba a otros vértices hasta que todos los vértices han sido visitados.
claramente, un recorrido en profundidad a lo largo de una rama atravesada hasta el final, y luego de vuelta otra vez el mismo desplazamiento de manera a lo largo de uno al otro, hasta que todos los vértices han sido visitados hasta ahora. - La clave para entender de DFS: DFS es resolver el "qué hacer en el momento", ya que "el siguiente paso para hacer" y "qué hacer en el momento" es la misma
- método implementado por regla general, es en sí de forma recursiva
modelo algoritmo DFS
void dfs(int step){
//判断边界
//满足条件则返回
//尝试每一种可能
for(int i=1;i<n;i++){
//继续下一步
dfs(step+1)
}
//返回
}
DFS tiempo complejidad del algoritmo:
1. Si bien el modo de aplicación es recursivo, pero tenga en cuenta que la complejidad del tiempo. Bajo es sólo para referencia:
aplicación algoritmo DFS:
- La serie completa gama de variantes y el problema
- Maze (Fig problema de comunicación) de alta complejidad -----
- número figura de sub-gráficos independientes (método de llenado de las semillas)
- recorrido del grafo
Descripción específica
1. Las series arsenal completo y variantes del problema
Código de ejemplo la serie completa gama de problemas
2. laberinto (Figura problema de comunicación)
Maze (Fig problema de comunicación)
La Fig. 3. La Fig número de sub independiente (método de llenado de las semillas)
número figura de subgraphs independientes