


Comment implémenter l'algorithme de Kruskal en utilisant Python ?
Comment implémenter l'algorithme de Kruskal en utilisant Python ?
Introduction :
L'algorithme de Kruskal est un algorithme classique pour résoudre l'arbre couvrant minimum, qui peut trouver l'arbre couvrant avec le poids total minimum dans un graphe connecté pondéré donné. Cet article présentera comment implémenter l'algorithme de Kruskal à l'aide de Python et fournira des exemples de code détaillés.
- Introduction à l'algorithme :
L'idée de base de l'algorithme de Kruskal est de trier toutes les arêtes du graphe connecté en fonction de leurs poids, puis de sélectionner les arêtes de petite à grande si l'arête actuelle sélectionnée ne se forme pas. un cycle, alors ce sera Rejoindre l'arbre couvrant minimum et le marquer comme visité. Jusqu'à ce que le nombre d'arêtes dans l'arbre couvrant minimum soit égal au nombre de sommets dans le graphe moins un. - Étapes de mise en œuvre :
(1) Définir la classe du graphe et initialiser le nombre de sommets et d'arêtes du graphe.
(2) Définissez la classe de chaque arête et initialisez le point de départ, le point final et le poids de l'arête.
(3) Écrivez une fonction pour implémenter et initialiser l'ensemble, y compris la recherche du nœud racine et la fusion des ensembles.
(4) Écrivez la fonction principale pour implémenter l'algorithme de Kruskal, y compris le tri des arêtes, la sélection des arêtes une par une pour déterminer si elles forment un cycle, l'ajout d'arêtes à l'arbre couvrant minimum et le calcul du poids total de l'arbre couvrant minimum. - Exemple de code :
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()
- Analyse des résultats :
Le code ci-dessus est un exemple typique, construisant un graphe non orienté pondéré contenant 6 sommets et utilisant l'algorithme de Kruskal pour résoudre son arbre couvrant minimum. Le programme imprime les bords de l'arbre couvrant minimum et le poids total de l'arbre couvrant minimum.
Conclusion :
L'algorithme de Kruskal est une méthode efficace pour résoudre l'arbre couvrant minimum d'un graphe connecté. En triant les arêtes et en fusionnant les ensembles, un arbre couvrant avec le poids total minimum peut être obtenu. Utiliser Python pour implémenter l'algorithme de Kruskal peut nous aider à mieux comprendre les principes et les processus de l'algorithme et à l'appliquer facilement à des problèmes pratiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Titre : Utilisation de l'algorithme Prim et exemples de code en C++ Introduction : L'algorithme Prim est un algorithme d'arbre couvrant minimum couramment utilisé, principalement utilisé pour résoudre le problème de l'arbre couvrant minimum dans la théorie des graphes. En C++, l'algorithme de Prim peut être utilisé efficacement grâce à des structures de données raisonnables et à la mise en œuvre de l'algorithme. Cet article explique comment utiliser l'algorithme de Prim en C++ et fournit des exemples de code spécifiques. 1. Introduction à l'algorithme Prim L'algorithme Prim est un algorithme glouton. Il part d'un sommet et étend progressivement l'ensemble de sommets de l'arbre couvrant minimum jusqu'à ce qu'il contienne.

Comment implémenter l'algorithme de codage de Huffman en utilisant Python ? Résumé : Le codage de Huffman est un algorithme classique de compression de données qui génère des codes uniques basés sur la fréquence des occurrences de caractères, permettant ainsi une compression et un stockage efficaces des données. Cet article expliquera comment utiliser Python pour implémenter l'algorithme de codage de Huffman et fournira des exemples de code spécifiques. Comprendre l'idée du codage Huffman. L'idée principale du codage Huffman est d'utiliser des codes légèrement plus courts pour les caractères qui apparaissent plus fréquemment et d'utiliser des codes légèrement plus longs pour les caractères qui apparaissent moins fréquemment, afin de réaliser le codage.

Méthode Python pour implémenter la fonction de téléchargement de cartes hors ligne dans l'API Baidu Map Avec le développement rapide de l'Internet mobile, la demande de fonction de téléchargement de cartes hors ligne devient de plus en plus urgente. La fonction de téléchargement de cartes hors ligne permet aux utilisateurs de continuer à utiliser la navigation cartographique et d'autres fonctions sans connexion Internet, offrant ainsi aux utilisateurs une meilleure expérience utilisateur. Cet article explique comment utiliser Python pour implémenter la fonction de téléchargement de carte hors ligne dans l'API Baidu Map. L'API Baidu Map fournit un ensemble complet d'interfaces ouvertes, y compris des fonctions de téléchargement de cartes hors ligne. utilisé

Utilisez Python pour implémenter l'interface d'accueil Baidu AI afin de rendre votre programme plus intelligent et plus puissant. Avec le développement continu de la technologie d'intelligence artificielle, de plus en plus de développeurs ont commencé à mettre en œuvre des fonctions intelligentes pour améliorer l'intelligence de leurs programmes. L'interface Baidu AI est un outil puissant qui peut nous aider à mettre en œuvre plusieurs fonctions intelligentes telles que la reconnaissance vocale, la reconnaissance d'images et le traitement du langage naturel. Cet article vous montrera comment utiliser Python pour vous connecter à l'interface Baidu AI afin de rendre votre programme plus intelligent et plus puissant. Tout d'abord, nous devons accéder à Baidu AI Open Platform (h

En théorie des graphes, trouver l'arbre couvrant minimum (MST) d'un graphe pondéré connecté est un problème courant. MST est un sous-ensemble d'arêtes de graphique qui relie tous les sommets et minimise le poids total des arêtes. Un algorithme efficace pour résoudre ce problème est l’algorithme de Boruvka. Syntaxe structEdge{intsrc,dest,weight;};//Definethestructuretorepresentasubsetforunion-findstructSubset{intparent,rank;};Algorithme Maintenant, décrivons les étapes impliquées dans la recherche de l'arbre couvrant minimum dans l'algorithme de Boruvka - Initialiser le MST en tant qu'ensemble vide . pour chaque sommet

Présentation des méthodes Python et du partage de cas pour les tests automatisés de pages Web à l'aide d'applications de collecte de navigateurs sans interface : à l'ère d'Internet d'aujourd'hui, les tests automatisés de pages Web sont devenus l'un des moyens importants pour améliorer la qualité et l'efficacité des logiciels. En tant que langage de programmation de haut niveau, Python dispose d'une multitude de bibliothèques et d'outils tiers, ce qui facilite et accélère l'utilisation de Python pour les tests automatisés de pages Web. Cet article expliquera comment utiliser un navigateur sans tête pour collecter des applications et mettre en œuvre des tests automatisés de pages Web, et fournira des exemples de code pertinents. 1. Qu'est-ce que la navigation sans tête ?

Python implémente l'analyse des fonctions de clic et de défilement de simulation de page pour les applications de collecte de navigateurs sans tête Lors de la collecte de données réseau, il est souvent nécessaire de simuler les opérations de l'utilisateur, telles que le clic sur les boutons, le défilement des listes déroulantes, etc. Un moyen courant de réaliser ces opérations consiste à utiliser un navigateur sans tête. Un navigateur sans tête est en fait un navigateur sans interface utilisateur qui simule les opérations des utilisateurs via la programmation. Le langage Python fournit de nombreuses bibliothèques pour implémenter des opérations de navigateur sans tête, dont la plus couramment utilisée est la bibliothèque Selenium. Sélène

Comment utiliser un algorithme glouton pour obtenir la solution optimale du problème de l'arbre couvrant minimum en PHP ? Le problème de l'arbre couvrant minimum (MinimumSpanningTree) consiste à trouver un sous-arbre dans un graphe non orienté connecté tel que ce sous-arbre contienne tous les sommets du graphe et que la somme des poids de toutes les arêtes soit la plus petite. L'algorithme glouton est l'une des méthodes courantes pour résoudre ce problème. Il trouve progressivement la solution optimale globale en sélectionnant à chaque fois la solution optimale actuelle. Tout d’abord, nous devons définir une classe de graphe pour stocker la structure du graphe et les poids des arêtes. Ce qui suit est un exemple de
