Sto scrivendo una funzione get_connected_components
per una classe Graph
:Python componenti collegati
def get_connected_components(self):
path=[]
for i in self.graph.keys():
q=self.graph[i]
while q:
print(q)
v=q.pop(0)
if not v in path:
path=path+[v]
return path
mio grafico è:
{0: [(0, 1), (0, 2), (0, 3)], 1: [], 2: [(2, 1)], 3: [(3, 4), (3, 5)], \
4: [(4, 3), (4, 5)], 5: [(5, 3), (5, 4), (5, 7)], 6: [(6, 8)], 7: [], \
8: [(8, 9)], 9: []}
dove le chiavi sono i nodi ei valori sono il bordo. La mia funzione mi dà questo componente collegato:
[(0, 1), (0, 2), (0, 3), (2, 1), (3, 4), (3, 5), (4, 3), (4, 5), (5, 3), \
(5, 4), (5, 7), (6, 8), (8, 9)]
ma avrei due diverse componenti connesse, quali:
[[(0, 1), (0, 2), (0, 3), (2, 1), (3, 4), (3, 5), (4, 3), (4, 5), \
(5, 3), (5, 4), (5, 7)],[(6, 8), (8, 9)]]
non capisco dove ho fatto l'errore. Qualcuno può aiutarmi?
Nota che la rappresentazione includono informazioni ridondanti, ad es. in '3: [(3, 4), (3, 5)]'. Sappiamo già che il margine parte da 3! –
Mi suggerisci di cambiare i valori nel dict e di mettere solo il nodo connesso e no i bordi? – fege
BTW invece di 'for i in self.graph.keys(): q = self.graph [i]' puoi 'per (i, q) in self.graph.iteritems()' – Kos