Apakah ada algoritma yang efisien untuk masalah tutupan simpul ini?

23

Saya telah berusaha menemukan algoritma untuk menemukan penutup siklus simpul maksimum dari grafik - yaitu, serangkaian siklus terpisah yang berisi semua simpul dalam G , dengan sebanyak mungkin siklus (kami tidak mempertimbangkan siklus individu di sini). Saya tahu bahwa masalah menemukan penutup siklus simpul minimum , serta menemukan penutup siklus simpul dengan siklus k persis adalah NP-lengkap. Tapi bagaimana dengan case maksimal?GGk

Sementara saya akan menemukan jawaban yang menarik ini secara umum, grafik yang saya ingin gunakan untuk ini sebenarnya cukup dibatasi oleh konstruksi mereka, jadi mungkin bahkan jika masalahnya NP-lengkap mungkin ada solusi polinomial untuk contoh-contoh khusus ini.

Kami memiliki daftar bilangan bulat , elemen l i dan kami akan menggunakan S , elemen s i untuk merujuk ke L setelah mengurutkannya. Sebagai contoh:L.lsayaSssayaL.

L.=(1,3,2,5,0,7,4,2,6,0,8,1)S=(0,0,1,1,2,2,3,4,5,6,7,8)

Verteks grafik akan diidentifikasi dengan pasangan sedemikian rupa sehingga l i = n dan s in . Grafik memiliki tepi terarah ( n , i ) ( m , j ) jika dan hanya jika s j = n . (Siklus dalam grafik ini sesuai dengan serangkaian nilai yang dapat diijinkan secara siklikal sehingga akan berakhir pada posisi yang diurutkan.)(n,saya)lsaya=nssayan(n,saya)(m,j)sj=n

Contoh di atas akan menghasilkan grafik berikut (menggunakan indeks berbasis 1):

masukkan deskripsi gambar di sini

Satu hal yang tidak berhasil adalah pendekatan rakus dengan berulang kali menghapus siklus terkecil (seperti yang ditunjukkan contoh ini).

Perhatikan bahwa masalah ini (jika saya tidak membuat kesalahan) setara dengan menanyakan berapa swap yang Anda perlukan untuk mengurutkan daftar yang diberikan . (Itulah yang mengilhami mencari masalah ini sejak awal.)

Setelah beberapa petunjuk dari jawaban Juho dan sedikit lebih memilah-milah literatur, saya telah menemukan masalah penugasan yang tampaknya terkait sangat erat. Namun, masalah penugasan dirumuskan dalam bentuk grafik bipartit tertimbang dan sejauh ini saya belum dapat menemukan cara untuk memilih tepi dan bobot untuk mengurangi masalah ini. Jika kita ingin merumuskan masalah di sini dalam hal meminimalkan fungsi bobot, maka pendekatan intuitif akan mengatakan bahwa bobot setiap siklus adalah dimana | C | adalah jumlah tepi (atau simpul) dalam siklus. (Tentu saja ini setara dengan hanya mengatur bobot ke - 1|C|-1|C|-1.) Artinya, berat tergantung pada ukuran siklus, bukan tepi tertentu yang tercakup. Tapi mungkin ini memberi seseorang ide lain untuk mengurangi masalah.

Tampaknya juga membatasi ukuran siklus membuat masalah APX-sulit untuk grafik umum. Ini tidak selalu menyiratkan bahwa hal yang sama berlaku untuk tugas memaksimalkan jumlah siklus, atau untuk grafik tertentu yang sedang dipertimbangkan di sini, tetapi tampaknya cukup erat terkait bahwa itu bisa menjadi penting.

Singkatnya: Dapatkah penutup siklus titik puncak maksimum ditemukan untuk grafik yang dibuat dari proses di atas?

Sebagai dua sisi, saya juga akan tertarik pada apakah penutup siklus vertex disjoint maksimum juga memiliki solusi yang efisien untuk grafik arbitrer yang menerima setidaknya satu siklus penutup (yang mungkin akan jatuh sebagai jawaban untuk pertanyaan utama), atau apakah hanya dengan menentukan jumlah siklus dalam penutup maksimum (yang bertentangan dengan tepi aktual yang terkandung di masing-masing) membuat masalah lebih mudah. Saya senang memposting ini sebagai pertanyaan terpisah jika orang berpikir mereka layak mendapatkan jawaban penuh sendiri.

Martin Ender
sumber
Sudahkah Anda melihat literatur CS tentang pertukaran ginjal? Masalahnya tampaknya terkait, jadi saya ingin tahu apakah ada metode yang dapat diterapkan untuk yang satu ini. Ini mungkin jalan buntu, meskipun ...
DW
@DW saya belum (saya tidak tahu itu apa-apa). Saya akan melihat apa yang bisa saya temukan, terima kasih.
Martin Ender
masalahnya memang mirip dengan pertukaran ginjal memang dipelajari dari pov teoritis misalnya makalah ini oleh Roughgarden menjelaskan bahwa siklus kecil lebih disukai karena alasan yang hampir jelas (p3); ukuran siklus menyiratkan "operasi simultan" & yang lebih kecil mengurangi risiko melakukan semua operasi dengan komplikasi atau donor berubah pikiran dll
vzn
@AustinMohr Saya percaya grafik yang diperoleh dari konstruksi yang saya jelaskan akan selalu terurai menjadi siklus (dan selanjutnya, tidak peduli siklus mana yang Anda hapus, sisanya akan tetap dapat didekomposisi menjadi sebuah siklus). Jika Anda ingin membahas grafik umum juga, asumsikan bahwa setidaknya ada satu tutup lengkap.
Martin Ender
@ MartinBüttner Dalam kasus spesifik Anda, jika semua elemen daftar berbeda, akankah masalah Anda setara dengan menemukan dekomposisi siklus (unik) dari permutasi ?
mhum

Jawaban:

4

Gkk=2k=3 kk

GG((3/5)-ϵ)ϵ>0

Untuk detail dan bukti klaim di atas, lihat [1].


[1] Bläser, Markus, dan Bodo Manthey. "Dua algoritma perkiraan untuk penutup 3-siklus." Algoritma Perkiraan untuk Optimalisasi Kombinatorial. Springer Berlin Heidelberg, 2002. 40-50.

Juho
sumber
Menarik, saya akan mencoba mengikuti referensi dari makalah itu. Terima kasih. (Saya pasti salah membaca sesuatu ketika saya berpikir bahwa sampul k-cycle adalah sampul dengan siklus tepat. Atau mungkin itu adalah definisi yang berbeda yang digunakan di tempat lain.)
Martin Ender
2
@ MartinBüttner Omong-omong, Anda mungkin ingin melihat tesis PhD Bläser di sini . (Ini dalam bahasa Jerman, tetapi Anda mungkin tidak akan memiliki masalah dengan itu :-)). Itu harus mencakup rincian dari benar-benar menghitung penutup 2-siklus berat max.
Juho
|V|-nn
Memikirkannya lagi, saya tidak yakin itu benar-benar mungkin untuk merumuskan masalah dalam hal bobot. Dengan bobot yang sama, semua penutup siklus memiliki bobot yang sama. "Biaya" saya untuk sebuah siklus sebenarnya panjangnya minus 1. Karena itulah saya ingin sebanyak mungkin siklus. Jika ini bisa dirumuskan dalam hal bobot, itu mengurangi masalah penugasan, tetapi jika tidak saya rasa saya harus terus mencari.
Martin Ender