Saya memiliki masalah di pikiran saya, saya pikir itu adalah masalah NPC tapi saya tidak tahu bagaimana membuktikannya.
Inilah masalahnya:
Ada k pulau di sebuah danau yang sangat besar, dan ada n ponton berbentuk kipas. Ponton itu memiliki ukuran yang sama tetapi memiliki arah awal yang berbeda dan berada dalam posisi asli yang berbeda di danau. Ponton dapat berputar bebas di sekitar pusat massa, dan tanpa biaya yang terkait dengan rotasi.
Sekarang kita perlu memindahkan ponton itu agar semua pulau di danau dapat terhubung. Kami dapat menjamin jumlah ponton cukup untuk menghubungkan semua pulau.
[Catatan]: Kami tidak dapat menggunakan kembali ponton !!
Tugasnya adalah menemukan solusi yang memiliki jarak total minimum ponton bergerak untuk membuat semua pulau terhubung. Jarak bergerak satu ponton dapat dihitung sebagai jarak antara pusat posisi semula massa dan posisi yang digunakan.
Untuk memperjelas, saya telah menggambar sosok seperti itu. Misalkan kita memiliki 3 pulau A, B dan C. Mereka berada di suatu tempat di danau. Dan saya punya beberapa pantun berbentuk kipas. Sekarang solusinya adalah menemukan penjumlahan jarak bergerak minimum untuk menghubungkan A, B dan C, yang ditunjukkan di bagian bawah gambar. Semoga ini membantu memahami masalahnya. :)
Tampaknya masalahnya adalah masalah NPC, tapi saya tidak tahu untuk membuktikannya. Ada yang bisa membantu saya dalam hal ini?
sumber
Jawaban:
Pertama: Ini bukan Masalah Travelling Salesman. TSP membutuhkan identifikasi siklus Hamiltonian berat minimum; siklus ini tidak memerlukan siklus, atau bahkan jalur berat minimal sama sekali. Dibutuhkan konstruksi biaya minimal dari himpunan sisi penghubung, di mana biaya konstruksi didasarkan pada pemindahan ponton.
Kedua: Ini bukan Masalah Pohon Berat Rentang Minimal. Lihat di atas - kami memerlukan konstruksi biaya minimal, bukan identifikasi berat minimum.
Ketiga: Tampaknya jalan yang dibangun akan menjadi pohon yang merentang, tetapi tidak harus yang berbobot minimal. Alternatifnya adalah bahwa itu akan menjadi spanning tree plus beberapa tepi tambahan yang menghasilkan siklus; tetapi jika kita mulai dalam konfigurasi tanpa tepi, maka setiap tepi memiliki biaya positif dan kita selalu dapat menemukan pohon spanning dengan bobot lebih rendah dengan tidak membangun tepi tambahan.
Keempat: Anda mengatakan ponton berputar bebas; Saya berasumsi itu berarti bahwa tidak ada biaya yang terkait dengan memutar ponton. Namun, Anda tidak menentukan apa yang diputar ponton tentang: Poin mereka? Pusat massa mereka? Ada titik internal? (Jika ada titik eksternal, maka kita akan memiliki konstruksi berat nol, ya?)
Ini agak halus, karena jika kita berputar 90 derajat tentang titik internal, katakanlah, pusat massa, berapa biayanya? Tidak ada, karena ini rotasi? Beberapa jumlah terbatas karena titik pindah? Sekarang kita juga perlu tahu ukuran ponton.
Kelima: Orang mengasumsikan ponton dan pulau-pulau keduanya tertanam di dalam Pesawat Euclidean?
sumber
Setelah melihat diagram baru, saya melihat bahwa Anda mungkin perlu beberapa ponton untuk menyeberang antar pulau. Mengingat itu, Anda bisa menjadi sangat dekat dengan solusi masalah Steiner Tree dengan mengubah simpul menjadi pulau dan menciptakan koleksi ponton yang cukup beragam dengan busur kecil. Wikipedia mengatakan bahwa sebenarnya ada PTAS untuk masalah Steiner tree, jadi saya tidak bisa langsung mengatakan bahwa ini menjadikannya NP-complete. Namun melihat detail dari pohon Steiner mungkin memberi Anda solusi perkiraan yang baik atau menunjukkan bahwa masalahnya adalah NP-Complete.
sumber
Setelah gambar, Ini masih merupakan masalah NPC. Bahkan jika kita memotong masalah ke setiap ponton dapat mengasumsikan 1 dari posisi n (yaitu jalur koneksi yang dikenal. Untuk mendapatkan jawaban yang paling optimal, kita harus mencoba setiap ponton di setiap posisi, menambahkan jarak mereka untuk sampai ke posisi repetektif masing-masing waktu, dan membandingkan dengan yang lainnya, jika setiap ponton harus diuji di setiap posisi, maka ada kombinasi yang perlu diuji.
Saya telah memilih untuk mengedit gambar poster asli dengan beberapa tambahan untuk menunjukkan ide-ide grafik di balik masalah ini.
Gambar di bawah ini menunjukkan semua (minus 2 untuk membuatnya lebih sederhana) ponton dalam warna berbeda, dengan semua lokasi ujung ponton potensial dalam RED. Saya hanya menggambar garis antara 3 ponton dan semua lokasi akhir, tetapi orang bisa melihat bagaimana GILA ini bisa terjadi.
Katakan bahwa hanya untuk heck itu, kami memilih ponton pirus untuk ditempatkan di lokasi akhir yang terdekat dengan itu sebagai langkah pertama (meskipun DARI TSP kita tahu bahwa ini mungkin tidak optimal pada akhirnya).
Di bawah ini kita melihat persis bahwa, ponton dan jarak (alias jarak perjalanan tertimbang) yang harus dilalui.
Dari sini, simpul virtual dengan dua lokasi ujung di sebelah lokasi yang baru saja dibuat dapat dibuat. Jarak dari set node, dan dua node yang berdekatan dalam node virtual memiliki jarak tempuh virtual 0.
Di bawah ini kita melihat simpul virtual yang dibuat dengan SEMUA bobot jarak perjalanan potensial yang dapat ditempatkan di sana.
Melihat bagaimana ini akan berlanjut, dan bagaimana solusi yang paling optimal (seperti yang terlihat berkali-kali dengan TSP) tidak akan selalu dengan memilih jarak terpendek untuk setiap pilihan, kita harus menguji dasarnya semua jalur untuk semua node / virtual node.
Pada akhirnya simpul pertama dari masalah (TSP) dapat berupa salah satu dari titik ponton ujung potensial, dan garis yang diambil dari jarak tersebut adalah titik dari titik akhir ke semua ponton lainnya. semua simpul lainnya kemudian menjadi simpul virtual seperti yang saya gambarkan dengan garis-garisnya muncul sebagai jarak / bobot ke semua ponton yang tersisa, dan seterusnya dan seterusnya. Bagaimana masalah grafik ini BUKAN PERSIS masalah penjual keliling tanpa persyaratan JUMP TERAKHIR dari siklus hamiltonian adalah di luar saya. Untuk mendapatkan jawaban yang tepat, seseorang harus menguji semua jalur melalui grafik.
sumber