एक ग्राफ पर विचार करें , हम जानना चाहते हैं कि क्या एक ही लंबाई के ए से बी तक दो अलग-अलग रास्ते हैं । क्या करें? सरल: एक में कोड दो पथ। परिभाषित ग्राफ जी ' के साथ कोने वी × वी × { 0 , 1 } । आप में एक कदम बनाने के जी ' में दो स्वतंत्र चरणों बनाकर जी । अतिरिक्त बिट आपको बताता है कि क्या दो रास्ते पहले से ही एक दूसरे से अलग हो गए हैं।GABG′V×V×{0,1}G′G
औपचारिक रूप से, वहाँ एक बढ़त है में जी ' iff मैं → मैं ' , जे → j ' में जी और ई ' = ई ∨ ( मैं , मैं ' ) ≠ ( जे , जे ' ) ।(i,j,e)→(i′,j′,e′)G′i→i′j→j′Ge′=e∨(i,i′)≠(j,j′)
एल्गोरिथ्म यह जाँचता है कि जी ′ में कोई रास्ता से ( B , B , 1 ) है , जो O ( V 4 ) है , या O ( ( V + E ) 2 ) जैसा कुछ है ।(A,A,0)(B,B,1)G′O(V4)O((V+E)2)
अगर आप सहमत हैं इस एल्गोरिथ्म तो सही है, एक परिणाम के रूप में पथ ज्यादा से ज्यादा लंबाई की है 2 एन 2 , इसलिए संभावित "पथ टकराव" है कि विस्तार से नवीनतम होने चाहिए। आप एक प्राप्त कर सकते हैं हे ( वी ω लॉग वी ) इस अवलोकन, जहां से एल्गोरिथ्म ω आव्यूह गुणन जटिलता (पूछना अगर तुम एक स्पॉइलर जरूरत है ...) है।G′2n2O(VωlogV)ω
मुझे दृढ़ता से लगता है कि एक एल्गोरिथ्म है, जो समस्या की संरचना का अधिक उपयोग करता है।O(V+E)