2010-12-14 58 views

Répondre

11

La façon la plus simple de le représenter (à mon avis) est en utilisant un dict de tableaux listes:

graph = {} 
graph[node_id] = [other_node_id for other_node_id in neighbors(node_id)] 

Une façon simple de trouver des cycles est à l'aide d'une recherche BF ou DF:

def df(node): 
    if visited(node): 
     pass # found a cycle here, do something with it 
    visit(node) 
    [df(node_id) for node_id in graph[node]] 

Avertissement: il s'agit en fait d'un croquis; , visited() et visit() sont juste des mannequins pour représenter comment l'algorithme devrait ressembler.

+1

par dictionnaire de tableaux u dictionnaire moyen de listes? –

+0

@Bunny Rabbit erm .. oui. Désolé, j'ai mal utilisé le nom>< –

4

Python Graph API est un bon point de départ.

Par exemple, NetworkX a une implémentation d'algorithme de Kruskal pour trouver l'arbre recouvrant minimum.

Si vous voulez réinventer la roue et le faire vous-même, c'est également possible.

+3

oui j'essaie de réinventer la roue au moins cette première fois. –