State Diagram (GraphViz)

State Diagram
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)"];
}