Rumah pembangunan bahagian belakang Tutorial Python Bagaimana untuk menulis algoritma Prim dalam Python?

Bagaimana untuk menulis algoritma Prim dalam Python?

Sep 19, 2023 pm 06:09 PM
python menulis Kata kunci pengaturcaraan algoritma Prim: Algoritma Prim

Bagaimana untuk menulis algoritma Prim dalam Python?

Bagaimana cara menulis algoritma Prim dalam Python?

Algoritma Prim ialah algoritma klasik untuk menyelesaikan masalah pokok rentang minimum Ia boleh mencari pokok rentang minimum bagi graf bersambung tidak berarah. Artikel ini akan memperkenalkan cara menulis algoritma Prim menggunakan Python, dengan contoh kod tertentu.

Pertama, kita perlu memahami prinsip asas algoritma Prim. Algoritma bermula dari nod permulaan dan secara beransur-ansur mengembangkan sempadan pokok sehingga semua nod dalam graf diliputi. Khususnya, algoritma Prim memilih nod yang paling hampir dengan pepohon setiap kali dan menambahkannya pada pepohon spanning, dan kemudian menambah tepi yang menyambungkan nod ini ke nod dalam pepohon spanning ke set tepi calon. Kemudian, tepi dengan berat terkecil dipilih daripada set tepi calon, dan proses ini diulang sehingga pepohon spanning mengandungi semua nod.

Berikut ialah contoh kod menggunakan Python untuk melaksanakan algoritma Prim:

import sys

class Graph:
    def __init__(self, vertices):
        self.V = vertices
        self.graph = [[0 for _ in range(vertices)] for _ in range(vertices)]

    def printMST(self, parent):
        print("Edge     Weight")
        for i in range(1, self.V):
            print(parent[i], "-", i, "    ", self.graph[i][parent[i]])

    def minKey(self, key, mstSet):
        min = sys.maxsize
        min_index = None

        for v in range(self.V):
            if key[v] < min and not mstSet[v]:
                min = key[v]
                min_index = v

        return min_index

    def primMST(self):
        key = [sys.maxsize] * self.V
        parent = [None] * self.V
        key[0] = 0
        mstSet = [False] * self.V

        parent[0] = -1

        for _ in range(self.V):
            u = self.minKey(key, mstSet)
            mstSet[u] = True

            for v in range(self.V):
                if self.graph[u][v] > 0 and not mstSet[v] and key[v] > self.graph[u][v]:
                    key[v] = self.graph[u][v]
                    parent[v] = u

        self.printMST(parent)

# 测试示例
g = Graph(5)
g.graph = [[0, 2, 0, 6, 0],
           [2, 0, 3, 8, 5],
           [0, 3, 0, 0, 7],
           [6, 8, 0, 0, 9],
           [0, 5, 7, 9, 0]]

g.primMST()
Salin selepas log masuk

Dalam kod di atas, kelas Graf pertama kali ditakrifkan, yang mengandungi operasi asas graf. Dalam kaedah primMST, kaedah minKey digunakan untuk memilih nod yang sepadan dengan tepi dengan berat terkecil dalam set kelebihan calon, dan kemudian mengemas kini tatasusunan kunci dan induk.

Dalam contoh ujian, kami mencipta graf yang mengandungi 5 nod dan memberikan perwakilan matriks bersebelahan. Output kod ialah tepi pokok rentang minimum dan beratnya.

Ringkasnya, kesederhanaan dan kebolehbacaan Python menjadikannya agak mudah untuk melaksanakan algoritma Prim. Dengan memahami prinsip asas algoritma Prim dan menggunakan contoh kod di atas, anda boleh menulis dan menjalankan pelaksanaan algoritma Prim dengan mudah. Saya harap artikel ini akan membantu anda mempelajari algoritma Prim!

Atas ialah kandungan terperinci Bagaimana untuk menulis algoritma Prim dalam 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

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Tag artikel 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)

Apakah kelebihan dan kekurangan templat? Apakah kelebihan dan kekurangan templat? May 08, 2024 pm 03:51 PM

Apakah kelebihan dan kekurangan templat?

Google AI mengumumkan Gemini 1.5 Pro dan Gemma 2 untuk pembangun Google AI mengumumkan Gemini 1.5 Pro dan Gemma 2 untuk pembangun Jul 01, 2024 am 07:22 AM

Google AI mengumumkan Gemini 1.5 Pro dan Gemma 2 untuk pembangun

Cara Muat turun DeepSeek Xiaomi Cara Muat turun DeepSeek Xiaomi Feb 19, 2025 pm 05:27 PM

Cara Muat turun DeepSeek Xiaomi

Kongsi beberapa rangka kerja projek berkaitan AI dan LLM sumber terbuka .NET Kongsi beberapa rangka kerja projek berkaitan AI dan LLM sumber terbuka .NET May 06, 2024 pm 04:43 PM

Kongsi beberapa rangka kerja projek berkaitan AI dan LLM sumber terbuka .NET

Bagaimana anda bertanya kepadanya Deepseek Bagaimana anda bertanya kepadanya Deepseek Feb 19, 2025 pm 04:42 PM

Bagaimana anda bertanya kepadanya Deepseek

Bagaimana untuk menyimpan fungsi menilai Bagaimana untuk menyimpan fungsi menilai May 07, 2024 am 01:09 AM

Bagaimana untuk menyimpan fungsi menilai

Apakah perisian NET40? Apakah perisian NET40? May 10, 2024 am 01:12 AM

Apakah perisian NET40?

Cara Mencari DeepSeek Cara Mencari DeepSeek Feb 19, 2025 pm 05:18 PM

Cara Mencari DeepSeek

See all articles