Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
lfa:2023:lab02 [2023/10/16 22:14] mihai.udubasa |
lfa:2023:lab02 [2024/10/06 21:30] (current) stefan.sterea old revision restored (2023/10/31 11:44) |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== 2. Deterministic Finite Automata ====== | + | ====== 2. Deterministic Finite Automata and Regular Expressions ====== |
===== 2.1. DFA practice ===== | ===== 2.1. DFA practice ===== | ||
Line 83: | Line 83: | ||
{{:lfa:2022:lfa2022_lab2_ex6_v2.png?400|}} | {{:lfa:2022:lfa2022_lab2_ex6_v2.png?400|}} | ||
- | /*{{:lfa:2022:lfa2022_lab2_ex6.png?400|}} - this is wrong, some transitions are missing*/ | ||
* injuraturile redirectati-le catre AU :)) (si MP) | * injuraturile redirectati-le catre AU :)) (si MP) | ||
* All missing transitions lead to a sink state (where there is a transition that loops in that state for any character) | * All missing transitions lead to a sink state (where there is a transition that loops in that state for any character) | ||
+ | </hidden> | ||
+ | |||
+ | |||
+ | **2.1.7.** The set of all binary strings having the substring 00101 | ||
+ | |||
+ | |||
+ | <hidden> | ||
+ | {{:lfa:2022:ex_8_dfa.png?400|}} | ||
+ | * Every state corresponds to a certain current configuration (eg. state **B** translates to a sequence of **0**; **C** to a seq of **00**; **D** -> **001** and so on) | ||
+ | * Analyze how each incoming character changes the current available sequence. For example, if we are in state **E** and we read character **1** we reach a final state, but if we read **0** we go back to state **C** since the available seq will be **00** | ||
</hidden> | </hidden> | ||
Line 91: | Line 100: | ||
=== Describe the language of the following DFAs and simulate them on the given inputs: === | === Describe the language of the following DFAs and simulate them on the given inputs: === | ||
- | **2.1.7.** w<sub>1</sub> = 10011110, w<sub>2</sub> = 00110010 | + | **2.1.8.** w<sub>1</sub> = 10011110, w<sub>2</sub> = 00110010 |
{{:lfa:2022:lfa2022_lab2_ex8.png?400|}} | {{:lfa:2022:lfa2022_lab2_ex8.png?400|}} | ||
Line 101: | Line 110: | ||
* (0, **00110010**) |--<sub>A</sub> (01, 0110010) |--<sub>A</sub> (02, 110010) |--<sub>A</sub> (11, 10010) |--<sub>A</sub> (12, 0010) |--<sub>A</sub> (01, 010) |--<sub>A</sub> (02, 10) |--<sub>A</sub> (11, 0) |--<sub>A</sub> (01, $math[\epsilon]) The word is **accepted** by the DFA because we reached a final state (blue). | * (0, **00110010**) |--<sub>A</sub> (01, 0110010) |--<sub>A</sub> (02, 110010) |--<sub>A</sub> (11, 10010) |--<sub>A</sub> (12, 0010) |--<sub>A</sub> (01, 010) |--<sub>A</sub> (02, 10) |--<sub>A</sub> (11, 0) |--<sub>A</sub> (01, $math[\epsilon]) The word is **accepted** by the DFA because we reached a final state (blue). | ||
</hidden> | </hidden> | ||
- | |||
===== 2.2. Regex practice ===== | ===== 2.2. Regex practice ===== | ||
For each of the exercises from DFA practice write a regex describing the same language. | For each of the exercises from DFA practice write a regex describing the same language. | ||
+ | |||
<hidden 2.2.1.> | <hidden 2.2.1.> | ||
Line 138: | Line 147: | ||
This language is a good example of a language which is significantly easier to describe using a dfa rather than a regex. The regex is very hard to build intuitively and is very long. For a way to algorithmically build this regex from the dfa built during the first part, wait until the lab/lecture about the dfa->regex transformation. | This language is a good example of a language which is significantly easier to describe using a dfa rather than a regex. The regex is very hard to build intuitively and is very long. For a way to algorithmically build this regex from the dfa built during the first part, wait until the lab/lecture about the dfa->regex transformation. | ||
</hidden> | </hidden> | ||
+ | |||
+ | <hidden 2.2.7> | ||
+ | $math[(0 \cup 1)^*00101(0 \cup 1)^*] | ||
+ | </hidden> | ||
+ |