겹치는 이미지 집합을 "혼합"하는 문제를 해결하고 있습니다. 이 세트는 다음과 같은 무 방향 가중치 그래프로 나타낼 수 있습니다.
각 노드는 이미지를 나타냅니다. 겹치는 이미지는 가장자리로 연결됩니다. 엣지 웨이트는 오버랩 영역 크기를 나타냅니다 ( 더 큰 오버랩을 빨리 혼합하면 전체적인 품질이 향상됩니다 ).
알고리즘은 일반적으로 가장자리를 제거합니다. 순차적으로 또는 병렬로 수행 할 수 있습니다. 그러나 혼합이 발생하면 노드가 병합되고 그래프 구조가 변경됩니다. 따라서 병렬화는 자체 중첩되지 않은 연결된 컴포넌트에서만 가능합니다!
이러한 비 중첩 구성 요소는 DB 및 FEG입니다. 이 컴포넌트들에 대해 블렌딩 알고리즘을 안전하게 실행할 수 있습니다. 결과는 다음 그래프입니다 (병합 된 노드는 녹색으로 표시됨).
이제 연결된 두 구성 요소가 겹치므로 더 이상 병렬화 할 수 없습니다 (두 구성 요소 사이에 직접 모서리가 있음).
알고리즘의 병렬 버전은 다음과 같습니다.
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의 두 영역보다 블렌딩하는 데 대략 두 배가 걸립니다). 가중치를 고려하면 컴포넌트 선택에 대한 전략이 향상 될 수 있습니다 (알고리즘의 전체 실행 시간이 더 빠름).
최대 병렬화와 최소 반복 횟수가되도록 그래프의 일부를 선택하는 최상의 전략을 찾는 최적화 알고리즘에 대한 단서가 있습니까?