Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lfa:2022:lab06-dfa-to-regex [2022/11/13 23:58]
mihai.udubasa
lfa:2022:lab06-dfa-to-regex [2022/11/19 10:34] (current)
alexandra.udrescu01
Line 5: Line 5:
 Consider the following DFAs: Consider the following DFAs:
  
-**DFA1**+**DFA1** ​^ **DFA2** ^ 
 +|{{ :​lfa:​screenshot_2021-11-04_at_15.33.10.png?​400 |}}| {{ :​lfa:​2022:​lfa2022_lab5_ex2_4_cerinta.png?​300 |}} |
  
-{{ :​lfa:​screenshot_2021-11-04_at_15.33.10.png?​400 |}} 
- 
-**DFA2** 
- 
-{{ :​lfa:​2022:​lfa2022_lab5_ex2_4_cerinta.png?​300 |}} 
  
 Convert the given DFAs to a Regex (using the state-elimination strategy). ​ Convert the given DFAs to a Regex (using the state-elimination strategy). ​
 Hint: is it easier to apply conversion on another DFA? Hint: is it easier to apply conversion on another DFA?
  
-/*+
  
 <hidden On what DFA should the algorithm be applied?>​ <hidden On what DFA should the algorithm be applied?>​
Line 79: Line 75:
   - first, we apply the minimisation algorithm   - first, we apply the minimisation algorithm
     * {{ :​lfa:​2022:​lab6_1_dfa1_1.png?​500 |}}     * {{ :​lfa:​2022:​lab6_1_dfa1_1.png?​500 |}}
 +  - we add the new final and initial states
 +    * {{ :​lfa:​2022:​lab6_1_dfa1_2.png?​500 |}}
   - we eliminate the state 8   - we eliminate the state 8
     - as it has no outgoing transitions,​ we can just remove it     - as it has no outgoing transitions,​ we can just remove it
-    * {{ :lfa:2022:lab6_1_dfa1_2.png?500 |}}+    * {{ :lfa:2022:lab6_1_dfa1_3.png?500 |}}
   - we eliminate the state 0,1   - we eliminate the state 0,1
     - in:     - in:
Line 93: Line 91:
       * init --(0*)-->​ fin       * init --(0*)-->​ fin
       * init --(0*1)-->​ 2       * init --(0*1)-->​ 2
-    * {{ :lfa:2022:lab6_1_dfa1_3.png?500 |}}+    * {{ :lfa:2022:lab6_1_dfa1_4.png?500 |}}
   - we eliminate the state 2   - we eliminate the state 2
     - in:     - in:
Line 109: Line 107:
       * 3 --(10)-->​ 3       * 3 --(10)-->​ 3
       * 3 --(11)-->​ 4       * 3 --(11)-->​ 4
-    * {{ :lfa:2022:lab6_1_dfa1_4.png?500 |}}+    * {{ :lfa:2022:lab6_1_dfa1_5.png?500 |}}
   - we eliminate the state 4   - we eliminate the state 4
     - in:     - in:
Line 121: Line 119:
       * 3 --(110)-->​ 6,7       * 3 --(110)-->​ 6,7
       * 6,7 --(10)-->​ 6,7       * 6,7 --(10)-->​ 6,7
-    * {{ :lfa:2022:lab6_1_dfa1_5.png?500 |}}+    * {{ :lfa:2022:lab6_1_dfa1_6.png?500 |}}
   - we eliminate the state 6,7   - we eliminate the state 6,7
     - in:     - in:
Line 139: Line 137:
       * 5 --(1(10)*0)-->​ 5       * 5 --(1(10)*0)-->​ 5
       * 5 --(1(10)*)-->​ fin       * 5 --(1(10)*)-->​ fin
-    * {{ :lfa:2022:lab6_1_dfa1_6.png?500 |}}+    * {{ :lfa:2022:lab6_1_dfa1_7.png?500 |}}
   - we eliminate the state 3   - we eliminate the state 3
     - in:     - in:
Line 151: Line 149:
       * init --(0*10(10)*(ε|1) )--> fin       * init --(0*10(10)*(ε|1) )--> fin
       * init --(0*10(10)*(0|110(10)*0) )-->5       * init --(0*10(10)*(0|110(10)*0) )-->5
-    * {{ :lfa:2022:lab6_1_dfa1_7.png?500 |}}+    * {{ :lfa:2022:lab6_1_dfa1_8.png?500 |}}
   - we eliminate the state 5   - we eliminate the state 5
     - in:     - in:
Line 161: Line 159:
     - we add:     - we add:
       * init --( (0*110(10)*0|0*10(10)*(0|110(10)*0) ) (1(10)*0)*1(10)*)-->​ fin       * init --( (0*110(10)*0|0*10(10)*(0|110(10)*0) ) (1(10)*0)*1(10)*)-->​ fin
-    * {{ :​lfa:​2022:​lab6_1_dfa1_8.png?​500 |}} 
   - the final regex is ''​   - the final regex is ''​
 0*|0*1|0*110(10)*|0*10(10)*(ε|1|110(10)*)|(0*110(10)*0|0*10(10)*(0|110(10)*0))(1(10)*0)*1(10)*''​ 0*|0*1|0*110(10)*|0*10(10)*(ε|1|110(10)*)|(0*110(10)*0|0*10(10)*(0|110(10)*0))(1(10)*0)*1(10)*''​
Line 167: Line 164:
 </​hidden>​ </​hidden>​
  
-*/+
  
 ==== 6.2. Brzozowsky'​s algebraic method ==== ==== 6.2. Brzozowsky'​s algebraic method ====
Line 181: Line 178:
 === Dfa to regex conversion === === Dfa to regex conversion ===
  
-For each state $math[q], build an equation of the form: $math[q = c_1 q_1 \cup c_2 q_2 \ldots c_n q_n], such that: $math[\delta(q,​c_i) = q_i]. Here $math[c_i\in\Sigma],​ thus $math[q_i] are the $math[c_i]-successors of $math[q]. Additionally,​ if $math[q] is a final state, ​and an $math[\epsilon]:​ $math[q = c_1 q_1 \cup c_2 q_2 \ldots c_n q_n \cup \epsilon].+For each state $math[q], build an equation of the form: $math[q = c_1 q_1 \cup c_2 q_2 \ldots c_n q_n], such that: $math[\delta(q,​c_i) = q_i]. Here $math[c_i\in\Sigma],​ thus $math[q_i] are the $math[c_i]-successors of $math[q]. Additionally,​ if $math[q] is a final state, ​add an $math[\epsilon]:​ $math[q = c_1 q_1 \cup c_2 q_2 \ldots c_n q_n \cup \epsilon].
  
 ^ ^ ^ ^ ^ ^
Line 194: Line 191:
 === Reducing the system of equations === === Reducing the system of equations ===
  
-We can choose *any** equation **except** that corresponding to the initial state, and eliminate it, by exploiting **Arden'​s Lemma**:+We can choose ​**any** equation **except** that corresponding to the initial state, and eliminate it, by exploiting **Arden'​s Lemma**:
   * the solution to any equation of the form $math[q = e\cdot q \cup e'] is $math[q = e^*e'​].   * the solution to any equation of the form $math[q = e\cdot q \cup e'] is $math[q = e^*e'​].
  
 **Example** **Example**
  
-Goind back to the previous system of equations, we can find the solution to $math[q_2] which is: $math[(A \cup B)^*]. Next, we can replace the solution to $math[q_2] in $math[q_1] which yields:+Going back to the previous system of equations, we can find the solution to $math[q_2] which is: $math[(A \cup B)^*]. Next, we can replace the solution to $math[q_2] in $math[q_1] which yields:
   * $math[q_1 = A q_1 \cup B(A\cup B)^*].   * $math[q_1 = A q_1 \cup B(A\cup B)^*].
   * We apply Arden'​s Lemma one more time and yield: $math[q_1 = A^*B(A \cup B)^*].   * We apply Arden'​s Lemma one more time and yield: $math[q_1 = A^*B(A \cup B)^*].
Line 220: Line 217:
 ^ {{ :​lfa:​2022:​screenshot_2022-11-09_at_15.46.23.png?​200 |}} ^ ^ {{ :​lfa:​2022:​screenshot_2022-11-09_at_15.46.23.png?​200 |}} ^
  
-/*+
  
 <hidden Solution>​ <hidden Solution>​
Line 270: Line 267:
 </​hidden>​ </​hidden>​
  
-*/+