Home Java javaTutorial Detailed explanation of examples of minimum spanning trees

Detailed explanation of examples of minimum spanning trees

Jun 25, 2017 pm 01:30 PM
smallest generate

Minimum Spanning Tree-Prim's Algorithm and Kruskal's Algorithm

The spanning tree of a graph is an acyclic connected subgraph containing all vertices, a weighted graph The minimum spanning tree of is its spanning tree with the smallest weight.

Prim algorithm

Simple description of the algorithm

1). Input: a weighted connected graph, in which the vertex set is V and the edge set is E;

2). Initialization: Vnew = {x}, where x is any node (starting point) in the set V, Enew = {}, is empty;

3). Repeat the following Operation until Vnew = V:

a. Select the edge with the smallest weight in set E , where u is the set V elements in new, and v is not in the Vnew set, and v∈V (if there are multiple edges that meet the above conditions and have the same weight, you can choose arbitrarily One of them);

b. Add v to the set Vnew, and add the edge to the set Enew Medium;

4). Output: Use the set Vnew and Enew to describe the resulting minimum spanning tree.

The following is an illustration description of the algorithm

##The next vertex is distanceC, GB, E, FA, DThe algorithm continues to repeat the above steps. Vertex CB, E, GA, D, F##A, D, F, B, EG
Legend Description Not optional Optional Selected(Vnew)

This is the original weighted connected graph. The number on one side of each edge represents its weight. - - ##-

Vertex D is arbitrarily chosen as the starting point. Vertices A, B, E, and F are connected to D by a single edge. A is the vertex closest to D, so A and the corresponding edge AD are highlighted. C, G A, B, E, F D

D Or A nearest vertex. B is 9 from D, 7 from A, 15 from E, and 6 from F. Therefore, F is closest to D or A, so the vertex F and the corresponding edge DF are highlighted.
B with a distance of 7 from A is highlighted.

In the current situation, you can choose between C, E and G. C is 8 from B, E is 7 from B, and G is 11 from F. E is closest, so the vertex E and the corresponding edge BE are highlighted. None C, E, G A, D, F, B

##Here, the only vertices to choose from are C and G. The distance between C and E is 5, and the distance between G and E is 9, so C is selected and combined with the edge EC are highlighted together. None C, G

#Vertex
is the only remaining vertex, Its distance from F is 11, its distance from E is 9, and E is the closest, so G and the corresponding edge EG are highlighted. None G ##A, D, F, B, E, C

Now, all the vertices have been selected, and the green part in the picture is is the minimum spanning tree of a connected graph. In this example, the sum of the weights of the minimum spanning tree is 39.

None None ##A, D, F, B, E, C, G

For algorithm implementation, please refer to the fourth edition of "Algorithm", or "Data Structure - Java Language Implementation" by Tsinghua Publishing House (the implementation method is clearer and simpler)

Kruskal Algorithm

1. Overview

Kruskal's algorithm is an algorithm used to find the minimum spanning tree, published by Joseph Kruskal in 1956. There are also Prim algorithm and Boruvka algorithm used to solve the same problem. All three algorithms are applications of greedy algorithms. The difference from Boruvka's algorithm is that Kruskal's algorithm is also effective when there are edges with the same weight in the graph.

2. Brief description of the algorithm

1). Remember that there are v vertices and e edges in Graph

2). Create a new graph Graphnew, and Graphnew has the original graph The same e vertices, but no edges

3). Sort all e edges in the original graph Graph from small to large by weight

4). Loop: start from the edge with the smallest weight and traverse each edge until all nodes in the graph are in the same connected component

## If this edge is connected The two nodes in the graph Graphnew are not in the same connected component.

Legend description:

First of all, we have a graph Graph with several points and edges

Sort the lengths of all edges, and use the sorted results as the basis for our edge selection. Here again the idea of ​​greedy algorithm is reflected.

Resource sorting selects the locally optimal resources. After the sorting is completed, we take the lead in selecting edge AD. In this way, our picture becomes the picture on the right

Look for the remaining changes. We found CE. The weight here is also 5

and so on. We find 6, 7, 7, that is, DF, AB, BE.

Continue to select BC or EF although the side with a length of 8 is now the smallest unselected side. But now they are connected (BC can be connected through CE, EB,

similar EF can be connected through EB, BA, AD, DF). So no need to select them. Similar BDs are also connected (the connecting lines in the above picture are shown in red).

In the end, only EG and FG are left. Of course we chose EG.

Algorithm implementation can refer to the code in the fourth edition of "Algorithm".

The above is the detailed content of Detailed explanation of examples of minimum spanning trees. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to generate k random dates between two dates using Python? How to generate k random dates between two dates using Python? Sep 09, 2023 pm 08:17 PM

Generating random data is very important in the field of data science. From building neural network predictions, stock market data, etc., date is usually used as one of the parameters. We may need to generate random numbers between two dates for statistical analysis. This article will show how to generate k random dates between two given dates using the random and datetime modules. Datetime is Python’s built-in library for handling time. On the other hand, the random module helps in generating random numbers. So we can combine random and datetime modules to generate a random date between two dates. Syntax random.randint (start, end, k) random here refers to the Python random library. The randint method uses three important

How to generate refreshable image verification code using PHP How to generate refreshable image verification code using PHP Sep 13, 2023 am 11:54 AM

How to use PHP to generate refreshable image verification codes. With the development of the Internet, in order to prevent malicious attacks and automatic machine operations, many websites use verification codes for user verification. One common type of verification code is the image verification code, which generates a picture containing random characters and requires the user to enter the correct characters before proceeding. This article will introduce how to use PHP to generate refreshable image verification codes and provide specific code examples. Step 1: Create a verification code image First, we need to create a verification code image

How to do basic natural language generation using PHP How to do basic natural language generation using PHP Jun 22, 2023 am 11:05 AM

Natural language generation is an artificial intelligence technology that converts data into natural language text. In today's big data era, more and more businesses need to visualize or present data to users, and natural language generation is a very effective method. PHP is a very popular server-side scripting language that can be used to develop web applications. This article will briefly introduce how to use PHP for basic natural language generation. Introducing the natural language generation library The function library that comes with PHP does not include the functions required for natural language generation, so

No longer worry about being stopped by your boss for a small meeting before get off work. The AI ​​assistant will help you automatically generate meeting minutes. No longer worry about being stopped by your boss for a small meeting before get off work. The AI ​​assistant will help you automatically generate meeting minutes. Sep 04, 2023 pm 11:21 PM

iFlytek has upgraded the meeting minutes function, which can directly convert spoken expressions into written drafts, and AI can summarize meeting minutes based on recordings. AI can help you complete the writing of meeting minutes. On August 31, the iFlytek web version was upgraded, adding a real-time recording function on the PC side, which can use artificial intelligence to intelligently generate meeting minutes. The launch of this function will greatly improve the efficiency of users in organizing content and following up on key work items after meetings. For people who often attend meetings, this function is undoubtedly a very practical tool that can save a lot of time and energy. The application scenario of this function is mainly to convert recordings on the PC to text and automatically generate meeting minutes, aiming to provide users with the best quality. Products with excellent services and the most advanced technology to quickly improve office efficiency

Generate a waffle chart using pyWaffle in Python Generate a waffle chart using pyWaffle in Python Aug 17, 2023 am 11:49 AM

Data visualization is essential for efficient information understanding and presentation. Among the many chart types available, waffle charts are a novel way of displaying data in a grid-like structure with square tiles. The powerful Python module PyWaffle facilitates the development of waffle charts, similar to many computational and data analysis methods. In this article, we will look at how to create a waffle chart using the sophisticated Python module PyWaffle. Let’s install PyWafle and see how to use it to visualize categorical data. Run the following command in your cmd to install the library and then import it into your code. The Chinese translation of pipinstallpywaffleExample1 is: Example 1 In this example, we

How to generate QR code with time limit using PHP? How to generate QR code with time limit using PHP? Aug 26, 2023 pm 04:34 PM

How to generate QR code with time limit using PHP? With the popularity of mobile payments and electronic tickets, QR codes have become a common technology. In many scenarios, we may need to generate a QR code with a time limit, which will become invalid even after a certain period of time. This article will introduce how to use PHP to generate a time-limited QR code and provide code examples for reference. Installing the PHPQRCode library To use PHP to generate QR codes, we need to install the PHPQRCode library first. This library

How to generate a wrong answer book for online quizzes How to generate a wrong answer book for online quizzes Sep 25, 2023 am 10:24 AM

How to generate an error book for online answering questions In today's information age, answering questions online has become a common task for many students and educators. Wrong questions have always been one of the problems in the learning process. Many people hope to easily generate a wrong answer book for online answers so that they can better review and master knowledge. This article will introduce how to realize the generation function of online answer error book through programming, and provide specific code examples. Step 1: Build a web interface to generate online answer and error booklets. You need a web interface to display questions and answers. Can use HTML

What to do if the word directory is generated incorrectly What to do if the word directory is generated incorrectly Feb 20, 2024 am 08:08 AM

What to do if word table of contents is generated incorrectly. With the development of technology, electronic documents have become an indispensable part of our daily work and study. When editing electronic documents, especially long articles or papers, the generation of a table of contents is a very important step. The table of contents can make it easier for readers to find the content and structure of the article and improve reading efficiency. However, sometimes we encounter some problems in the process of generating the catalog, such as catalog generation errors, disordered order, etc. So, if the word directory is generated incorrectly, how should we solve it? head

See all articles