2010-07-22 12 views
7

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

यह देखते हुए, क्या कोई ऐसी भाषाएं हैं जो इनलाइन/मूल ग्राफ समर्थन और वाक्यविन्यास प्रदान करती हैं? मैं रूबी, पायथन और जावास्क्रिप्ट में चर, सरणी, सूचियां और हैश इनलाइन बना सकता हूं, लेकिन अगर मुझे ग्राफ चाहिए, तो मुझे या तो मैट्रिक्स/सूची के साथ खुद का प्रतिनिधित्व करना होगा, या लाइब्रेरी का चयन करना होगा, और विधि के माध्यम से ग्राफ का उपयोग करना होगा कहता है।

2010 में पृथ्वी पर यह अभी भी क्यों है? और, व्यावहारिक रूप से, क्या वहां कोई ऐसी भाषाएं हैं जो इनलाइन ग्राफ़ समर्थन और वाक्यविन्यास प्रदान करती हैं?

+0

एनपीआईटी का प्रयास करें: http://www.bertnase.de/npiet/ (नोट: यह एक मजाक है)। –

+0

दिलचस्प और वैध बिंदु। मुझे उन ग्राफों की विभिन्न प्रकृति पर संदेह है जो लोग आम तौर पर छेड़छाड़ करते हैं, यही वजह है कि वे अंतर्निहित (या यहां तक ​​कि एक मानक पुस्तकालय, AFAIK!) के रूप में भाषाओं में मौजूद नहीं हैं। हालांकि, ग्राफ पुनर्लेखन के आधार पर बहुत सी भाषाएं हैं, लेकिन यह आमतौर पर दृश्यों के पीछे होती है, न कि प्रोग्रामर-सुलभ चीज़ के रूप में। – Gian

+0

मैं मानता हूं कि ग्राफ प्रकृति में भिन्न होते हैं, लेकिन यह नहीं कि यह एक मजबूत कारण है कि डिफ़ॉल्ट कार्यान्वयन और इनलाइन वाक्यविन्यास प्रदान न करें। –

उत्तर

2

आप जो पूछ रहे हैं उसकी मुख्य समस्या यह है कि एक सामान्य समस्या के लिए एक सामान्य समाधान सबसे अच्छा नहीं है। यह उन सभी के लिए औसत है लेकिन सबसे अच्छा नहीं है।

ठीक है, आप अपनी गड़बड़ी मानते हुए एक ग्राफ में एक सूची स्टोर कर सकते हैं लेकिन आपको ऐसा कुछ क्यों करना चाहिए? और आप ग्राफ के अंदर एक हैशपैप कैसे स्टोर करेंगे? आपको ऐसी संरचना की आवश्यकता क्यों होगी?

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

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

यदि सब कुछ पहले से ही बनाया गया है तो आप विकास के मजे को हटा दें :) वैसे ही एक ऐसी भाषा की तलाश करें जो आपको अपना ग्राफ डीएसएल लिखने और इसके साथ रहने की अनुमति दे!

+0

हालांकि ईमानदार होने के लिए, मुझे लगता है कि प्रोग्राम करने योग्य गणित वातावरण की दुनिया एक दिलचस्प है। मेरे पास इसका अधिक जोखिम नहीं है, लेकिन मुझे लगता है कि वे मौजूद हैं, और यह खोज के लायक एक विचार है, आईएमएचओ। –

+0

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

+0

आमतौर पर जब आपको ग्राफ की आवश्यकता होती है तो आपको गहन गणना के लिए उनकी आवश्यकता होती है, यही कारण है कि आपको मैट्रिक्स या आसन्नता सूची का उपयोग करने के बारे में सावधानी से सोचने की आवश्यकता होगी (क्योंकि वे कुछ परिचालनों के विपरीत हैं)। मेरा जावा कार्यान्वयन कोड की केवल 600-700 लाइनें है, लिखा है कि एक बार और मैं अभी भी इसका उपयोग करते समय इसका उपयोग करता हूं लेकिन यह केवल कुछ गुणों का मॉडल करता है .. रेशमी की तरह कुछ सुझाव देता है कि कई गणित वातावरण में आलेख कार्यान्वयन होते हैं – Jack

1

GrGen.NET (www.grgen.net) ग्राफ परिवर्तन के साथ साथ एक चित्रमय डिबगर सहित एक वातावरण के लिए एक प्रोग्रामिंग भाषा है। आप अपने ग्राफ मॉडल, पुनर्लेखन नियमों और नियमों को कुछ अच्छी विशेष प्रयोजन भाषाओं के साथ परिभाषित कर सकते हैं और जेनरेट असेंबली/सी # कोड का उपयोग किसी भी .NET भाषा से या आपूर्ति किए गए खोल से कर सकते हैं।

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

संबंधित मुद्दे