Unit 11: Theory of Computation

📘 1. Introduction (परिचय)

Automata Theory वह शाखा है जो यह समझाती है कि कंप्यूटर या मशीनें कैसे भाषा को पहचानती और प्रोसेस करती हैं

यह मुख्य रूप से तीन चीजों पर आधारित है:

  • Alphabets
  • Strings
  • Languages

🔤 2. Alphabets, Strings, and Languages

👉 Alphabets (वर्णमाला)

  • एक finite set of symbols
  • उदाहरण: {0, 1} या {a, b, c}

👉 Strings (स्ट्रिंग्स)

  • Alphabets का एक क्रम (sequence)
  • जैसे: "101", "ab", "aabb"

👉 Language (भाषा)

  • स्ट्रिंग्स का सेट जो किसी नियम या ऑटोमेटा द्वारा स्वीकारे जाते हैं।
  • उदाहरण: सभी स्ट्रिंग्स जो "a" से शुरू होती हैं।

🤖 3. Automata and Grammars

  • Automata (स्वचालित मशीनें): एक mathematical model जो input को process करके बताता है कि वह स्वीकार्य है या नहीं।
  • Grammar (व्याकरण): यह यह परिभाषित करती है कि कोई भाषा कैसे बनती है। (जैसे Regular Grammar, Context-Free Grammar)

⚙️ 4. Deterministic Finite Automata (DFA)

👉 परिभाषा:

DFA एक finite automata है जिसमें हर स्थिति (state) पर, हर input symbol के लिए सिर्फ एक next state होती है।

📌 Formal Definition:

DFA को 5-टुपल में परिभाषित किया जाता है:

M=(Q, Σ, δ, q0, F)

जहाँ:

  • Q: सभी states का finite set
  • Σ: input alphabets
  • δ: transition function (Q × Σ → Q)
  • q​: initial state
  • F: final/accepting states का सेट

📊 5. Simplified Notation

🔹 State Transition Graph:

  • Nodes = States
  • Arrows = Input transitions
  • एक ग्राफ जो बताता है input के अनुसार control कैसे flow होता है।

🔹 Transition Table:

StateInput 0Input 1
q0q1q2
q1q0q2

🌐 6. Language of DFA

  • DFA जिन-जिन स्ट्रिंग्स को स्वीकार करता है, उनका सेट उस DFA की language कहलाता है।

🔁 7. Non-Deterministic Finite Automata (NFA)

👉 परिभाषा:

  • NFA में किसी भी input symbol के लिए multiple transitions हो सकती हैं या कोई नहीं भी।
  • यानी एक ही स्थिति पर एक से ज्यादा रास्ते हो सकते हैं।

🤍 NFA with ε (epsilon) transitions:

  • कुछ transitions बिना किसी input के होते हैं (ε-move)।
  • यह मशीन बिना input consume किए एक state से दूसरी में जा सकती है।

🔄 8. Language of NFA

  • NFA की भी एक भाषा होती है — वह सेट जिसमें आने वाली स्ट्रिंग्स को वह स्वीकार करता है।

🔁 9. Equivalence of NFA and DFA

  • सिद्ध किया जा चुका है कि हर NFA का एक equivalent DFA होता है।
  • इसका मतलब है: NFA और DFA की computational power समान होती है।
  • Subset construction algorithm का उपयोग करके NFA से DFA बनाया जाता है।

🔽 10. Minimization of Finite Automata

  • DFA को छोटा और सरल बनाने की प्रक्रिया, ताकि उसमें कम से कम states हों।
  • इससे memory और प्रोसेसिंग दोनों में लाभ होता है।
  • Equivalent states को merge करके यह किया जाता है।

🆚 11. Distinguishing One String from Other

  • यह समझने की प्रक्रिया कि कोई दो स्ट्रिंग्स किसी language के लिए अलग-अलग व्यवहार क्यों करती हैं।
  • उदाहरण: एक string को DFA स्वीकार कर रहा है, दूसरी को नहीं — क्यों?

संक्षेप सारांश (Summary Table)

टॉपिकविवरण
AlphabetsSymbols का finite set
StringsAlphabets का क्रम
Languageस्ट्रिंग्स का सेट जो किसी ऑटोमेटा को स्वीकार हो
DFAएक निश्चित finite मशीन
NFAएक अनिश्चित मशीन जिसमें multiple transitions हो सकती हैं
ε-NFANFA जिसमें बिना input के transitions हो सकती हैं
DFA vs NFAदोनों समान शक्ति वाले हैं
Minimization of DFAStates को merge कर छोटा बनाना
Distinguishing Stringsस्ट्रिंग्स को अलग पहचान देना

🔁 1. Regular Expression (RE) – रेगुलर एक्सप्रेशन

👉 परिभाषा (Definition):

Regular Expression (RE) एक तरीका है जिससे हम किसी Regular Language को symbolic रूप में व्यक्त करते हैं।
यह describe करता है कि किस तरह की string उस language में आ सकती है।


2. Operators of Regular Expression and Their Precedence

🔹 मुख्य ऑपरेटर:

ऑपरेटरकार्य
+ (Union)दो languages का जोड़ (OR)
. (Concatenation)दो strings को जोड़ना
* (Kleene Star)0 या अधिक बार दोहराना

🔸 Precedence (Priority):

  1. * (सबसे पहले लागू होता है)
  2. . (Concatenation)
  3. + (Union)

🧮 3. Algebraic Laws for Regular Expressions

कुछ महत्वपूर्ण नियम:

  • Identity:
    • R + ∅ = R
    • R.ε = R
  • Annihilation:
    • R.∅ = ∅
  • Distributive Laws:
    • R.(S + T) = R.S + R.T
    • (R + S).T = R.T + S.T

💡 4. Kleene’s Theorem

Kleene’s Theorem बताता है कि:

  • हर Regular Expression के लिए एक Finite Automaton (FA) होता है।
  • और हर FA के लिए एक Regular Expression होता है।

👉 इससे RE और FA के बीच equivalence साबित होती है।


🔄 5. Regular Expression to Finite Automata (RE → FA)

  • किसी भी regular expression से हम एक NFA (non-deterministic finite automaton) बना सकते हैं जो उसे recognize करता है।

🔁 6. DFA to Regular Expression (DFA → RE)

  • किसी भी DFA को हम step by step modify करके एक regular expression में बदल सकते हैं।

🔢 7. Arden’s Theorem

Arden’s Theorem का उपयोग Regular Expression निकालने के लिए किया जाता है जब हमें equations के रूप में state transitions दिए गए हों।

👉 Useful in DFA → RE conversion.

Statement:
अगर equation है:


🚫 8. Non-Regular Languages

  • कुछ languages को हम किसी finite automaton या regular expression से describe नहीं कर सकते
  • जैसे: {a^n b^n | n ≥ 0}
  • ये languages non-regular होती हैं।

💣 9. Pumping Lemma for Regular Languages

👉 क्या है?

  • एक तरीका जिससे हम यह साबित कर सकते हैं कि कोई language regular नहीं है

📌 Statement (संक्षेप में):

कोई भी regular language L के लिए कोई constant p (pumping length) होता है, ऐसा कि
हर string s ∈ L जहाँ |s| ≥ p, को 3 हिस्सों में बाँटा जा सकता है: s=xyzs = xyzs=xyz

ऐसे कि:

  1. |y| > 0
  2. |xy| ≤ p
  3. x y^i z ∈ L for all i ≥ 0

🧪 10. Application of Pumping Lemma

  • Pumping Lemma का उपयोग यह साबित करने में किया जाता है कि कोई language regular नहीं है
  • जैसे: {a^n b^n | n ≥ 0} — इसे कोई finite automaton recognize नहीं कर सकता।

🧱 11. Closure Properties of Regular Languages

Regular languages इन operations के तहत closed होती हैं:

OperationClosed?
Union (L1 ∪ L2)✅ Yes
Intersection✅ Yes
Complement✅ Yes
Concatenation✅ Yes
Kleene Star (L*)✅ Yes

🔍 12. Decision Properties of Regular Languages

हम regular languages पर कुछ सवालों का जवाब algorithmically दे सकते हैं (i.e., decidable):

प्रश्नउत्तर
क्या string L में है?✅ हाँ
क्या L empty है?✅ हाँ
क्या L infinite है?✅ हाँ
क्या दो DFA एक ही language accept करते हैं?✅ हाँ

⚙️ 13. FA with Output – Moore and Mealy Machines

🔸 Moore Machine:

  • Output केवल state पर निर्भर करता है।
  • हर state के साथ एक output जुड़ा होता है।

🔸 Mealy Machine:

  • Output input और current state दोनों पर निर्भर करता है।
  • Output transitions में होता है।

🔁 14. Equivalence of Moore and Mealy Machine

  • दोनों machines equivalent होती हैं।
  • किसी भी Mealy Machine को Moore Machine में और vice-versa बदला जा सकता है।

15. Applications and Limitations of FA

✔️ Applications:

  • Compiler design (Lexical analyzer)
  • Pattern matching
  • Network protocols
  • Text processing tools (Regex)

Limitations:

  • Finite memory होने के कारण complex languages (जैसे palindromes, balanced parentheses) को handle नहीं कर सकता।
  • Context-sensitive या context-free languages को FA accept नहीं कर सकते।

📚 संक्षेप सारांश (Quick Table):

टॉपिकविवरण
Regular ExpressionLanguage describe करने का तरीका
DFA, NFALanguages को accept करने वाली मशीनें
Kleene’s TheoremRE ⇌ FA के बीच equivalence
Arden’s TheoremEquation से RE निकालने के लिए
Pumping LemmaLanguage regular नहीं है, यह सिद्ध करना
Moore MachineOutput → States पर निर्भर
Mealy MachineOutput → Input + State पर निर्भर
Closure/Decision PropertiesRegular languages के गणितीय गुण
ApplicationsCompiler, Pattern Matching आदि
LimitationsComplex structures accept नहीं कर सकता

📘 1. Context Free Grammar (CFG) – परिभाषा और उदाहरण

👉 परिभाषा:

Context-Free Grammar एक grammar होती है जिसका हर production rule निम्न प्रकार का होता है:

A→αA

जहाँ:

  • A = एक non-terminal symbol
  • α = एक string जो terminals और/or non-terminals का समूह हो सकती है

👉 यह grammar उन भाषाओं को define करती है जो context-free होती हैं।


📌 Example of CFG:

S → aSb | ε

यह grammar {a^n b^n | n ≥ 0} language को generate करती है।


🌐 2. Context Free Languages (CFL)

CFLs वे भाषाएँ हैं जिन्हें कोई Context-Free Grammar generate कर सकती है।

उदाहरण:

  • Palindromes
  • Balanced parentheses
  • a^n b^n

🔄 3. Derivation and Derivation Trees

📌 Derivation:

Grammar के rules को step-by-step apply कर के किसी string को generate करना।

उदाहरण:

S → aSb → aaSbb → ε → aabb

🌳 Derivation Tree / Parse Tree:

  • एक tree structure जो derivation को graphically दिखाता है।
  • Root = Start symbol
  • Leaves = Final string के characters

🤔 4. Ambiguity in Grammar (ग्रामर में अस्पष्टता)

अगर किसी string की एक से अधिक derivation trees या parse trees बनती हैं, तो वह grammar ambiguous कहलाती है।

उदाहरण: Arithmetic expressions में ambiguity हो सकती है।


⚠️ 5. Inherent Ambiguity

कुछ languages ऐसी होती हैं जिनके लिए कोई भी CFG unambiguous नहीं हो सकती
उन्हें कहते हैं — Inherently ambiguous languages


🔁 6. Ambiguous to Unambiguous CFG

कई बार हम ambiguous grammar को modify कर के उसे unambiguous बना सकते हैं।

उदाहरण:
Ambiguous:

E → E + E | E * E | id

Unambiguous:

E → E + T | T
T → T * F | F
F → id

🚫 7. Useless Symbols (बेकार चिन्ह)

Grammar में ऐसे symbols जो:

  • कभी किसी derivation में use नहीं होते
  • या किसी string तक नहीं पहुंचते

उन्हें useless symbols कहते हैं और उन्हें grammar से हटाना चाहिए।


🔧 8. Simplification of CFGs

CFG को simplify करने के लिए:

  • Useless symbols हटाना
  • Unit productions (A → B) को हटाना
  • Nullable productions (A → ε) को simplify करना

🧱 9. Normal Forms for CFGs

📌 CNF – Chomsky Normal Form

  • हर production इस form में होती है:
    • A→BC
    • A→a
  • जहाँ A,B,CA, B, CA,B,C non-terminals और aaa terminal है

📌 GNF – Greibach Normal Form

  • हर production इस रूप में होता है:
    • A→aα
  • यानी हर rule एक terminal से शुरू होता है

👉 CNF और GNF से parsing और proof आसान हो जाता है।


🔒 10. Closure Properties of CFLs

ऑपरेशनCFLs के लिए Closed?
Union✅ Yes
Concatenation✅ Yes
Kleene Star✅ Yes
Intersection❌ No
Complement❌ No

11. Decision Properties of CFLs

प्रॉपर्टीCFLs के लिए निर्णय किया जा सकता है?
Emptiness (L = ∅?)✅ Yes
Finiteness (L finite?)✅ Yes
Membership (w ∈ L?)✅ Yes

💣 12. Pumping Lemma for CFLs

👉 उपयोग:

  • यह साबित करने के लिए कि कोई भाषा context-free नहीं है

📌 Statement (संक्षेप में):

हर CFL के लिए एक constant p (pumping length) होता है
जिसके लिए कोई भी string s ∈ L, जहाँ |s| ≥ p, को 5 भागों में बाँटा जा सकता है: s=uvwxys = uvwxys=uvwxy

ऐसे कि:

❌ इससे हम यह सिद्ध कर सकते हैं कि कुछ languages CFL नहीं हैं।


📚 संक्षेप सारांश (Summary Table):

टॉपिकविवरण
CFGGrammar जो context-free languages generate करे
CFLLanguages जो किसी CFG से बनती हैं
DerivationGrammar rules से string बनाना
Parse TreeDerivation को tree रूप में दिखाना
Ambiguityजब एक से ज्यादा parse trees बनें
Inherent AmbiguityLanguage में ambiguity को हटाया नहीं जा सकता
Useless Symbolsऐसे symbols जो derivation में काम न आएं
CNF, GNFGrammar के simplified standard forms
Closure PropertiesUnion, Concatenation, Star = Closed
Decision PropertiesEmptiness, Finiteness, Membership = Decidable
Pumping Lemma for CFLProve करने के लिए कि language CFL नहीं है

🧠 1. PDA – परिचय और परिभाषा

📌 Push Down Automata (PDA) क्या होता है?

PDA एक Finite Automaton (FA) की तरह ही होता है,
लेकिन इसमें एक Stack भी होता है जो इसे ज़्यादा पावरफुल बनाता है।

PDA का उपयोग Context Free Languages (CFLs) को recognize करने के लिए किया जाता है।


🔹 Formal Definition of PDA:

PDA को एक 7-टुपल के रूप में परिभाषित किया जाता है:


2. Instantaneous Description (ID) – क्षणिक विवरण

ID PDA की एक current snapshot होती है, जिसमें होता है: (q,w,γ)(q, w, \gamma)(q,w,γ)

जहाँ:

  • q = current state
  • w = input string का बाकी हिस्सा
  • γ = stack की current स्थिति (top at left)

🌐 3. Language of PDA

PDA उन strings को accept करता है जो किसी context-free language में आती हैं।

🟢 Acceptance के दो तरीके:


4. Acceptance by Final State

  • जब PDA input string को पढ़ने के बाद final state में पहुँच जाए — तो वह string accepted मानी जाती है।

🗑️ 5. Acceptance by Empty Stack

  • जब PDA पूरा input पढ़ ले और उसका stack empty हो जाए, तो वह string accepted मानी जाती है।

📌 दोनों acceptance methods equivalent हैं यानी दोनों से एक ही CFL को recognize किया जा सकता है।


🔄 6. Deterministic PDA (DPDA)

  • DPDA में हर स्थिति पर एक input और stack symbol के लिए एक ही transition संभव होती है।
  • सभी CFLs को DPDA से recognize नहीं किया जा सकता
प्रकारताक़त
Non-Deterministic PDAसभी CFLs
Deterministic PDAकुछ CFLs ही

🔁 7. Equivalence of PDA and CFG

PDA और CFG एक-दूसरे के लिए equivalent हैं।

  • हर CFG के लिए एक PDA exist करता है जो उसी language को accept करता है।
  • और हर PDA के लिए एक CFG बनाई जा सकती है।

📤 8. CFG to PDA

✅ विचार:

  • जब भी grammar का कोई rule हो A → α,
    तो PDA stack पर A को हटाकर α को push कर देगा।

👉 यह PDA stack का उपयोग derivation को simulate करने के लिए करता है।


📥 9. PDA to CFG

  • PDA के transitions से हम एक grammar construct कर सकते हैं जो उसी language को generate करेगी।

👉 इसमें हर PDA की state के pair के लिए एक non-terminal define किया जाता है।


🧱 10. Two-Stack PDA

💡 एक PDA जिसमें दो stacks हों, वह एक Turing Machine के equivalent हो जाता है।

🧠 ताकत:

  • दो stacks की मदद से PDA context-sensitive और recursively enumerable languages को भी accept कर सकता है।
Automatonताक़त (Power)
FARegular Languages
PDA (1 stack)Context Free Languages
2-stack PDA / TMTuring complete (all languages)

📝 संक्षेप सारांश (Summary Table)

टॉपिकविवरण
PDAStack वाला FA — CFLs के लिए उपयोगी
ID (Instantaneous Description)PDA की current स्थिति की जानकारी
Acceptance (Final/Empty)PDA string को final state या empty stack से स्वीकार कर सकता है
DPDA vs NPDADPDA कुछ CFLs ही accept करता है
PDA ⇄ CFGदोनों एक-दूसरे के बराबर (equivalent) हैं
Two-stack PDATuring machine के बराबर शक्तिशाली

📘 1. Context Sensitive Languages (CSL)

👉 परिभाषा:

Context Sensitive Languages वे भाषाएँ होती हैं जिन्हें Context Sensitive Grammar (CSG) से generate किया जा सकता है।

📌 Grammar Rules:

Context Sensitive Grammar में हर production rule इस रूप में होता है:

αAβ→αγβ

जहाँ:

  • A एक non-terminal है,
  • α,β किसी भी string हो सकते हैं (terminals या non-terminals),
  • γ एक non-empty string होनी चाहिए।

और सबसे महत्वपूर्ण बात:

∣αAβ∣≤∣αγβ∣

🔹 यानी कोई भी production rule string की लंबाई को घटा नहीं सकता
(Null production की अनुमति नहीं होती, सिवाय एक exception के लिए: S→εS \rightarrow \varepsilonS→ε, अगर ε language में है और S कहीं और use नहीं होता)


🎯 उदाहरण:

Language: L={anbncn∣n≥1}L = \{ a^n b^n c^n \mid n \geq 1 \}L={anbncn∣n≥1}

यह language context-free नहीं है, लेकिन यह context-sensitive है।


🧠 2. Linear Bounded Automata (LBA)

👉 परिभाषा:

Linear Bounded Automaton (LBA) एक विशेष प्रकार की Turing Machine है जिसकी tape size सीमित होती है — यानी input के आकार के अनुसार ही tape मिलता है।

🧱 Structure:

  • Turing Machine की तरह ही होता है।
  • लेकिन tape की length ≤ length of input × constant।

📌 Key Features:

विशेषताविवरण
टेपकेवल input की length तक सीमित होता है
हेडLeft-most और right-most सीमाएं पार नहीं कर सकता
शक्तियाँContext-sensitive languages को accept करता है

🔁 3. संबंध: CSL ⇄ LBA

Model/GrammarLanguage Class
Context Sensitive Grammar (CSG)Context Sensitive Languages (CSL)
Linear Bounded Automaton (LBA)Context Sensitive Languages (CSL)

👉 मतलब:
LBA और CSG दोनों एक ही class की languages को recognize/generate करते हैं — Context Sensitive Languages।


🧾 4. Language Hierarchy (Chomsky Hierarchy)

यहाँ पर पूरी hierarchy दिखाई गई है जो computational power को दर्शाती है:

Type-0 (Recursively Enumerable) — Turing Machine  
   ⬇  
Type-1 (Context Sensitive) — LBA  
   ⬇  
Type-2 (Context Free) — PDA  
   ⬇  
Type-3 (Regular) — FA

👉 हर ऊपर वाला class नीचे वाले से ज़्यादा शक्तिशाली होता है।


🔐 5. Important Points & Differences

विषयContext-Free (PDA)Context-Sensitive (LBA)
Grammar TypeType-2Type-1
Automaton TypePDALBA (Restricted TM)
Accepted Languageaⁿbⁿaⁿbⁿcⁿ
MemoryStackBounded Tape
Null Production Allowed?हाँनहीं (length can’t decrease)

❓ क्या Context Sensitive Languages Decidable होती हैं?

👉 हाँ, CSLs are decidable — यानी उनके लिए एक TM exist करता है जो हमेशा halt करेगी।


📘 संक्षेप सारांश (Quick Recap):

टॉपिकविवरण
CSLContext Sensitive Language (Type-1)
CSGContext Sensitive Grammar
LBARestricted Turing Machine
PowerPDA से ज्यादा, TM से कम
Example Language{aⁿbⁿcⁿ}

📘 1. Turing Machine (TM) – मूल मॉडल और परिभाषा

📌 परिभाषा:

Turing Machine (TM) एक theoretical model है जो एक infinite tape, एक head और एक finite control (state machine) के साथ काम करता है।

यह मशीन किसी भी computable function को हल कर सकती है — यानी, यह एक idealized computer की तरह है।


🧱 2. Components of Turing Machine

Componentकार्य
Infinite TapeInput/output और intermediate data रखने के लिए
Tape Headएक cell पढ़ता और लिखता है, left/right move करता है
State ControlCurrent state के आधार पर transition करता है

🔹 Formal Definition:

TM को 7-टुपल में परिभाषित किया जाता है:


🧾 3. Instantaneous Description (ID)

ID = Turing Machine की वर्तमान स्थिति का snapshot:

αqβ

जहाँ:

  • α = tape का left हिस्सा
  • q = current state
  • β = head के नीचे और उसके बाद के tape contents

🌐 4. Language Acceptance by TM

Turing Machine एक language को accept करती है अगर:

  • वह input को पढ़ने के बाद final (accepting) state में पहुँच जाए।
  • इसे कहते हैं — TM accepts the string.

🔁 5. Variants of Turing Machine

प्रकारविवरण
Multi-tape TMएक से अधिक tapes होती हैं
Non-deterministic TMहर input पर कई transitions possible
Multi-head TMएक ही tape पर multiple heads
TM with Stay OptionHead को रुकने की अनुमति

👉 ये सभी equivalent in power होते हैं (i.e. एक-दूसरे को simulate कर सकते हैं)।


🧮 6. TM as Computer of Integer Functions

Turing Machine का उपयोग केवल language accept करने के लिए नहीं,
बल्कि किसी भी integer function को compute करने के लिए भी किया जा सकता है,
जैसे:

  • Addition
  • Multiplication
  • Factorial

🌍 7. Universal Turing Machine (UTM)

यह एक ऐसा Turing Machine है जो किसी भी दूसरे TM को simulate कर सकती है।

👉 यह एक general-purpose computer की तरह होती है।
👉 UTM को input के साथ किसी दूसरे TM का description दिया जाता है।


🧠 8. Church’s Thesis

Church और Turing का कहना था कि:

“जो भी problem algorithm से हल की जा सकती है, उसे Turing Machine से हल किया जा सकता है।”

👉 यह theoretical आधार है computability का।


🔁 9. Recursive और Recursively Enumerable Languages

प्रकारविवरण
Recursive Languages (R)हर input के लिए TM halt करती है और सही निर्णय देती है (accept/reject)
Recursively Enumerable (RE)अगर string language में है तो TM accept करेगी, लेकिन reject के लिए halt जरूरी नहीं

👉 हर recursive language, RE भी होती है, पर हर RE language recursive नहीं होती।


10. Halting Problem

🧩 परिभाषा:

यह जानना कि कोई Turing Machine किसी input पर halt करेगी या नहीं, यह undecidable है।

👉 इसका कोई general algorithm नहीं हो सकता।


🚫 11. Introduction to Undecidability

कुछ problems ऐसे होते हैं जिन्हें किसी भी algorithm से हल नहीं किया जा सकता, यानी:

❌ कोई Turing Machine exist नहीं करती जो सभी cases में सही निर्णय दे सके।

उन्हें कहते हैं — Undecidable Problems


🔐 12. Undecidable Problems about TMs

ProblemStatus
TM halts on input www?❌ Undecidable
Two TMs accept same language?❌ Undecidable
TM accepts all strings?❌ Undecidable
TM accepts empty language?❌ Undecidable

💌 13. Post Correspondence Problem (PCP)

🔸 परिभाषा:

PCP में आपको दो lists of strings दी जाती हैं:

  • A = [a₁, a₂, …, aₙ]
  • B = [b₁, b₂, …, bₙ]

👉 PCP एक classic undecidable problem है।


🛠️ 14. Modified PCP (MPCP)


🔢 15. Introduction to Recursive Function Theory

यह theory यह अध्ययन करती है कि कौन-कौन से functions effectively computable हैं।

यह तीन मुख्य functions से शुरू होती है:

  1. Zero Function
  2. Successor Function
  3. Projection Function

और उनके combination से complex recursive functions बनते हैं।


📘 संक्षेप सारांश (Quick Recap)

टॉपिकविवरण
TMकंप्यूटेशन का सबसे पावरफुल मॉडल
UTMGeneral-purpose TM
Recursive vs RER ⊆ RE
Halting ProblemUndecidable
Undecidable TM Problemsकई महत्वपूर्ण सवालों का हल नहीं
PCP / MPCPMatching problem → Undecidable
Recursive Function TheoryComputable functions का अध्ययन