Edit jarak antara dua partisi

17

Saya memiliki dua partisi [1n] dan saya mencari jarak sunting di antara mereka.

Dengan ini, saya ingin menemukan jumlah minimal satu transisi dari sebuah node ke grup yang berbeda yang perlu beralih dari partisi A ke partisi B.

Misalnya jarak dari {0 1} {2 3} {4}ke {0} {1} {2 3 4}dua

Setelah mencari saya menemukan makalah ini , tetapi a) Saya tidak yakin apakah mereka mempertimbangkan urutan kelompok (sesuatu yang saya tidak pedulikan) dalam jarak mereka b) Saya tidak yakin bagaimana cara kerjanya dan c) Tidak ada referensi.

Setiap bantuan dihargai

zenna
sumber
5
Apa yang akan Anda pertimbangkan jarak antara {0 1 2 3} dan {0 1} {2 3}? Apakah itu 2? Kedua, saya sama sekali tidak mengerti mengapa "grafik" muncul. Sepertinya Anda memiliki dua partisi [n] dan ingin menghitung jarak di antara mereka.
Suresh Venkat
Ya, itu akan menjadi dua. Memang ini mengatur partisi pada node grafik (yaitu partisi grafik). Ini mungkin tidak penting untuk solusinya, tetapi ini adalah masalah yang saya coba selesaikan, oleh karena itu mengapa saya menyebutkannya.
zenna
3
Jika grafik tidak relevan, harap hapus semua referensi "grafik" dan "simpul" dari pertanyaan Anda; itu tidak membantu, itu mengalihkan perhatian.
Jukka Suomela
Tidak bisakah jarak edit ditentukan berdasarkan jarak pada kisi partisi?
Tegiri Nenashi
@ Tariri - Ini memang jarak geodesik pada kisi partititon. Sayangnya menghitung kisi untuk setiap kardinalitas yang jauh lebih besar dari 10 tidak dapat dilakukan.
zenna

Jawaban:

21

Masalah ini dapat diubah menjadi masalah penugasan , juga dikenal sebagai masalah pencocokan bipartit tertimbang maksimum.

Perhatikan terlebih dahulu bahwa jarak edit sama dengan jumlah elemen yang perlu diubah dari satu set ke set lainnya. Ini sama dengan jumlah total elemen dikurangi jumlah elemen yang tidak perlu diubah. Jadi, menemukan jumlah minimum elemen yang tidak berubah sama dengan menemukan jumlah maksimum simpul yang tidak berubah.

Mari dan B = { B 1 , B 2 , . . . , B l } menjadi partisi dari [ 1 , 2 , . . . , n ] . Juga, tanpa kehilangan keumuman, misalkan k l (diizinkan karena e d i tA={A1,A2,...,Ak}B={B1,B2,...,Bl}[1,2,...,n]kl ). Lalu biarkan B l + 1 , B l + 2 , ..., B k semua menjadi set kosong. Maka jumlah maksimum simpul yang tidak berubah adalah:edit(A,B)=edit(B,A)Bl+1Bl+2Bk

maxfi=1k|AiBf(i)|

di mana adalah permutasi dari [ 1 , 2 , . . . , k ] .f[1,2,...,k]

Ini persis masalah penugasan di mana simpul adalah , ..., A k , B 1 , ..., B k dan ujung-ujungnya berpasangan ( A i , B j ) dengan bobot | A iB j | . Ini dapat diselesaikan dalam waktu O ( | V | 2 log | V | + | V | | E | ) .A1AkB1Bk(Ai,Bj)|AiBj|O(|V|2log|V|+|V||E|)

bbejot
sumber
Bisakah Anda menyebutkan algoritma, yang memberikan kompleksitas waktu ini?
D-503
Saya percaya @bbejot mengacu pada algoritma jalur terpendek berturut-turut (dengan Dirokine subrutin diimplementasikan menggunakan tumpukan heaps).
Wei
Butuh waktu lama untuk mengurai ini karena saya bukan orang matematika, tapi terima kasih. Saya menghabiskan waktu yang lama untuk mencari dan ini adalah satu-satunya hal yang dapat saya temukan yang menunjukkan cara mengubah masalah jarak partisi ke masalah tugas - atau algoritma apa pun yang dapat saya panggil dari beberapa perpustakaan Python. (Bagian yang sulit bagi saya adalah mencari tahu bagaimana menggunakan scipy.optimize.linear_sum_assignment dan kemudian mengatur matriks berdasarkan instruksi ini.)
Sigfried
Saya perlu membuat bobot negatif. Kalau tidak, scipy.optimize.linear_sum_assignment memberi saya 0 untuk semuanya.
Sigfried
2

Lihatlah PDF tulisan ini

http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.0030160

Definisi jarak edit di sana adalah persis apa yang Anda butuhkan saya pikir. Partisi 'referensi' akan (sewenang-wenang) salah satu dari dua partisi Anda, yang lain hanya akan menjadi yang lain. Juga mengandung kutipan yang relevan.

Terbaik, Rob

rampok
sumber
Rob terima kasih. Namun, kecuali saya kehilangan sesuatu, ini adalah jarak pengeditan yang didefinisikan dalam hal gerakan split-merge. Ini dipelajari dengan baik dan sebagai makalah menunjukkan, variasi informasi adalah ukuran teori informasi ini. Namun saya tertarik, dalam transisi perpindahan elemen tunggal.
zenna
1

Gagasan Minggu pagi Cranky yang mungkin atau mungkin tidak benar:

Wlog, misalkan menjadi partisi dengan lebih banyak set, P 2 lainnya. Pertama, tetapkan nama berbeda berpasangan n 1 ( S ) Σ ke set Anda P 1 . Kemudian, cari penamaan terbaik n 2 ( S ) untuk set P 2 dengan aturan berikut:P1P2n1(S)ΣP1n2(S)P2

  • untuk S P 2 dengan S S maksimal di antara semua S P 1 ; pilih satu yang menciptakan konflik paling sedikit jika beberapa pilihan dimungkinkan.n2(S):=n1(S)SP2SSSP1
  • Jika sekarang untuk beberapa S S , tetapkan elemen yang berbagi lebih sedikit elemen dengan S , n 1 ( S ) = n 2 ( S ) , nama himpunan dalam P 1 ia berbagi elemen terbanyak kedua, yaitu bersaing untuk nama set itu.n2(S)=n2(S)SSS,n1(S)=n2(S)P1
  • Jika aturan sebelumnya tidak dapat diterapkan, periksa kedua set apakah mereka dapat bersaing untuk nama set lain yang mereka miliki elemen lebih sedikit (mereka mungkin masih memiliki lebih banyak elemen dari beberapa daripada set yang mendapat namanya. !). Jika demikian, tetapkan nama itu ke salah satu dari S , S yang membagikan lebih banyak elemen dengan set masing-masing yang namanya dapat mereka lawan; yang lain menyimpan nama yang sebelumnya saling bertentangan.SP1S,S
  • Iterasi prosedur ini sampai semua konflik diselesaikan. Karena tidak memiliki set kurang dari P 2 , ada cukup nama.P1P2

Sekarang, Anda dapat mempertimbangkan string bit elemen Anda dengan partisi mana pun, yaitu dan w 2 = nw1=n1(1)n1(n)w2=n2(1)n2(n)nj(i)=nj(S),iSPjdH(w1,w2)

Raphael
sumber