Table of Contents
Pengertian Kecerdasan Litar Euler dalam Teori Graf
Sirkuit Gaugue Sebuah Eulerian adalah jalan tertutup yang melintasi setiap tepi graf tepat sekali dan kembali ke verteks awal. Konsep berasal dari Tujuh Jembatan terkenal Masalah Königsberg yang diajukan oleh Leonhard Euler pada tahun 1736. Euler membuktikan bahwa sirkuit seperti itu ada hanya jika setiap verteks dalam grafik memiliki derajat bahkan dan grafik terhubung (menggabungkan vertikes terisolasi). Hasil mendasar ini meletakkan dasar untuk teori grafik dan tetap penting dalam analisis jaringan, desain sirkuit, dan pengoptimalan kombinatorial.
Untuk menyatakan secara formal: Let G = (]V, E) menjadi sebuah grafik tidak terarah. Sirkuit Euler ada jika dan hanya jika setiap verteks , ] ⁇ V] memiliki tingkat genap, dan grafik terhubung ketika hanya mempertimbangkan vertik dengan non-zero derajat yang diarahkan. Untuk grafik, kondisi yang memiliki tingkat verteks yang sama dan tidak terarah di bawah grafik yang terhubung.
Apa Algoritma Hierholzer Itu?
Algoritma Hierholzer (bahasa Jerman: Carl Hierholzer pada tahun 1873, adalah metode yang efisien untuk membangun sirkuit Euler ketika kondisi yang diperlukan terpenuhi. Ini membangun sirkuit dengan menemukan serangkaian siklus dan penggabungan mereka. Algoritme berjalan dalam waktu linear O](E]) dengan menghormati jumlah tepi, membuatnya optimal untuk grafik padat dan sparse sama.
Konsep Kunci
- [Eqman]LLT:0]]Deteksi cycle: Dimulai dari sebuah verteks, ikuti tepi yang tidak digunakan sampai kembali ke bucu awal. Ini membentuk siklus sederhana.
- [[LORLT:0]]Memerging siklus: Ketika sebuah verteks pada sirkuit arus masih memiliki tepi yang tidak digunakan, sebuah siklus baru terbentuk dari verteks tersebut dan dimasukkan ke dalam sirkuit.
- [[EffALT:0]]Edge lease: Sebagai tepi digunakan, mereka ditandai atau dibuang untuk menghindari revisiting mereka.
Keterangan Langkah-Berdasar-Langkah Algoritma Hierholzer
Algoritme dapat diimplementasikan secara rekursif atau iteratif. Ide intinya adalah membangun sebuah sirkuit dengan memperpanjang sub ⁇ sirkuit. Dibawah ini adalah suatu detil yang detail.
Langkah 1: Pilih Verteks Awal
Pilihlah setiap verteks dengan setidaknya satu tepi. Karena graf terhubung dan semua derajat bahkan, setiap verteks akan bekerja. Biasanya algoritma dimulai pada verteks v].
Langkah 2: Trase Siklus
Dari verteks arus, ikuti ujung tak terpakai ke tetangga. Terus bergerak sepanjang tepi yang tidak digunakan, menandai setiap tepi seperti digunakan, sampai Anda kembali ke verteks awal. Ini menghasilkan siklus C. Jika siklus mengandung semua tepi grafik, algoritme tersebut berakhir ⁇ kita memiliki sirkuit Euler.
Langkah 3: Cari Vertik dengan Pinggiran yang Tak Dipakai
Ekspansi freteks saat ini untuk verteks apapun u yang masih memiliki insiden yang tidak digunakan tepi. Jika tidak ada, algoritma selesai. Jika tidak, biarkan u menjadi seperti verteks.
Step 4: Bangun Siklus Baru dari u
Aqlasar di u]], ulangi proses siklus ⁇ menemukan proses di antara tepi yang tidak digunakan. Ini menciptakan siklus baru C ⁇ ] yang dimulai dan berakhir pada u].
Langkah 5: Gabungkan Siklus Baru ke Sirkuit Utama
Diselitkan C ke dalam sirkuit utama pada posisi u. Berjalan yang dihasilkan masih berupa sirkuit (tertutup) dan mencakup semua tepi yang dikunjungi sejauh ini.Kembali ke Langkah 3.
Karena setiap verteks memiliki derajat genap, proses tidak pernah macet: setiap kali Anda memasuki sebuah bucu, akan selalu ada tepi yang tidak digunakan untuk pergi, sampai derajat verteks menjadi nol. Algoritme menjamin bahwa jalan akhir mencakup setiap tepi tepat sekali.
Contoh: Merastrukturkan Sirkuit Euler
Apakah anda akan mempertimbangkan grafik yang tidak terarah dengan vertik A, B, C, D, dan E. Edges: AB, AC, AD, BC, BD, CE, DE. (Ini adalah grafik kecil di mana setiap verteks memiliki derajat genap: deg(A)=3, deg(B)=3, deg(C)=2, deg(D)=3, deg(E)=1? Itu tidak memuaskan kondisi derajat genap. Mari kita benar: Gunakan grafik di mana semua derajat bahkan: A ⁇ B, B ⁇ C, C ⁇ D, + A ⁇ D. Itu memberikan setiap tingkat yang ganjil. Itu sebenarnya adalah verteks yang tepat: Mari kita gunakan setiap tingkat yang sederhana, 2 ⁇ 3, mari kita gunakan setiap derajat, 2 ⁇ 2, mari kita gunakan setiap titik yang menarik, 2 ⁇ 2, 2 ⁇ , 2 ⁇ , 2 ⁇ , 2 ⁇ , 4 ⁇ , 4 ⁇ , 4 ⁇ , 4 ⁇ , 4 ⁇ , dan 3 ⁇ , 7 ⁇ , 7 ⁇ , 7 ⁇ , 7 ⁇ , 4 ⁇ , 4 ⁇ , 4 ⁇ , 4 ⁇ , 4 ⁇ , 4 ⁇ , 4 ⁇ , 4 ⁇ , 4 ⁇ , 4 ⁇ , 4 ⁇ , 4 ⁇
Algoritma Hierholzer:
- Mulai dari verteks 1. Ikuti tepi: 1 ⁇ (guna), 2 ⁇ 3 (guna), sekarang pada 3. Pilih tepi 3 ⁇ 4 yang tidak digunakan (guna), 4 ⁇ 5 (guna), 5 ⁇ 3 (guna). Kembali ke 3, tetapi titik awal awal adalah 1. Kita belum kembali ke 1 ⁇ 1. Sebenarnya algoritma perlu membentuk siklus yang kembali ke verteks awal. Mari kita jejaki dengan benar: Mulai pada 1, pergi 1 ⁇ , 2 ⁇ 3, sekarang dari 3 kita dapat pergi 3 ⁇ 1 (tidak digunakan) ⁇ yang memberikan siklus 1 ⁇ 3 ⁇ 31. Siklus itu C1. Setelah tepian kiri 3 ⁇ 4, 4 ⁇ 5, 5 ⁇ 5, 5 ⁇ 3.
- Scan C1: verteks 3 memiliki tepian yang tidak digunakan.Mulai siklus baru pada 3: 3 ⁇ , 4 ⁇ 5, 5 ⁇ 53. Siklus C2 = 3 ⁇ 4 ⁇ 5 ⁇ 33.
- Cantumkan C2 ke dalam C1 pada verteks 3: sirkuit yang dihasilkan: 1 ⁇ ⁇ ⁇ 3 ⁇ 4 ⁇ 5 ⁇ 3 ⁇ 3 ⁇ 1. Semua tepi yang digunakan, sirkuit adalah Eulerian.
Contoh ini menggambarkan keanggunan algoritme: siklus ditemukan dan digabungkan tanpa hasil.
Pertimbangan Persamaan dan Persamaan yang Berpersamaan
Algoritme Hierholzer berjalan dalam O(V + E] Waktu ketika menggunakan daftar adjakasi representasi dan struktur data efisien untuk penghapusan tepi (contohnya, menggunakan iterator atau daftar terpaut). Algoritma ini optimal karena setiap ujung diproses tepat sekali. Memori overhead adalah O]][T:FLT:9][TFLT:9][TFLTFL][TFL][TFL][TFL] dan menyimpan grafik untuk sirkuit.
Untuk grafik terarah, pendekatan yang sama karya yang disediakan graf adalah Eulerian (dalam ⁇ derajat sama dengan out ⁇ derajat pada setiap verteks).Persyaratan algoritme untuk derajat genap diterjemahkan ke kasus terarah juga.
Perbandingan dengan Algoritma Fleury
Algoritma lain yang terkenal untuk menemukan sirkuit Eulerian adalah algoritma Fleury, yang bekerja dengan menelusuri tepi sambil memastikan bahwa grafik yang tersisa tetap terhubung (yaitu, menghindari jembatan). Algoritma Fleury berjalan dalam O(](E]2]] waktu karena perlu memeriksa konektivitas pada setiap langkah. Algoritma Hierholzer umumnya lebih disukai untuk waktu dan lebih sederhana. Hanya bagian bawah yang diperlukan oleh Hiholer untuk grafik Euler (bahkan) sedangkan ia perlu memeriksa konektivitas pada setiap langkah. Eurian dapat juga memiliki dua ekor ekor ekor ekor ekor gulir (ketika gulir), secara tepat dapat menghasilkan dua ekor steak steak steak steak steak steak ster ster steak ⁇ , namun juga dapat menghasilkan dua ekor steak steak ster ster ster ⁇ letik ⁇ , namun juga dapat menghasilkan steak ster ster ster ster ⁇ letik ⁇ , tetapi
Aplikasi Algoritma Hierholzer
Kemampuan untuk menemukan sirkuit Eulerian secara efisien memiliki banyak kegunaan dunia nyata.
Masalah Postman Cina
Dalam masalah Postman Cina (raute inspeksi), tujuannya adalah untuk menemukan jalan tertutup terpendek yang mencakup setiap tepi setidaknya sekali. Untuk grafik yang sudah Eulerian, solusinya hanyalah sirkuit Eulerian.Algoritme Hierholzer menyediakan sirkuit tersebut.Untuk grafik non ⁇ Eulerian, masalah tersebut mengurangi untuk menduplikasi tepi untuk membuat semua derajat bahkan, dan kemudian menerapkan Hierholzer.
Desain Ruting dan Sirkuit Jaringan dan Ruting
Sirkuit uelerian digunakan dalam merancang rute efisien untuk penyapu jalan, pengumpulan sampah, dan transmisi paket jaringan di mana setiap link harus ditayangkan tepat sekali. Algoritma membantu meminimalkan perjalanan berlebihan.
Perhimpunan Fragmen DNA
Dalam biologi komputasional, pendekatan grafik de Bruijn pada perakitan genom mengandalkan penemuan jalur Eulerian atau sirkuit melalui graf kēmer.Algoritma Hierholzer adalah komponen inti dari banyak perakit, memungkinkan rekonstruksi urutan kontinu dari bacaan pendek.
Generasi Grafik Komputer dan Maze
Jejak-jejak uelerian digunakan dalam menghasilkan labirin dan dalam algoritme gambar graf tertentu di mana tepi harus ditarik tanpa mengangkat pena. Algoritme menyediakan konstruksi optimal.
Uji coba Sirkuit Terpadu Berkualisasi
Desain ÁSkala Integrasi Sangat Besar ⁇ Skala (VLSI), pengujian semua koneksi dapat dimodelkan sebagai masalah sirkuit Eulerian, meminimalkan pergerakan penguji.
Lanjut Keterbacaan dan Sumber Daya Eksternal
Kelinji Untuk memperdalam pemahaman Anda tentang sirkuit Eulerian dan algoritma Hierholzer, sumber daya berikut direkomendasikan:
- [[ZOLT:0]]Eulerian Path ⁇ Wikipedia] ⁇ Comprehensive overview of definition, history, and algorithms.
- [[Elerian Path § CP Algoritms ⁇ Penjelasan terperinci dengan implementasi C++ dan analisis kompleksitas.
- [[ZOLT:0]]Algoritma Hierholzer ⁇ Wolfram MathWorld ⁇ Perspektif matematika.
- [[DiazolaFLT:0]]NetworkX: Eulerian Path Contoh ⁇ Praktek demonstrasi menggunakan pustaka analisis jaringan Python.
- [[Azzonalisasi algoritma Hierholzer untuk Grafik Terarah ⁇ GeeksforGeeks ⁇ Implementasi dalam berbagai bahasa.
Kekecualian Kesimpulan
Algoritma Hierholzer ini tetap menjadi batu penjuru dari traversal graf untuk kelegasiannya, kecepatan, dan aplikasi yang luas. Dengan mendekomposisi masalah ke dalam menemukan dan menggabungkan siklus, ia menyediakan solusi yang mudah dan optimal untuk membangun sirkuit Euler. Apakah Anda merancang rute jaringan, menyusun genom, atau memecahkan teka-teki, memahami algoritma ini memperlengkapi Anda dengan alat yang kuat untuk menangani grafik dengan bahkan ⁇ vertikes tingkat. Ini adalah kompleksitas linear dan struktur rekursif sederhana membuatnya favorit di antara para ilmuwan dan para praktisi.