Apakah menghubungkan pulau-pulau dengan NP ponton lengkap?


10

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. :)

masukkan deskripsi gambar di sini

Tampaknya masalahnya adalah masalah NPC, tapi saya tidak tahu untuk membuktikannya. Ada yang bisa membantu saya dalam hal ini?


@vsaxena Tidak, saya tidak berpikir solusi akhir adalah garis lurus, kadang-kadang jika sudah membentuk lengkungan tetapi kita tidak perlu memindahkannya. Sebagian besar kasus, garis lurus akan baik, tetapi karena ponton semakin padat, solusinya mungkin bukan garis lurus. Angka itu hanyalah sebuah contoh. :)

1
Tampaknya sangat dekat dengan Steiner Tree. Dalam ruang metrik, banyak teknik untuk menyelesaikan pekerjaan pada keduanya. en.wikipedia.org/wiki/…
Nicholas Mancuso

@NicholasMancuso jembatan adalah simpul ke simpul sehingga bukan pohon Steiner klasik di mana jembatan menghubungkan beberapa node. Ada banyak masalah dalam tata letak VLSI yang memiliki karakteristik serupa.
VSOverFlow

1
@vsaxena: Masalahnya kurang ditentukan. Misalkan saya memiliki tiga pulau A, B, C dalam segitiga sama sisi, dan ponton awalnya membentuk bentuk Y yang terhubung dengan pulau-pulau di ujungnya. Apakah tidak melakukan apa-apa solusi yang valid, atau haruskah ponton dipindahkan lebih jauh? Jika solusi ini tidak valid, lalu apa tepatnya yang membentuk konfigurasi ponton yang valid?
JeffE

1
@vsaxena: Dan sementara kita berada di sana, apakah pulau-pulau itu hanya berupa titik, atau lingkaran, atau bentuk yang lebih rumit ditentukan dalam input? Apakah segmen garis ponton, atau elips, atau bentuk lainnya? Apakah semua pulau memiliki ukuran dan bentuk yang sama, atau dapatkah mereka berbeda? Apakah semua ponton memiliki ukuran dan bentuk yang sama, atau bisakah mereka berbeda?
JeffE

Jawaban:


1

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?


Terima kasih atas jawaban Anda. Rotasi berada di sekitar pusat massa dan tidak ada biaya yang terkait dengan rotasi, hanya gerakan yang melibatkan biaya. Ya, ponton dan pulau-pulau tertanam di pesawat Euclidean. Saya akan memodifikasi posting untuk membuatnya lebih jelas.

Saya tidak setuju bahwa ini pada dasarnya bukan TSP. Seluruh pos ini melilit poros dalam terminologi, tetapi faktanya adalah bahwa jika seseorang menggambar garis antara setiap ponton dan setiap posisi ponton ujung potensial, dan menghitung jarak setiap baris menjadi beratnya, maka dengan pengecualian dari titik akhir kembali ke titik awal, grafik yang terbentuk terlihat hampir persis (ke tee) seperti TSP. Ponton atau posisi ujung adalah simpul dalam grafik, dan bobotnya ditentukan oleh jarak. Siklus hamiltonian HANYA berarti berakhir di mana ia dimulai.

2
Ini bukan jawaban, tetapi serangkaian komentar.
Raphael

1

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.


Apa yang Anda gambarkan adalah suatu algoritma perkiraan untuk mendapatkan solusi yang mendekati optimal. Namun bagaimana Anda bahkan memverifikasi bahwa solusinya optimal?

Saya pikir masalah sebenarnya adalah bahwa Anda perlu beberapa ponton untuk menyeberang antar pulau, yang membuatnya terlihat seperti pohon Steiner. Lihatlah Branch and Bound untuk mengetahui cara beralih dari batas bawah (mis. Dihasilkan dengan mengabaikan batasan) ke solusi optimal yang diketahui.
mcdowella

2
@mcdowella Ini bukan pohon Steiner karena setiap ponton dapat muncul hanya dalam satu jembatan; ini adalah sistem point to point. Lebih jauh lagi karena fungsi biaya adalah pergerakan ponton, Anda dapat memiliki
kasing di

Ini tidak mungkin steiner dari perspektif lain. KAMI TIDAK BISA MENAMBAH POIN hanya untuk memenuhi kebutuhan kita.
trumpetlicks

1
Jika persimpangan Y diizinkan, ini setidaknya sama sulitnya dengan masalah pohon Steiner, karena masalah pohon Steiner dapat diubah menjadi salah satunya - cukup buat banyak ponton dan letakkan begitu jauh dari pulau sehingga tidak ada Sangat penting ponton mana yang Anda gunakan di mana. Maka jika Anda bisa menyelesaikan ini, Anda bisa memecahkan masalah pohon Steiner: untuk argumen ini tidak masalah bahwa ada beberapa konfigurasi ponton yang tidak menghasilkan masalah pohon Steiner. Jika persimpangan tidak diizinkan, kita perlu tahu persis apa aturannya. Apakah jalur melintasi persimpangan?
mcdowella

0

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.

masukkan deskripsi gambar di sini

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.

masukkan deskripsi gambar di sini

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.


1
Mengesampingkan apakah ini adalah model yang masuk akal dari masalah yang dinyatakan atau apakah ini bahkan sebenarnya merupakan model TSP, ini bukan cara kerja pengurangan NP. Anda tidak menunjukkan bahwa masalah target Anda dapat dibingkai sebagai contoh masalah NPC. Anda perlu menunjukkan bahwa instance masalah NPC dapat dibingkai sebagai masalah target Anda.


2
Oh sayang. Jika Anda repot-repot membaca komentar saya dan tautan yang saya berikan, Anda telah mengetahui bahwa algoritma yang direferensikan tepat (mereka membuktikannya) dan karenanya bertentangan dengan pemahaman Anda. Perhatikan bahwa pendapat Anda menyarankan bahwa P! = NP - ini masih merupakan pertanyaan terbuka. Jadi tidak, Anda belum mengerti ini, maaf. (Bahkan jika memang benar bahwa masalah NP-complete dapat diselesaikan tidak lebih baik daripada secara naif, alasan yang Anda gunakan akan salah.)
Raphael

2
HAI(1.3n)n

3
@ Jeff Jeff: Dengan kata lain, jawaban ini hanya membuktikan bahwa masalahnya mungkin NP-lengkap secara teknis .
Tsuyoshi Ito
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.