Home  >  Article  >  Backend Development  >  How to write Prim's algorithm in Python?

How to write Prim's algorithm in Python?

WBOY
WBOYOriginal
2023-09-19 18:09:16715browse

How to write Prims algorithm in Python?

How to write Prim's algorithm in Python?

Prim's algorithm is a classic algorithm for solving the minimum spanning tree problem. It can find the minimum spanning tree of an undirected connected graph. This article will introduce how to write Prim's algorithm using Python, with specific code examples.

First of all, we need to understand the basic principles of Prim's algorithm. The algorithm starts from a starting node and gradually expands the boundaries of the tree until all nodes in the graph are covered. Specifically, Prim's algorithm selects a node closest to the tree each time and adds it to the spanning tree, and then adds the edges connecting this node to the nodes in the spanning tree to the candidate edge set. Then, the edge with the smallest weight is selected from the set of candidate edges, and this process is repeated until the spanning tree contains all nodes.

The following is a code example using Python to implement Prim's algorithm:

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()

In the above code, a Graph class is first defined, which contains the basic operations of the graph. In the primMST method, the minKey method is used to select the node corresponding to the edge with the smallest weight in the candidate edge set, and then updates the key and parent arrays.

In the test example, we created a graph containing 5 nodes and gave its adjacency matrix representation. The output of the code is the edges of the minimum spanning tree and their weights.

In short, Python's simplicity and readability make it relatively easy to implement Prim's algorithm. By understanding the basic principles of Prim's algorithm and using the code examples above, you can easily write and run an implementation of Prim's algorithm. I hope this article will help you learn Prim's algorithm!

The above is the detailed content of How to write Prim's algorithm in Python?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn