मान लीजिए हमें एक ग्राफ दिया गया है और उस ग्राफ से 'न्यूनतम स्पैनिंग ट्री' (एमएसटी) का पता लगाने के लिए कहा गया है। ग्राफ़ का MST भारित ग्राफ़ का एक उपसमुच्चय होता है जहाँ सभी शीर्ष मौजूद होते हैं और जुड़े होते हैं, और उपसमुच्चय में कोई चक्र मौजूद नहीं होता है। एमएसटी को न्यूनतम कहा जाता है क्योंकि एमएसटी का कुल बढ़त वजन ग्राफ से न्यूनतम संभव है। इसलिए, यहां हम प्राइम के एमएसटी एल्गोरिदम का उपयोग करते हैं और दिए गए ग्राफ से एमएसटी के कुल किनारे के वजन का पता लगाते हैं।
तो, अगर इनपुट पसंद है

, शीर्षों की संख्या (n) 4 है, और प्रारंभ शीर्ष (s) =3 है, तो आउटपुट 14 होगा।
इस ग्राफ से MST यह होगा -

इस एमएसटी का कुल एज वेट 14 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- एक फ़ंक्शन परिभाषित करें mst_find() । इसमें G, s
- . लगेगा
- दूरी :=आकार G की एक नई सूची को मान ऋणात्मक अनंत के साथ प्रारंभ किया गया
- दूरी[s] :=0
- itr :=आकार G की एक नई सूची को गलत मान के साथ प्रारंभ किया गया
- सी :=0
- सच होने पर, करें
- न्यूनतम वजन:=अनंत
- m_idx :=-1
- i के लिए 0 से G के आकार की सीमा में, करें
- यदि itr[i] असत्य के समान है, तो
- यदि दूरी[i]
- न्यूनतम वजन:=दूरी[i]
- m_idx :=i
- यदि दूरी[i]
- यदि itr[i] असत्य के समान है, तो
- यदि m_idx -1 के समान है, तो
- लूप से बाहर आएं
- c :=c + min_weight
- itr[m_idx] :=सच
- प्रत्येक जोड़ी के लिए i, j के मानों में G[m_idx], do
- दूरी[i] :=न्यूनतम दूरी[i], j
- वापसी सी
- यू:=आइटम [0]
- v:=आइटम[1]
- w:=आइटम[2]
- u :=u - 1
- v :=v - 1
- min_weight =min(G[u, v], w)
- G[u, v] :=min_weight
- G[v, u] :=min_weight
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def mst_find(G, s):दूरी =[float("inf")] * len(G) दूरी[s] =0 itr =[False] * len(G) c =0 जबकि True:min_weight =फ्लोट ("इनफ") m_idx =-1 के लिए मैं रेंज में (लेन (जी)):अगर आईटीआर [i] ==गलत:अगर दूरी [i] इनपुट
4, [(1, 2, 5), (1, 3, 5), (2, 3, 7), (1, 4, 4)], 3
आउटपुट
14