


Bagaimana untuk melaksanakan algoritma Kruskal menggunakan Python?
Bagaimana untuk melaksanakan algoritma Kruskal menggunakan Python?
Pengenalan:
Algoritma Kruskal ialah algoritma klasik untuk menyelesaikan pepohon rentang minimum, yang boleh mencari pepohon rentang dengan jumlah berat minimum dalam graf berwajaran yang disambungkan. Artikel ini akan memperkenalkan cara melaksanakan algoritma Kruskal menggunakan Python dan memberikan contoh kod terperinci.
- Pengenalan kepada algoritma:
Idea asas algoritma Kruskal adalah untuk mengisih semua tepi dalam graf yang disambungkan mengikut pemberatnya, dan kemudian pilih tepi dari kecil ke besar Jika tepi semasa yang dipilih tidak akan terbentuk kitaran, maka ia akan menjadi Sertai pokok rentang minimum dan tandakannya sebagai dilawati. Sehingga bilangan tepi dalam pokok rentang minimum adalah sama dengan bilangan bucu dalam graf tolak satu. - Langkah pelaksanaan:
(1) Takrifkan kelas graf dan mulakan bilangan bucu dan tepi graf.
(2) Tentukan kelas setiap tepi dan mulakan titik permulaan, titik akhir dan berat tepi.
(3) Tulis fungsi untuk melaksanakan dan memulakan set, termasuk mencari nod akar dan menggabungkan set.
(4) Tulis fungsi utama untuk melaksanakan algoritma Kruskal, termasuk menyusun tepi, memilih tepi satu demi satu untuk menentukan sama ada ia membentuk kitaran, menambah tepi pada pokok rentang minimum dan mengira jumlah berat pokok rentang minimum. - Contoh kod:
class Graph: def __init__(self, vertices): self.V = vertices # 顶点数 self.graph = [] # 添加边 def add_edge(self, u, v, weight): self.graph.append([u, v, weight]) # 查找根节点 def find(self, parent, i): if parent[i] == i: return i return self.find(parent, parent[i]) # 合并集合 def union(self, parent, rank, x, y): root_x = self.find(parent, x) root_y = self.find(parent, y) if rank[root_x] < rank[root_y]: parent[root_x] = root_y elif rank[root_x] > rank[root_y]: parent[root_y] = root_x else: parent[root_y] = root_x rank[root_x] += 1 # 克鲁斯卡尔算法 def kruskal_algorithm(self): result = [] i = 0 e = 0 self.graph = sorted(self.graph, key=lambda item: item[2]) # 按照权值排序 parent = [] rank = [] for node in range(self.V): parent.append(node) rank.append(0) while e < self.V - 1: u, v, weight = self.graph[i] i += 1 x = self.find(parent, u) y = self.find(parent, v) if x != y: e += 1 result.append([u, v, weight]) self.union(parent, rank, x, y) # 打印最小生成树 print("最小生成树:") for u, v, weight in result: print(f"{u} -- {v} {weight}") # 计算最小生成树的总权值 total_weight = sum(weight for u, v, weight in result) print("最小生成树的总权值:", total_weight) if __name__ == '__main__': g = Graph(6) g.add_edge(0, 1, 4) g.add_edge(0, 2, 3) g.add_edge(1, 2, 1) g.add_edge(1, 3, 2) g.add_edge(2, 3, 4) g.add_edge(2, 4, 3) g.add_edge(3, 4, 2) g.add_edge(3, 5, 1) g.add_edge(4, 5, 6) g.kruskal_algorithm()
- Analisis hasil:
Kod di atas ialah contoh biasa, membina graf tidak berwajaran yang mengandungi 6 bucu, dan menggunakan algoritma Kruskal untuk menyelesaikan pepohon rentang minimumnya. Program ini mencetak tepi dalam pokok rentang minimum dan jumlah berat pokok rentang minimum.
Kesimpulan:
Algoritma Kruskal ialah kaedah yang cekap untuk menyelesaikan pepohon rentang minimum graf yang bersambung Dengan mengisih tepi dan mencantumkan set, pokok rentang dengan jumlah berat minimum boleh diperolehi. Menggunakan Python untuk melaksanakan algoritma Kruskal boleh membantu kami memahami dengan lebih baik prinsip dan proses algoritma, dan menggunakannya dengan mudah untuk masalah praktikal.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan algoritma Kruskal menggunakan Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Tajuk: Penggunaan algoritma Prim dan contoh kod dalam C++ Pengenalan: Algoritma Prim ialah algoritma pokok rentang minimum yang biasa digunakan, terutamanya digunakan untuk menyelesaikan masalah pokok rentang minimum dalam teori graf. Dalam C++, algoritma Prim boleh digunakan dengan berkesan melalui struktur data yang munasabah dan pelaksanaan algoritma. Artikel ini akan memperkenalkan cara menggunakan algoritma Prim dalam C++ dan memberikan contoh kod khusus. 1. Pengenalan kepada algoritma Prim Algoritma prim ialah algoritma tamak Ia bermula dari bucu dan secara beransur-ansur mengembangkan set bucu pokok rentang minimum sehingga ia mengandungi

Bagaimana untuk melaksanakan algoritma pengekodan Huffman menggunakan Python? Abstrak: Pengekodan Huffman ialah algoritma pemampatan data klasik yang menghasilkan kod unik berdasarkan kekerapan kejadian aksara, dengan itu mencapai pemampatan dan penyimpanan data yang cekap. Artikel ini akan memperkenalkan cara menggunakan Python untuk melaksanakan algoritma pengekodan Huffman dan memberikan contoh kod khusus. Fahami idea pengekodan Huffman Idea teras pengekodan Huffman ialah menggunakan kod yang lebih pendek sedikit untuk aksara yang muncul lebih kerap, dan menggunakan kod yang lebih panjang sedikit untuk aksara yang muncul kurang kerap, untuk mencapai pengekodan.

Kaedah Python untuk melaksanakan fungsi muat turun peta luar talian dalam API Peta Baidu Dengan perkembangan pesat Internet mudah alih, permintaan untuk fungsi muat turun peta luar talian menjadi semakin mendesak. Fungsi muat turun peta luar talian membolehkan pengguna masih menggunakan navigasi peta dan fungsi lain tanpa sambungan Internet, memberikan pengguna pengalaman pengguna yang lebih baik. Artikel ini akan memperkenalkan cara menggunakan Python untuk melaksanakan fungsi muat turun peta luar talian dalam API Peta Baidu. API Peta Baidu menyediakan set lengkap antara muka terbuka, termasuk fungsi muat turun peta luar talian. sedang digunakan

Gunakan Python untuk melaksanakan dok antara muka Baidu AI untuk menjadikan program anda lebih pintar dan berkuasa Dengan pembangunan berterusan teknologi kecerdasan buatan, semakin ramai pembangun telah mula melaksanakan fungsi pintar untuk meningkatkan kecerdasan program mereka. Antara muka AI Baidu ialah alat berkuasa yang boleh membantu kami melaksanakan pelbagai fungsi pintar seperti pengecaman pertuturan, pengecaman imej dan pemprosesan bahasa semula jadi. Artikel ini akan menunjukkan kepada anda cara menggunakan Python untuk menyambung ke antara muka Baidu AI untuk menjadikan program anda lebih pintar dan lebih berkuasa. Pertama, kita perlu pergi ke Baidu AI Open Platform (h

Dalam teori graf, mencari pokok rentang minimum (MST) bagi graf berwajaran bersambung adalah masalah biasa. MST ialah subset tepi graf yang menghubungkan semua bucu dan meminimumkan jumlah berat tepi. Algoritma yang cekap untuk menyelesaikan masalah ini ialah algoritma Boruvka. Syntax structEdge{intsrc,dest,weight;};//Definethestructuretorepresentasubsetforunion-findstructSubset{intparent,rank;};Algoritma Sekarang, mari kita gariskan langkah-langkah yang terlibat dalam mencari pokok rentang minimum dalam algoritma Boruvka − Mulakan MST sebagai set kosong . untuk setiap bucu

Gambaran keseluruhan kaedah Python dan perkongsian kes untuk ujian laman web automatik menggunakan aplikasi koleksi pelayar tanpa kepala: Dalam era Internet hari ini, ujian automatik halaman web telah menjadi salah satu cara penting untuk meningkatkan kualiti dan kecekapan perisian. Sebagai bahasa pengaturcaraan peringkat tinggi, Python mempunyai banyak perpustakaan dan alatan pihak ketiga, menjadikannya mudah dan pantas untuk menggunakan Python untuk ujian automatik halaman web. Artikel ini akan memperkenalkan cara menggunakan penyemak imbas tanpa kepala untuk mengumpul aplikasi dan melaksanakan ujian automatik halaman web serta menyediakan contoh kod yang berkaitan. 1. Apakah itu penyemakan imbas tanpa kepala?

Python melaksanakan analisis fungsi klik dan tatal simulasi halaman untuk aplikasi pengumpulan penyemak imbas tanpa kepala Apabila mengumpul data rangkaian, selalunya perlu untuk mensimulasikan operasi pengguna, seperti mengklik butang, menatal lungsur, dsb. Cara biasa untuk mencapai operasi ini ialah menggunakan penyemak imbas tanpa kepala. Pelayar tanpa kepala sebenarnya adalah pelayar tanpa antara muka pengguna yang menyerupai operasi pengguna melalui pengaturcaraan. Bahasa Python menyediakan banyak perpustakaan untuk melaksanakan operasi pelayar tanpa kepala, yang paling biasa digunakan ialah perpustakaan selenium. selen

Bagaimana untuk menggunakan algoritma tamak untuk mencapai penyelesaian optimum masalah pokok rentang minimum dalam PHP? Masalah pokok rentang minimum (MinimumSpanningTree) adalah untuk mencari subpokok dalam graf tidak bersambung yang bersambung supaya subpokok ini mengandungi semua bucu dalam graf dan jumlah pemberat semua tepi adalah yang terkecil. Algoritma tamak adalah salah satu kaedah biasa untuk menyelesaikan masalah ini secara beransur-ansur mencari penyelesaian optimum global dengan memilih penyelesaian optimum semasa setiap kali. Pertama, kita perlu menentukan kelas graf untuk menyimpan struktur graf dan berat tepi. Berikut adalah contoh
