एक समन्वित प्रणाली में मिश्रित निर्वाचन क्षेत्र / निर्भरता ग्राफ खींचने के लिए एक उपयुक्त एल्गोरिथ्म है?


9

मैं एक मिश्रित निर्वाचन क्षेत्र / निर्भरता ग्राफ (एक भाषाई अनुप्रयोग के लिए) आकर्षित करने के लिए एक एल्गोरिथ्म की तलाश कर रहा हूं। इस तरह के ग्राफ में दो अलग-अलग प्रकार के कोने (टोकन, नोड्स) और दो अलग-अलग प्रकार के किनारे (पदानुक्रमित, गैर-पदानुक्रमित) होंगे।

मैं सामान्य रूप से ग्राफ सिद्धांत और एल्गोरिदम के लिए नया हूं, और मुझे आशा है कि यह प्रश्न इस साइट के अनुसंधान-स्तर की आवश्यकताओं के साथ नहीं है। यह हालांकि आम तौर पर cstheory के दायरे में होना चाहिए

ग्राफ को नीचे-ऊपर (मुझे लगता है) खींचना होगा, क्योंकि सभी टोकन को एक ही y-निर्देशांक के साथ प्रदर्शित किया जाना चाहिए, और घटकों में टोकन और / या नोड्स को समूहीकृत करने वाले नोड्स के y-निर्देशांक को गतिशील रूप से गणना करना होगा, उदाहरण के लिए, एक टोकन के लिए उनके सबसे लंबे रास्ते के माध्यम से।

पदानुक्रमित किनारों (घटक में नोड्स / नोड्स को समूहीकृत करने के लिए उपयोग किया जाता है) में न्यूनतम संख्या में बेंडपॉइंट्स (आदर्श रूप से 0) होना चाहिए, लेकिन यदि आवश्यक हो तो पूर्व आवश्यकता को लिखकर, क्रॉसिंग की न्यूनतम संख्या भी होनी चाहिए।

गैर-पदानुक्रमित किनारों (निर्भरता के लिए प्रयुक्त) में क्रॉसिंग की न्यूनतम संख्या होनी चाहिए, और बेज़ियर घटता के रूप में तैयार किया जाना चाहिए।

अगली सबसे अच्छी बात जो मुझे पता चली है वह है अल्चाइम एट अल द्वारा वर्णित एल्गोरिदम , रैखिक समय में चलने के लिए वाकर के एल्गोरिथ्म में सुधार।

कृपया मुझे बताएं कि मेरे प्रश्न को सुधारने की कोई आवश्यकता होनी चाहिए, और किसी भी संकेत के लिए अग्रिम धन्यवाद।

संपादित करें:

जैसा कि एक टिप्पणी में कहा गया है, मुझे यह उल्लेख करना चाहिए कि मैं मूल रूप से एक एल्गोरिथ्म द्वारा डिफ़ॉल्ट ग्राफ़ लेआउट चाहता हूं, जिसे मैं - लंबे समय में - ग्रहण जीईएफ संभावनाओं के भीतर संपादित और संशोधित करना चाहता हूं । मैंने पहले GEF के साथ काम करने के लिए ग्राफविज़ प्राप्त करने के लिए विकल्पों पर गौर किया है, लेकिन ऐसा कोई समाधान नहीं है जो GEF से विरासत में मिली सभी संपादन कार्यक्षमता को संरक्षित करता है।


क्या आपको एक एल्गोरिथ्म या एक मौजूदा टूल की आवश्यकता है? Graphviz ( graphviz.org ) ऐसा कर सकते हैं। आप ग्राफ़ को निर्दिष्ट करते हैं, संभवतः कुछ स्वरूपण विकल्प (विभिन्न प्रकार के नोड्स और किनारों के लिए) और उपकरण एक उचित रूप से प्रदान किए गए ग्राफ़ को आउटपुट करेंगे।
डेव क्लार्क

@DaveClarke: धन्यवाद। मुझे पता है कि ग्राफविज़ ऐसा करने में सक्षम है। दुर्भाग्य से ऐसा नहीं लगता कि वर्तमान में [एक्लिप्स ग्राफिकल एडिटिंग फ्रेमवर्क] (www.eclipse.org/gef) पर आधारित संपादक के साथ ग्राफविज़ का उपयोग करने की कोई संभावना नहीं है। इसलिए मैं एक वास्तविक एल्गोरिथ्म की तलाश कर रहा हूं। जब तक किसी को पता नहीं है कि GEF का प्लग / पोर्ट कैसे करें निश्चित रूप से :)।
एसडी

ऐसा लगता है कि ओपी एक एल्गोरिथ्म (या एक समस्या सूत्रीकरण कि विनिर्देश को पकड़ता है) की तलाश में है
सुरेश वेंकट

@ सुरेश वेंकट: हां, स्पष्ट करने के लिए धन्यवाद।
एसडी

1
Q में संपादन का कोई उल्लेख नहीं है, लेकिन टिप्पणी में आप ग्राफ़्विज़ को बंद कर देते हैं और यह संकेत देते हैं कि आप इसे GEF के साथ संपादित करना चाहते हैं। GEF एक सामान्य दृश्य संपादन ढांचा / एपीआई है जिस पर अन्य "प्लगइन्स" का निर्माण हो सकता है। आप एल्गोरिथ्म द्वारा एक डिफ़ॉल्ट ग्राफ़ लेआउट चाहते हैं जिसे आप फिर संशोधित कर सकते हैं। सुझाव दें कि आप अपना प्रश्न संपादित करें ताकि वह प्रतिबिंबित हो सके। वैसे विश्वास है कि graphviz का उपयोग निर्देशांक उत्पन्न करने के लिए किया जा सकता है जो तब एक ग्राफ संपादक में फीड कर सकता है। पुनः GEF ग्राफ संपादन देखें GEF
vzn

जवाबों:


1

आप निम्नलिखित चाहते हैं

  • एक ग्राफ लेआउट एल्गोरिथ्म। कई एसटीडी एल्गोरिदम आमतौर पर बल-आधारित विधियों का उपयोग करते हैं जहां नोड्स प्रतिकृति / आकर्षक "स्प्रिंग्स" से जुड़े होते हैं और संतुलन / कम ऊर्जा की स्थिति कुछ पुनरावृत्ति के माध्यम से प्राप्त होती है (वैश्विक स्तर पर निर्मित बल-संबंधित अंतर समीकरण के समान)। एल्गोरिथ्म का आउटपुट नोड्स और (आमतौर पर) किनारों के लिए 2-डी या 3-डी निर्देशांक का एक सेट है।
  • उस एल्गोरिथ्म के परिणामों को हाथ से संशोधित करने की क्षमता। आम तौर पर "ग्राफ़ संपादक" कहा जाता है। यह लेआउट एल्गोरिथ्म के निर्देशांक से शुरू होता है और समायोजन की अनुमति देता है।

पुनः (1) सबसे आगे का सॉफ्टवेयर ग्राफविज़ लगता है । re (2) उदाहरण के लिए यह सवाल देखें "मैथेमेटफ़्लो पर" सबसे अच्छा ग्राफ़ संपादक क्या है

ग्राफविज़ गैलरी को ब्राउज़ करना , यहाँ दो ग्राफ प्रकार हैं जो आप चाहते हैं।

ईआर डायग्राम और ट्रैफिक लाइट

आप कहते हैं कि आपके पास दो प्रकार के किनारे हैं। ट्रैफ़िक लाइट उदाहरण में किनारों को "ओर या दूर" निर्देशित किनारों के लिए एक सरल तरीका होगा। या किनारों को ईआर आरेख में दो तरीकों से लेबल किया जा सकता है। दोनों उदाहरण विभिन्न आकारों या लेबल, या छायांकन आदि का उपयोग करते हुए दो अलग-अलग नोड प्रकार दिखाते हैं, अन्य दृष्टिकोण रंग का उपयोग करना होगा।

के रूप में mathoverflow क्यू / के रूप में इंगित करें कि कई ग्राफ संपादक हैं। ग्राफवीज़ के साथ एसटीडी "डॉट्टी" है। देखें जैसे कि Koutsofious द्वारा pdf "dotty के साथ संपादन आलेख"

रेखांकन के लिए एक और तकनीक, संभवतः बड़े रेखांकन, संरचनात्मक रचनाओं को देखना है जैसे कि क्लीक डिकम्पोजिशन।

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