Konsep diagram
Grafik adalah perluasan pohon dalam algoritma. Pohon adalah struktur data dari atas ke bawah. Node memiliki node induk (kecuali simpul root), diatur dari atas ke bawah. Grafik tidak memiliki konsep node ayah-anak, dan node dalam grafik adalah semua hubungan yang sama, yang membuat hasilnya lebih rumit.
Grafik terarah grafik tidak terarah
Gambar G = (V, E), di mana V mewakili simpul, E mewakili tepi tepi, dan tepi adalah pasangan titik tetap (U, V), di mana (u, v) ∈V.
Dalam dua hari terakhir, saya menemukan algoritma tentang grafik. Saya mencari secara online untuk waktu yang lama dan tidak dapat menemukan versi Java dari grafik dalam struktur data dan operasi terkait mereka. Jadi saya menemukan versi Java dari buku struktur data dan membacanya. Berikut ini adalah ringkasan penyimpanan grafik yang tidak diarahkan dan prioritas prioritas grafik yang dikompilasi berdasarkan penjelasan dalam buku ini. Namun, traversal ini hanya dapat melintasi grafik yang terhubung, dan untuk melintasi grafik yang tidak terhubung, masih perlu dimodifikasi. Saya harap ini akan membantu bagi mereka yang membutuhkan.
Paket com.homework;/*** Tentukan kelas tumpukan*/kelas stackx {private final int size = 20; private int [] st; private int top; // inisialisasi stack stackx () {st = int new int [size]; top = -1;} // inisialisasi stack public void push (int j) {st [++ top] = top] = jop public public public (int j) {st [++ Top] = J Top] = J Top] = J Top] = Top] = Top] = J) {St J) {st. ST [atas-];} // mengembalikan elemen teratas dari tumpukan int peak () {return st [top];} // Tentukan apakah tumpukan kosong boolean publik isempty () {return (top ==-1);}}/** * Tentukan public label; label public; label public; @Author administrator * @Author administrator */class vertex {public label; public; lab; wasvisited = false;}}/** * Tentukan kelas grafik * @author administrator * */class grafik {private final int num = 20; private vertex vertexlist []; // node array int private int adjmat []; // node matrix int nverts; // jumlah saat ini nodes nodes stackack private tawa Graph(){vertexList = new Vertex[num];adjMat = new int[num][num];nVerts = 0;for (int i=0; i<num; i++){for (int j=0; j<num; j++) adjMat[i][j] = 0;}}//Add node public void addVertex(char lab){vertexList[nVerts++] = new Vertex (lab);} // Tambahkan tepi antara dua node void public ditambahkan (int start, int end) {adjmat [start] [end] = 1; adjmat [end] [start] = 1;} // output node public void poin tertentu (int v) {System.out.print. getAdjunvisitedVertex (int v) {for (int j = 0; j <nverts; j ++) {if (adjmat [v] [j] == 1 && vertexlist [j] .wasvisited == false) return j;} return -1;} // prioritas mendalam traversal (dfs) public void void void public void dfs () {vertexList [0] .wasvisited = true; displayVertex (0); thestack = new stackx (); thestack.push (0); while (! thestack.isempty ()) {int v = getAdjunvisitedVerTex (thestack.peak ()); if (v ==-1) // Jika simpul tidak ada thestack.pop (); else {vertexList [v] .wasvisited = true; displayVertex (v); thestack.push (v);}} untuk (int j = 0; j <nverts; j ++) vertexList [j] .wasvisited = false;}} kelas publik graphconnect {public static void main (string [] args) {{graph theGraph = new graph (); thegraph.addvertex ('a'); thegraph.addvertex ('b'); thegraph.addvertex ('c'); thegraph.addvertex ('d'); thegraph.addvertex ('e'); thegraph.addedge (0, 1); // ab thegraph.addedge (1, 2); // bc thegraph.addedge (0, 3); // ad thegraph.addedge (3, 4); // de thegraph.addedge (2, 4); // ce system.out.print ("The Order dikunjungi: "); theGraph.dfs (); System.out.println ();}}} Hasil menjalankan program:
Perintah yang dikunjungi: Abced
Meringkaskan
Di atas adalah semua penjelasan terperinci tentang Storage dan Kode Operasi DFS dari Struktur Grafik Pemrograman Java yang tidak diarahkan. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke situs ini:
Pemrograman Java mengimplementasikan pencarian mendalam berbasis grafik dan kode lengkap pencarian pertama
Contoh Kode Implementasi Java yang kedalaman-pertama dan luas
Kode Konversi Pemrograman Java Untuk Dua Struktur Menu Pohon
Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!