cari
RumahJavajavaTutorialMewakili Graf Berwajaran

Mewakili Graf Berwajaran

Sep 06, 2024 am 06:07 AM

Tepi berwajaran boleh disimpan dalam senarai bersebelahan.

Terdapat dua jenis graf berwajaran: berwajaran puncak dan berwajaran tepi. Dalam graf berwajaran bucu, setiap bucu diberi pemberat. Dalam graf berwajaran tepi, setiap tepi diberi pemberat. Daripada kedua-dua jenis, graf berwajaran tepi mempunyai lebih banyak aplikasi. Bab ini mempertimbangkan graf berwajaran tepi.

Graf berwajaran boleh diwakili dengan cara yang sama seperti graf tidak berwajaran, kecuali anda perlu mewakili pemberat pada tepi. Seperti graf tidak berwajaran, bucu dalam graf berwajaran boleh disimpan dalam tatasusunan. Bahagian ini memperkenalkan tiga perwakilan untuk tepi dalam graf berwajaran.

Mewakili Tepi Berwajaran: Tatasusunan Tepi

Tepi berwajaran boleh diwakili menggunakan tatasusunan dua dimensi. Sebagai contoh, anda boleh menyimpan semua tepi dalam graf dalam Rajah di bawah (a) menggunakan tatasusunan dalam Rajah di bawah (b).

Representing Weighted Graphs

Berat boleh terdiri daripada sebarang jenis: Integer, Double, BigDecimal dan sebagainya. Anda boleh menggunakan tatasusunan dua dimensi daripada jenis Objek untuk mewakili tepi berwajaran seperti berikut:

Objek[][] tepi = {
{Integer baharu(0), Integer baharu(1), SomeTypeForWeight(2)} baharu,
{Integer baharu(0), Integer baharu(3), SomeTypeForWeight(8)} baharu,
...
};

Matriks Bersebelahan Wajaran

Andaikan graf mempunyai n bucu. Anda boleh menggunakan matriks n * n dua dimensi, katakan berat, untuk mewakili pemberat pada tepi. berat[i][j] mewakili berat di tepi (i, j). Jika bucu i dan j tidak disambungkan, berat[i][j] ialah null. Sebagai contoh, pemberat dalam graf dalam Rajah di atas (a) boleh diwakili menggunakan matriks bersebelahan seperti berikut:

Representing Weighted Graphs

Senarai Bersebelahan

Cara lain untuk mewakili tepi ialah dengan mentakrifkan tepi sebagai objek. Kelas AbstractGraph.Edge ditakrifkan untuk mewakili kelebihan tidak berwajaran dalam AbstractGraph.java. Untuk tepi berwajaran, kami mentakrifkan kelas WeightedEdge seperti yang ditunjukkan dalam kod di bawah.

Representing Weighted Graphs

AbstractGraph.Edge ialah kelas dalaman yang ditakrifkan dalam kelas AbstractGraph. Ia mewakili tepi daripada bucu u kepada v. WeightedEdge memanjangkan AbstractGraph.Edge dengan sifat baharu berat.

Untuk mencipta objek WeightedEdge, gunakan WeightedEdge(i, j, w) baharu, dengan w ialah berat di tepi (i , j). Selalunya anda perlu membandingkan berat tepi. Atas sebab ini, kelas WeightedEdge melaksanakan antara muka Setanding.

Untuk graf tidak berwajaran, kami menggunakan senarai bersebelahan untuk mewakili tepi. Untuk graf berwajaran, kami masih menggunakan senarai bersebelahan, senarai bersebelahan untuk bucu dalam graf dalam Rajah di bawah a boleh diwakili seperti berikut:

java.util.List[] senarai = new java.util.List[5];

Representing Weighted Graphs

Representing Weighted Graphs

senarai[i] menyimpan semua tepi bersebelahan dengan bucu i.

Untuk fleksibiliti, kami akan menggunakan senarai tatasusunan dan bukannya tatasusunan bersaiz tetap untuk mewakili senarai seperti berikut:

Senaraikan> list = new java.util.ArrayList();

Atas ialah kandungan terperinci Mewakili Graf Berwajaran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
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
Bagaimanakah JVM menguruskan koleksi sampah di platform yang berbeza?Bagaimanakah JVM menguruskan koleksi sampah di platform yang berbeza?Apr 28, 2025 am 12:23 AM

JVMmanagesgarbagecollectionacrossplatformseffectivelybyusingagenerationalapproachandadaptingtoOSandhardwaredifferences.ItemploysvariouscollectorslikeSerial,Parallel,CMS,andG1,eachsuitedfordifferentscenarios.Performancecanbetunedwithflagslike-XX:NewRa

Mengapa kod Java boleh dijalankan pada sistem pengendalian yang berbeza tanpa pengubahsuaian?Mengapa kod Java boleh dijalankan pada sistem pengendalian yang berbeza tanpa pengubahsuaian?Apr 28, 2025 am 12:14 AM

Kod Java boleh dijalankan pada sistem pengendalian yang berbeza tanpa pengubahsuaian, kerana falsafah "Write Once, Run, Everywhere" Java dilaksanakan oleh Java Virtual Machine (JVM). Oleh kerana perantara antara bytecode Java yang disusun dan sistem operasi, JVM menerjemahkan bytecode ke dalam arahan mesin tertentu untuk memastikan program itu dapat dijalankan secara bebas di mana -mana platform dengan JVM dipasang.

Huraikan proses menyusun dan melaksanakan program Java, menonjolkan kebebasan platform.Huraikan proses menyusun dan melaksanakan program Java, menonjolkan kebebasan platform.Apr 28, 2025 am 12:08 AM

Penyusunan dan pelaksanaan program Java mencapai kemerdekaan platform melalui Bytecode dan JVM. 1) Tulis kod sumber Java dan menyusunnya ke dalam bytecode. 2) Gunakan JVM untuk melaksanakan bytecode pada mana -mana platform untuk memastikan kod berjalan di seluruh platform.

Bagaimanakah seni bina perkakasan yang mendasari mempengaruhi prestasi Java?Bagaimanakah seni bina perkakasan yang mendasari mempengaruhi prestasi Java?Apr 28, 2025 am 12:05 AM

Prestasi Java berkait rapat dengan seni bina perkakasan, dan memahami hubungan ini dapat meningkatkan keupayaan pengaturcaraan dengan ketara. 1) JVM menukarkan bytecode Java ke dalam arahan mesin melalui kompilasi JIT, yang dipengaruhi oleh seni bina CPU. 2) Pengurusan memori dan koleksi sampah dipengaruhi oleh RAM dan kelajuan bas memori. 3) Ramalan cache dan cawangan mengoptimumkan pelaksanaan kod Java. 4) Pemprosesan pelbagai threading dan selari meningkatkan prestasi pada sistem multi-teras.

Jelaskan mengapa perpustakaan asli boleh memecahkan kemerdekaan platform Java.Jelaskan mengapa perpustakaan asli boleh memecahkan kemerdekaan platform Java.Apr 28, 2025 am 12:02 AM

Menggunakan perpustakaan asli akan memusnahkan kemerdekaan platform Java, kerana perpustakaan ini perlu dikumpulkan secara berasingan untuk setiap sistem operasi. 1) Perpustakaan asli berinteraksi dengan Java melalui JNI, menyediakan fungsi yang tidak dapat dilaksanakan secara langsung oleh Java. 2) Menggunakan perpustakaan asli meningkatkan kerumitan projek dan memerlukan menguruskan fail perpustakaan untuk platform yang berbeza. 3) Walaupun perpustakaan asli dapat meningkatkan prestasi, mereka harus digunakan dengan berhati-hati dan menjalankan ujian silang platform.

Bagaimanakah JVM mengendalikan perbezaan dalam sistem operasi API?Bagaimanakah JVM mengendalikan perbezaan dalam sistem operasi API?Apr 27, 2025 am 12:18 AM

JVM Mengendalikan Perbezaan API Sistem Operasi melalui JavanativeInterface (JNI) dan Perpustakaan Standard Java: 1. JNI membenarkan kod Java untuk memanggil kod tempatan dan terus berinteraksi dengan API Sistem Operasi. 2. Perpustakaan Standard Java menyediakan API bersatu, yang dipetakan secara dalaman kepada API sistem operasi yang berbeza untuk memastikan kod tersebut berjalan di seluruh platform.

Bagaimanakah modulariti yang diperkenalkan dalam kemerdekaan platform kesan Java 9?Bagaimanakah modulariti yang diperkenalkan dalam kemerdekaan platform kesan Java 9?Apr 27, 2025 am 12:15 AM

modularitydoesnotdirectlyaffectjava'splatformindected.java'splatformindectenceismaintybythejvm, butmodularityinfluencesapplicationstructureandManagement, indirectlyimpactingplatformindect.1) DeploymentandmentandmentweMbecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecom

Apakah bytecode, dan bagaimanakah ia berkaitan dengan kemerdekaan platform Java?Apakah bytecode, dan bagaimanakah ia berkaitan dengan kemerdekaan platform Java?Apr 27, 2025 am 12:06 AM

BytecodeinjavaistheintermediaterepresentationThateNableSplatformindant.1) javacodeiscompiledintobytecodestoredin.classfiles.2)

See all articles

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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini