2010-02-27 13 views
9

ग्राफ़ डालने पर कुछ किनारे ओवरलैप न्यूनतम तकनीकों क्या हैं? (पसंदीदा रूप से ग्राफवीज़ से संबंधित) क्या कोई मौजूदा सॉफ़्टवेयर भी है जो एक प्लानर फैशन में ग्राफ़ लेआउट कर सकता है?प्लानर ग्राफ़ लेआउट

वर्तमान लेआउट - http://www.evecakes.com/doodles/master.gif

ऊपरी बाएँ हाथ के कोने में गुलाबी अनुभाग ठीक है, जबकि हल्के नीले रंग अनुभाग कुछ परिहार्य बढ़त overlaps है लग रहा है।

+0

क्या आप जानना चाहते हैं कि ग्राफ़विज़ के आउटपुट को अनुकूलित करने के तरीके या किनारे ओवरलैप मिनीमाइज़र को अपने आप कैसे कार्यान्वित करें? –

+0

अधिकतर पूर्व लेकिन मुझे बाद में भी दिलचस्पी है। – jameszhao00

+0

मैंने कुछ और शोध किया और मेरे आकार के ग्राफ के लिए, बहु-स्तरीय लेआउट एकमात्र विकल्प है। तो फिलहाल मैं एसएफडीपी देख रहा हूं। एक महत्वपूर्ण एसएफडीपी विशेषता स्तर है, जो परिभाषित करता है कि आप कितने स्केल चाहते हैं। – jameszhao00

उत्तर

11

सामान्य ग्राफ के लिए, ग्राफ के प्लानर लेआउट को निर्धारित करने की समस्या कम से कम किनारों को पार करने (Crossing Number) एनपी-हार्ड है। तो कुछ ह्युरिस्टिक विधियों का उपयोग किया जाता है (जैसे Force based layout एल्गोरिदम)।

नीचे दिया गया पृष्ठ संक्षेप में ग्राफविज़ एल्गोरिदम का वर्णन करता है और लाभ के लिए उनका उपयोग करने के कुछ तरीकों का सुझाव देता है। यह भी pdfs जो एल्गोरिदम बारे में अधिक जानकारी शामिल करना चाहिए करने के लिए लिंक है:

http://rss.acs.unt.edu/Rdoc/library/Rgraphviz/html/GraphvizLayouts.html

आशा है कि मदद करता है।

+0

लिंक टूटा हुआ है। –

+0

यदि कोई ग्राफ प्लानर है तो आप शून्य किनारे क्रॉसिंग के साथ एक एम्बेडिंग उत्पन्न कर सकते हैं (क्योंकि यह प्लानर ग्राफ़ की परिभाषा है) - यह निर्धारित करना कि क्या ग्राफ़ प्लानर रैखिक 'ओ (एन) 'समय में हासिल किया जा सकता है [[1] (https://archive.org/details/PlanarityTestingByPathAddition) [2] (https://dl.acm.org/citation.cfm?id=321852)] और यह एक छोटा है (और 'ओ (एन) ') एक एम्बेडिंग उत्पन्न करने के लिए कदम। गैर-प्लानर ग्राफ के लिए, हां, यह न्यूनतम एज क्रॉसिंग के साथ एम्बेडिंग उत्पन्न करने के लिए एनपी-हार्ड है लेकिन यह प्लानर एम्बेडिंग/लेआउट नहीं हो सकता है। – MT0

4

निम्नलिखित ओपन सोर्स जावा लाइब्रेरी में कुछ एल्गोरिदम हैं जो प्लानर ग्राफ़ डालने में मदद कर सकते हैं। http://open.trickl.com/trickl-graph/index.html

विशेष रूप से, निम्नलिखित वर्गों समस्या के लिए विश्लेषणात्मक समाधान प्रदान करते हैं: (बूस्ट सी के आधार पर ++ हारून विंडसर द्वारा कार्यान्वयन)

ChrobakPayneLayout http://www.boost.org/doc/libs/1_37_0/libs/graph/doc/straight_line_drawing.html

FoldFreeLayout (एंकर के आधार पर - सेंसर नेटवर्क में फ्री वितरित स्थानीयकरण * निसानका बी प्रियंथा, हरि बालकृष्णन, एरिक डेमैन और सेठ टेलर)

आप जो करना चाहते हैं वह ऐसा पहला "प्रयास" के रूप में उपयोग करना है जो कोई ओवरलैप सुनिश्चित नहीं करता है, हालांकि यह शानदार नहीं लग सकता है। फिर आप नोड्स को अधिक उचित रूप से स्थानांतरित करने के लिए एक बल-निर्देशित एल्गोरिदम लागू कर सकते हैं।

दुर्भाग्यवश, लाइब्रेरी केवल रिलीज़ हो गई है, इसलिए दस्तावेज़ीकरण पर छोटा है। हालांकि यह सिद्धांत के बजाए कुछ वास्तविक कोड प्रदान करके उपयोगी हो सकता है।