Masalah jalur terpanjang adalah NP-hard. Bukti (khas?) Bergantung pada pengurangan masalah jalur Hamiltonian (yang NP-lengkap). Perhatikan bahwa di sini jalan dianggap sederhana (node-). Artinya, tidak ada titik dapat terjadi lebih dari satu kali di jalan. Jelas itu juga edge-simple (tidak ada edge yang akan muncul lebih dari satu kali di path).
Jadi bagaimana jika kita menjatuhkan persyaratan untuk menemukan jalur (node-) sederhana dan tetap mencari jalur tepi-sederhana (trail). Pada pandangan pertama, karena menemukan jejak Euler jauh lebih mudah daripada menemukan jalur Hamilton, orang mungkin memiliki harapan bahwa menemukan jalur terpanjang akan lebih mudah daripada menemukan jalur terpanjang. Namun, saya tidak dapat menemukan referensi yang membuktikan ini, apalagi yang menyediakan algoritma.
Perhatikan bahwa saya mengetahui argumen yang dibuat di sini: /programming/8368547/how-to-find-the-longest-heaviest-trail-in-an-undirected-weighted-graph Namun, argumen itu tampaknya cacat dalam bentuk saat ini, karena pada dasarnya menunjukkan Anda bisa menyelesaikan kasus tepi-sederhana dengan memecahkan kasus simpul-sederhana pada grafik yang berbeda (jadi pengurangannya adalah cara yang salah di sekitar). Tidak jelas bahwa pengurangan dapat dengan mudah diubah untuk bekerja dengan cara lain juga. (Namun, itu menunjukkan bahwa setidaknya masalah jalan terpanjang tidak lebih sulit daripada masalah jalur terpanjang.)
Jadi, adakah hasil yang diketahui untuk menemukan jalan terpanjang (jalur tepi-sederhana)? Kompleksitas (kelas)? Algoritma (efisien)?
Jawaban:
Dari komentar di atas: masalah siklus Hamilton tetap NP-lengkap bahkan dalam grafik grid dengan derajat maksimal 3 [1], tetapi dalam grafik ini setiap traversal dari sebuah node memerlukan dua tepi dan paling banyak satu tepi tetap tidak digunakan, sehingga sebuah node tidak dapat dilalui dua kali oleh jalur Euler.
Jadi rupanya ada pengurangan langsung dari masalah siklus Hamiltonian ke masalah Anda: diberi grafik kotak dengan derajat maksimal 3 , cukup minta jejak panjang | V | .G = ( V, E) | V|
Tetapi ketiga tepi simpul di ujung jalan dapat digunakan; untuk menghindari situasi ini Anda dapat memilih node kiri atas dari grafik grid (yang memiliki gelar dua) dan tambahkan dua node: V ' = V ∪ { u ' , u " } dan tepi baru E = E ∪ { ( u , u ′ ) , ( u , u ″ ) } dan minta jejak panjang | V ′ | = | V | +kamu V′= V∪ { u′, kamu′ ′} E= E∪ { ( u , u′) , ( u , kamu′ ′) } : tepi yang ditambahkan secara tidak resmi memaksa u ′ , u ″ menjadi titik akhir dari jejak.| V′| = | V| +2 kamu′, kamu′ ′
[1] Christos H Papadimitriou, Umesh V Vazirani, Tentang dua masalah geometrik yang berkaitan dengan masalah salesman keliling, Jurnal Algoritma, Volume 5, Edisi 2, Juni 1984, Halaman 231-246, ISSN 0196-6774
sumber