Este artículo describe el ejemplo de estructura de datos de la figura Python y el algoritmo de algoritmo de búsqueda-amplitud primero y profundidad-primero. Compartir con usted para su referencia, de la siguiente manera:
Según Wikipedia lograr pseudo-código:
Primero en amplitud BFS:
El uso de colas, colecciones
El nodo de etiqueta inicial se ha encontrado, colocado en la cola
Cada ciclo de un nodo de la cola de pop
El punto de todos los nodos acopla en la cola, y la bandera se encuentra para
A través de la cola, el laberinto intersección abrir todas las puertas, continúa abriendo en la puerta desde el interior de una puerta, una puerta de entrada y regresa
"""
procedure BFS(G,v) is
let Q be a queue
Q.enqueue(v)
label v as discovered
while Q is not empty
v ← Q.dequeue()
procedure(v)
for all edges from v to w in G.adjacentEdges(v) do
if w is not labeled as discovered
Q.enqueue(w)
label w as discovered
"""
def procedure(v):
pass
def BFS(G,v0):
""" 广度优先搜索 """
q, s = [], set()
q.extend(v0)
s.add(v0)
while q: # 当队列q非空
v = q.pop(0)
procedure(v)
for w in G[v]: # 对图G中顶点v的所有邻近点w
if w not in s: # 如果顶点 w 没被发现
q.extend(w)
s.add(w) # 记录w已被发现
DFS primero en profundidad
Uso pila colección
Dibujo el nodo inicial
Cada ciclo hasta un nodo de la pila, y la bandera se encuentra para
Cada nodo emergente, todos los nodos se conectará en la cola
Por la estructura de la pila, paso a paso excavación
""""
Pseudocode[edit]
Input: A graph G and a vertex v of G
Output: All vertices reachable from v labeled as discovered
A recursive implementation of DFS:[5]
1 procedure DFS(G,v):
2 label v as discovered
3 for all edges from v to w in G.adjacentEdges(v) do
4 if vertex w is not labeled as discovered then
5 recursively call DFS(G,w)
A non-recursive implementation of DFS:[6]
1 procedure DFS-iterative(G,v):
2 let S be a stack
3 S.push(v)
4 while S is not empty
5 v = S.pop()
6 if v is not labeled as discovered:
7 label v as discovered
8 for all edges from v to w in G.adjacentEdges(v) do
9 S.push(w)
"""
def DFS(G,v0):
S = []
S.append(v0)
label = set()
while S:
v = S.pop()
if v not in label:
label.add(v)
procedure(v)
for w in G[v]:
S.append(w)
Por último, recomiendo una reunión buena reputación pitón [ Haga clic para entrar ], hay una gran cantidad de veteranos habilidades de aprendizaje, experiencia, habilidades de la entrevista, la experiencia laboral y otra cuota de aprendizaje, más que preparamos cuidadosamente la información introductoria de base cero en los datos reales del proyecto método, todos los días, los programadores explicar la tecnología de sincronización de Python, para compartir algunas de las letras y la necesidad de prestar atención a los pequeños detalles