Maison Java javaDidacticiel Explication détaillée d'exemples d'arbres couvrant minimum

Explication détaillée d'exemples d'arbres couvrant minimum

Jun 25, 2017 pm 01:30 PM
le plus petit 生成

Arbre couvrant minimum - Algorithme Prim et algorithme de Kruskal

L'arbre couvrant minimum d'un graphe est un sous-graphe connexe acyclique contenant tous les sommets, un graphe pondéré L'arbre couvrant minimum de est son arbre couvrant avec le plus petit poids.

Algorithme Prim

Une brève description de l'algorithme

1). Entrée : un graphe connecté pondéré, où l'ensemble des sommets est V et l'ensemble des arêtes est E

2). new = {x}, où x est n'importe quel nœud (point de départ) dans l'ensemble V, Enew = {}, est vide

; 3). Répéter Les opérations suivantes sont effectuées jusqu'à ce que Vnouveau = V :

a Sélectionnez le bord ensemble E, où u est l'ensemble des éléments dans Vnouveau, et v n'est pas dans l'ensemble Vnouveau, et v∈V (s'il y a plusieurs arêtes qui remplissent les conditions susmentionnées , c'est-à-dire avoir le même poids, alors n'importe lequel d'entre eux

b Ajoutez v à l'ensemble Vnouveau et ajoutez le < u, v> bord à l'ensemble Enouveau

4). new pour décrire l'arbre couvrant minimum résultant.

L'illustration suivante décrit l'algorithme

Légende) est arbitrairement choisi comme point de départ. Les sommets ou avec une distance de 7 de
Description Pas facultatif Facultatif Sélectionné (Vnouveau

Ceci est le graphique connecté pondéré original. Le nombre sur un côté de chaque bord représente son poids.

- - -

Vertex

D
A, B, E et F sont reliés à D par une seule arête. A est le sommet le plus proche de D, donc A et l'arête correspondante AD sont mises en surbrillance. C, G A, B, E, F D

Le prochain sommet est la distance

D
A sommet le plus proche. B est 9 de D, 7 de A, E est 15 et F est 6. Par conséquent, F est le plus proche de D ou A, donc le sommet F et l'arête correspondante DF sont souligné express. C, G B, E, F A, D
L'algorithme continue de répéter les étapes ci-dessus. Le sommet BA est mis en évidence. C B, E, G A, D, F

Dans la situation actuelle, vous pouvez choisir entre C, E et G. La distance entre C et B est de 8, la distance entre E et B est de 7, et la distance entre G et F vaut 11. E est le plus proche, donc le sommet E et l'arête correspondante BE sont mis en évidence. Aucun C, E, G A, D, F, B

Ici, il y a des options pour choisissez parmi Les sommets sont uniquement C et G. La distance entre C et E est de 5, et la distance entre G et E est de 9, alors sélectionnez C et fusionnez-le avec le côté EC sont mis en évidence ensemble. Aucun C, G A, D, F, B, E

VertexG est le seul gauche Le sommet est 11 de F, 9 de E, et E est le plus proche, il est donc mis en surbrillance pour indiquer G et le bord correspondantEG. Aucun G A, D, F, B, E, C

Maintenant, tous les sommets ont été sélectionnés, verts dans le photo La partie est l'arbre couvrant minimum du graphe connecté. Dans cet exemple, la somme des poids de l'arbre couvrant minimum est de 39. Aucun Aucun A, D, F, B, E, C, G

Pour l'implémentation de l'algorithme, veuillez vous référer à la quatrième édition de "Algorithm", ou "Data Structure - Java Language Implementation" de Tsinghua Publishing House (la méthode d'implémentation est plus claire et plus simple)

Algorithme de Kruskal

1. 🎜>

L'algorithme de Kruskal est un algorithme utilisé pour trouver l'arbre couvrant minimum, publié par Joseph Kruskal en 1956. Il existe également l'algorithme Prim et l'algorithme Boruvka utilisés pour résoudre le même problème. Les trois algorithmes sont des applications d’algorithmes gloutons. La différence avec l'algorithme de Boruvka est que l'algorithme de Kruskal est également efficace lorsqu'il y a des arêtes de même poids dans le graphique.

2. Description simple de l'algorithme

1. ). N'oubliez pas qu'il y a v sommets et e arêtes dans Graph

2). Créez un nouveau graphe Graphnew, et Graphnew. a le graphe d'origine Les mêmes e sommets, mais pas d'arêtes

3). Trier toutes les e arêtes du graphe d'origine Graphique de petit à grand par poids

4). Boucle : commencez par l'arête ayant le plus petit poids et parcourez chaque arête jusqu'à ce que tous les nœuds du graphe soient dans le même composant connexe

si cette arête est connectée. Les deux nœuds du graphe Graphnouveau ne sont pas dans le même composant connexe

Description de la légende :

Tout d'abord, dans la première étape, nous avons un graphe Graphique avec plusieurs points et arêtes

Trier les longueurs de tous les arêtes et utiliser les résultats triés comme base pour notre sélection d’arêtes. Ici encore l’idée d’un algorithme glouton se reflète.

Le tri des ressources sélectionne les ressources locales optimales. Une fois le tri terminé, nous prenons les devants dans la sélection du bord AD. De cette façon, notre image devient l'image de droite

Recherchez les changements restants. Nous avons trouvé CE. Le poids ici est également de 5

et ainsi de suite on trouve 6, 7, 7, c'est-à-dire DF, AB, BE.

Continuez à sélectionner BC ou EF bien que le côté de longueur 8 soit maintenant le plus petit côté non sélectionné. Mais maintenant, ils sont connectés (BC peut être connecté via CE, EB, un EF similaire peut être connecté via EB, BA, AD, DF). Inutile donc de les sélectionner. Des BD similaires sont également connectés (les lignes de connexion dans l'image ci-dessus sont représentées en rouge).

Au final, il ne reste que EG et FG. Bien sûr, nous avons choisi EG.

Pour l'implémentation de l'algorithme, veuillez vous référer au code de la quatrième édition de "Algorithm".

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment générer un code de vérification d'image actualisable à l'aide de PHP Comment générer un code de vérification d'image actualisable à l'aide de PHP Sep 13, 2023 am 11:54 AM

Comment utiliser PHP pour générer des codes de vérification d'image actualisables. Avec le développement d'Internet, afin de prévenir les attaques malveillantes et les opérations automatiques des machines, de nombreux sites Web utilisent des codes de vérification pour la vérification des utilisateurs. Un type courant de code de vérification est le code de vérification d'image, qui génère une image contenant des caractères aléatoires et oblige l'utilisateur à saisir les caractères corrects avant de continuer. Cet article explique comment utiliser PHP pour générer des codes de vérification d'image actualisables et fournit des exemples de code spécifiques. Étape 1 : Créer une image de code de vérification Tout d'abord, nous devons créer une image de code de vérification

Comment générer k dates aléatoires entre deux dates en utilisant Python ? Comment générer k dates aléatoires entre deux dates en utilisant Python ? Sep 09, 2023 pm 08:17 PM

La génération de données aléatoires est très importante dans le domaine de la science des données. Lors de la création de prévisions de réseaux neuronaux, de données boursières, etc., la date est généralement utilisée comme l'un des paramètres. Nous devrons peut-être générer des nombres aléatoires entre deux dates à des fins d'analyse statistique. Cet article montrera comment générer k dates aléatoires entre deux dates données à l'aide des modules random et datetime. Datetime est la bibliothèque intégrée de Python pour la gestion du temps. D'un autre côté, le module aléatoire aide à générer des nombres aléatoires. On peut donc combiner les modules random et datetime pour générer une date aléatoire entre deux dates. La syntaxe random.randint (start, end, k) random fait ici référence à la bibliothèque aléatoire Python. La méthode Randint utilise trois éléments importants

Ne craignez plus d'être arrêté par votre patron pour une petite réunion avant de quitter le travail. L'assistant IA vous aidera à générer automatiquement des procès-verbaux de réunion. Ne craignez plus d'être arrêté par votre patron pour une petite réunion avant de quitter le travail. L'assistant IA vous aidera à générer automatiquement des procès-verbaux de réunion. Sep 04, 2023 pm 11:21 PM

iFlytek a mis à niveau la fonction de procès-verbal de réunion, qui peut directement convertir les expressions orales en brouillons écrits, et l'IA peut résumer les procès-verbaux de réunion en fonction des enregistrements. L'IA peut vous aider à terminer la rédaction des procès-verbaux de réunion. Le 31 août, la version Web d'iFlytek a été mise à niveau, ajoutant une fonction d'enregistrement en temps réel côté PC, qui peut utiliser l'intelligence artificielle pour générer intelligemment des procès-verbaux de réunion. Le lancement de cette fonction améliorera considérablement l'efficacité des utilisateurs dans l'organisation du contenu et le suivi des éléments de travail clés après les réunions. Pour les personnes qui assistent souvent à des réunions, cette fonction est sans aucun doute un outil très pratique qui peut économiser beaucoup de temps et d'énergie. Le scénario d'application de cette fonction consiste principalement à convertir les enregistrements sur le PC en texte et à générer automatiquement des procès-verbaux de réunion, dans le but de fournir. utilisateurs avec la meilleure qualité des produits avec d'excellents services et la technologie la plus avancée pour améliorer rapidement l'efficacité du bureau.

Comment générer du langage naturel de base à l'aide de PHP Comment générer du langage naturel de base à l'aide de PHP Jun 22, 2023 am 11:05 AM

La génération de langage naturel est une technologie d'intelligence artificielle qui convertit les données en texte en langage naturel. À l’ère actuelle du Big Data, de plus en plus d’entreprises ont besoin de visualiser ou de présenter des données aux utilisateurs, et la génération de langage naturel est une méthode très efficace. PHP est un langage de script côté serveur très populaire qui peut être utilisé pour développer des applications Web. Cet article présentera brièvement comment utiliser PHP pour la génération de base de langage naturel. Présentation de la bibliothèque de génération de langage naturel La bibliothèque de fonctions fournie avec PHP n'inclut pas les fonctions requises pour la génération de langage naturel, donc

Générer un graphique gaufré en utilisant pyWaffle en Python Générer un graphique gaufré en utilisant pyWaffle en Python Aug 17, 2023 am 11:49 AM

La visualisation des données est essentielle pour une compréhension et une présentation efficaces des informations. Parmi les nombreux types de graphiques disponibles, les graphiques gaufrés constituent une nouvelle manière d'afficher des données dans une structure en forme de grille avec des tuiles carrées. Le puissant module Python PyWaffle facilite le développement de graphiques gaufrés, similaires à de nombreuses méthodes de calcul et d'analyse de données. Dans cet article, nous verrons comment créer un graphique gaufré à l'aide du module Python sophistiqué PyWaffle. Installons PyWafle et voyons comment l'utiliser pour visualiser des données catégorielles. Exécutez la commande suivante dans votre cmd pour installer la bibliothèque, puis importez-la dans votre code. La traduction chinoise de pipinstallpywaffleExample1 est : Exemple 1 Dans cet exemple, nous

Comment générer un code QR avec limite de temps en utilisant PHP ? Comment générer un code QR avec limite de temps en utilisant PHP ? Aug 26, 2023 pm 04:34 PM

Comment générer un code QR avec limite de temps en utilisant PHP ? Avec la popularité des paiements mobiles et des billets électroniques, les codes QR sont devenus une technologie courante. Dans de nombreux scénarios, nous pouvons avoir besoin de générer un code QR avec une limite de temps, qui deviendra invalide même après un certain temps. Cet article explique comment utiliser PHP pour générer un code QR à durée limitée et fournit des exemples de code à titre de référence. Installation de la bibliothèque PHPQRCode Pour utiliser PHP pour générer des codes QR, nous devons d'abord installer la bibliothèque PHPQRCode. Cette bibliothèque

Que faire si le répertoire de mots est généré de manière incorrecte Que faire si le répertoire de mots est généré de manière incorrecte Feb 20, 2024 am 08:08 AM

Que faire si la table des matières Word est générée de manière incorrecte Avec le développement de la technologie, les documents électroniques sont devenus un élément indispensable de notre travail et de nos études quotidiens. Lors de l'édition de documents électroniques, notamment d'articles ou de documents longs, la génération d'une table des matières est une étape très importante. La table des matières peut permettre aux lecteurs de trouver plus facilement le contenu et la structure de l'article et d'améliorer l'efficacité de la lecture. Cependant, nous rencontrons parfois des problèmes lors du processus de génération du catalogue, tels que des erreurs de génération de catalogue, un ordre désordonné, etc. Alors, si le répertoire de mots est généré de manière incorrecte, comment devons-nous le résoudre ? tête

Comment générer un mauvais livre de réponses pour les quiz en ligne Comment générer un mauvais livre de réponses pour les quiz en ligne Sep 25, 2023 am 10:24 AM

Comment générer un livre d'erreurs pour répondre aux questions en ligne À l'ère de l'information d'aujourd'hui, répondre aux questions en ligne est devenu une tâche courante pour de nombreux étudiants et enseignants. Les mauvaises questions ont toujours été l'un des problèmes du processus d'apprentissage. De nombreuses personnes espèrent pouvoir générer facilement de mauvais livres de questions pour les réponses en ligne afin de mieux réviser et maîtriser leurs connaissances. Cet article expliquera comment réaliser la fonction de génération du livre d'erreurs de réponses en ligne via la programmation et fournira des exemples de code spécifiques. Étape 1 : Créez une interface Web pour générer des livrets de réponses et d'erreurs en ligne. Vous avez besoin d'une interface Web pour afficher les questions et réponses. Peut utiliser HTML

See all articles