J'utilise ces algorithmes en python pour trouver des composants connectés à partir d'arêtes.Liste des arêtes des composants connectés Python
components = []
def connected_components(pairs):
for a, b in pairs:
for component in components:
if a in component:
for i, other_component in enumerate(components):
if b in other_component and other_component != component: # a, and b are already in different components: merge
component.extend(other_component)
components[i:i+1] = []
break # we don't have to look for other components for b
else: # b wasn't found in any other component
if b not in component:
component.append(b)
break # we don't have to look for other components for a
if b in component: # a wasn't in in the component
component.append(a)
break # we don't have to look further
else: # neither a nor b were found
components.append([a, b])
return components
Ce algorithmes de retour des composants comme ceci:
[ [n1,n2,n4],[n3,n5] ]
Je voudrais avoir la liste de tous les bords des composants connectés comme ceci:
[ [(n1,n2),(n2,n4),(n4,n1)],[(n3,n5)] ]
dans le même ordre du liste précédente mais je ne sais pas comment crée cette liste
Nous vous remercions de votre aide.
À quoi ressemblent vos entrées? –
scipy a une fonction pour cela: scipy.sparse.csgraph.connected_components – JB1
Merci pour votre réponse, les entrées c'est un flux de liste de bord comme ceci: [(a1, a2), (a6, a9)] – Guillaume