Maison Java javaDidacticiel Comment implémenter l'algorithme Kruskal en utilisant Java

Comment implémenter l'algorithme Kruskal en utilisant Java

Sep 19, 2023 am 11:39 AM
java实现 algorithme de Kruskal

Comment implémenter lalgorithme 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.

  1. 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.
  2. 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();
    }
}
Copier après la connexion

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.

  1. 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
Copier après la connexion

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!

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)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines 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 implémenter un algorithme de programmation dynamique en utilisant Java Comment implémenter un algorithme de programmation dynamique en utilisant Java Sep 19, 2023 am 11:16 AM

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 implémenter l'algorithme de cryptage RSA à l'aide de Java Comment implémenter l'algorithme de cryptage RSA à l'aide de Java Sep 20, 2023 pm 02:33 PM

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

Utilisation de Java pour mettre en œuvre la fonction d'ajustement de l'organisation des examens du système d'examen en ligne Utilisation de Java pour mettre en œuvre la fonction d'ajustement de l'organisation des examens du système d'examen en ligne Sep 25, 2023 am 08:45 AM

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 implémenter l'algorithme Kruskal en utilisant Java Comment implémenter l'algorithme Kruskal en utilisant Java Sep 19, 2023 am 11:39 AM

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 :

Algorithme de recommandation et implémentation implémentés en Java Algorithme de recommandation et implémentation implémentés en Java Jun 18, 2023 pm 02:51 PM

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.

Java implémente le processus logique d'un système complet de réservation d'activités de team building en ligne Java implémente le processus logique d'un système complet de réservation d'activités de team building en ligne Jun 27, 2023 am 11:46 AM

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 Comment utiliser Java pour mettre en œuvre la fonction d'ajustement des stocks du système de gestion d'entrepôt Sep 24, 2023 pm 05:09 PM

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 un algorithme de tri par sélection à l'aide de Java Comment implémenter un algorithme de tri par sélection à l'aide de Java Sep 19, 2023 am 09:46 AM

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

See all articles