2009-09-24 10 views
0

En utilisant la bibliothèque Networkx de Python, j'ai créé un graphe non orienté pour représenter un réseau de relations entre plusieurs personnes. Un extrait de mon code est ci-dessous:Traversée de noeuds Networkx

import networkx as nx 
def creategraph(filepath): 
    G=nx.Graph() 
    #All the various nodes and edges are added in this stretch of code. 
    return G 

D'après ce que je comprends, chaque nœud est essentiellement un dictionnaire. Le problème que cela me pose est que je veux effectuer un type différent d'algorithme Random Walk. Maintenant, avant de sauter sur moi et me dire d'utiliser l'une des fonctions standard de la bibliothèque Networkx, je tiens à souligner qu'il s'agit d'un algorithme personnalisé. Supposons que j'exécute la fonction creategraph et que l'objet G soit retourné et stocké dans un autre objet (appelons-le X). Je veux commencer à un noeud appelé «Bob». Bob est connecté à Alice et Joe. Maintenant, je veux réaffecter Y pour pointer soit Alice soit Bob au hasard (avec les données dont je parle, un nœud donné pourrait avoir des centaines d'arêtes le quittant). Comment vais-je faire cela? En outre, comment puis-je traite avec des entrées unicode dans un

X = creategraph("filename") 
Y=X['Bob'] 
print Y 
>> {u'Alice': {}, u'Joe': {}} 

Répondre

4

dict de noeud donné (comme la façon dont Alice et Joe sont énumérés ci-dessous?) La fonction choice dans le module random pourrait aider dans le processus de sélection. Vous n'avez pas vraiment besoin de vous inquiéter de la distinction entre unicode et une chaîne à moins que vous n'essayiez de les écrire quelque part car parfois les caractères Unicode ne sont pas traduisibles dans le jeu de caractères ASCII par défaut de Python.

La façon dont vous utiliseriez random.choice serait quelque chose le long des lignes de:

Y = Y[random.choice(Y.keys())] 
+0

Merci, Benno. Votre réponse a été très utile pour résoudre mon problème. – GobiasKoffi

Questions connexes