Rumah Java javaTutorial Bagaimana untuk melaksanakan algoritma Kruskal menggunakan java

Bagaimana untuk melaksanakan algoritma Kruskal menggunakan java

Sep 19, 2023 am 11:39 AM
pelaksanaan java algoritma kruskal

Bagaimana untuk melaksanakan algoritma Kruskal menggunakan java

Cara menggunakan Java untuk melaksanakan algoritma Kruskal

Algoritma Kruskal ialah algoritma yang biasa digunakan untuk menyelesaikan masalah pokok rentang minimum yang menggunakan tepi sebagai titik input, dan secara beransur-ansur membina pokok rentang minimum. Dalam artikel ini, kami akan memperincikan cara melaksanakan algoritma Kruskal menggunakan Java dan memberikan contoh kod khusus.

  1. Prinsip Algoritma
    Prinsip asas algoritma Kruskal adalah untuk mengisih semua tepi mengikut berat dari kecil ke besar, dan kemudian pilih tepi mengikut urutan dari berat kecil hingga besar, tetapi tidak boleh membentuk cincin. Langkah-langkah pelaksanaan khusus adalah seperti berikut:

    • Isih semua tepi mengikut berat dari kecil ke besar.
    • Buat set kosong untuk menyimpan tepi pokok rentang minimum.
    • Lintas tepi yang diisih dan tentukan sama ada dua bucu tepi semasa berada dalam set yang sama. Jika mereka tidak berada dalam set yang sama, tambahkan tepi semasa pada set pokok rentang minimum dan gabungkan dua bucu menjadi satu set.
    • Teruskan melintasi sehingga bilangan tepi pokok rentang minimum adalah sama dengan bilangan bucu tolak satu.
  2. Pelaksanaan kod Java
    Berikut ialah contoh kod menggunakan bahasa Java untuk melaksanakan algoritma Kruskal:
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();
    }
}
Salin selepas log masuk
#🎜 Kod di atas Kelas graf ringkas (Graf) dilaksanakan, termasuk kelas tepi (Tepi) dan kelas pencarian kesatuan (Subset). Dalam fungsi utama, kami mencipta objek graf, menambah tepi dan memanggil kaedah KruskalMST() untuk mendapatkan pokok rentang minimum.

    Analisis Keputusan
  1. Selepas ujian, kod di atas boleh mengeluarkan keputusan berikut dengan betul:
  2. Following are the edges in the constructed MST:
    2 -- 3 == 4
    0 -- 3 == 5
    0 -- 1 == 10
    Minimum Cost Spanning Tree: 19
    Salin selepas log masuk
    Ini bermakna span minimum pokok yang dibina mengandungi Terdapat 3 sisi, dan jumlah pemberatnya ialah 19.

    Ringkasan:

    Melalui artikel ini, kami memperkenalkan secara terperinci cara menggunakan Java untuk melaksanakan algoritma Kruskal, dan melampirkan contoh kod khusus. Saya harap artikel ini dapat membantu semua orang memahami dan menggunakan algoritma Kruskal dengan lebih baik.

    Atas ialah kandungan terperinci Bagaimana untuk melaksanakan algoritma Kruskal menggunakan java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk melaksanakan algoritma pengaturcaraan dinamik menggunakan java Bagaimana untuk melaksanakan algoritma pengaturcaraan dinamik menggunakan java Sep 19, 2023 am 11:16 AM

Cara menggunakan Java untuk melaksanakan algoritma pengaturcaraan dinamik Pengaturcaraan dinamik ialah kaedah pengoptimuman untuk menyelesaikan masalah membuat keputusan berbilang peringkat Ia menguraikan masalah kepada beberapa peringkat Setiap peringkat membuat keputusan berdasarkan maklumat yang diketahui dan merekodkan keputusan setiap keputusan yang digunakan pada peringkat seterusnya. Dalam aplikasi praktikal, pengaturcaraan dinamik biasanya digunakan untuk menyelesaikan masalah pengoptimuman, seperti laluan terpendek, jumlah susulan maksimum, masalah ransel, dsb. Artikel ini akan memperkenalkan cara menggunakan bahasa Java untuk melaksanakan algoritma pengaturcaraan dinamik dan menyediakan contoh kod khusus. 1. Prinsip asas algoritma pengaturcaraan dinamik

Bagaimana untuk melaksanakan algoritma penyulitan RSA menggunakan java Bagaimana untuk melaksanakan algoritma penyulitan RSA menggunakan java Sep 20, 2023 pm 02:33 PM

Cara menggunakan Java untuk melaksanakan algoritma penyulitan RSA RSA (Rivest-Shamir-Adleman) ialah algoritma penyulitan asimetri, yang merupakan salah satu algoritma penyulitan yang paling biasa digunakan pada masa ini. Artikel ini akan memperkenalkan cara menggunakan bahasa Java untuk melaksanakan algoritma penyulitan RSA dan memberikan contoh kod khusus. Jana pasangan kunci Pertama, kita perlu menjana sepasang kunci RSA, yang terdiri daripada kunci awam dan kunci peribadi. Kunci awam boleh digunakan untuk menyulitkan data dan kunci peribadi boleh digunakan untuk menyahsulit data. Berikut ialah contoh kod untuk menjana pasangan kunci RSA: import

Menggunakan Java untuk melaksanakan fungsi pelarasan susunan peperiksaan sistem peperiksaan dalam talian Menggunakan Java untuk melaksanakan fungsi pelarasan susunan peperiksaan sistem peperiksaan dalam talian Sep 25, 2023 am 08:45 AM

Pelaksanaan Java fungsi pelarasan susunan peperiksaan sistem peperiksaan dalam talian Pengenalan: Dengan perkembangan teknologi Internet, semakin banyak sekolah dan institusi latihan memilih untuk menggunakan sistem peperiksaan dalam talian untuk peperiksaan dan penilaian. Pelarasan jadual peperiksaan merupakan fungsi penting dalam sistem peperiksaan dalam talian, yang boleh membantu pentadbir menyesuaikan masa peperiksaan dan maklumat berkaitan peperiksaan secara fleksibel mengikut situasi sebenar. Artikel ini akan memperkenalkan secara terperinci cara menggunakan pengaturcaraan Java untuk melaksanakan fungsi pelarasan jadual peperiksaan sistem peperiksaan dalam talian, dan memberikan contoh kod khusus. Keperluan fungsi pelarasan susunan peperiksaan reka bentuk pangkalan data

Bagaimana untuk melaksanakan algoritma Kruskal menggunakan java Bagaimana untuk melaksanakan algoritma Kruskal menggunakan java Sep 19, 2023 am 11:39 AM

Cara menggunakan Java untuk melaksanakan algoritma Kruskal Algoritma Kruskal ialah algoritma yang biasa digunakan untuk menyelesaikan masalah pokok rentang minimum Ia menggunakan tepi sebagai titik masuk untuk membina pokok rentang minimum secara beransur-ansur. Dalam artikel ini, kami akan memperincikan cara melaksanakan algoritma Kruskal menggunakan Java dan memberikan contoh kod khusus. Prinsip Algoritma Prinsip asas algoritma Kruskal adalah untuk mengisih semua tepi mengikut tertib berat dari kecil ke besar, dan kemudian memilih tepi mengikut urutan berat dari kecil ke besar, tetapi tidak boleh membentuk kitaran. Langkah-langkah pelaksanaan khusus adalah seperti berikut:

Algoritma pengesyoran dan pelaksanaan dilaksanakan dalam Java Algoritma pengesyoran dan pelaksanaan dilaksanakan dalam Java Jun 18, 2023 pm 02:51 PM

Dengan perkembangan Internet, jumlah data pada rangkaian telah meletup, menyukarkan pengguna untuk mencari kandungan yang benar-benar diperlukan dengan cepat dan tepat apabila berhadapan dengan sejumlah besar maklumat. Algoritma pengesyoran muncul mengikut keperluan masa, dan menyediakan pengguna dengan perkhidmatan yang diperibadikan dan kandungan yang disyorkan dengan merekod dan menganalisis data tingkah laku pengguna, dengan itu meningkatkan kepuasan dan kesetiaan pengguna. Sebagai bahasa pilihan untuk pembangunan perisian berskala besar, Java juga popular dalam pelaksanaan algoritma pengesyoran. 1. Algoritma pengesyoran Algoritma pengesyoran ialah kaedah yang menganalisis dan melombong data interaksi, tingkah laku dan minat pengguna.

Java melaksanakan proses logik sistem tempahan aktiviti pembinaan pasukan dalam talian berciri penuh Java melaksanakan proses logik sistem tempahan aktiviti pembinaan pasukan dalam talian berciri penuh Jun 27, 2023 am 11:46 AM

Memandangkan aktiviti pembinaan pasukan secara beransur-ansur menjadi budaya korporat, semakin banyak syarikat mula mencari cara untuk merancang dan menempah aktiviti pembinaan pasukan untuk pekerja. Dan sistem tempahan aktiviti pembinaan pasukan dalam talian telah wujud. Java ialah bahasa pengaturcaraan yang digunakan secara meluas yang memberikan kemudahan dan fleksibiliti yang hebat untuk syarikat membangunkan sistem tempahan dalam talian. Artikel ini akan memperkenalkan proses logik penggunaan Java untuk melaksanakan sistem tempahan aktiviti pembinaan pasukan dalam talian berciri penuh. Langkah Pertama: Tentukan Keperluan dan Fungsi Sistem Sebelum anda mula menulis kod, anda mesti menentukan semua keperluan yang perlu dicapai oleh sistem.

Cara menggunakan Java untuk melaksanakan fungsi pelarasan inventori sistem pengurusan gudang Cara menggunakan Java untuk melaksanakan fungsi pelarasan inventori sistem pengurusan gudang Sep 24, 2023 pm 05:09 PM

Cara menggunakan Java untuk melaksanakan fungsi pelarasan inventori sistem pengurusan gudang Dengan pembangunan berterusan industri logistik dan pergudangan, sistem pengurusan gudang telah menjadi alat penting bagi perusahaan untuk meningkatkan kecekapan dan keupayaan pengurusan. Sebagai modul berfungsi yang penting dalam sistem pengurusan gudang, pelarasan inventori adalah sangat penting untuk memahami dengan tepat status inventori barangan, membuat pelarasan dan statistik tepat pada masanya, dan meningkatkan kecekapan operasi. Artikel ini akan memperkenalkan cara menggunakan bahasa pengaturcaraan Java untuk melaksanakan fungsi pelarasan inventori sistem pengurusan gudang, dan memberikan contoh kod khusus. Pertama, kita perlu pertimbangkan

Bagaimana untuk melaksanakan algoritma isihan pemilihan menggunakan java Bagaimana untuk melaksanakan algoritma isihan pemilihan menggunakan java Sep 19, 2023 am 09:46 AM

Cara melaksanakan algoritma isihan pemilihan dalam Java Algoritma isihan pemilihan ialah algoritma pengisihan yang mudah dan intuitif. Idea asasnya ialah mencari elemen terkecil (atau terbesar) daripada unsur yang tidak diisih dan meletakkannya pada penghujung urutan yang diisih. Oleh itu, urutan tertib dibina secara beransur-ansur. Di bawah ini kami akan memperkenalkan cara melaksanakan algoritma isihan pemilihan dalam bentuk contoh kod Java. Pelaksanaan kod: publicclassSelectionSort{publicstaticvoidselect

See all articles