programación básica pitón: estructuras de datos pitón FIG primero en amplitud y profundidad-primer ejemplo explicación

Este artículo describe las estructuras de datos de ejemplo de la figura pitón primero en amplitud y profundidad-primero uso. Compartir con usted para su referencia. De la siguiente manera:

En primer lugar, hay un concepto: volver

El dar marcha atrás (exploración y marcha atrás) es una selección óptima de búsqueda, buscar hacia delante Pulse para excelentes condiciones, con el fin de lograr nuestros objetivos. Pero cuando un paso para explorar, descubrir elección original no es superior o para cumplir con su objetivo, que es un paso hacia atrás para volver a seleccionar, este callejón sin salida en la tecnología de retorno paseo de vuelta hacia atrás y la espalda se reúnen en algunas condiciones de estado punto llamado "punto de dar marcha atrás."

algoritmo primero en profundidad:

(1) un vértices de etiquetas de acceso y vértice v v inicial visitado.
(2) encuentra los primeros vértices adyacentes del vértice v w.
(3) Si los vértices adyacentes w vértice v existe, que continúa, de lo contrario, de nuevo a v, los otros vecinos no visitados encuentra la v.
(4) Si el vértice todavía w sido visitada, los vértices de acceso W y W vértice marcado como visitado.
(5) continúa para encontrar la siguiente vértices vértices adyacentes W, wi, wi si el valor de v con la etapa (3). comunicación figura hasta que todos los vértices de todos visitado hasta ahora.

Primero en amplitud algoritmo:

(1) pone en cola el vértice v.
(2) cuando la cola no está vacía, entonces continuar, de lo contrario los extremos de algoritmo.
(3) la cabecera de la cola para obtener puntos de equipo v; ha sido visitada v visitas vértices y vértice v marca.
(4) encuentra los primeros vértices adyacentes del vértice v col.
(5) Si V no col sido visitada los vértices adyacentes, las colas de la col.
(6) continúan a buscar otro nuevo vértice v vértices adyacentes col, ir a la etapa (5). Hasta que todos los vecinos no son visitados vértice v procesada. Ir a la etapa (2).

código:

#!/usr/bin/python
# -*- coding: utf-8 -*-
class Graph(object):
  def __init__(self,*args,**kwargs):
    self.node_neighbors = {}
    self.visited = {}
  def add_nodes(self,nodelist):
    for node in nodelist:
      self.add_node(node)
  def add_node(self,node):
    if not node in self.nodes():
      self.node_neighbors[node] = []
  def add_edge(self,edge):
    u,v = edge
    if(v not in self.node_neighbors[u]) and ( u not in self.node_neighbors[v]):
      self.node_neighbors[u].append(v)
      if(u!=v):
        self.node_neighbors[v].append(u)
  def nodes(self):
    return self.node_neighbors.keys()
  def depth_first_search(self,root=None):
    order = []
    def dfs(node):
      self.visited[node] = True
      order.append(node)
      for n in self.node_neighbors[node]:
        if not n in self.visited:
          dfs(n)
    if root:
      dfs(root)
    for node in self.nodes():
      if not node in self.visited:
        dfs(node)
    print order
    return order
  def breadth_first_search(self,root=None):
    queue = []
    order = []
    def bfs():
      while len(queue)> 0:
        node = queue.pop(0)
        self.visited[node] = True
        for n in self.node_neighbors[node]:
          if (not n in self.visited) and (not n in queue):
            queue.append(n)
            order.append(n)
    if root:
      queue.append(root)
      order.append(root)
      bfs()
    for node in self.nodes():
      if not node in self.visited:
        queue.append(node)
        order.append(node)
        bfs()
    print order
    return order
if __name__ == '__main__':
  g = Graph()
g.add_nodes([i+1 for i in range(8)])
g.add_edge((1, 2))
g.add_edge((1, 3))
g.add_edge((2, 4))
g.add_edge((2, 5))
g.add_edge((4, 8))
g.add_edge((5, 8))
g.add_edge((3, 6))
g.add_edge((3, 7))
g.add_edge((6, 7))
print "nodes:", g.nodes()
order = g.breadth_first_search(1)
order = g.depth_first_search(1)

Resultados:
Los nodos: [1, 2, 3, 4, 5, 6, 7, 8]
amplitud Prioridad:
[1, 2, 3, 4, 5, 6, 7, 8]
Profundidad Prioridad:
[1, 2, 4 , 8, 5, 3, 6, 7]
Por último, se recomienda una muy amplia recolección de recursos de aprendizaje pitón, [haga clic para entrar] , aquí están mi colección antes de la experiencia, señala el estudio, hay una posibilidad de experiencia en los negocios de aprendizaje, y calmado a cero sobre la base de los datos reales del proyecto, podemos en la parte inferior, dejar un mensaje, no sé a presentar, vamos a estudiar juntos el progreso

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

Supongo que te gusta

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