pitão programação básica: estrutura de dados Python e algoritmo da FIG em largura exemplar algoritmo de busca preferencialmente em profundidade

Este artigo descreve o exemplo de estrutura de dados FIG Python e algoritmo de algoritmo de busca em largura e em profundidade. Compartilhar com você para sua referência, como segue:

Segundo a Wikipedia alcançar pseudo-código:

Em largura BFS:

Use fila, coleções

O nó de marcação inicial foi encontrado, colocado na fila

Cada ciclo de um nó a partir do PNF fila

O ponto de todos os nós acoplado na fila, e a bandeira é encontrado para

Através da fila, o labirinto intersecção abrir todas as portas, continuam a abrir para a porta de dentro de uma porta, uma porta de entrada e retorna

"""
 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 em profundidade

Use pilha de coleção

Desenhando o nó inicial

Cada ciclo-se um nó a partir da pilha, e a bandeira é encontrado para

Cada nó pop-up, todos os nós serão conectados na fila

Pela estrutura da pilha, passo a passo escavação

""""
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)

Finalmente, eu recomendo uma reunião boa reputação python [ clique para entrar ], há um monte de veteranos habilidades de aprendizagem, experiência, habilidades de entrevista, experiência de trabalho e outros share de aprendizagem, quanto mais cuidadosamente preparado a informação introdutória base zero em dados reais do projeto método, todos os dias, os programadores explicar a tecnologia Python tempo, para compartilhar um pouco da aprendizagem e a necessidade de prestar atenção aos pequenos detalhes

Publicado 25 artigos originais · ganhou elogios 7 · vê 30000 +

Acho que você gosta

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