2011-08-25 11 views
15

मैं डिजस्ट्रा के एल्गोरिदम के सामान्य जावा कार्यान्वयन की तलाश में हूं। मैंने इसे अपने आप पर कोड करने का प्रयास किया है, लेकिन मैं समस्याओं में भाग रहा हूं। अगर यह मदद करता है, तो मुझे पता है कि ग्राफ हमेशा जुड़े हुए हैं। क्या किसी को इस तरह के कार्यान्वयन के बारे में पता है?मुझे डिजस्ट्रा के एल्गोरिदम का जावा कार्यान्वयन कहां मिल सकता है?

धन्यवाद!

उत्तर

14

यह पूरी तरह से निर्बाध है, लेकिन मैंने थोड़ी देर पहले फिबोनैकी ढेर का उपयोग करके डिजस्ट्रा के एल्गोरिदम के कार्यान्वयन को कोड किया और इसे अपनी व्यक्तिगत वेबसाइट पर पोस्ट किया। आप यहाँ कोड पा सकते हैं:

मैं कैसे एल्गोरिथ्म काम करता है इंगित करने के लिए कोड टिप्पणी करने की कोशिश की है, क्या मान्यताओं यह, बना रहा है आदि, इसलिए उम्मीद है यह पढ़ने और समझने में आसान है। अगर मुझे इसके बारे में कुछ पता है तो मुझे बताएं कि मैं आपके लिए स्पष्टीकरण दे सकता हूं।

आशा है कि इससे मदद मिलती है!

+0

पर एक अच्छा कार्यान्वयन मैं दिशाहीन सरल के लिए आवश्यक बना दिया जुड़ा ग्राफ एस :) – MozenRath

+1

@ पियुश- आप एक निर्देशित ग्राफ का उपयोग कर एक अप्रत्यक्ष ग्राफ का प्रतिनिधित्व कर सकते हैं - बस कनेक्ट की गई प्रत्येक नोड्स की एक जोड़ी एक-दूसरे को इंगित करती है। – templatetypedef

+0

@templatetypedef मेरी राय में आपका कोड डिज़ास्ट्रा के लिए नेट पर देखा गया सबसे साफ कोड है, क्या आप डायरेक्टेडग्राफ के लिए लिंक भी साझा कर सकते हैं जिसे आप तर्क के रूप में पास करते हैं? – JavaDeveloper

1

आप इस मतलब है:

(जावा कार्यान्वयन का उल्लेख लिंक पर पाया जा सकता है (इस जवाब के नीचे)

// initialize d to infinity, π and Q to empty 
d = (∞) 
π =() 
S = Q =() 

add s to Q 
d(s) = 0 

while Q is not empty 
{ 
    u = extract-minimum(Q) 
    add u to S 
    relax-neighbors(u) 
} 

relax-neighbors(u) 
{ 
    for each vertex v adjacent to u, v not in S 
    { 
      if d(v) > d(u) + [u,v] // a shorter distance exists 
      { 
       d(v) = d(u) + [u,v] 
       π(v) = u 
       add v to Q 
      } 
    } 
} 

extract-minimum(Q) 
{ 
    find the smallest (as defined by d) vertex in Q 
    remove it from Q and return it 
} 

संपादित देखें: http://renaud.waldura.com/doc/java/dijkstra/

+7

यह जावा के मेरे संस्करण में संकलित नहीं है। आप कौन सा संस्करण उपयोग कर रहे हैं? – Patrick87

+1

मुझे लगता है कि ओपी विशेष रूप से छद्म कोड के बजाय जावा कोड की तलाश में है; सवाल से पता चलता है कि ओपी को स्यूडोकोड मिला है लेकिन इसे जावा में अनुवाद करने में परेशानी हो रही है। – templatetypedef

+0

जावा कार्यान्वयन लिंक पर पाया जा सकता है :) –

8

JGrapht से मिला एक है ग्राफ के लिए सामान्य जावा लाइब्रेरी। डिजस्ट्रा का एल्गोरिदम भी कार्यान्वित किया गया है।

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