


Bagaimana untuk melaksanakan algoritma pokok rentang minimum menggunakan java
. Artikel ini akan memperkenalkan cara menggunakan bahasa Java untuk melaksanakan algoritma ini dan memberikan contoh kod khusus.
Memandangkan graf bersambung G, di mana setiap tepi mempunyai pemberat, ia dikehendaki mencari pokok rentang minimum T supaya jumlah pemberat semua tepi dalam T adalah minimum.
Algoritma Prim
Algoritma Prim ialah algoritma tamak yang digunakan untuk menyelesaikan masalah pokok rentang minimum. Idea asasnya ialah bermula dari bucu dan kembangkan pokok rentang secara beransur-ansur, memilih bucu yang paling hampir dengan pokok rentang sedia ada setiap kali sehingga semua bucu ditambahkan pada pokok rentang.-
Berikut ialah contoh pelaksanaan Java bagi algoritma Prim:
Algoritma Kruskal Algoritma Kruskal juga merupakan algoritma tamak yang digunakan untuk menyelesaikan masalah pokok rentang minimum. Idea asasnya ialah untuk mengisih semua tepi dalam graf mengikut berat dari kecil ke besar, dan kemudian menambahnya pada pokok rentang secara bergilir-gilir Apabila menambah tepi, jika kedua-dua titik hujung tepi tidak tergolong dalam yang sama komponen yang disambungkan, maka tepi ini boleh ditambah pada pokok rentangan Kedua-dua titik akhir bergabung menjadi komponen yang bersambung.
import java.util.ArrayList; import java.util.List; import java.util.PriorityQueue; import java.util.Queue; class Edge implements Comparable<Edge> { int from; int to; int weight; public Edge(int from, int to, int weight) { this.from = from; this.to = to; this.weight = weight; } @Override public int compareTo(Edge other) { return Integer.compare(this.weight, other.weight); } } public class Prim { public static List<Edge> calculateMST(List<List<Edge>> graph) { int n = graph.size(); boolean[] visited = new boolean[n]; Queue<Edge> pq = new PriorityQueue<>(); // Start from vertex 0 int start = 0; visited[start] = true; for (Edge e : graph.get(start)) { pq.offer(e); } List<Edge> mst = new ArrayList<>(); while (!pq.isEmpty()) { Edge e = pq.poll(); int from = e.from; int to = e.to; int weight = e.weight; if (visited[to]) { continue; } visited[to] = true; mst.add(e); for (Edge next : graph.get(to)) { if (!visited[next.to]) { pq.offer(next); } } } return mst; } }
Contoh penggunaan Berikut ialah contoh penggunaan yang mudah:
import java.util.ArrayList; import java.util.Collections; import java.util.List; class Edge implements Comparable<Edge> { int from; int to; int weight; public Edge(int from, int to, int weight) { this.from = from; this.to = to; this.weight = weight; } @Override public int compareTo(Edge other) { return Integer.compare(this.weight, other.weight); } } public class Kruskal { public static List<Edge> calculateMST(List<Edge> edges, int n) { List<Edge> mst = new ArrayList<>(); Collections.sort(edges); int[] parent = new int[n]; for (int i = 0; i < n; i++) { parent[i] = i; } for (Edge e : edges) { int from = e.from; int to = e.to; int weight = e.weight; int parentFrom = findParent(from, parent); int parentTo = findParent(to, parent); if (parentFrom != parentTo) { mst.add(e); parent[parentFrom] = parentTo; } } return mst; } private static int findParent(int x, int[] parent) { if (x != parent[x]) { parent[x] = findParent(parent[x], parent); } return parent[x]; } }
import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<List<Edge>> graph = new ArrayList<>(); graph.add(new ArrayList<>()); graph.add(new ArrayList<>()); graph.add(new ArrayList<>()); graph.add(new ArrayList<>()); graph.get(0).add(new Edge(0, 1, 2)); graph.get(0).add(new Edge(0, 2, 3)); graph.get(1).add(new Edge(1, 0, 2)); graph.get(1).add(new Edge(1, 2, 1)); graph.get(1).add(new Edge(1, 3, 5)); graph.get(2).add(new Edge(2, 0, 3)); graph.get(2).add(new Edge(2, 1, 1)); graph.get(2).add(new Edge(2, 3, 4)); graph.get(3).add(new Edge(3, 1, 5)); graph.get(3).add(new Edge(3, 2, 4)); List<Edge> mst = Prim.calculateMST(graph); System.out.println("Prim算法得到的最小生成树:"); for (Edge e : mst) { System.out.println(e.from + " -> " + e.to + ",权重:" + e.weight); } List<Edge> edges = new ArrayList<>(); edges.add(new Edge(0, 1, 2)); edges.add(new Edge(0, 2, 3)); edges.add(new Edge(1, 2, 1)); edges.add(new Edge(1, 3, 5)); edges.add(new Edge(2, 3, 4)); mst = Kruskal.calculateMST(edges, 4); System.out.println("Kruskal算法得到的最小生成树:"); for (Edge e : mst) { System.out.println(e.from + " -> " + e.to + ",权重:" + e.weight); } } }
- Di atas ialah contoh penggunaan kod khusus untuk melaksanakan algoritma pepohon rentang minimum dalam Java. Melalui kod sampel ini, pembaca boleh lebih memahami dan mempelajari proses pelaksanaan dan prinsip algoritma pepohon rentang minimum. Semoga artikel ini bermanfaat kepada pembaca.
Prim算法得到的最小生成树: 0 -> 1,权重:2 1 -> 2,权重:1 2 -> 3,权重:4 Kruskal算法得到的最小生成树: 1 -> 2,权重:1 0 -> 1,权重:2 2 -> 3,权重:4
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan algoritma pokok rentang minimum menggunakan java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



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

Cara menggunakan PHP untuk membangunkan fungsi pengoptimuman SEO mudah SEO (SearchEngineOptimization), atau pengoptimuman enjin carian, merujuk kepada meningkatkan kedudukan laman web dalam enjin carian dengan menambah baik struktur dan kandungan laman web, dengan itu memperoleh lebih banyak trafik organik. Dalam pembangunan laman web, bagaimana untuk menggunakan PHP untuk melaksanakan fungsi pengoptimuman SEO yang mudah? Artikel ini akan memperkenalkan beberapa teknik pengoptimuman SEO yang biasa digunakan dan contoh kod khusus untuk membantu pembangun melaksanakan pengoptimuman SEO dalam projek PHP. 1. Penggunaan yang mesra

Cara menggunakan C# untuk menulis algoritma pepohon rentang minimum Algoritma pepohon rentang minimum ialah algoritma teori graf yang penting, yang digunakan untuk menyelesaikan masalah ketersambungan graf. Dalam sains komputer, pokok rentang minimum merujuk kepada pokok rentang bagi graf bersambung di mana jumlah pemberat semua tepi pokok rentang adalah yang terkecil. Artikel ini akan memperkenalkan cara menggunakan C# untuk menulis algoritma pepohon rentang minimum dan memberikan contoh kod khusus. Pertama, kita perlu mentakrifkan struktur data graf untuk mewakili masalah. Dalam C#, anda boleh menggunakan matriks bersebelahan untuk mewakili graf. Matriks bersebelahan ialah tatasusunan dua dimensi di mana setiap elemen mewakili

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

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:

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

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.

Penyelesaian satu klik: Kuasai dengan pantas kemahiran penggunaan sumber cermin pip Pengenalan: pip ialah alat pengurusan pakej yang paling biasa digunakan untuk Python, yang boleh memasang, meningkatkan dan mengurus pakej Python dengan mudah. Walau bagaimanapun, disebabkan oleh sebab yang terkenal, menggunakan sumber cermin lalai untuk memuat turun pakej pemasangan adalah lebih perlahan untuk menyelesaikan masalah ini, kita perlu menggunakan sumber cermin domestik. Artikel ini akan memperkenalkan cara cepat menguasai kemahiran penggunaan sumber cermin pip dan memberikan contoh kod khusus. Sebelum anda mula, fahami konsep sumber cermin pip.
