Sequential Logic Circuits CS E6831 04f

NOTES ON STRONG CONNECTIVITY

A flow table (or state diagram) is *strongly connected* if, for every pair of states i. j, there exists some
input sequence that takes the system from i to j.

An efficient algorithm for determining if a given table or graph has this property is based on the idea of choosing any state, say 1 (usually most convenient), determining if every other state is reachable from state-1, and then determining if state-1 is reachable from every other state.

The first part is accomplished by constructing a list,
starting with state-1, then adding to this list all states reachable directly
from state-1, and then, in sequence, adding all states reachable *directly* from each state already on the list. If the process terminates with some
states not on the list, then clearly the table or graph is *not* strongly connected. If all states are on the list, we move on to the second
step.

A second list is constructed, starting with the same initial
state (say 1). We add to the list
each state that *directly* reaches a state
already on the list. If,
eventually all states get on the list, then the table or graph is strongly connected. If the process terminates with one or
more states not on the list, then the table or graph is *not* strongly connected.

Example 1.

X

0 1

-----

1 3 4

2 2 4

3 2 2

4 1 3

-----

For the first part of the process, we obtain the list, FROM 1/1, 3, 4, 2 (complete)

For the second part of the process, we obtain the list, TO 1/1, 4, 2, 3 (complete)

So this table *is*
strongly connected.

Example 2.

X

0 1

-----

1 3 4

2 2 3

3 2 2

4 1 3

For the first part of the process, we obtain the list, FROM 1/1, 3, 4, 2 (complete)

For the second part of the process, we obtain the list, TO
1/1, 4 (*in*complete)

So this table is *not* strongly
connected.