Genel ağırlıklı yönlendirilmemiş grafikten en uygun paralelleştirmeyi bulma


9

Üst üste binen görüntülerin "harmanlanması" sorununu çözüyorum. Bu kümeler, bunun gibi yönlendirilmemiş ağırlıklı grafikle gösterilebilir:

7 düğümlü grafik

Her düğüm bir görüntüyü temsil eder. Çakışan görüntüler bir kenar ile bağlanır. Kenar ağırlığı örtüşme alanı boyutunu temsil eder ( daha büyük örtüşmeyi daha erken harmanlamak daha iyi genel kaliteye yol açar ).

Algoritma genellikle kenarları kaldırır. Sıralı olarak veya paralel olarak yapabilir. Ancak, karıştırma meydana geldiğinde, düğümler birleşir ve grafik yapısı değişir. Dolayısıyla, paralelleştirme yalnızca kendileri çakışmayan bağlı bileşenlerde mümkündür!

Bu tür örtüşmeyen bileşenler DB ve FEG'dir. Karıştırma algoritmasını bu bileşenler üzerinde güvenli bir şekilde paralel olarak çalıştırabiliriz. Sonuç aşağıdaki grafiktir (birleştirilmiş düğümler yeşil renkte görüntülenir):

4 düğümlü grafik

Artık başka bir paralelleştirme mümkün değildir çünkü bağlı iki bileşen üst üste binmektedir (aralarında doğrudan bir kenar vardır).

Algoritmanın paralel sürümü şöyle görünecektir:

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.

Zor kısım ilk adımdır: En iyi bağlı bileşen seti nasıl bulunur?

Bunun bir yolu, belirli bir yinelemede en fazla sayıda bileşeni bulan açgözlü bir algoritma olacaktır. Açgözlü algoritma başlangıçta paralelleştirmeyi en üst düzeye çıkaracak, ancak daha sonra birçok yinelemenin maliyetiyle.

Optimal çözüm, paralelleştirmeyi en üst düzeye çıkarmak ve aynı anda yineleme sayısını en aza indirmek için her bir yinelemede iyi miktarda bağlı bileşen getirmek olabilir (bu nedenle optimizasyonda iki değişken vardır).

Geri izleme dışında herhangi bir optimizasyon algoritması düşünemiyorum, yani tüm olası evrimlerin arama alanı ve maksimum paralelleştirme ile olanı seçin.

Kenar ağırlıkları göz ardı edilebilir, ancak daha büyük alanların harmanlanması daha uzun sürdüğü için algoritmanın geliştirilmiş sürümü bunu dikkate alabilir (örneğin, 200 büyüklüğündeki alan, 100 büyüklüğündeki iki alandan yaklaşık iki kat daha fazla harcanır). Ağırlıkları hesaba katmak, bileşenleri seçmek için daha iyi bir stratejiye yol açabilir (algoritmanın daha hızlı çalışma süresi).

Maksimum optimizasyon ve minimum yineleme sayısı olacak şekilde grafiğin parçalarını seçmek için en iyi stratejiyi bulan optimizasyon algoritması için ipuçlarınız var mı?


Bağlı bileşen burada doğru kelime değil. Orijinal grafik bağlı. Köşeleri köşelere bölmek mi demek istediniz?T,S1,...,Sk, öyle ki arasındaki mesafe Sben ve Sjen az 2 mi? Nasıl yapılacağı konusunda herhangi bir kısıtlama yokturSben(örneğin, herhangi bir alt grafiği nasıl "harmanladığınızı" göremiyorum). Yinelemelerle ne demek istediğiniz de belirsizdir.
Chao Xu

Yanıtlar:


1

Bu, genom düzeneğindeki gen dizisinin çakışmasına çok benzer. Ananth tezinin 4. Bölümü .

Paralel olarak, umut verici çiftleri arar ve dağıtılmış sendika bulma veri yapısını sağlarsınız. Bağlı bileşenleri daraltmak için kancaları ve kısayol algoritmaları için Tarjan ve Vishkin'e bakın .

Ayrıca, 64 bit sıralı piksel yığınlarında en son DeBrujin grafik yöntemlerini deneyebilirsiniz . Bunun size en iyi sonuçları vereceğini düşünüyorum. Nicemleme problemlerine yardımcı olmak için önce piksellerin boyutunu 16 veya 8 bit siyah / beyaza indirirdim. Daha sonra 64 bit yığınları paralel olarak sıralar ve görüntüler arasında kenarları çıkarmak için bunları kullanırsınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.