Comment implémenter l'algorithme Kruskal en utilisant Java
Comment utiliser Java pour implémenter l'algorithme de Kruskal
L'algorithme de Kruskal est un algorithme couramment utilisé pour résoudre le problème de l'arbre couvrant minimum. Il utilise les arêtes comme point d'entrée pour construire progressivement un arbre couvrant minimum. Dans cet article, nous détaillerons comment implémenter l'algorithme de Kruskal à l'aide de Java et fournirons des exemples de code spécifiques.
-
Principe de l'algorithme
Le principe de base de l'algorithme de Kruskal est de trier toutes les arêtes en fonction de leur poids, de petit à grand, puis de sélectionner les arêtes par ordre de poids de petit à grand, mais ne peut pas former de cycle. Les étapes spécifiques de mise en œuvre sont les suivantes :- Trier tous les bords en fonction du poids du petit au grand.
- Créez un ensemble vide pour stocker les bords de l'arbre couvrant minimum.
- Parcourez les arêtes triées et déterminez si les deux sommets de l'arête actuelle sont dans le même ensemble. S'il ne se trouve pas dans le même ensemble, ajoutez l'arête actuelle à l'ensemble des arbres couvrant minimum et fusionnez les deux sommets en un seul ensemble.
- Continuez à parcourir jusqu'à ce que le nombre d'arêtes de l'arbre couvrant minimum soit égal au nombre de sommets moins un.
- Implémentation du code Java
Ce qui suit est un exemple de code pour implémenter l'algorithme Kruskal en utilisant le langage Java :
import java.util.*; class Edge implements Comparable<Edge> { int src, dest, weight; public int compareTo(Edge edge) { return this.weight - edge.weight; } } class Subset { int parent, rank; } class Graph { int V, E; Edge[] edges; public Graph(int v, int e) { V = v; E = e; edges = new Edge[E]; for (int i = 0; i < e; ++i) edges[i] = new Edge(); } int find(Subset[] subsets, int i) { if (subsets[i].parent != i) subsets[i].parent = find(subsets, subsets[i].parent); return subsets[i].parent; } void union(Subset[] subsets, int x, int y) { int xroot = find(subsets, x); int yroot = find(subsets, y); if (subsets[xroot].rank < subsets[yroot].rank) subsets[xroot].parent = yroot; else if (subsets[xroot].rank > subsets[yroot].rank) subsets[yroot].parent = xroot; else { subsets[yroot].parent = xroot; subsets[xroot].rank++; } } void KruskalMST() { Edge[] result = new Edge[V]; int e = 0; int i = 0; for (i = 0; i < V; ++i) result[i] = new Edge(); Arrays.sort(edges); Subset[] subsets = new Subset[V]; for (i = 0; i < V; ++i) subsets[i] = new Subset(); for (int v = 0; v < V; ++v) { subsets[v].parent = v; subsets[v].rank = 0; } i = 0; while (e < V - 1) { Edge next_edge = edges[i++]; int x = find(subsets, next_edge.src); int y = find(subsets, next_edge.dest); if (x != y) { result[e++] = next_edge; union(subsets, x, y); } } System.out.println("Following are the edges in the constructed MST:"); int minimumCost = 0; for (i = 0; i < e; ++i) { System.out.println(result[i].src + " -- " + result[i].dest + " == " + result[i].weight); minimumCost += result[i].weight; } System.out.println("Minimum Cost Spanning Tree: " + minimumCost); } } public class KruskalAlgorithm { public static void main(String[] args) { int V = 4; int E = 5; Graph graph = new Graph(V, E); graph.edges[0].src = 0; graph.edges[0].dest = 1; graph.edges[0].weight = 10; graph.edges[1].src = 0; graph.edges[1].dest = 2; graph.edges[1].weight = 6; graph.edges[2].src = 0; graph.edges[2].dest = 3; graph.edges[2].weight = 5; graph.edges[3].src = 1; graph.edges[3].dest = 3; graph.edges[3].weight = 15; graph.edges[4].src = 2; graph.edges[4].dest = 3; graph.edges[4].weight = 4; graph.KruskalMST(); } }
Le code ci-dessus implémente une classe graphique simple (Graph), y compris la classe Edge (Edge) et la classe de recherche d'union (Subset ) ). Dans la fonction principale, nous créons un objet graphique, ajoutons des arêtes et appelons la méthode KruskalMST() pour obtenir l'arbre couvrant minimum.
- Analyse des résultats
Après le test, le code ci-dessus peut générer correctement les résultats suivants :
Following are the edges in the constructed MST: 2 -- 3 == 4 0 -- 3 == 5 0 -- 1 == 10 Minimum Cost Spanning Tree: 19
Cela signifie que l'arbre couvrant minimum construit contient 3 arêtes et que la somme des poids est de 19.
Résumé :
À travers cet article, nous avons présenté en détail comment implémenter l'algorithme de Kruskal à l'aide de Java, et joint des exemples de code spécifiques. J'espère que cet article pourra aider tout le monde à mieux comprendre et appliquer l'algorithme de Kruskal.
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)

Comment utiliser Java pour implémenter un algorithme de programmation dynamique La programmation dynamique est une méthode d'optimisation permettant de résoudre des problèmes de prise de décision en plusieurs étapes. Elle décompose le problème en plusieurs étapes. Chaque étape prend une décision basée sur des informations connues et enregistre ainsi les résultats de chaque décision. celui utilisé dans les étapes ultérieures. Dans les applications pratiques, la programmation dynamique est généralement utilisée pour résoudre des problèmes d'optimisation, tels que le chemin le plus court, la somme maximale des sous-séquences, le problème du sac à dos, etc. Cet article expliquera comment utiliser le langage Java pour implémenter des algorithmes de programmation dynamique et fournira des exemples de code spécifiques. 1. Principes de base des algorithmes de programmation dynamique

Comment utiliser Java pour implémenter l'algorithme de chiffrement RSA RSA (Rivest-Shamir-Adleman) est un algorithme de chiffrement asymétrique, qui est l'un des algorithmes de chiffrement les plus couramment utilisés actuellement. Cet article explique comment utiliser le langage Java pour implémenter l'algorithme de chiffrement RSA et fournit des exemples de code spécifiques. Générer une paire de clés Tout d'abord, nous devons générer une paire de clés RSA, composée d'une clé publique et d'une clé privée. La clé publique peut être utilisée pour chiffrer des données et la clé privée peut être utilisée pour déchiffrer des données. Voici un exemple de code pour générer une paire de clés RSA : importer

Implémentation Java de la fonction d'ajustement de l'organisation des examens du système d'examen en ligne Introduction : Avec le développement de la technologie Internet, de plus en plus d'écoles et d'établissements de formation choisissent d'utiliser des systèmes d'examen en ligne pour les examens et les évaluations. L'ajustement du calendrier des examens est une fonction importante du système d'examen en ligne, qui peut aider les administrateurs à ajuster de manière flexible l'heure de l'examen et les informations liées à l'examen en fonction de la situation réelle. Cet article présentera en détail comment utiliser la programmation Java pour implémenter la fonction d'ajustement du calendrier d'examen du système d'examen en ligne et donnera des exemples de code spécifiques. Besoins de la fonction d'ajustement de la disposition des examens de conception de base de données

Comment utiliser Java pour implémenter l'algorithme de Kruskal L'algorithme de Kruskal est un algorithme couramment utilisé pour résoudre le problème de l'arbre couvrant minimum. Il utilise les arêtes comme point d'entrée pour construire progressivement un arbre couvrant minimum. Dans cet article, nous détaillerons comment implémenter l'algorithme de Kruskal à l'aide de Java et fournirons des exemples de code spécifiques. Principe de l'algorithme Le principe de base de l'algorithme de Kruskal est de trier toutes les arêtes par ordre de poids, de petit à grand, puis de sélectionner les arêtes par ordre de poids, de petit à grand, mais ne peut pas former de cycle. Les étapes spécifiques de mise en œuvre sont les suivantes :

Avec le développement d’Internet, la quantité de données sur le réseau a explosé, rendant difficile pour les utilisateurs de trouver rapidement et précisément le contenu dont ils ont réellement besoin face à une grande quantité d’informations. Les algorithmes de recommandation sont apparus au fur et à mesure que les temps l'exigent et fournissent aux utilisateurs des services personnalisés et du contenu recommandé en enregistrant et en analysant les données sur le comportement des utilisateurs, améliorant ainsi la satisfaction et la fidélité des utilisateurs. En tant que langage de choix pour le développement de logiciels à grande échelle, Java est également populaire dans la mise en œuvre d'algorithmes de recommandation. 1. Algorithme de recommandation L'algorithme de recommandation est une méthode qui analyse et exploite les données sur l'interaction, le comportement et les intérêts des utilisateurs.

Alors que les activités de team building deviennent progressivement une culture d’entreprise, de plus en plus d’entreprises commencent à chercher un moyen de planifier et de réserver des activités de team building pour leurs employés. Et le système de réservation d’activités de team building en ligne a vu le jour. Java est un langage de programmation largement utilisé qui offre aux entreprises une grande commodité et une grande flexibilité pour développer des systèmes de réservation en ligne. Cet article présentera étape par étape le processus logique d'utilisation de Java pour mettre en œuvre un système complet de réservation d'activités de team building en ligne. Première étape : déterminer la configuration requise et les fonctions du système Avant de commencer à écrire du code, vous devez déterminer toutes les exigences que le système doit remplir.

Comment utiliser Java pour mettre en œuvre la fonction d'ajustement des stocks du système de gestion d'entrepôt Avec le développement continu du secteur de la logistique et de l'entreposage, le système de gestion d'entrepôt est devenu un outil essentiel permettant aux entreprises d'améliorer leur efficacité et leurs capacités de gestion. En tant que module fonctionnel important du système de gestion d'entrepôt, l'ajustement des stocks est d'une grande importance pour saisir avec précision l'état des stocks des marchandises, effectuer des ajustements et des statistiques en temps opportun et améliorer l'efficacité opérationnelle. Cet article explique comment utiliser le langage de programmation Java pour implémenter la fonction d'ajustement des stocks du système de gestion d'entrepôt et donne des exemples de code spécifiques. Premièrement, nous devons considérer

Comment implémenter l'algorithme de tri par sélection en Java L'algorithme de tri par sélection est un algorithme de tri simple et intuitif. Son idée de base est de trouver le plus petit (ou le plus grand) élément parmi les éléments non triés et de le placer à la fin de la séquence triée. Ainsi, une séquence ordonnée se construit progressivement. Ci-dessous, nous présenterons comment implémenter l'algorithme de tri par sélection sous la forme d'exemples de code Java. Implémentation du code : publicclassSelectionSort{publicstaticvoidselect
