Primera búsqueda de amplitud de algoritmo de Python

Hoy aprenderemos otro algoritmo de primera búsqueda de amplitud
El algoritmo para resolver el problema de la ruta más corta se llama primera búsqueda de amplitud.

Que es el dibujo:

Un gráfico simula un conjunto de conexiones. El gráfico se utiliza para simular cómo se conectan las diferentes cosas. El
gráfico se compone de nodos y bordes.
Un nodo puede estar conectado directamente a muchos nodos. Estos nodos se denominan vecinos.

Encuentra el camino más corto:

El primer tipo de problema: partiendo del nodo A y luego yendo a la ruta del nodo B El
segundo tipo de problema: partiendo del nodo A, ¿cuál ruta es la más corta al nodo B? Para
resolver el segundo tipo de problema, podemos considerarlo como una relación mayor que dos. Relación de grado, la relación de segundo grado es mayor que la relación de tercer grado ..., entonces ahora buscamos en la relación de primer grado, si no se encuentra, luego buscamos en la relación de segundo grado ... hasta que encontremos el objetivo, podemos sumar secuencialmente la relación de primer grado, la relación de segundo grado ... en orden A una lista de búsqueda, para que encontremos primero el objetivo más cercano a nosotros, hay una estructura de datos que puede lograr este propósito-cola

cola:

La cola es similar a la pila. No se puede acceder aleatoriamente a los elementos de la cola. La cola solo admite dos operaciones: Enqueue y Dequeue. La
cola es una estructura de datos Primero en entrar, primero en salir (FIFO), y la pila es una La estructura de datos de Last In First Out (LIFO)

Diagrama de implementación:

La tabla hash puede darse cuenta de la relación que cada nodo está conectado con el nodo vecino. La tabla hash puede asignar la clave al valor
. ¿Es importante el orden en el que se agregan los pares clave-valor? La tabla hash no está ordenada, por lo que el orden en el que se agregan los pares clave-valor no importa
La relación entre nodos y nodos es unidireccional. No hay flechas que apunten a otros. Lo llamamos gráfico dirigido.
No hay flecha entre nodos y los nodos conectados directamente son vecinos. Esto se denomina gráfico no dirigido.

Algoritmo:

Cuando actualizo la cola, utilizo los términos "poner en cola" y "sacar de cola", pero también puede encontrar los términos "empujar" y "pop". Empujar es aproximadamente equivalente a ingresar a la cola, y hacer estallar aproximadamente equivalente a retirar de la cola.
En Python, puede usar la función deque para crear una
deque a partir de colecciones import deque Código específico del módulo de importación
:

from collections import deque

my_dict = {
    
    "a": ["a", "b", "c"], "b": ["d", "e"], "c": [], "d": [], "e": ["a"]}

def find_friend(name):
    my_deque = deque()
    my_deque += my_dict["a"]
    finish = []
    while my_deque:
        person = my_deque.popleft()
        if not person in finish:
            if person == "e":
                print("找到了!")
                return True
            else:
                my_deque += my_dict[person]
                finish.append(person)
    print("没找到!")
    return False

find_friend("a")

El tiempo de ejecución de la primera búsqueda de amplitud es O (número de personas + número de aristas), que normalmente se escribe como O (V + E), donde V es el número de vértices y E es el número de aristas.

Supongo que te gusta

Origin blog.csdn.net/Layfolk_XK/article/details/108363882
Recomendado
Clasificación