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

जेड एल्गोरिथम


इस एल्गोरिथम को Z एल्गोरिथम नाम दिया गया है, क्योंकि इस एल्गोरिथम में, हमें एक Z सरणी बनाने की आवश्यकता है। Z सरणी का आकार टेक्स्ट आकार के समान है। इस सरणी का उपयोग मुख्य स्ट्रिंग के वर्तमान वर्ण से शुरू होने वाले सबसे लंबे समय तक संभव सबस्ट्रिंग की लंबाई को संग्रहीत करने के लिए किया जाता है। सबसे पहले, पैटर्न और मुख्य पाठ को एक विशेष प्रतीक के साथ जोड़ा जाता है जो पाठ और पैटर्न में मौजूद नहीं होता है। यदि पी पैटर्न है और टी मुख्य पाठ है, तो संयोजन के बाद, यह पी $ टी होगा (मान लें कि पी और टी में $ मौजूद नहीं है)।

इस एल्गोरिथ्म के लिए, समय जटिलता O(m+n) है क्योंकि m पैटर्न की लंबाई है और n मुख्य स्ट्रिंग की लंबाई है।

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

इनपुट:मुख्य स्ट्रिंग:"ABAAABCDBBABCDDEBCABC", पैटर्न:"एबीसी" आउटपुट:स्थिति पर पाया गया पैटर्न:स्थिति पर 4 पैटर्न मिला:स्थिति पर 10 पैटर्न मिला:18

एल्गोरिदम

fillZArray (conStr, ZArray)

इनपुट - conStr पैटर्न और मुख्य पाठ की संयुक्त स्ट्रिंग है। सबसे लंबे समय तक संभव सबस्ट्रिंग के इंडेक्स को स्टोर करने के लिए ZArray।

आउटपुट - भरा हुआ ZArray

आरंभ n:=conStr windLeft की लंबाई:=0 और windRight:=0 i के लिए:=1 से n, अगर i> windRight, फिर windLeft:=i और windRight:=i जबकि windRight  

zAlgorithm(पाठ, पैटर्न)

इनपुट - मुख्य पाठ और खोजने के लिए पैटर्न

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

 कॉन्सट्र =कॉन्टेनेट पैटर्न + "$" + टेक्स्ट पेटलेन शुरू करें:=पैटर्न लेन की लंबाई:=कॉन्स्ट्र लंबाई भरने ज़ेडएरे (कॉन्स्ट्र, जेडएरे) i के लिए:=0 से लेन -1, अगर ZArray [i] =patLen, फिर लोकेशन प्रिंट करें i – patLen – 1 didEnd

उदाहरण

#शामिल करेंनेमस्पेस std का उपयोग करना;void fillZArray(string conStr, int zArr[]) { int n =conStr.size(); इंट विंडलेफ्ट, विंडराइट, के; विंडलेफ्ट =विंडराइट =0; // प्रारंभ में विंडो का आकार 0 के लिए (int i =1; i  windRight) {windLeft =windRight =i; // विंडो का आकार 0 है, लेकिन स्थिति i जबकि (windRight  

आउटपुट

पैटर्न स्थिति में मिला:4Pattern स्थिति पर मिला:10Pattern स्थिति में मिला:18

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

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

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

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

  1. एल्गोरिथम विशिष्टता-डेटा संरचना में परिचय

    एक एल्गोरिदम को निर्देशों के एक सीमित सेट के रूप में परिभाषित किया जाता है, जिसका पालन किया जाता है, तो एक विशेष कार्य करता है। सभी एल्गोरिदम को निम्नलिखित मानदंडों को पूरा करना चाहिए इनपुट एक एल्गोरिथम में शून्य या अधिक इनपुट होते हैं, वस्तुओं के निर्दिष्ट सेट से लिए या एकत्र किए जाते हैं। आउटपुट