📌  相关文章
📜  fonction parcourt en largeure sur un graphe - Python (1)

📅  最后修改于: 2023-12-03 15:30:50.095000             🧑  作者: Mango

Fonction de parcours en largeur sur un graphe - Python

La fonction de parcours en largeur (ou BFS) est une technique de traversée de graphe qui explore tous les voisins d'un nœud avant de passer au nœud suivant. Cette approche est souvent utilisée pour trouver le chemin le plus court entre deux nœuds d'un graphe non-pondéré.

Voici un exemple d'implémentation en Python de la fonction de parcours en largeur :

from collections import deque

def bfs(graph, start):
    # Créer une file vide et ajouter le nœud de départ
    queue = deque([start])
    # Créer un ensemble pour stocker les nœuds visités
    visited = set()

    while queue:
        # Retirer le premier nœud de la file
        node = queue.popleft()
        if node not in visited:
            # Marquer le nœud comme visité
            visited.add(node)
            # Ajouter ses voisins à la file
            queue.extend(graph[node])

    return visited

Cette fonction utilise une file pour stocker les nœuds à explorer et un ensemble pour stocker les nœuds visités. Elle prend en paramètre un graphe sous la forme d'un dictionnaire dont les clés sont les nœuds et les valeurs sont une liste de voisins.

Voici un exemple d'utilisation de la fonction :

# Créer un graphe non-pondéré
graph = {
    'A': ['B', 'C'],
    'B': ['A', 'D', 'E'],
    'C': ['A', 'F'],
    'D': ['B'],
    'E': ['B', 'F'],
    'F': ['C', 'E']
}

# Appeler la fonction de parcours en largeur
print(bfs(graph, 'A'))  # {'A', 'B', 'C', 'D', 'E', 'F'}

Dans cet exemple, la fonction de parcours en largeur est appelée sur le graphe non-pondéré défini par le dictionnaire graph. Le nœud de départ est 'A' et la fonction retourne un ensemble contenant tous les nœuds visités.

En conclusion, la fonction de parcours en largeur est une technique utile pour explorer un graphe et trouver le chemin le plus court entre deux nœuds. Elle est facile à implémenter en Python et peut être adaptée à différents types de graphe.