@ Este artículo proviene del número público: csdn2299, me gusta prestar atención a la academia de programadores de números públicos.
Este artículo describe el algoritmo de búsqueda de amplitud y profundidad de la estructura de datos de Python y el gráfico de algoritmos. Comparta con usted para su referencia, de la siguiente manera:
De acuerdo con la implementación del pseudocódigo de Wikipedia:
Ancho Primero BFS:
Usar cola, colección
Marque el nodo inicial que se ha encontrado y póngalo en la cola
Cada bucle saca un nodo de la cola
Coloque todos los puntos de conexión del nodo en la cola y márquelo como encontrado
A través de la cola, abra todas las puertas en la intersección del laberinto, entre desde una puerta, continúe abriendo la puerta interior y luego regrese a la puerta anterior
"""
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已被发现
Profundidad primero DFS
Usar pila, colección
El nodo inicial se empuja a la pila
Cada ronda de bucles saca un nodo de la pila y marca que se ha encontrado
Para cada nodo que aparece, coloque todos los nodos que conecta a la cola
A través de la estructura de la pila, profundiza paso a paso.
""""
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)
Muchas gracias por leer
. Cuando elegí estudiar Python en la universidad, descubrí que me comía una mala base informática. No tenía una calificación académica. Esto
no es nada que hacer. Solo puedo compensarlo, así que comencé mi propio contraataque fuera de la codificación. El camino, continúe aprendiendo el conocimiento central de Python, el estudio en profundidad de los conceptos básicos de la computadora, resuelto, si no está dispuesto a ser mediocre, ¡únase a mí en la codificación y continúe creciendo!
De hecho, no solo hay tecnología aquí, sino también cosas más allá de esas tecnologías. Por ejemplo, cómo ser un programador exquisito, en lugar de "seda de gallo", el programador en sí es una existencia noble, ¿no? [Haga clic para unirse] quiere ser usted mismo, quiere ser noble, vamos