स्ट्रिंग ऑपरेशन: Difference between revisions

From Vigyanwiki
No edit summary
Line 1: Line 1:
[[कंप्यूटर विज्ञान]] में, [[औपचारिक भाषा सिद्धांत]] के क्षेत्र में, विभिन्न प्रकार के [[स्ट्रिंग फ़ंक्शंस|स्ट्रिंग फलनो]] का लगातार उपयोग किया जाता है, हालाँकि, उपयोग किया गया नोटेशन [[कंप्यूटर प्रोग्रामिंग]] के लिए उपयोग किए जाने वाले नोटेशन से भिन्न है, और सैद्धांतिक क्षेत्र में आमतौर पर उपयोग किए जाने वाले कुछ फ़ंक्शन प्रोग्रामिंग करते समय शायद ही कभी उपयोग किए जाते हैं। यह आलेख इनमें से कुछ बुनियादी शब्दों को परिभाषित करता है।
[[कंप्यूटर विज्ञान]] में, [[औपचारिक भाषा सिद्धांत]] के क्षेत्र में, विभिन्न प्रकार के [[स्ट्रिंग फ़ंक्शंस|रज्जु फलनो]] का लगातार उपयोग किया जाता है, हालाँकि, उपयोग किया गया संकेतन [[कंप्यूटर प्रोग्रामिंग]] के लिए उपयोग किए जाने वाले संकेतन से भिन्न है, और सैद्धांतिक क्षेत्र में आमतौर पर उपयोग किए जाने वाले कुछ फलन प्रोग्रामिंग करते समय शायद ही कभी उपयोग किए जाते हैं। यह आलेख इनमें से कुछ मूल शब्दों को परिभाषित करता है।


==स्ट्रिंग्स और भाषाएँ==
==स्ट्रिंग्स और भाषाएँ==
एक स्ट्रिंग वर्णों का एक सीमित अनुक्रम है।
एक रज्जु वर्णों का एक सीमित अनुक्रम है।
[[खाली स्ट्रिंग]] को इसके द्वारा निरूपित किया जाता है <math>\varepsilon</math>.
[[खाली स्ट्रिंग|खाली]] रज्जु को इसके द्वारा निरूपित किया जाता है <math>\varepsilon</math>.
दो तारों का संयोजन <math>s</math> और <math>t</math> द्वारा निरूपित किया जाता है <math>s \cdot t</math>, या इससे छोटा <math>s t</math>.
दो तारों का संयोजन <math>s</math> और <math>t</math> द्वारा निरूपित किया जाता है <math>s \cdot t</math>, या इससे छोटा <math>s t</math>.
खाली स्ट्रिंग के साथ संयोजन करने से कोई फर्क नहीं पड़ता: <math>s \cdot \varepsilon = s = \varepsilon \cdot s</math>.
खाली रज्जु के साथ संयोजन करने से कोई फर्क नहीं पड़ता: <math>s \cdot \varepsilon = s = \varepsilon \cdot s</math>.
तारों का संयोजन साहचर्य है: <math>s \cdot (t \cdot u) = (s \cdot t) \cdot u</math>.
तारों का संयोजन साहचर्य है: <math>s \cdot (t \cdot u) = (s \cdot t) \cdot u</math>.


Line 12: Line 12:
एक [[भाषा (कंप्यूटर विज्ञान)]] स्ट्रिंग्स का एक सीमित या अनंत सेट है।
एक [[भाषा (कंप्यूटर विज्ञान)]] स्ट्रिंग्स का एक सीमित या अनंत सेट है।
यूनियन, इंटरसेक्शन आदि जैसे सामान्य सेट ऑपरेशन के अलावा, कॉन्सटेनेशन को भाषाओं पर लागू किया जा सकता है:
यूनियन, इंटरसेक्शन आदि जैसे सामान्य सेट ऑपरेशन के अलावा, कॉन्सटेनेशन को भाषाओं पर लागू किया जा सकता है:
अगर दोनों <math>S</math> और <math>T</math> भाषाएँ हैं, उनका संयोजन है <math>S \cdot T</math> किसी भी स्ट्रिंग के संयोजन के सेट के रूप में परिभाषित किया गया है <math>S</math> और किसी भी स्ट्रिंग से <math>T</math>, औपचारिक रूप से <math>S \cdot T = \{ s \cdot t \mid s \in S \land t \in T \}</math>.
अगर दोनों <math>S</math> और <math>T</math> भाषाएँ हैं, उनका संयोजन है <math>S \cdot T</math> किसी भी रज्जु के संयोजन के सेट के रूप में परिभाषित किया गया है <math>S</math> और किसी भी रज्जु से <math>T</math>, औपचारिक रूप से <math>S \cdot T = \{ s \cdot t \mid s \in S \land t \in T \}</math>.
पुनः, सम्मिलन बिंदु <math>\cdot</math> संक्षिप्तता के लिए अक्सर छोड़ दिया जाता है।
पुनः, सम्मिलन बिंदु <math>\cdot</math> संक्षिप्तता के लिए अक्सर छोड़ दिया जाता है।


भाषा <math>\{\varepsilon\}</math> केवल खाली स्ट्रिंग को खाली भाषा से अलग करना है <math>\{\}</math>.
भाषा <math>\{\varepsilon\}</math> केवल खाली रज्जु को खाली भाषा से अलग करना है <math>\{\}</math>.
किसी भी भाषा को पहली भाषा के साथ जोड़ने से कोई परिवर्तन नहीं होता है: <math>S \cdot \{\varepsilon\} = S = \{\varepsilon\} \cdot S</math>,
किसी भी भाषा को पहली भाषा के साथ जोड़ने से कोई परिवर्तन नहीं होता है: <math>S \cdot \{\varepsilon\} = S = \{\varepsilon\} \cdot S</math>,
जबकि उत्तरार्द्ध के साथ संयोजन करने पर हमेशा खाली भाषा उत्पन्न होती है: <math>S \cdot \{\} = \{\} = \{\} \cdot S</math>.
जबकि उत्तरार्द्ध के साथ संयोजन करने पर हमेशा खाली भाषा उत्पन्न होती है: <math>S \cdot \{\} = \{\} = \{\} \cdot S</math>.
Line 22: Line 22:
उदाहरण के लिए, संक्षिप्त करना <math>D = \{ \langle 0 \rangle, \langle 1 \rangle, \langle 2 \rangle, \langle 3 \rangle, \langle 4 \rangle, \langle 5 \rangle, \langle 6 \rangle, \langle 7 \rangle, \langle 8 \rangle, \langle 9 \rangle \}</math>, सभी तीन अंकों वाली दशमलव संख्याओं का समुच्चय इस प्रकार प्राप्त होता है <math>D \cdot D \cdot D</math>. मनमानी लंबाई की सभी दशमलव संख्याओं का सेट एक अनंत भाषा के लिए एक उदाहरण है।
उदाहरण के लिए, संक्षिप्त करना <math>D = \{ \langle 0 \rangle, \langle 1 \rangle, \langle 2 \rangle, \langle 3 \rangle, \langle 4 \rangle, \langle 5 \rangle, \langle 6 \rangle, \langle 7 \rangle, \langle 8 \rangle, \langle 9 \rangle \}</math>, सभी तीन अंकों वाली दशमलव संख्याओं का समुच्चय इस प्रकार प्राप्त होता है <math>D \cdot D \cdot D</math>. मनमानी लंबाई की सभी दशमलव संख्याओं का सेट एक अनंत भाषा के लिए एक उदाहरण है।


==एक स्ट्रिंग की वर्णमाला==
==एक रज्जु की वर्णमाला==
एक स्ट्रिंग की वर्णमाला उन सभी वर्णों का समूह है जो एक विशेष स्ट्रिंग में होते हैं। यदि ''s'' एक स्ट्रिंग है, तो इसका [[वर्णमाला (कंप्यूटर विज्ञान)]] द्वारा दर्शाया जाता है
एक रज्जु की वर्णमाला उन सभी वर्णों का समूह है जो एक विशेष रज्जु में होते हैं। यदि ''s'' एक रज्जु है, तो इसका [[वर्णमाला (कंप्यूटर विज्ञान)]] द्वारा दर्शाया जाता है


:<math>\operatorname{Alph}(s)</math>
:<math>\operatorname{Alph}(s)</math>
किसी भाषा की वर्णमाला <math>S</math> किसी भी स्ट्रिंग में आने वाले सभी वर्णों का समूह है <math>S</math>, औपचारिक रूप से:
किसी भाषा की वर्णमाला <math>S</math> किसी भी रज्जु में आने वाले सभी वर्णों का समूह है <math>S</math>, औपचारिक रूप से:
<math>\operatorname{Alph}(S) = \bigcup_{s \in S} \operatorname{Alph}(s)</math>.
<math>\operatorname{Alph}(S) = \bigcup_{s \in S} \operatorname{Alph}(s)</math>.


उदाहरण के लिए, सेट <math>\{\langle a \rangle,\langle c \rangle,\langle o \rangle\}</math> स्ट्रिंग का वर्णमाला है <math>\langle cacao \rangle</math>,
उदाहरण के लिए, सेट <math>\{\langle a \rangle,\langle c \rangle,\langle o \rangle\}</math> रज्जु का वर्णमाला है <math>\langle cacao \rangle</math>,
और #स्ट्रिंग्स_और_भाषाएँ <math>D</math> #स्ट्रिंग्स_एंड_लैंग्वेजेज भाषा की वर्णमाला है <math>D \cdot D \cdot D</math> साथ ही सभी दशमलव संख्याओं की भाषा भी।
और #स्ट्रिंग्स_और_भाषाएँ <math>D</math> #स्ट्रिंग्स_एंड_लैंग्वेजेज भाषा की वर्णमाला है <math>D \cdot D \cdot D</math> साथ ही सभी दशमलव संख्याओं की भाषा भी।


==स्ट्रिंग प्रतिस्थापन==
==रज्जु प्रतिस्थापन==
मान लीजिए L एक भाषा (कंप्यूटर विज्ञान) है, और मान लीजिए कि Σ इसकी वर्णमाला है। एक 'स्ट्रिंग प्रतिस्थापन' या बस एक 'प्रतिस्थापन' एक मैपिंग एफ है जो Σ में वर्णों को भाषाओं में मैप करता है (संभवतः एक अलग वर्णमाला में)। इस प्रकार, उदाहरण के लिए, एक अक्षर a ∈ Σ दिया गया है, तो किसी के पास f(a)=L है<sub>''a''</sub> जहां एल<sub>''a''</sub> ⊆ Δक्लीन स्टार|<sup>*</sup> कुछ भाषा है जिसकी वर्णमाला Δ है। इस मैपिंग को स्ट्रिंग्स तक बढ़ाया जा सकता है
मान लीजिए L एक भाषा (कंप्यूटर विज्ञान) है, और मान लीजिए कि Σ इसकी वर्णमाला है। एक 'रज्जु प्रतिस्थापन' या बस एक 'प्रतिस्थापन' एक मैपिंग एफ है जो Σ में वर्णों को भाषाओं में मैप करता है (संभवतः एक अलग वर्णमाला में)। इस प्रकार, उदाहरण के लिए, एक अक्षर a ∈ Σ दिया गया है, तो किसी के पास f(a)=L है<sub>''a''</sub> जहां एल<sub>''a''</sub> ⊆ Δक्लीन स्टार|<sup>*</sup> कुछ भाषा है जिसकी वर्णमाला Δ है। इस मैपिंग को स्ट्रिंग्स तक बढ़ाया जा सकता है


:f(ε)=ε
:f(ε)=ε


खाली स्ट्रिंग ε के लिए, और
खाली रज्जु ε के लिए, और


:f(sa)=f(s)f(a)
:f(sa)=f(s)f(a)


स्ट्रिंग s ∈ L और वर्ण a ∈ Σ के लिए। स्ट्रिंग प्रतिस्थापन को संपूर्ण भाषाओं तक बढ़ाया जा सकता है <ref>Hopcroft, Ullman (1979), Sect.3.2, p.60</ref>
रज्जु s ∈ L और वर्ण a ∈ Σ के लिए। रज्जु प्रतिस्थापन को संपूर्ण भाषाओं तक बढ़ाया जा सकता है <ref>Hopcroft, Ullman (1979), Sect.3.2, p.60</ref>
:<math>f(L)=\bigcup_{s\in L} f(s)</math>
:<math>f(L)=\bigcup_{s\in L} f(s)</math>
[[नियमित भाषा]]एँ स्ट्रिंग प्रतिस्थापन के अंतर्गत बंद हैं। अर्थात्, यदि किसी नियमित भाषा की वर्णमाला में प्रत्येक वर्ण को किसी अन्य नियमित भाषा द्वारा प्रतिस्थापित किया जाता है, तो परिणाम अभी भी एक नियमित भाषा ही है।<ref>Hopcroft, Ullman (1979), Sect.3.2, Theorem 3.4, p.60</ref>
[[नियमित भाषा]]एँ रज्जु प्रतिस्थापन के अंतर्गत बंद हैं। अर्थात्, यदि किसी नियमित भाषा की वर्णमाला में प्रत्येक वर्ण को किसी अन्य नियमित भाषा द्वारा प्रतिस्थापित किया जाता है, तो परिणाम अभी भी एक नियमित भाषा ही है।<ref>Hopcroft, Ullman (1979), Sect.3.2, Theorem 3.4, p.60</ref>
इसी प्रकार, [[संदर्भ-मुक्त भाषा]]एँ स्ट्रिंग प्रतिस्थापन के अंतर्गत बंद हो जाती हैं।<ref>Hopcroft, Ullman (1979), Sect.6.2, Theorem 6.2, p.131</ref><ref group="note">Although every regular language is also context-free, the previous theorem is not implied by the current one, since the former yields a shaper result for regular languages.</ref>
इसी प्रकार, [[संदर्भ-मुक्त भाषा]]एँ रज्जु प्रतिस्थापन के अंतर्गत बंद हो जाती हैं।<ref>Hopcroft, Ullman (1979), Sect.6.2, Theorem 6.2, p.131</ref><ref group="note">Although every regular language is also context-free, the previous theorem is not implied by the current one, since the former yields a shaper result for regular languages.</ref>
एक सरल उदाहरण रूपांतरण एफ है<sub>uc</sub>(.) को अपरकेस में, जिसे परिभाषित किया जा सकता है जैसे निम्नलिखित नुसार:
एक सरल उदाहरण रूपांतरण एफ है<sub>uc</sub>(.) को अपरकेस में, जिसे परिभाषित किया जा सकता है जैसे निम्नलिखित नुसार:


Line 72: Line 72:
* एफ<sub>uc</sub>({ ‹सड़क›, ‹u2›, ‹जाओ!› }) = { ‹सड़क› } ∪ { ‹U› } ∪ { } = { ‹सड़क›, ‹U› }.
* एफ<sub>uc</sub>({ ‹सड़क›, ‹u2›, ‹जाओ!› }) = { ‹सड़क› } ∪ { ‹U› } ∪ { } = { ‹सड़क›, ‹U› }.


==स्ट्रिंग समरूपता==
==रज्जु समरूपता==
एक स्ट्रिंग होमोमोर्फिज्म (अक्सर औपचारिक भाषा सिद्धांत में औपचारिक भाषा सिद्धांत में होमोमोर्फिज्म#होमोमोर्फिज्म और ई-मुक्त होमोमोर्फिज्म के रूप में संदर्भित) एक स्ट्रिंग प्रतिस्थापन है जैसे कि प्रत्येक वर्ण को एक स्ट्रिंग द्वारा प्रतिस्थापित किया जाता है। वह है, <math>f(a)=s</math>, कहाँ <math>s</math> प्रत्येक वर्ण के लिए एक स्ट्रिंग है <math>a</math>.<ref group="note" name="singleton sets">Strictly formally, a homomorphism yields a language consisting of just one string, i.e. <math>f(a) = {s}</math>.</ref><ref>Hopcroft, Ullman (1979), Sect.3.2, p.60-61</ref>
एक रज्जु होमोमोर्फिज्म (अक्सर औपचारिक भाषा सिद्धांत में औपचारिक भाषा सिद्धांत में होमोमोर्फिज्म#होमोमोर्फिज्म और ई-मुक्त होमोमोर्फिज्म के रूप में संदर्भित) एक रज्जु प्रतिस्थापन है जैसे कि प्रत्येक वर्ण को एक रज्जु द्वारा प्रतिस्थापित किया जाता है। वह है, <math>f(a)=s</math>, कहाँ <math>s</math> प्रत्येक वर्ण के लिए एक रज्जु है <math>a</math>.<ref group="note" name="singleton sets">Strictly formally, a homomorphism yields a language consisting of just one string, i.e. <math>f(a) = {s}</math>.</ref><ref>Hopcroft, Ullman (1979), Sect.3.2, p.60-61</ref>
स्ट्रिंग होमोमोर्फिज्म मुक्त मोनोइड [[मुफ़्त मोनॉयड]] आकारिकी हैं, जो खाली स्ट्रिंग और [[स्ट्रिंग संयोजन]] के [[बाइनरी ऑपरेशन]] को संरक्षित करते हैं। एक भाषा दी गई <math>L</math>, सेट <math>f(L)</math> की समरूपी छवि कहलाती है <math>L</math>. एक स्ट्रिंग की व्युत्क्रम समरूपी छवि <math>s</math> परिभाषित किया जाता है
रज्जु होमोमोर्फिज्म मुक्त मोनोइड [[मुफ़्त मोनॉयड]] आकारिकी हैं, जो खाली रज्जु और [[स्ट्रिंग संयोजन|रज्जु संयोजन]] के [[बाइनरी ऑपरेशन]] को संरक्षित करते हैं। एक भाषा दी गई <math>L</math>, सेट <math>f(L)</math> की समरूपी छवि कहलाती है <math>L</math>. एक रज्जु की व्युत्क्रम समरूपी छवि <math>s</math> परिभाषित किया जाता है


<math>f^{-1}(s) = \{ w | f(w) = s \}</math>
<math>f^{-1}(s) = \{ w | f(w) = s \}</math>
Line 89: Line 89:


नियमित भाषाओं का वर्ग समरूपता और व्युत्क्रम समरूपता के अंतर्गत बंद है।<ref>Hopcroft, Ullman (1979), Sect.3.2, Theorem 3.5, p.61</ref> इसी प्रकार, संदर्भ-मुक्त भाषाएँ समरूपता के अंतर्गत बंद हैं<ref group="note">This follows from the [[#String substitution|above-mentioned]] closure under arbitrary substitutions.</ref> और व्युत्क्रम समरूपताएँ।<ref>Hopcroft, Ullman (1979), Sect.6.2, Theorem 6.3, p.132</ref>
नियमित भाषाओं का वर्ग समरूपता और व्युत्क्रम समरूपता के अंतर्गत बंद है।<ref>Hopcroft, Ullman (1979), Sect.3.2, Theorem 3.5, p.61</ref> इसी प्रकार, संदर्भ-मुक्त भाषाएँ समरूपता के अंतर्गत बंद हैं<ref group="note">This follows from the [[#String substitution|above-mentioned]] closure under arbitrary substitutions.</ref> और व्युत्क्रम समरूपताएँ।<ref>Hopcroft, Ullman (1979), Sect.6.2, Theorem 6.3, p.132</ref>
एक स्ट्रिंग समरूपता को ε-मुक्त (या ई-मुक्त) कहा जाता है यदि <math>f(a) \neq \varepsilon</math> वर्णमाला में सभी के लिए <math>\Sigma</math>. सरल एकल-अक्षर [[प्रतिस्थापन सिफर]] (ε-मुक्त) स्ट्रिंग समरूपता के उदाहरण हैं।
एक रज्जु समरूपता को ε-मुक्त (या ई-मुक्त) कहा जाता है यदि <math>f(a) \neq \varepsilon</math> वर्णमाला में सभी के लिए <math>\Sigma</math>. सरल एकल-अक्षर [[प्रतिस्थापन सिफर]] (ε-मुक्त) रज्जु समरूपता के उदाहरण हैं।


एक उदाहरण स्ट्रिंग समरूपता जी<sub>uc</sub> #स्ट्रिंग_प्रतिस्थापन प्रतिस्थापन के समान परिभाषित करके भी प्राप्त किया जा सकता है: जी<sub>uc</sub>(‹ए›) = ‹ए›, ..., जी<sub>uc</sub>(‹0›) = ε, लेकिन g देना<sub>uc</sub> विराम चिन्हों पर अपरिभाषित रहें।
एक उदाहरण रज्जु समरूपता जी<sub>uc</sub> #स्ट्रिंग_प्रतिस्थापन प्रतिस्थापन के समान परिभाषित करके भी प्राप्त किया जा सकता है: जी<sub>uc</sub>(‹ए›) = ‹ए›, ..., जी<sub>uc</sub>(‹0›) = ε, लेकिन g देना<sub>uc</sub> विराम चिन्हों पर अपरिभाषित रहें।
  <!---omitted, since sloppy notation, anyway, see above---
  <!---omitted, since sloppy notation, anyway, see above---
Besides this restriction of its input domain, ''g''<sub>uc</sub> differs from ''f''<sub>uc</sub> by returning strings,<ref group=note name="singleton sets"/> while the latter returned singleton sets of strings.
Besides this restriction of its input domain, ''g''<sub>uc</sub> differs from ''f''<sub>uc</sub> by returning strings,<ref group=note name="singleton sets"/> while the latter returned singleton sets of strings.
Line 101: Line 101:
समरूपता जी<sub>uc</sub> यह ε-मुक्त नहीं है, क्योंकि यह उदाहरण के लिए मैप करता है। ‹0› से ε.
समरूपता जी<sub>uc</sub> यह ε-मुक्त नहीं है, क्योंकि यह उदाहरण के लिए मैप करता है। ‹0› से ε.


एक बहुत ही सरल स्ट्रिंग होमोमोर्फिज्म उदाहरण जो प्रत्येक वर्ण को केवल एक वर्ण में मैप करता है वह [[EBCDIC]]-एन्कोडेड स्ट्रिंग को [[ASCII]] में परिवर्तित करना है।
एक बहुत ही सरल रज्जु होमोमोर्फिज्म उदाहरण जो प्रत्येक वर्ण को केवल एक वर्ण में मैप करता है वह [[EBCDIC]]-एन्कोडेड रज्जु को [[ASCII]] में परिवर्तित करना है।


==स्ट्रिंग प्रक्षेपण==
==रज्जु प्रक्षेपण==
यदि s एक स्ट्रिंग है, और <math>\Sigma</math> एक वर्णमाला है, ''एस'' का स्ट्रिंग प्रक्षेपण वह स्ट्रिंग है जो उन सभी वर्णों को हटाकर परिणामित होता है जो इसमें नहीं हैं <math>\Sigma</math>. ऐसा लिखा है <math>\pi_\Sigma(s)\,</math>. इसे औपचारिक रूप से दाहिनी ओर से वर्णों को हटाकर परिभाषित किया गया है:
यदि s एक रज्जु है, और <math>\Sigma</math> एक वर्णमाला है, ''एस'' का रज्जु प्रक्षेपण वह रज्जु है जो उन सभी वर्णों को हटाकर परिणामित होता है जो इसमें नहीं हैं <math>\Sigma</math>. ऐसा लिखा है <math>\pi_\Sigma(s)\,</math>. इसे औपचारिक रूप से दाहिनी ओर से वर्णों को हटाकर परिभाषित किया गया है:


:<math>\pi_\Sigma(s) = \begin{cases}  
:<math>\pi_\Sigma(s) = \begin{cases}  
Line 111: Line 111:
\pi_\Sigma(t)a & \mbox{if } s=ta \mbox{ and } a \in \Sigma   
\pi_\Sigma(t)a & \mbox{if } s=ta \mbox{ and } a \in \Sigma   
\end{cases}</math>
\end{cases}</math>
यहाँ <math>\varepsilon</math> खाली स्ट्रिंग को दर्शाता है. एक स्ट्रिंग का प्रक्षेपण मूलतः [[संबंधपरक बीजगणित में प्रक्षेपण]] के समान है।
यहाँ <math>\varepsilon</math> खाली रज्जु को दर्शाता है. एक रज्जु का प्रक्षेपण मूलतः [[संबंधपरक बीजगणित में प्रक्षेपण]] के समान है।


किसी भाषा के प्रक्षेपण के लिए स्ट्रिंग प्रक्षेपण को बढ़ावा दिया जा सकता है। एक [[औपचारिक भाषा]] ''एल'' दी गई है, इसका प्रक्षेपण द्वारा दिया गया है
किसी भाषा के प्रक्षेपण के लिए रज्जु प्रक्षेपण को बढ़ावा दिया जा सकता है। एक [[औपचारिक भाषा]] ''एल'' दी गई है, इसका प्रक्षेपण द्वारा दिया गया है


:<math>\pi_\Sigma (L)=\{\pi_\Sigma(s)\ \vert\ s\in L \}</math>{{citation needed|date=August 2017}}
:<math>\pi_\Sigma (L)=\{\pi_\Sigma(s)\ \vert\ s\in L \}</math>{{citation needed|date=August 2017}}


== दायां और बायां भागफल ==
== दायां और बायां भागफल ==
एक स्ट्रिंग ''s'' से ''a'' वर्ण का दायां भागफल, दाहिनी ओर से स्ट्रिंग ''s'' में वर्ण ''a'' का कटाव है। इसे इस प्रकार दर्शाया गया है <math>s/a</math>. यदि स्ट्रिंग में दाहिनी ओर a नहीं है, तो परिणाम खाली स्ट्रिंग है। इस प्रकार:
एक रज्जु ''s'' से ''a'' वर्ण का दायां भागफल, दाहिनी ओर से रज्जु ''s'' में वर्ण ''a'' का कटाव है। इसे इस प्रकार दर्शाया गया है <math>s/a</math>. यदि रज्जु में दाहिनी ओर a नहीं है, तो परिणाम खाली रज्जु है। इस प्रकार:
<!---This definition deviates from Hopcroft.Ullman.1979, as remarked below. I guess the former doesn't have widespread use, if it has a source at all.--->
<!---This definition deviates from Hopcroft.Ullman.1979, as remarked below. I guess the former doesn't have widespread use, if it has a source at all.--->
: <math>(sa)/ b = \begin{cases}  
: <math>(sa)/ b = \begin{cases}  
Line 124: Line 124:
\varepsilon & \mbox{if } a \ne b
\varepsilon & \mbox{if } a \ne b
\end{cases}</math>
\end{cases}</math>
खाली स्ट्रिंग का भागफल लिया जा सकता है:
खाली रज्जु का भागफल लिया जा सकता है:
: <math>\varepsilon / a = \varepsilon</math>
: <math>\varepsilon / a = \varepsilon</math>
इसी प्रकार, एक उपसमुच्चय दिया गया है <math>S\subset M</math> एक मोनॉयड का <math>M</math>, कोई भागफल उपसमुच्चय को इस प्रकार परिभाषित कर सकता है
इसी प्रकार, एक उपसमुच्चय दिया गया है <math>S\subset M</math> एक मोनॉयड का <math>M</math>, कोई भागफल उपसमुच्चय को इस प्रकार परिभाषित कर सकता है
: <math>S/a=\{s\in M\ \vert\ sa\in S\}</math>
: <math>S/a=\{s\in M\ \vert\ sa\in S\}</math>
बाएँ भागफल को समान रूप से परिभाषित किया जा सकता है, जिसमें संचालन एक स्ट्रिंग के बाईं ओर होता है।{{citation needed|date=August 2017}}
बाएँ भागफल को समान रूप से परिभाषित किया जा सकता है, जिसमें संचालन एक रज्जु के बाईं ओर होता है।{{citation needed|date=August 2017}}


हॉपक्रॉफ्ट और उल्मैन (1979) भागफल एल को परिभाषित करते हैं<sub>1</sub>/एल<sub>2</sub> भाषाओं में से एल<sub>1</sub> और मैं<sub>2</sub> उसी वर्णमाला के ऊपर {{nowrap|1=''L''<sub>1</sub>/''L''<sub>2</sub> = {{mset| ''s'' {{!}} ∃''t''∈''L''<sub>2</sub>. ''st''∈''L''<sub>1</sub> }}}}.<ref>Hopcroft, Ullman (1979), Sect.3.2, p.62</ref>
हॉपक्रॉफ्ट और उल्मैन (1979) भागफल एल को परिभाषित करते हैं<sub>1</sub>/एल<sub>2</sub> भाषाओं में से एल<sub>1</sub> और मैं<sub>2</sub> उसी वर्णमाला के ऊपर {{nowrap|1=''L''<sub>1</sub>/''L''<sub>2</sub> = {{mset| ''s'' {{!}} ∃''t''∈''L''<sub>2</sub>. ''st''∈''L''<sub>1</sub> }}}}.<ref>Hopcroft, Ullman (1979), Sect.3.2, p.62</ref>
यह उपरोक्त परिभाषा का सामान्यीकरण नहीं है, क्योंकि, एक स्ट्रिंग एस और अलग-अलग वर्णों ए, बी के लिए, हॉपक्रॉफ्ट और उलमैन की परिभाषा का तात्पर्य है {{nowrap||{{mset|''sa''}} / {{mset|''b''}}}} उपज {{mset|}}, इसके बजाय {{mset| ε }}.
यह उपरोक्त परिभाषा का सामान्यीकरण नहीं है, क्योंकि, एक रज्जु एस और अलग-अलग वर्णों ए, बी के लिए, हॉपक्रॉफ्ट और उलमैन की परिभाषा का तात्पर्य है {{nowrap||{{mset|''sa''}} / {{mset|''b''}}}} उपज {{mset|}}, इसके बजाय {{mset| ε }}.


एक सिंगलटन भाषा L का बायाँ भागफल (जब हॉपक्रॉफ्ट और उलमैन 1979 के समान परिभाषित किया गया)<sub>1</sub> और एक मनमानी भाषा एल<sub>2</sub> [[ब्रज़ोज़ोस्की व्युत्पन्न]] के रूप में जाना जाता है; यदि एल<sub>2</sub> इसे [[ नियमित अभिव्यक्ति ]] द्वारा दर्शाया जाता है, इसलिए बायां भागफल भी हो सकता है।<ref>{{cite journal| author=Janusz A. Brzozowski| authorlink=Janusz Brzozowski (computer scientist)|title=रेगुलर एक्सप्रेशन के व्युत्पन्न| journal=J ACM| year=1964| volume=11| issue=4| pages=481–494| doi=10.1145/321239.321249| s2cid=14126942}}</ref>
एक सिंगलटन भाषा L का बायाँ भागफल (जब हॉपक्रॉफ्ट और उलमैन 1979 के समान परिभाषित किया गया)<sub>1</sub> और एक मनमानी भाषा एल<sub>2</sub> [[ब्रज़ोज़ोस्की व्युत्पन्न]] के रूप में जाना जाता है; यदि एल<sub>2</sub> इसे [[ नियमित अभिव्यक्ति ]] द्वारा दर्शाया जाता है, इसलिए बायां भागफल भी हो सकता है।<ref>{{cite journal| author=Janusz A. Brzozowski| authorlink=Janusz Brzozowski (computer scientist)|title=रेगुलर एक्सप्रेशन के व्युत्पन्न| journal=J ACM| year=1964| volume=11| issue=4| pages=481–494| doi=10.1145/321239.321249| s2cid=14126942}}</ref>
Line 146: Line 146:


==सही रद्दीकरण==
==सही रद्दीकरण==
एक स्ट्रिंग ''एस'' से ''ए'' अक्षर का सही रद्दीकरण दाईं ओर से शुरू होने वाली स्ट्रिंग ''एस'' में अक्षर ''ए'' की पहली घटना को हटाना है। इसे इस प्रकार दर्शाया गया है <math>s\div a</math> और इसे पुनरावर्ती रूप से परिभाषित किया गया है
एक रज्जु ''एस'' से ''ए'' अक्षर का सही रद्दीकरण दाईं ओर से शुरू होने वाली रज्जु ''एस'' में अक्षर ''ए'' की पहली घटना को हटाना है। इसे इस प्रकार दर्शाया गया है <math>s\div a</math> और इसे पुनरावर्ती रूप से परिभाषित किया गया है


:<math>(sa)\div b = \begin{cases}  
:<math>(sa)\div b = \begin{cases}  
Line 152: Line 152:
(s\div b)a & \mbox{if } a \ne b
(s\div b)a & \mbox{if } a \ne b
\end{cases}</math>
\end{cases}</math>
खाली स्ट्रिंग हमेशा रद्द करने योग्य होती है:
खाली रज्जु हमेशा रद्द करने योग्य होती है:


:<math>\varepsilon \div a = \varepsilon</math>
:<math>\varepsilon \div a = \varepsilon</math>
Line 160: Line 160:


==उपसर्ग==
==उपसर्ग==
एक स्ट्रिंग के उपसर्ग किसी दी गई भाषा के संबंध में, एक स्ट्रिंग के सभी उपसर्गों (कंप्यूटर विज्ञान) का सेट है:
एक रज्जु के उपसर्ग किसी दी गई भाषा के संबंध में, एक रज्जु के सभी उपसर्गों (कंप्यूटर विज्ञान) का सेट है:


:<math>\operatorname{Pref}_L(s) = \{t\ \vert\ s=tu \mbox { for } t,u\in \operatorname{Alph}(L)^*\}</math>
:<math>\operatorname{Pref}_L(s) = \{t\ \vert\ s=tu \mbox { for } t,u\in \operatorname{Alph}(L)^*\}</math>
Line 178: Line 178:


==यह भी देखें==
==यह भी देखें==
* [[प्रोग्रामिंग भाषाओं की तुलना (स्ट्रिंग फ़ंक्शंस)|प्रोग्रामिंग भाषाओं की तुलना (स्ट्रिंग फलनो)]]
* [[प्रोग्रामिंग भाषाओं की तुलना (स्ट्रिंग फ़ंक्शंस)|प्रोग्रामिंग भाषाओं की तुलना (रज्जु फलनो)]]
* लेवी की लेम्मा
* लेवी की लेम्मा
* स्ट्रिंग (कंप्यूटर विज्ञान)#औपचारिक सिद्धांत|स्ट्रिंग (कंप्यूटर विज्ञान) - स्ट्रिंग्स पर अधिक बुनियादी संचालन की परिभाषा और कार्यान्वयन
* रज्जु (कंप्यूटर विज्ञान)#औपचारिक सिद्धांत|रज्जु (कंप्यूटर विज्ञान) - स्ट्रिंग्स पर अधिक बुनियादी संचालन की परिभाषा और कार्यान्वयन


==टिप्पणियाँ==
==टिप्पणियाँ==

Revision as of 08:56, 2 August 2023

कंप्यूटर विज्ञान में, औपचारिक भाषा सिद्धांत के क्षेत्र में, विभिन्न प्रकार के रज्जु फलनो का लगातार उपयोग किया जाता है, हालाँकि, उपयोग किया गया संकेतन कंप्यूटर प्रोग्रामिंग के लिए उपयोग किए जाने वाले संकेतन से भिन्न है, और सैद्धांतिक क्षेत्र में आमतौर पर उपयोग किए जाने वाले कुछ फलन प्रोग्रामिंग करते समय शायद ही कभी उपयोग किए जाते हैं। यह आलेख इनमें से कुछ मूल शब्दों को परिभाषित करता है।

स्ट्रिंग्स और भाषाएँ

एक रज्जु वर्णों का एक सीमित अनुक्रम है। खाली रज्जु को इसके द्वारा निरूपित किया जाता है . दो तारों का संयोजन और द्वारा निरूपित किया जाता है , या इससे छोटा . खाली रज्जु के साथ संयोजन करने से कोई फर्क नहीं पड़ता: . तारों का संयोजन साहचर्य है: .

उदाहरण के लिए, .

एक भाषा (कंप्यूटर विज्ञान) स्ट्रिंग्स का एक सीमित या अनंत सेट है। यूनियन, इंटरसेक्शन आदि जैसे सामान्य सेट ऑपरेशन के अलावा, कॉन्सटेनेशन को भाषाओं पर लागू किया जा सकता है: अगर दोनों और भाषाएँ हैं, उनका संयोजन है किसी भी रज्जु के संयोजन के सेट के रूप में परिभाषित किया गया है और किसी भी रज्जु से , औपचारिक रूप से . पुनः, सम्मिलन बिंदु संक्षिप्तता के लिए अक्सर छोड़ दिया जाता है।

भाषा केवल खाली रज्जु को खाली भाषा से अलग करना है . किसी भी भाषा को पहली भाषा के साथ जोड़ने से कोई परिवर्तन नहीं होता है: , जबकि उत्तरार्द्ध के साथ संयोजन करने पर हमेशा खाली भाषा उत्पन्न होती है: . भाषाओं का संयोजन साहचर्य है: .

उदाहरण के लिए, संक्षिप्त करना , सभी तीन अंकों वाली दशमलव संख्याओं का समुच्चय इस प्रकार प्राप्त होता है . मनमानी लंबाई की सभी दशमलव संख्याओं का सेट एक अनंत भाषा के लिए एक उदाहरण है।

एक रज्जु की वर्णमाला

एक रज्जु की वर्णमाला उन सभी वर्णों का समूह है जो एक विशेष रज्जु में होते हैं। यदि s एक रज्जु है, तो इसका वर्णमाला (कंप्यूटर विज्ञान) द्वारा दर्शाया जाता है

किसी भाषा की वर्णमाला किसी भी रज्जु में आने वाले सभी वर्णों का समूह है , औपचारिक रूप से: .

उदाहरण के लिए, सेट रज्जु का वर्णमाला है , और #स्ट्रिंग्स_और_भाषाएँ #स्ट्रिंग्स_एंड_लैंग्वेजेज भाषा की वर्णमाला है साथ ही सभी दशमलव संख्याओं की भाषा भी।

रज्जु प्रतिस्थापन

मान लीजिए L एक भाषा (कंप्यूटर विज्ञान) है, और मान लीजिए कि Σ इसकी वर्णमाला है। एक 'रज्जु प्रतिस्थापन' या बस एक 'प्रतिस्थापन' एक मैपिंग एफ है जो Σ में वर्णों को भाषाओं में मैप करता है (संभवतः एक अलग वर्णमाला में)। इस प्रकार, उदाहरण के लिए, एक अक्षर a ∈ Σ दिया गया है, तो किसी के पास f(a)=L हैa जहां एलa ⊆ Δक्लीन स्टार|* कुछ भाषा है जिसकी वर्णमाला Δ है। इस मैपिंग को स्ट्रिंग्स तक बढ़ाया जा सकता है

f(ε)=ε

खाली रज्जु ε के लिए, और

f(sa)=f(s)f(a)

रज्जु s ∈ L और वर्ण a ∈ Σ के लिए। रज्जु प्रतिस्थापन को संपूर्ण भाषाओं तक बढ़ाया जा सकता है [1]

नियमित भाषाएँ रज्जु प्रतिस्थापन के अंतर्गत बंद हैं। अर्थात्, यदि किसी नियमित भाषा की वर्णमाला में प्रत्येक वर्ण को किसी अन्य नियमित भाषा द्वारा प्रतिस्थापित किया जाता है, तो परिणाम अभी भी एक नियमित भाषा ही है।[2] इसी प्रकार, संदर्भ-मुक्त भाषाएँ रज्जु प्रतिस्थापन के अंतर्गत बंद हो जाती हैं।[3][note 1] एक सरल उदाहरण रूपांतरण एफ हैuc(.) को अपरकेस में, जिसे परिभाषित किया जा सकता है जैसे निम्नलिखित नुसार:

character mapped to language remark
x fuc(x)
a { ‹A› } map lowercase char to corresponding uppercase char
A { ‹A› } map uppercase char to itself
ß { ‹SS› } no uppercase char available, map to two-char string
‹0› { ε } map digit to empty string
‹!› { } forbid punctuation, map to empty language
... similar for other chars

एफ के विस्तार के लिएuc स्ट्रिंग्स के लिए, हमारे पास उदा.

  • एफuc(‹सड़क›) = {‹S›} ⋅ {‹T›} ⋅ {‹R›} ⋅ {‹A›} ⋅ {‹SS›} ⋅ {‹E›} = {‹सड़क›},
  • एफuc(‹u2›) = {‹U›} ⋅ {ε} = {‹U›}, और
  • एफuc(‹जाओ!›) = {‹जी›} ⋅ {‹ओ›} ⋅ {} = {}.

एफ के विस्तार के लिएuc भाषाओं के लिए, हमारे पास उदा.

  • एफuc({ ‹सड़क›, ‹u2›, ‹जाओ!› }) = { ‹सड़क› } ∪ { ‹U› } ∪ { } = { ‹सड़क›, ‹U› }.

रज्जु समरूपता

एक रज्जु होमोमोर्फिज्म (अक्सर औपचारिक भाषा सिद्धांत में औपचारिक भाषा सिद्धांत में होमोमोर्फिज्म#होमोमोर्फिज्म और ई-मुक्त होमोमोर्फिज्म के रूप में संदर्भित) एक रज्जु प्रतिस्थापन है जैसे कि प्रत्येक वर्ण को एक रज्जु द्वारा प्रतिस्थापित किया जाता है। वह है, , कहाँ प्रत्येक वर्ण के लिए एक रज्जु है .[note 2][4] रज्जु होमोमोर्फिज्म मुक्त मोनोइड मुफ़्त मोनॉयड आकारिकी हैं, जो खाली रज्जु और रज्जु संयोजन के बाइनरी ऑपरेशन को संरक्षित करते हैं। एक भाषा दी गई , सेट की समरूपी छवि कहलाती है . एक रज्जु की व्युत्क्रम समरूपी छवि परिभाषित किया जाता है

जबकि किसी भाषा की व्युत्क्रम समरूपी छवि परिभाषित किया जाता है

सामान्य रूप में, , जबकि एक के पास है

और

किसी भी भाषा के लिए .

नियमित भाषाओं का वर्ग समरूपता और व्युत्क्रम समरूपता के अंतर्गत बंद है।[5] इसी प्रकार, संदर्भ-मुक्त भाषाएँ समरूपता के अंतर्गत बंद हैं[note 3] और व्युत्क्रम समरूपताएँ।[6] एक रज्जु समरूपता को ε-मुक्त (या ई-मुक्त) कहा जाता है यदि वर्णमाला में सभी के लिए . सरल एकल-अक्षर प्रतिस्थापन सिफर (ε-मुक्त) रज्जु समरूपता के उदाहरण हैं।

एक उदाहरण रज्जु समरूपता जीuc #स्ट्रिंग_प्रतिस्थापन प्रतिस्थापन के समान परिभाषित करके भी प्राप्त किया जा सकता है: जीuc(‹ए›) = ‹ए›, ..., जीuc(‹0›) = ε, लेकिन g देनाuc विराम चिन्हों पर अपरिभाषित रहें। व्युत्क्रम समरूपी छवियों के उदाहरण हैं

  • जीuc−1({ ‹SSS› }) = { ‹sss›, ‹sß›, ‹ßs› }, चूँकि guc(‹sss›) = जीuc(‹sß›) = जीuc(‹ßs›) = ‹SSS›, और
  • जीuc−1({ ‹A›, ‹bb› }) = { ‹a› }, चूँकि guc(‹a›) = ‹A›, जबकि ‹bb› तक g द्वारा नहीं पहुंचा जा सकताuc.

बाद वाली भाषा के लिए, जीuc(जीuc−1({ ‹A›, ‹bb› })) = guc({ ‹a› }) = { ‹A› } ≠ { ‹A›, ‹bb› }. समरूपता जीuc यह ε-मुक्त नहीं है, क्योंकि यह उदाहरण के लिए मैप करता है। ‹0› से ε.

एक बहुत ही सरल रज्जु होमोमोर्फिज्म उदाहरण जो प्रत्येक वर्ण को केवल एक वर्ण में मैप करता है वह EBCDIC-एन्कोडेड रज्जु को ASCII में परिवर्तित करना है।

रज्जु प्रक्षेपण

यदि s एक रज्जु है, और एक वर्णमाला है, एस का रज्जु प्रक्षेपण वह रज्जु है जो उन सभी वर्णों को हटाकर परिणामित होता है जो इसमें नहीं हैं . ऐसा लिखा है . इसे औपचारिक रूप से दाहिनी ओर से वर्णों को हटाकर परिभाषित किया गया है:

यहाँ खाली रज्जु को दर्शाता है. एक रज्जु का प्रक्षेपण मूलतः संबंधपरक बीजगणित में प्रक्षेपण के समान है।

किसी भाषा के प्रक्षेपण के लिए रज्जु प्रक्षेपण को बढ़ावा दिया जा सकता है। एक औपचारिक भाषा एल दी गई है, इसका प्रक्षेपण द्वारा दिया गया है

[citation needed]

दायां और बायां भागफल

एक रज्जु s से a वर्ण का दायां भागफल, दाहिनी ओर से रज्जु s में वर्ण a का कटाव है। इसे इस प्रकार दर्शाया गया है . यदि रज्जु में दाहिनी ओर a नहीं है, तो परिणाम खाली रज्जु है। इस प्रकार:

खाली रज्जु का भागफल लिया जा सकता है:

इसी प्रकार, एक उपसमुच्चय दिया गया है एक मोनॉयड का , कोई भागफल उपसमुच्चय को इस प्रकार परिभाषित कर सकता है

बाएँ भागफल को समान रूप से परिभाषित किया जा सकता है, जिसमें संचालन एक रज्जु के बाईं ओर होता है।[citation needed]

हॉपक्रॉफ्ट और उल्मैन (1979) भागफल एल को परिभाषित करते हैं1/एल2 भाषाओं में से एल1 और मैं2 उसी वर्णमाला के ऊपर L1/L2 = { s | ∃tL2. stL1 }.[7] यह उपरोक्त परिभाषा का सामान्यीकरण नहीं है, क्योंकि, एक रज्जु एस और अलग-अलग वर्णों ए, बी के लिए, हॉपक्रॉफ्ट और उलमैन की परिभाषा का तात्पर्य है उपज {}, इसके बजाय { ε }.

एक सिंगलटन भाषा L का बायाँ भागफल (जब हॉपक्रॉफ्ट और उलमैन 1979 के समान परिभाषित किया गया)1 और एक मनमानी भाषा एल2 ब्रज़ोज़ोस्की व्युत्पन्न के रूप में जाना जाता है; यदि एल2 इसे नियमित अभिव्यक्ति द्वारा दर्शाया जाता है, इसलिए बायां भागफल भी हो सकता है।[8]


वाक्यात्मक संबंध

किसी उपसमुच्चय का सही भागफल एक मोनॉयड का एक तुल्यता संबंध को परिभाषित करता है, जिसे एस का सही वाक्यात्मक संबंध कहा जाता है। यह द्वारा दिया गया है

संबंध स्पष्ट रूप से परिमित सूचकांक का है (समतुल्य वर्गों की एक सीमित संख्या है) यदि और केवल यदि पारिवारिक सही भागफल परिमित है; वह है, यदि

परिमित है. इस मामले में कि एम कुछ वर्णमाला पर शब्दों का मोनोइड है, एस तब एक नियमित भाषा है, यानी, एक ऐसी भाषा जिसे एक सीमित राज्य ऑटोमेटन द्वारा पहचाना जा सकता है। वाक्यात्मक मोनॉयड पर लेख में इस पर अधिक विस्तार से चर्चा की गई है।[citation needed]

सही रद्दीकरण

एक रज्जु एस से अक्षर का सही रद्दीकरण दाईं ओर से शुरू होने वाली रज्जु एस में अक्षर की पहली घटना को हटाना है। इसे इस प्रकार दर्शाया गया है और इसे पुनरावर्ती रूप से परिभाषित किया गया है

खाली रज्जु हमेशा रद्द करने योग्य होती है:

स्पष्ट रूप से, सही रद्दीकरण और प्रक्षेपण क्रमविनिमेय संपत्ति:

[citation needed]

उपसर्ग

एक रज्जु के उपसर्ग किसी दी गई भाषा के संबंध में, एक रज्जु के सभी उपसर्गों (कंप्यूटर विज्ञान) का सेट है:

कहाँ .

किसी भाषा का उपसर्ग समापन है

उदाहरण:
किसी भाषा को उपसर्ग बंद यदि कहा जाता है .

उपसर्ग बंद करने वाला ऑपरेटर निष्क्रिय है:

उपसर्ग संबंध एक द्विआधारी संबंध है ऐसा है कि अगर और केवल अगर . यह संबंध उपसर्ग क्रम का एक विशेष उदाहरण है।[citation needed]

यह भी देखें

टिप्पणियाँ

  1. Although every regular language is also context-free, the previous theorem is not implied by the current one, since the former yields a shaper result for regular languages.
  2. Strictly formally, a homomorphism yields a language consisting of just one string, i.e. .
  3. This follows from the above-mentioned closure under arbitrary substitutions.


संदर्भ

  • Hopcroft, John E.; Ullman, Jeffrey D. (1979). Introduction to Automata Theory, Languages and Computation. Reading, Massachusetts: Addison-Wesley Publishing. ISBN 978-0-201-02988-8. Zbl 0426.68001. (See chapter 3.)
  1. Hopcroft, Ullman (1979), Sect.3.2, p.60
  2. Hopcroft, Ullman (1979), Sect.3.2, Theorem 3.4, p.60
  3. Hopcroft, Ullman (1979), Sect.6.2, Theorem 6.2, p.131
  4. Hopcroft, Ullman (1979), Sect.3.2, p.60-61
  5. Hopcroft, Ullman (1979), Sect.3.2, Theorem 3.5, p.61
  6. Hopcroft, Ullman (1979), Sect.6.2, Theorem 6.3, p.132
  7. Hopcroft, Ullman (1979), Sect.3.2, p.62
  8. Janusz A. Brzozowski (1964). "रेगुलर एक्सप्रेशन के व्युत्पन्न". J ACM. 11 (4): 481–494. doi:10.1145/321239.321249. S2CID 14126942.