एक निर्देशित ग्राफ दिया गया है। अन्य दो शीर्ष u और v भी दिए गए हैं, u आरंभिक शीर्ष है, और v अंतिम शीर्ष है। हमारा काम ठीक k किनारों के साथ शीर्ष u से v तक कई पैदल चलना है। एल्गोरिथम में k का मान भी दिया गया है।
डायनेमिक प्रोग्रामिंग का उपयोग करके, हमें एक 3D तालिका बनाने की आवश्यकता है, जहां पंक्ति u के मानों को इंगित करेगी, कॉलम v मानों को इंगित करेगा और गहराई का उपयोग शुरू से अंत तक किनारों की संख्या को ट्रैक करने के लिए किया जाएगा।
इनपुट और आउटपुट
इनपुट:ग्राफ का आसन्न मैट्रिक्स:गंतव्य शीर्ष 3 है। K =20 1 1 10 0 0 10 0 0 10 0 0 0आउटपुट:2 संभावित वॉक हैं, 0 से 3 तक 2 किनारों के साथ।पूर्व>एल्गोरिदम
numberOdWalks(u, v, k)इनपुट: प्रारंभ शीर्ष u, अंतिम शीर्ष v, किनारों की संख्या k.
आउटपुट: k किनारों के साथ संभावित चलने की संख्या।
आरंभ करें 3डी एरे काउंट ऑफ ऑर्डर को परिभाषित करें (nxnx k+1) //n 0 से k की सीमा में किनारे के लिए शीर्षों की संख्या है, i के लिए 0 से n-1 की सीमा में करें, j के लिए 0 से n की सीमा में करें -1, गिनें [i, j, edge] :=0 अगर edge =0 और i =j, तो count[i, j, edge] :=1 अगर edge =1 और (i, j) जुड़ा है, तो गिनती [i, j, किनारे]:=1 अगर किनारे> 1 है, तो 0 से n तक की श्रेणी के लिए, और साथ में मैं गिनती करता हूं [i, j, किनारे]:=गिनती [i, j, किनारे] + गिनती [ए, जे, एज - 1] किया हुआ किया हुआ रिटर्न काउंट [यू, वी, के]एंडउदाहरण
#शामिल करें 0, 1}, {0, 0, 0, 0}}; int numberOfWalks (int u, int v, int k) {int count[NODE][NODE][k+1]; for (int edge =0; edge <=k; edge++) {// k किनारों के लिए (0..k) for (int i =0; i1) {// के लिए एक से अधिक किनारों के लिए (int a =0; a आउटपुट
2 संभावित वॉक हैं, 0 से 3 तक 2 किनारों के साथ।