Menemukan paralelisasi optimal dari grafik tidak berarah umum tertimbang

9

Saya sedang memecahkan masalah "memadukan" set gambar yang tumpang tindih. Set ini dapat diwakili oleh grafik tertimbang yang tidak diarahkan seperti yang ini:

Grafik 7-simpul

Setiap node mewakili gambar. Gambar yang tumpang tindih dihubungkan oleh tepi. Bobot tepi mewakili ukuran area yang tumpang tindih ( pencampuran yang lebih besar tumpang tindih lebih cepat menghasilkan kualitas keseluruhan yang lebih baik )

Algoritme umumnya menghilangkan tepi. Dapat melakukannya secara berurutan atau paralel. Namun, ketika terjadi blending, node bergabung dan struktur grafik berubah. Jadi paralelisasi hanya dimungkinkan pada komponen yang terhubung yang tidak tumpang tindih!

Komponen yang tidak tumpang tindih tersebut adalah DB dan FEG. Kita dapat menjalankan algoritma blending pada komponen-komponen ini dengan aman secara paralel. Hasilnya adalah grafik berikut (node ​​yang digabungkan ditampilkan dalam warna hijau):

Grafik 4-simpul

Sekarang tidak ada paralelisasi lebih lanjut yang mungkin karena dua komponen yang terhubung tumpang tindih (mereka memiliki tepi langsung di antara mereka).

Versi paralel dari algoritma akan terlihat seperti ini:

1. Find connected components (no two are connected directly) and create task for each.
2. Run the tasks in parallel.
3. Update graph.
4. Until single node remains, continue with 1.

Bagian yang sulit adalah langkah pertama: Bagaimana menemukan komponen terbaik yang terhubung?

Salah satu caranya adalah algoritma serakah yang hanya menemukan jumlah komponen terbesar pada iterasi yang diberikan. Algoritma serakah akan memaksimalkan paralelisasi di awal tetapi dengan mengorbankan banyak iterasi kemudian.

Solusi optimal mungkin membawa jumlah komponen terhubung yang baik di setiap iterasi untuk memaksimalkan paralelisasi dan meminimalkan jumlah iterasi pada saat yang sama (jadi ada dua variabel dalam optimasi).

Saya tidak dapat memikirkan algoritma pengoptimalan selain dari backtracking, yaitu ruang pencarian dari semua kemungkinan evolusi dan pilih satu dengan paralelisasi maksimum.

Bobot tepi dapat diabaikan, tetapi versi peningkatan algoritme dapat mempertimbangkannya karena area yang lebih besar membutuhkan lebih banyak waktu untuk berbaur (misalnya area ukuran 200 akan memakan waktu dua kali lebih lama untuk berbaur daripada dua area ukuran 100). Mempertimbangkan bobot dapat mengarah pada strategi yang lebih baik dalam memilih komponen (waktu keseluruhan algoritma yang lebih cepat).

Apakah Anda memiliki petunjuk untuk algoritme pengoptimalan seperti itu, yang menemukan strategi terbaik memilih bagian-bagian grafik sehingga ada paralelisasi maksimum dan jumlah iterasi minimum?

Libor
sumber
T,S1,,SkSiSjSi

Jawaban:

1

Ini sangat mirip dengan tumpang tindih urutan gen dalam perakitan genom. Bab 4 dari tesis Ananth .

Secara paralel Anda mencari pasangan yang menjanjikan dan mempertahankan serikat menemukan struktur data. Lihat Tarjan dan Vishkin untuk algoritme pengait dan pintasan mereka untuk menutup komponen yang terhubung.

Anda juga dapat mencoba metode grafik DeBrujin terbaru pada 64 bit baris piksel. Saya pikir ini akan memberi Anda hasil terbaik. Untuk membantu masalah kuantisasi, pertama-tama saya akan mengurangi dimensi piksel menjadi 16 atau 8 bit hitam / putih. Anda kemudian menerapkan semacam paralel potongan 64 bit, dan kemudian menggunakannya untuk menyimpulkan tepi antara gambar.

Chad Brewbaker
sumber