pitón programación básica: estructura de datos Python y el algoritmo de la figura amplitud algoritmo de búsqueda en profundidad preferentemente ejemplar

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

Publicado 25 artículos originales · ganado elogios 7 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/haoxun11/article/details/104953796
Recomendado
Clasificación