Пошук оптимальної паралелізації від загально зваженого непрямого графа


9

Я вирішую проблему "змішування" наборів зображень, що перекриваються. Ці множини можуть бути представлені непрямим зваженим графіком, таким як цей:

7-вузловий графік

Кожен вузол представляє зображення. Зображення, що перекриваються, з'єднуються краєм. Вага краю представляє розмір площі перекриття ( змішування великого перекриття швидше призводить до покращення загальної якості ).

Алгоритм зазвичай видаляє краї. Це можна робити послідовно або паралельно. Однак, коли відбувається змішування, вузли зливаються і структура графіку змінюється. Тож паралелізація можлива лише на підключених компонентах, які самі по собі не перетинаються!

Такими компонентами, що не перекриваються, є DB та FEG. Ми можемо безпечно паралельно запускати алгоритм змішування цих компонентів. Результатом є такий графік (об'єднані вузли відображаються зеленим кольором):

4-вузловий графік

Тепер не можлива подальша паралелізація, оскільки будь-які два з'єднані компоненти перекриваються (вони мають край безпосередньо між ними).

Паралельна версія алгоритму виглядатиме так:

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.

Хитра частина - це перший крок: Як знайти найкращий набір підключених компонентів?

Одним із способів був би жадібний алгоритм, який просто знаходить найбільшу кількість компонентів за заданою ітерацією. Жадібний алгоритм максимізує паралелізацію на початку, але ціною багатьох повторень пізніше.

Оптимальним рішенням може бути отримання великої кількості підключених компонентів у кожній ітерації для максимальної паралелізації та мінімізації кількості ітерацій одночасно (тому в оптимізації є дві змінні).

Я не можу придумати жоден алгоритм оптимізації, окрім зворотного відстеження, тобто простір пошуку всіх можливих еволюцій і вибрати той, з максимальною паралелізацією.

Ваги краю можна ігнорувати, але вдосконалена версія алгоритму може врахувати його, оскільки для змішування більших площ потрібен більше часу (наприклад, площа розміром 200 займе приблизно в два рази більше часу, ніж дві області розміром 100). Врахування ваги може призвести до кращої стратегії вибору компонентів (більш швидкий загальний час роботи алгоритму).

Чи є у вас підказки для такого алгоритму оптимізації, який знаходить найкращу стратегію вибору частин графіка, щоб була максимальна паралелізація та мінімальна кількість ітерацій?


Підключений компонент тут не є правильним словом. Оригінальний графік підключений. Ви маєте на увазі розділення вершин на , таким чином, щоб відстань між та було принаймні 2? Немає обмежень щодо того, як повинен виглядати ? (Наприклад, я не бачу, як ви "змішуєте" будь-який підграф). Також незрозуміло, що ви маєте на увазі під ітераціями. Т,S1,,SкSiSjSi
Чао Сю

Відповіді:


1

Це дуже схоже на перекриття послідовності генів при складанні геному. Розділ 4 тези Ананта .

Паралельно ви шукаєте багатообіцяючих пар та підтримуєте структуру даних розподіленого знаходження об'єднання. Дивіться Тарджана та Вишкіна щодо їх алгоритму підключення та скорочення для згортання підключених компонентів.

Крім того, ви можете спробувати останні графічні методи DeBrujin на 64-бітних фрагментах пікселів. Я думаю, що це дасть найкращі результати. Для вирішення проблем із квантуванням спочатку я б зменшив розмір пікселів до 16 або 8 бітових чорно-білих. Потім ви застосовуєте паралельне впорядкування 64-бітових фрагментів, а потім використовуєте їх для висновку ребер між зображеннями.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.