सामान्य भारित अप्रत्यक्ष ग्राफ से इष्टतम समानांतरण का पता लगाना


9

मैं अतिव्यापी छवियों के "सम्मिश्रण" सेट की समस्या को हल कर रहा हूं। इन सेटों को इस तरह अप्रत्यक्ष भारित ग्राफ द्वारा दर्शाया जा सकता है:

7-नोड ग्राफ

प्रत्येक नोड एक छवि का प्रतिनिधित्व करता है। ओवरलैपिंग छवियां एक किनारे से जुड़ी हुई हैं। बढ़त वजन ओवरलैप क्षेत्र के आकार का प्रतिनिधित्व करता है ( जल्द ही बेहतर समग्र गुणवत्ता की ओर जाता है )।

एल्गोरिथ्म आमतौर पर किनारों को हटा देता है। यह इसे क्रमिक रूप से या समानांतर में कर सकते हैं। हालांकि, जब सम्मिश्रण होता है, तो नोड्स विलय हो जाते हैं और ग्राफ संरचना बदल जाती है। इसलिए समांतरीकरण केवल उन जुड़े हुए घटकों पर संभव है जो स्वयं अतिव्याप्त नहीं हैं!

ऐसे गैर-अतिव्यापी घटक डीबी और एफईजी हैं। हम इन घटकों पर सम्मिश्रण एल्गोरिथ्म को समानांतर रूप से सुरक्षित रूप से चला सकते हैं। परिणाम निम्न ग्राफ है (मर्ज किए गए नोड्स हरे रंग में प्रदर्शित होते हैं):

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 के दो क्षेत्रों की तुलना में मिश्रण करने के लिए लगभग दोगुना समय लगेगा)। वज़न को ध्यान में रखते हुए घटकों के चयन पर बेहतर रणनीति बनाई जा सकती है (एल्गोरिथम का कुल मिलाकर चलने का समय)।

क्या आपके पास इस तरह के अनुकूलन एल्गोरिदम के लिए कोई सुराग है, जो ग्राफ़ के कुछ हिस्सों को चुनने की सबसे अच्छी रणनीति पाता है ताकि अधिकतम समानांतरकरण और पुनरावृत्तियों की न्यूनतम संख्या हो?


कनेक्टेड घटक यहां सही शब्द नहीं है। मूल ग्राफ जुड़ा हुआ है। क्या आपका मतलब है कि पार्टीशन को पार्टीशन करनाटी,एस1,...,एस, इस तरह के बीच की दूरी एसमैं तथा एसजेकम से कम 2 है? कैसे पर कोई प्रतिबंध नहीं हैएसमैंजैसा दिखना चाहिए? (उदाहरण के लिए मैं नहीं देखता कि आप किसी सबग्राफ को कैसे "ब्लेंड" करते हैं)। यह भी स्पष्ट नहीं है कि आप पुनरावृत्तियों से क्या मतलब है।
चाओ जू

जवाबों:


1

यह जीनोम असेंबली में जीन अनुक्रम के ओवरलैप के समान है। अनंत की थीसिस का अध्याय 4 ।

समानांतर में आप होनहार जोड़ों की खोज करते हैं और एक वितरित संघ को बनाए रखते हैं डेटा संरचना पाते हैं। जुड़े हुए घटकों को ढहाने के लिए उनके हुक और शॉर्टकट एल्गोरिथ्म के लिए टारजन और विस्किन देखें ।

इसके अलावा, आप पिक्सेल के 64 बिट पंक्ति विखंडू पर हाल ही में DeBrujin ग्राफ तरीकों की कोशिश कर सकते हैं । मुझे लगता है कि यह आपको सबसे अच्छा परिणाम देगा। परिमाणीकरण समस्याओं के साथ मदद करने के लिए, मैं सबसे पहले पिक्सल्स के आयाम को 16 या 8 बिट ब्लैक / व्हाइट में कम करूँगा। आप फिर 64 बिट विखंडू के समानांतर सॉर्ट लागू करते हैं, और फिर छवियों के बीच किनारों का उपयोग करने के लिए उनका उपयोग करते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.