Sebagai input, saya memiliki dua set poin dalam R N , biasanya untuk N besar, misalnya N = 40. Andaikan kedua set memiliki elemen m:
S = s 1 ... s m
T = t 1 ... t m
Secara semantik kedua set sama, tetapi karena noise (dalam bentuk apa pun) pada titik R ^ N, elemen yang seharusnya secara semantik sama masih memiliki jarak lebih besar dari 0.
Apa yang ingin saya temukan adalah m tupel (s i , t j ) sedemikian rupa sehingga jumlah jarak (s i , t j ) diminimalkan dan sedemikian sehingga s k dan t k persis terjadi sekali dalam set tupel untuk k = 1 ... m Pada dasarnya (i, j) harus dipilih sebagai menara di papan catur yang tidak dapat saling menabrak sambil meminimalkan jarak yang dijumlahkan.
Dengan kata lain, saya ingin menemukan satu ke satu peta antara S dan T yang 'semacam peta identitas, tetapi kuat untuk noise'. Kami mengasumsikan bahwa ukuran jarak merupakan indikasi yang baik tentang bagaimana elemen yang sama berada.
Pada dasarnya saya perlu menemukan permutasi 1 ... N, dan karenanya saya pikir masalah ini adalah NP-hard atau NP-complete, karena 'rasanya' sangat mirip dengan TSP; namun saya belum dapat menulis ulang masalah TSP ke subset dari masalah saya di sini.
Apakah masalah ini secara realistis dapat dipecahkan untuk N besar? Apakah ada nama untuk masalah ini? Apa yang akan menjadi solusi yang layak? Apakah ada kriteria lain yang mungkin lebih baik daripada jarak yang dijumlahkan?
Saya memikirkan pendekatan serakah, misalkan D menjadi matriks jarak, d ij = jarak (s i , t j ).
T = {}
while D is not empty:
(i,j) = argmin-(i,j) dij
append (i,j) to T
set row i and column j to infinity.
Ini tidak menghasilkan solusi optimal, tetapi menemukan solusi. Apakah ini taruhan terbaik saya? Haruskah saya menggunakan anil simulasi, atau itu berlebihan?
PS: dari sudut pandang saya, ini hanya masalah kecil dalam masalah ML yang lebih besar, namun, saya sangat tertarik dengan latar belakang CS itu.
sumber
Jawaban:
Ini adalah masalah menemukan pencocokan maksimum dalam grafik bipartit tertimbang. Ada algoritma efisien yang menyelesaikan masalah ini dalam waktu polinomial.
Pada dasarnya, Anda memiliki grafik bipartit lengkap dengan2 m sudut. S membentuk satu set simpul; T membentuk set simpul lainnya. Untuk setiapi,j , buat tepi dari si untuk tj yang beratnya sama dengan −d(si,tj) , negasi jarak antara si dan tj .
Sekarang, Anda ingin menemukan pasangan yang beratnya sebesar mungkin. Ini sesuai dengan satu set pasangan(si,tj) yang total jaraknya sekecil mungkin. Dari sana, Anda dapat menggunakan algoritma yang ada pada grafik ini untuk menemukan pencocokan berat maksimum.
sumber
Inilah metode probabilistik cepat yang mungkin cocok untuk Anda.
Proyeksikan poin Anda ke garis acak dan pecahkan masalah pencocokan 1D di baris ini.
Ulangi proses ini untuk beberapa baris acak berbeda untuk mendapatkan koleksi pasangan yang cocok.
Minta kandidat Anda mencocokkan "suara" poin demi poin untuk menghasilkan pencocokan "terbaik".
sumber