Wie füge ich miteinander verbundene Listen mithilfe der Graphentheorie zusammen?

Susan Sarandon
Freigeben: 2024-10-21 17:05:02
Original
280 Leute haben es durchsucht

How to Merge Interconnected Lists using Graph Theory?

Verbundene Listen zusammenführen: Eine graphbasierte Lösung

Problem:

Betrachten Sie eine Liste von Listen, die einige gemeinsam nutzen gemeinsame Elemente. Die Aufgabe besteht darin, alle durch diese gemeinsamen Elemente miteinander verbundenen Listen zusammenzuführen, bis keine weiteren Zusammenführungen mehr möglich sind.

Input: [['a','b','c'],['b','d','e'],['k'],['o','p'],['e','f'],['p','a'],['d','g']]
Expected Output: [['a','b','c','d','e','f','g','o','p'],['k']] 
Nach dem Login kopieren

Lösung:

Das Problem kann als Diagramm angegangen werden Problem, bei dem die Listen Knoten darstellen, die durch gemeinsam genutzte Elemente verbunden sind. Das Ziel besteht darin, die verbundenen Komponenten in diesem Diagramm zu finden. Wir können die Leistungsfähigkeit von NetworkX, einer Python-Bibliothek für die Diagrammanalyse, nutzen, um dieses Problem effizient zu lösen.

import networkx 
from networkx.algorithms.components.connected import connected_components

# Convert the list of lists into a graph
def to_graph(l):
    G = networkx.Graph()
    for part in l:
        # Add nodes
        G.add_nodes_from(part)
        # Add edges between nodes
        G.add_edges_from(to_edges(part))
    return G

# Generate edges from a list of nodes
def to_edges(l):
    it = iter(l)
    last = next(it)
    for current in it:
        yield last, current
        last = current

# Create the graph and find connected components
G = to_graph(l)
components = connected_components(G)

# Print the merged lists (connected components)
print(list(components))
Nach dem Login kopieren

Ausgabe:

[['a', 'c', 'b', 'e', 'd', 'g', 'f', 'o', 'p'], ['k']]
Nach dem Login kopieren

Durch die Nutzung von NetworkX Dieser Ansatz löst das Problem effizient, indem er verbundene Komponenten findet und eine robuste und korrekte Lösung zum Zusammenführen von Listen basierend auf gemeinsam genutzten Elementen bietet.

Das obige ist der detaillierte Inhalt vonWie füge ich miteinander verbundene Listen mithilfe der Graphentheorie zusammen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!