State Diagram (GraphViz)
digraph finite_state_machine {
rankdir=LR;
size="8,5"
node [shape = doublecircle]; Start EndA EndB Final;
node [shape = circle];
Start -> Choice1 [label = "SS(B)"];
Start -> Choice2 [label = "SS(S)"];
Choice2 -> EndA [label = "S($end)"];
Choice1 -> State1 [label = "SS(b)"];
Choice1 -> State2 [label = "SS(a)"];
Choice1 -> EndB [label = "S(A)"];
State2 -> State3 [label = "S(b)"];
State2 -> State2 [label = "S(a)"];
State1 -> State1 [label = "S(b)"];
State1 -> State2 [label = "S(a)"];
State3 -> Final [label = "S(b)"];
State3 -> State2 [label = "S(a)"];
Final -> State1 [label = "S(b)"];
Final -> State2 [label = "S(a)"];
}