From 64923ee3262fb3b7dee506c0c5ad9d87aa38bbfc Mon Sep 17 00:00:00 2001 From: jrtechs Date: Tue, 6 Nov 2018 16:45:18 -0500 Subject: [PATCH] Updated my cs review blog post with information on DFA minification, the pumping lemma and Context free languages. --- .../programming/CS -Theory-Exam-2-Review.md | 97 ------- .../programming/cs-theory-exam-2-review.md | 256 ++++++++++++++++++ .../media/CSTHEORY/DFAMinification.png | Bin 0 -> 23792 bytes .../programming/media/CSTHEORY/MinTable2.svg | 1 + .../media/CSTHEORY/MinificationTable.svg | 1 + .../programming/media/CSTHEORY/MinimalDFA.svg | 1 + .../media/CSTHEORY/PumpingLemmaExample.svg | 1 + .../media/CSTHEORY/PumpingLemmaTheory.svg | 1 + 8 files changed, 261 insertions(+), 97 deletions(-) delete mode 100644 blogContent/posts/programming/CS -Theory-Exam-2-Review.md create mode 100644 blogContent/posts/programming/cs-theory-exam-2-review.md create mode 100644 blogContent/posts/programming/media/CSTHEORY/DFAMinification.png create mode 100644 blogContent/posts/programming/media/CSTHEORY/MinTable2.svg create mode 100644 blogContent/posts/programming/media/CSTHEORY/MinificationTable.svg create mode 100644 blogContent/posts/programming/media/CSTHEORY/MinimalDFA.svg create mode 100644 blogContent/posts/programming/media/CSTHEORY/PumpingLemmaExample.svg create mode 100644 blogContent/posts/programming/media/CSTHEORY/PumpingLemmaTheory.svg diff --git a/blogContent/posts/programming/CS -Theory-Exam-2-Review.md b/blogContent/posts/programming/CS -Theory-Exam-2-Review.md deleted file mode 100644 index a359d11..0000000 --- a/blogContent/posts/programming/CS -Theory-Exam-2-Review.md +++ /dev/null @@ -1,97 +0,0 @@ -This a very high level review post that I am making for myself and other people taking CS Theory. -If you want to lean about the theory behind the content in this blog post I recommed looking else where. -This post will cover how to solve typical problems relating to topics covered by my second CS Theory exam. - -## Myhill-Nerode Theorem - -### Definition -L is regular if and only if it has a finite index. The index is the maximum number of elements thar are pairwise distibguishable. -Two strings are said to be pairwise distinguishable if you can append something to both of the strings and it makes one string -accepted by the language and the other string non-accepting. -The size of an index set X equals the number of equivalence classes it has. Each element in the language is accepted by only -one equivalence class. - -### Problem Approach - -Prove that language L is regular. - -1) Define a set X which is infinite in size - this doesn;t necesarrily need to be in the language. - -2) Make a general argument that show that each element in X is pairwise distinguishable. -Pick any two elements x, y in X and show that if you append z to them one is accepted by the language and -the other is not in the language. - -### Example - -Prove the following language is non-regular: - -$$ -L={ww^r | w \in {0,1}^*} -$$ - -answer: - -1) - -$$ -X = {(01)^i | i \geq 0} -$$ - -Pick any 2 elements of X and show pairwise distinguishable - -$$ -x = (01)^i, y = (01)^j | i \neq j -$$ - -suppose we pick -$$ -z = (10)^i\\ -xz \in L\\ -yz \notin L -$$ - - -## DFA minimization algorithm - -Types of Problems: -- Prove DFA is minimal -- Minimize the DFA - -The argument for DFA minimization comes from the Myhill-Nerode theorem. Given -a DFA, if you can form a set of strings which represent each state and they are all -pairwise distinguishable, then the DFA is minimal with that many states. - - -### Prove DFA is minimal - -For these types of problems you simply construct a table and show that each state is pairwise distinguishable. -To show pairwise distinguishability you have to show that there exists a string where if appened to one element -makes it accepted by the language but pushes the other string out of the language. - -ex: Prove the following DFA is minimal. - -![DFA Example](media/CSTHEORY/DFAMinimalProof.png) - -$$ -X = {\epsilon, b, bb, ba} -$$ - -![DFA Example](media/CSTHEORY/Table.png) - - -### Minimize the DFA - - - -## Pumping lemma for regular languages - -## Context-free grammars, closure properties for CFLs - -## Parse trees, ambiguity - -## Chomsky Normal Form - -## Pushdown automata - -## Construction to convert CFG to a PDA - diff --git a/blogContent/posts/programming/cs-theory-exam-2-review.md b/blogContent/posts/programming/cs-theory-exam-2-review.md new file mode 100644 index 0000000..1ac7947 --- /dev/null +++ b/blogContent/posts/programming/cs-theory-exam-2-review.md @@ -0,0 +1,256 @@ +This a very high level review post that I am making for myself and other people taking CS Theory. +If you want to lean about the theory behind the content in this blog post I recommed looking else where. +This post will cover how to solve typical problems relating to topics covered by my second CS Theory exam. + +# Myhill-Nerode Theorem + +## Definition +L is regular if and only if it has a finite index. The index is the maximum number of elements thar are pairwise distibguishable. +Two strings are said to be pairwise distinguishable if you can append something to both of the strings and it makes one string +accepted by the language and the other string non-accepting. +The size of an index set X equals the number of equivalence classes it has. Each element in the language is accepted by only +one equivalence class. + +## Problem Approach + +Prove that language L is regular. + +1) Define a set X which is infinite in size - this doesn;t necesarrily need to be in the language. + +2) Make a general argument that show that each element in X is pairwise distinguishable. +Pick any two elements x, y in X and show that if you append z to them one is accepted by the language and +the other is not in the language. + +## Example + +Prove the following language is non-regular: + +$$ +L={ww^r | w \in {0,1}^*} +$$ + +answer: + +1) + +$$ +X = {(01)^i | i \geq 0} +$$ + +Pick any 2 elements of X and show pairwise distinguishable + +$$ +x = (01)^i, y = (01)^j | i \neq j +$$ + +suppose we pick +$$ +z = (10)^i\\ +xz \in L\\ +yz \notin L +$$ + + +# DFA minimization algorithm + +Types of Problems: +- Prove DFA is minimal +- Minimize the DFA + +The argument for DFA minimization comes from the Myhill-Nerode theorem. Given +a DFA, if you can form a set of strings which represent each state and they are all +pairwise distinguishable, then the DFA is minimal with that many states. + + +## Prove DFA is minimal + +For these types of problems you simply construct a table and show that each state is pairwise distinguishable. +To show pairwise distinguishably you have to show that there exists a string where if appended to one element +makes it accepted by the language but pushes the other string out of the language. + +### Example + +Prove the following DFA is minimal. + +![DFA Example](media/CSTHEORY/DFAMinimalProof.png) + +Find a set of strings which represent the minimal path to each state in the DFA. + +$$ +X = \{\epsilon, b, bb, ba\} +$$ + +Show that each state is pairwise distinguishable. + +![DFA Example](media/CSTHEORY/DFAMinimalTable.png) + + +## Minimize the DFA + +To use this concept of being indistinguishable to minimize a DFA, you can use a table to keep track which +states are distinguishable from each other. The states which are not indistinguishable can +be combined. To solve one of these problems you start by creating a table which compares each of the +states in the DFA. You then go through and mark the states which are indistinguishable -- start with +the ones with different accepting statuses. Then you continue marking off states where if you transition with +a symbol on the DFA you are distinguishable and the other state is non-distinguishable according to the table. + +### Example + +Minify the Following DFA: + +![DFA Example](media/CSTHEORY/DFAMinification.png) + +After marking the states with different accepting criteria as being distinguishable you get this table: + +![Half Complete Table](media/CSTHEORY/MinificationTable.svg) + + +After looping through all pairs and marking them on the table if there exists symbol which results in one state +to be distinguishable and one to be indistinguishable you get this table: + +![Min TableTable](media/CSTHEORY/MinTable2.svg) + +According to the table you are able to combine {D, A, B}, {C, F}, and {E, G}. + +Minimal DFA: + +![Min DFA](media/CSTHEORY/MinimalDFA.svg) + + +# Pumping lemma for regular languages + +The pumping lemma cannot prove that a language is regular, however, you can use it +to show that some languages are non-regular. This theory gets at the idea that if +a regular language is long enough/infinite, it will have a state somewhere which is +repeated on the path that accepts the string. + +The accepted strings can be divided into three parts: + +- Symbols leading up to the loop +- Symbols which complete a loop and come back to start of loop +- Symbols at the end of the string + +![Min DFA](media/CSTHEORY/PumpingLemmaTheory.svg) + + + +To Show that a language L is not regular using pumping lemma: + +- Proof by Contradiction +- Assume L is regular +- Choose a representative string S which is just barely in the language and is represented in terms of p. +- Express S = xyz such that |xy| < p and y > 0 +- Show that you can pump y some amount of times such that it is not in the language. +- This contradicts the pumping lemma. +- The assumption that L is regular is wrong. +- L must not be regular. + + +## Example + +Show that the following language is non-regular. + +$$ +{0^n1^n | n \geq 0} +$$ + +Proof by contradiction + +Assume that L is regular. + +Let p be the pumping length associated with L + +$$ +S = o^p1^p +$$ + +S is valid since + +$$ +|s| \geq p, S \in L +$$ + +For any valid decomposition + +S = xyz + +such that |xy| <= p and |y| > 0 + +Consider: + +$$ +xy^2z +$$ + +By the pumping lemma this should be in the language but it is not. Therefore our assumption that the +language is regular is false. + +![Min DFA](media/CSTHEORY/PumpingLemmaExample.svg) + +# Context-free grammars, closure properties for CFLs + +The context-free grammars are a superset of the regular languages. This means that CFG's can represent +some non-regular languages and every regular language is also a CFL. Contest-free Languages are defined by Context-Free Grammars and accepted using +Pushdown Automata machines. + +Context Free Grammars are Represented using: + +- **Terminals** = Set of symbols in that language +- **Variables** = Set of symbols representing categories +- **Start Symbol** = Variable which you start with- written on top +- **Substitution Rules** = Set of rules that recursively define the language. + +## Example 1 + +Grammar G: + +$$ +A \rightarrow 0A1 \\ +A \rightarrow B \\ +B \rightarrow \# \\ +$$ + + +This grammar describes the following language: + +$$ +L = \{0^k\#1^k | k \geq 0\} +$$ + +## Example 2 + +Give CFG for non-Palindromes + +$$ +S \rightarrow aXb | bXa | aSa | bSb | ab | ba \\ +X \rightarrow aX | bX | a | b \\ +$$ + + +In this example, the S rule states in that recursive state until something that is not a palindrome is found. +Once you exit the S state, you can finish by appending anything to the middle of the string. + + +## Example 3 + +Give CFG for the following language: + +$$ +\{a^ib^jc^kd^l | i+k = j + l\} +$$ + +$$ +S \rightarrow aSd | XYZ \\ +X \rightarrow aXb | \epsilon\\ +Y \rightarrow bYc | \epsilon\\ +Z \rightarrow cZd | \epsilon +$$ + +# Parse trees, ambiguity + +# Chomsky Normal Form + +# Pushdown automata + +# Construction to convert CFG to a PDA + diff --git a/blogContent/posts/programming/media/CSTHEORY/DFAMinification.png b/blogContent/posts/programming/media/CSTHEORY/DFAMinification.png new file mode 100644 index 0000000000000000000000000000000000000000..3818ce52bfdfc7135b87a097ab2b011ca6b8b8a2 GIT binary patch literal 23792 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 R6QBV|U0Fw|Ou;JnzW^!n75V@G literal 0 HcmV?d00001 diff --git a/blogContent/posts/programming/media/CSTHEORY/MinTable2.svg b/blogContent/posts/programming/media/CSTHEORY/MinTable2.svg new file mode 100644 index 0000000..55d0613 --- /dev/null +++ b/blogContent/posts/programming/media/CSTHEORY/MinTable2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blogContent/posts/programming/media/CSTHEORY/MinificationTable.svg b/blogContent/posts/programming/media/CSTHEORY/MinificationTable.svg new file mode 100644 index 0000000..7fc28bc --- /dev/null +++ b/blogContent/posts/programming/media/CSTHEORY/MinificationTable.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blogContent/posts/programming/media/CSTHEORY/MinimalDFA.svg b/blogContent/posts/programming/media/CSTHEORY/MinimalDFA.svg new file mode 100644 index 0000000..9dbe1c2 --- /dev/null +++ b/blogContent/posts/programming/media/CSTHEORY/MinimalDFA.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blogContent/posts/programming/media/CSTHEORY/PumpingLemmaExample.svg b/blogContent/posts/programming/media/CSTHEORY/PumpingLemmaExample.svg new file mode 100644 index 0000000..2b0a8f4 --- /dev/null +++ b/blogContent/posts/programming/media/CSTHEORY/PumpingLemmaExample.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blogContent/posts/programming/media/CSTHEORY/PumpingLemmaTheory.svg b/blogContent/posts/programming/media/CSTHEORY/PumpingLemmaTheory.svg new file mode 100644 index 0000000..d74d152 --- /dev/null +++ b/blogContent/posts/programming/media/CSTHEORY/PumpingLemmaTheory.svg @@ -0,0 +1 @@ + \ No newline at end of file