Rumah pembangunan bahagian belakang Tutorial Python Bagaimana untuk melaksanakan algoritma Kruskal menggunakan Python?

Bagaimana untuk melaksanakan algoritma Kruskal menggunakan Python?

Sep 19, 2023 pm 03:30 PM
pelaksanaan python pokok rentang minimum Algoritma Kruskal

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.

  1. 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.
  2. 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.
  3. 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()
Salin selepas log masuk
  1. 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!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan algoritma Prim dalam C++ Cara menggunakan algoritma Prim dalam C++ Sep 20, 2023 pm 12:31 PM

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? Bagaimana untuk melaksanakan algoritma pengekodan Huffman menggunakan Python? Sep 20, 2023 am 10:49 AM

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.

Bagaimana untuk melaksanakan fungsi muat turun peta luar talian dalam API Peta Baidu dalam Python Bagaimana untuk melaksanakan fungsi muat turun peta luar talian dalam API Peta Baidu dalam Python Jul 29, 2023 pm 02:34 PM

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 AI Baidu untuk menjadikan program anda lebih pintar dan lebih berkuasa Gunakan Python untuk melaksanakan dok antara muka AI Baidu untuk menjadikan program anda lebih pintar dan lebih berkuasa Aug 13, 2023 am 09:29 AM

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

Algoritma Boruvka dalam C++ untuk pokok rentang minimum Algoritma Boruvka dalam C++ untuk pokok rentang minimum Aug 27, 2023 pm 02:53 PM

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

Python melaksanakan kaedah dan perkongsian kes untuk ujian automatik halaman web menggunakan aplikasi pengumpulan pelayar tanpa kepala Python melaksanakan kaedah dan perkongsian kes untuk ujian automatik halaman web menggunakan aplikasi pengumpulan pelayar tanpa kepala Aug 08, 2023 am 08:29 AM

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 pelayar tanpa kepala Python melaksanakan analisis fungsi klik dan tatal simulasi halaman untuk aplikasi pengumpulan pelayar tanpa kepala Aug 09, 2023 pm 05:13 PM

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? Bagaimana untuk menggunakan algoritma tamak untuk mencapai penyelesaian optimum masalah pokok rentang minimum dalam PHP? Sep 19, 2023 pm 06:33 PM

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

See all articles