Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> प्रोग्रामिंग

नुथ-मॉरिस-प्रैट एल्गोरिथम


नुथ मॉरिस प्रैट (KMP) एक एल्गोरिथम है, जो बाएं से दाएं वर्णों की जांच करता है। जब किसी पैटर्न में एक उप-पैटर्न उप-पैटर्न में एक से अधिक दिखाई देता है, तो यह उस संपत्ति का उपयोग समय की जटिलता को बेहतर बनाने के लिए करता है, वह भी सबसे खराब स्थिति में।

KMP की समय जटिलता O(n) है।

इनपुट और आउटपुट

इनपुट:मुख्य स्ट्रिंग:"AAAAABAAAAABBBAAAAB", पैटर्न "AAAB" आउटपुट:पैटर्न स्थान पर मिला:1 पैटर्न स्थान पर मिला:7 पैटर्न स्थान पर मिला:14

एल्गोरिदम

findPrefix(pattern, m, prefArray)

इनपुट - पैटर्न, पैटर्न की लंबाई और उपसर्ग स्थान को संग्रहीत करने के लिए एक सरणी

आउटपुट - संग्रह करने के लिए सरणी जहां उपसर्ग स्थित हैं

प्रारंभ लंबाई:=0 prefArray[0] :=0 पैटर्न के सभी वर्ण अनुक्रमणिका 'i' के लिए, यदि पैटर्न[i] =पैटर्न[लंबाई] करें, तो लंबाई को 1 prefArray[i] :=लंबाई और बढ़ाएं यदि लंबाई 0 है तो लंबाई:=प्रीफ़एरे [लंबाई - 1] मैं 1 और घटाता हूं प्रीफ़एरे [i]:=0 किया गया अंत

kmpएल्गोरिदम(पाठ, पैटर्न)

इनपुट: मुख्य पाठ और पैटर्न, जिसे खोजा जाएगा

आउटपुट - वह स्थान जहाँ पैटर्न पाए जाते हैं

प्रारंभ n :=टेक्स्ट का आकार m :=पैटर्न कॉल का आकार findPrefix(pattern, m, prefArray) जबकि i  

उदाहरण

#शामिल करेंनेमस्पेस std का उपयोग करके;void findPrefix(string pattern, int m, int prefArray[]) { int length =0; प्रीफ़अरे [0] =0; // पहला स्थान हमेशा 0 होता है क्योंकि कोई उपसर्ग नहीं होता है (int i =1; i 

आउटपुट

स्थान पर पैटर्न मिला:1स्थान पर पैटर्न मिला:7स्थान पर पैटर्न मिला:14

  1. फोर्ड फुलकर्सन एल्गोरिथम

    फोर्ड-फुलकर्सन एल्गोरिथम का उपयोग किसी दिए गए ग्राफ में प्रारंभ शीर्ष से सिंक शीर्ष तक अधिकतम प्रवाह का पता लगाने के लिए किया जाता है। इस ग्राफ में हर किनारे की क्षमता है। स्रोत और सिंक नाम के दो शीर्ष दिए गए हैं। स्रोत शीर्ष में सभी बाहरी किनारे हैं, कोई अंदरूनी किनारा नहीं है, और सिंक में सभी अंदर

  1. फ्लोयड वारशाल एल्गोरिथम

    Floyd-Warshall एल्गोरिदम का उपयोग किसी दिए गए भारित ग्राफ से सभी जोड़ी सबसे छोटी पथ समस्या को खोजने के लिए किया जाता है। इस एल्गोरिथम के परिणामस्वरूप, यह एक मैट्रिक्स उत्पन्न करेगा, जो ग्राफ़ में किसी भी नोड से अन्य सभी नोड्स के लिए न्यूनतम दूरी का प्रतिनिधित्व करेगा। सबसे पहले, आउटपुट मैट्रिक्स

  1. C++ में Z एल्गोरिथम (रैखिक समय पैटर्न खोज एल्गोरिथम)

    Z एल्गोरिथम रैखिक समय में एक स्ट्रिंग में एक पैटर्न की घटना को खोजने के लिए प्रयोग किया जाता है। मान लीजिए यदि स्ट्रिंग की लंबाई n है और खोजे जाने वाले पैटर्न का आकार m है, तो हल करने में लगने वाला समय O(m+n) के क्रम का होगा। । z-एल्गोरिदम एक पैटर्न की घटना को खोजने के लिए एक Z सरणी का उपयोग करता ह