के साथ सबसे छोटा रास्ता ढूंढना मैं निम्नलिखित सरल निर्देशित भारित ग्राफ का प्रतिनिधित्व करने के लिए मार्टिन एर्विग की कार्यात्मक ग्राफ लाइब्रेरी (एफजीएल) का उपयोग कर रहा हूं।एफजीएल
genLNodes :: [LNode String]
genLNodes = zip [1..5] ["A","B","C","D","E"]
genLEdges :: [LEdge Int]
genLEdges = [(1,2,4),(1,3,1),(2,4,2),(3,4,2),(2,5,1),(4,5,1),
(2,1,4),(3,1,1),(4,2,2),(4,3,2),(5,2,1),(5,4,1)]
mygraph :: Gr String Int
mygraph = mkGraph genLNodes genLEdges
अब मैं एक और उदाहरण के लिए एक नोड से कम से कम पथ लगाना चाहते हैं A
से E
डिजस्ट्रा के एल्गोरिदम का उपयोग कर। वहाँ Data.Graph.Inductive.Query.SP
में ऐसा करने के लिए एक समारोह हो रहा है:
dijkstra :: (Graph gr, Real b) => Heap b (LPath b) -> gr a b -> LRTree b
लेकिन मैं कैसे प्रदान किए गए इंटरफ़ेस से इसका इस्तेमाल करने की यह पता लगाने में सक्षम नहीं हूँ। कोई भी सहायताकाफी प्रशंसनीय होगी। अगर मैं निर्देशित भारित ग्राफ को सही तरीके से बना रहा हूं, या यदि ऐसा करने के लिए कोई अन्य (बेहतर) पैकेज है, तो मैं किसी अन्य सुझाव को भी सुनना चाहूंगा?
... और शायद [पेपर] (http://web.engr.oregonstate.edu/~erwig/papers/InductiveGraphs_JFP01.pdf) पढ़ने या कम से कम इसे कम करने के लायक है। – AndrewC
@vis 'sp' वैसे भी एक बकवास नाम है - कोई आश्चर्य नहीं कि आपने इसे नहीं देखा! – AndrewC
ओह, मैं पूरी तरह से उस समारोह को याद किया! वास्तव में यह सब मुझे चाहिए। @AndrewC मुझे कागज पर इंगित करने के लिए धन्यवाद। – vis