Before discussing about finite states I will discuss some string definitions because the finite states will use string definitions to be proven. The common definition of
alphabet is the standard set of letters which is used by some countries. In this computation theory, alphabet is a set of letters which can be combined to create a new word. A set of {b, e, r, d,s } is an example of alphabet. Alphabets can also contain numeric or non-characters. For example, {1, 5, 324, ㅎ, *, !} is also an example of alphabets. The notation for alphabet is
S. String is a finite sequence of symbols over alphabet. 'boss' is an example of string from an alphabet set {a, b, o, s}. This string does not have to be the real word. Any combination from an alphabet set is still considered to be a string. From the previous example {a, b, o, s}, another example of string would be 'osboooba'. Obviously, this is not a real word. But this still is an example of string. Also, empty string is still an example of string.
S* is the notation for the string. Language is a set of strings from a set of alphabet. It can be empty or infinite. However, empty set and empty string are different things.
Finite States contain finite number of states where you can possibly move form one state. This is mostly used for creating electronic circuits. The state where you are currently at is called current state. You can also move from one state to another. This movement is called transition. From computation theory point of view, there is a transition formula where the condition is given in order to move from one state to another. There are two different states to the finite states. The first is accepting state. This state accepts an claim. The second is rejecting state. It rejects a claim.
For the finite states, there was an example question online; create a state machine which determines if a binary string contains even number of 1s. This is an easy example. You create two states; one called accepting state and the other called rejecting state. It will start from the accepting state because empty binary string is still considered to contain even number of 1s. For both cases, it transit to itself if 0 is added to the end. If 1 is added to the end, it moves to the other state.
For this strings, the concepts were really easy to understand because they all comes from the previous year studies. For example, python strings do not have to be the real world word. I found difficult was the state machine because the design of the finite state can vary from a person to another. I still understand that there is the best way to describe a finite state but finding the most efficient design was really hard for me. It would be extremely
helpful if there was many examples but the class only covers a few examples. I think these are not enough to fully design an efficient finite state.
Upon learning of the string, it was extremely boring to me because it felt like we are reviewing stuffs that we learned long times ago. At the same time, finite states were not really new to me as well as the string because this is what I was learning in CSC258, a computer organization course from University of Toronto. However, it made a difference because it was still hard for me to develop a design in both classes. First intuition of this chapter was like 'I am so screwed.'
From the finite states, I decided that I should look up some questions regarding this topic because I know that I am really bad at this and I really want to improve on this.