Kompleksitas masalah Adopsi Kucing

14

Ini muncul ketika saya mencoba untuk menjawab pertanyaan ini pada Minimalisasi Panjang Kabel . Saya akan menyebutnya masalah "perkawinan poligami", tetapi internet, jadi anak kucing. Yay!

Misalkan kita memiliki anak kucing yang perlu diadopsi oleh N orang, M > N . Untuk setiap anak kucing, saya dan setiap orang j ada biaya c i j . Kami ingin meminimalkan biaya total untuk mendapatkan semua anak kucing yang diadopsi. Ada juga satu set kendala: setiap orang j mampu mengadopsi tidak lebih dari u j anak kucing.M.NM.>Nsayajcsayajjkamuj

Tanpa kendala, masalahnya mudah; setiap anak kucing pergi dengan orang j yang c i j minimal. Dengan kendala apakah ada algoritma yang efisien untuk masalah ini atau apakah ini NP-hard?sayajcsayaj

Logika Pengembaraan
sumber

Jawaban:

5

Ini adalah masalah max-flow min-cost.

Pertimbangkan grafik , di mana A adalah himpunan anak kucing, B adalah himpunan orang.G=(AB{s,t},E)AB

Biarkan menjadi kapasitas tepi, dan c : E R + menjadi biaya tepi. Kami memastikan ituC:ER+c:ER+

  1. Ada tepi antara , di mana a iA dan b jB , dan C ( a i , b j ) = 1 , c ( a i , b j ) = c i , j .ai,bjaiAbjBC(ai,bj)=1c(ai,bj)=ci,j
  2. Ada batas antara dan a iA , dan C ( s , a i ) = 1 , c ( s , a i ) = 0 .saiAC(s,ai)=1c(s,ai)=0
  3. Ada tepi antara dan t , dan C ( b j , t ) = u j , c ( b j , t ) = 0 .bjBtC(bj,t)=ujc(bj,t)=0

Jika aliran maks adalah , maka kita tahu ada solusi. Anda dapat membangun solusi biaya minimum dari aliran maks biaya minimum.M.

Chao Xu
sumber
4

Ini adalah masalah pencocokan berat minimum minimum yang polinomial. Perhatikan grafik bipartit lengkap , di mana L berisi node l i untuk setiap kucing saya , R terdiri dari u j salinan node r j untuk setiap orang j , dan ujung-ujungnya e i jE antara l i dan setiap salinan r j , dengan bobot c i j .(L,R,E)LliiRujrjjeijElirjcij

Kita tahu itu , jika tidak, tidak semua anak kucing dapat ditugaskan ke orang.|L||R|

Sejak pencocokan sempurna harus cocok dengan semua node, kita perlu menambahkan node dummy untuk (untuk mendapatkan | L | = | R | ) dan menghubungkan mereka dengan nol tepi berat ke semua node di R .L|L|=|R|R

Parham
sumber
2

Mungkin yang menarik adalah pengamatan bahwa seseorang dapat mengurangi Pemisahan menjadi varian dari masalah ini. Diberikan adalah turunan dari Partisi dengan elemen dengan q bahkan dari mana kita harus memilih subset S { 1 , ... , q } dengan | S | = q / 2 sedemikian rupa sehingga i S x i = i S x i = K{x1,,xq}qS{1,,q}|S|=q/2iSxi=iSxi=K. (Perhatikan bahwa persyaratan untuk memilih tepat separuh elemen bukanlah bentuk yang biasa tetapi bentuk ini masih NP-keras.) Biarkan setiap anak kucing menjadi elemen set; biarlah ada dua orang; biarkan bobotnya menjadi dan c i 2 = - x i ; biarkan kamu 1 = u 2 = q / 2 . Maka hal ini dari Kitten Adopsi memiliki maksimum dari 0 IFF contoh Partisi memiliki solusi.ci1=xici2=xiu1=u2=q/20

CCq

Saya tidak yakin apa yang dikatakan ini tentang kerumitan masalah aslinya, tetapi mengingat "salah satu dari perkecil / maksimalkan adalah NP-hard, yang lainnya ada dalam pengaturan P" untuk masalah optimisasi kombinatorial, saya akan mulai mencari algoritma yang efisien.

András Salamon
sumber