Bagaimana untuk Menggabungkan Senarai Saling Berkaitan menggunakan Teori Graf?

Susan Sarandon
Lepaskan: 2024-10-21 17:05:02
asal
281 orang telah melayarinya

How to Merge Interconnected Lists using Graph Theory?

Menggabungkan Senarai Saling Berkaitan: Penyelesaian Berasaskan Graf

Masalah:

Pertimbangkan senarai senarai, di mana sesetengahnya berkongsi unsur biasa. Tugasnya adalah untuk menggabungkan semua senarai yang saling berkait melalui elemen yang dikongsi ini sehingga tiada percantuman selanjutnya boleh dilakukan.

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']] 
Salin selepas log masuk

Penyelesaian:

Masalah boleh didekati sebagai graf masalah, di mana senarai mewakili nod yang disambungkan melalui elemen yang dikongsi. Matlamatnya adalah untuk mencari komponen yang bersambung dalam graf ini. Kami boleh memanfaatkan kuasa NetworkX, perpustakaan Python untuk analisis graf, untuk menyelesaikan masalah ini dengan cekap.

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))
Salin selepas log masuk

Output:

[['a', 'c', 'b', 'e', 'd', 'g', 'f', 'o', 'p'], ['k']]
Salin selepas log masuk

Dengan menggunakan NetworkX , pendekatan ini menyelesaikan masalah dengan cekap dengan mencari komponen yang bersambung, menyediakan penyelesaian yang mantap dan betul untuk menggabungkan senarai berdasarkan elemen yang dikongsi.

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Senarai Saling Berkaitan menggunakan Teori Graf?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!