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

परिमित ऑटोमेटा का कुशल निर्माण


Finite Automata का निर्माण करके, हम केवल टेक्स्ट में पैटर्न खोज कर सकते हैं। सबसे पहले, हमें परिमित ऑटोमेटा की संक्रमण तालिका बनाने के लिए एक 2D सरणी भरनी होगी। एक बार तालिका बन जाने के बाद, खोज प्रक्रिया सरल है। ऑटोमेटन की पहली अवस्था से शुरू करके, जब हम अंतिम अवस्था में पहुँचते हैं, तो इसका मतलब है कि पैटर्न स्ट्रिंग में पाया जाता है।

परिमित ऑटोमेटा निर्माण के लिए, समय जटिलता ओ (एम * के) है, एम पैटर्न की लंबाई है और के कई अलग-अलग वर्ण हैं। मुख्य पैटर्न खोज की जटिलता O(n) है।

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

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

एल्गोरिदम

fillTransTable(पैटर्न, ट्रांसटेबल)

इनपुट - संक्रमण से भरने के लिए पैटर्न और संक्रमण तालिका

आउटपुट - भरी हुई ट्रांज़िशन टेबल

Begin longPS :=0 ट्रांज़िशन टेबल की सभी प्रविष्टियों को 0 ट्रांसटेबल के साथ साफ़ करें [0, पटर [0]] =1 // पैटर्न में मौजूद सभी कैरेक्टर के इंडेक्स के लिए पैटर्न के पहले कैरेक्टर के लिए, हर संभव के लिए करें वर्ण, ट्रांसटेबल करें [i, j]:=ट्रांसटेबल [लॉन्गपीएस, जे] ट्रांसटेबल [i, पैटर्न [i]] किया:=i+1 अगर मैं <पैटर्न आकार, फिर लॉन्गपीएस:=ट्रांसटेबल [लॉन्गपीएस, पैटर्न [i] ] हो गयाअंत

पैटर्न खोज (पाठ, पैटर्न)

इनपुट - मुख्य पाठ और पैटर्न

आउटपुट - सूचकांक, जहां पैटर्न पाए जाते हैं।

पेटलेन शुरू करें:=पैटर्न लंबाई strLen:=स्ट्रिंग लंबाई कॉल fillTransTable(pattern, transTable) वर्तमान:=0 सभी वर्ण की अनुक्रमणिका i टेक्स्ट के लिए, प्रस्तुत करें:=ट्रांसटेबल [वर्तमान, टेक्स्ट [i]] यदि मौजूद है =patLen , फिर स्थान प्रिंट करें (i – patLen +1) जैसा कि किया गया पैटर्न हैअंत

उदाहरण

#include#define MAXCHAR 256 नेमस्पेस एसटीडी का उपयोग कर; शून्य भरण ट्रांज़िशनटेबल (स्ट्रिंग पैटर्न, इंट ट्रांसटेबल [][MAXCHAR]) {इंट लॉन्गपीएस =0; के लिए (int i =0; i  

आउटपुट

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

  1. HTML पैटर्न विशेषता

    HTML पैटर्न विशेषता एक नियमित अभिव्यक्ति को परिभाषित करती है जिसके विरुद्ध HTML दस्तावेज़ में HTML तत्व का मान मेल खाता है। सिंटैक्स निम्नलिखित वाक्य रचना है - <input pattern=”regular expression”> आइए HTML पैटर्न विशेषता का एक उदाहरण देखें - उदाहरण <!DOCTYPE html> <html&

  1. सी प्रोग्राम नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटा (एनएफए) का अनुकरण करने के लिए

    इस समस्या में, हम गैर-नियतात्मक परिमित ऑटोमेटा (NFA) का अनुकरण करने के लिए एक C प्रोग्राम बनाएंगे। एनएफए (गैर-नियतात्मक परिमित ऑटोमेटा) परिमित राज्य मशीन जो एक इनपुट प्रतीक के लिए राज्यों के किसी भी संयोजन में जा सकती है यानी कोई सटीक स्थिति नहीं है जिसमें मशीन चलती है। NDFA की औपचारिक परिभाषा -

  1. सी . में प्रिंटिंग हार्ट पैटर्न

    इस कार्यक्रम में हम देखेंगे कि सी में दिल के आकार का पैटर्न कैसे प्रिंट किया जाता है। दिल के आकार का पैटर्न इस तरह दिखेगा अब अगर हम इस पैटर्न का विश्लेषण करें, तो हम इस पैटर्न में अलग-अलग सेक्शन पा सकते हैं। हृदय का आधार एक उल्टा त्रिभुज है; ऊपरी हिस्से में दो अलग-अलग चोटियाँ हैं। इन दोनों चोटियो