1. State transition table:
 Current State Next State Output  in=0 in=1 ABCDE B    D     00  B    C     01  D    C     10  E    D     00  E    B     00

1. State encoding table:
 State Encoding ABCDE 000001010011100

Encoded state transition table:
 Current State Next State Output  in=0 in=1 00000101001110010111x 001  011   00  001  010   01  011  010   10  100  011   00  100  001   00  xxx  xxx   xx  xxx  xxx   xx

NS2 = (~in * CS2) + (~in * CS1 * CS0)
NS1 = (in * ~CS2) + (CS1 * ~CS0)
NS0 = (in * ((~CS1 * ~CS0) + (CS1 * CS0))) +
(~in * ((~CS2 * ~CS1) + (CS1 * ~CS0)))
O1 = CS1 * ~CS0
O0 = ~CS2 * ~CS1 * CS0

2. State encoding table:
 State Encoding ABCDE 0000100010001000100010000

Encoded state transition table:
 Current State Next State  Output  in=0  in=1 0000000001000100001100100001010011x01000010010101x011xx10000100011001x101xx11xxx xxxxx xxxxx  xx  00010 01000  00  00010 00100  01  xxxxx xxxxx  xx  01000 00100  10  xxxxx xxxxx  xx  xxxxx xxxxx  xx  10000 01000  00  xxxxx xxxxx  xx  xxxxx xxxxx  xx  xxxxx xxxxx  xx  10000 00010  00  xxxxx xxxxx  xx  xxxxx xxxxx  xx  xxxxx xxxxx  xx  xxxxx xxxxx  xx

NS4 = ~in * (CS3 + CS4)
NS3 = (CS0 * in) + (CS2 * ~in) + (CS3 * in)
NS2 = in * (CS1 + CS2)
NS1 = (CS0 * ~in) + (CS1 * ~in) + (CS4 * in)
NS0 = 0
O1 = CS2
O0 = CS1

3. State encoding table:
 State Encoding ABCDE 00000100100000010010

Encoded state transition table:
 Current State Next State Output  in=0 in=1 000000010010001101000101011x10001001101x11xx 0100 0001  00  0010 0001  00  0010 0100  00  xxxx xxxx  xx  0100 1000  01  xxxx xxxx  xx  xxxx xxxx  xx  0001 1000  10  xxxx xxxx  xx  xxxx xxxx  xx  xxxx xxxx  xx

NS3 = in * (CS3 + CS2)
NS2 = (in * CS1) + (~in * ~CS3 * ~CS1 * ~CS0)
NS1 = ~in * (CS1 + CS0)
NS0 = (~in * CS3) + (in * ~CS3 * ~CS2 * ~CS1)
O1 = CS3
O0 = CS2

2. State transition table:
 Current State Next State  Output  in=0 in=1   in=0 in=1 XYZ Z    Y      0    0  X    Z      0    1  Y    Z      1    1

1. State encoding table:
 State Encoding XYZ 000110

Encoded state transition table:
 Current State Next State  Output  in=0 in=1   in=0 in=1 00011011 10   01     0   0  00   10     0   1  01   10     1   1  xx   xx     x   x

NS1 = (in * CS0) + (~in * ~CS0)
NS0 = (~in * CS1) + (in * ~CS1 * ~CS0)
O = (in * CS0) + (CS1 * ~CS0)

2. State encoding table:
 State Encoding XYZ 001010100

Encoded state transition table:
 Current State Next State  Output  in=0 in=1   in=0 in=1 00000101001110010111x xxx  xxx    x   x  100  010    0   0  001  100    0   1  xxx  xxx    x   x  010  100    1   1  xxx  xxx    x   x  xxx  xxx    x   x

NS2 = (~in * CS0) + (in * CS1) + (in * CS2)
NS1 = (~in * CS2) + (in * CS0)
NS0 = (~in * CS1)
O = CS2 + (in * CS1)

3. State encoding table:
 State Encoding XYZ 000111

Encoded state transition table:
 Current State Next State  Output  in=0 in=1   in=0 in=1 00011011 11   01     0   0  00   11     0   1  xx   xx     x   x  01   11     1   1

NS1 = (~in * ~CS0) + (in * CS0)
NS0 = in + CS1 + ~CS0
O = CS1 + (in * CS0)

3. (Moved to homework 9)
4. (Programming version)
A correct (and slightly verbose) ImplicationChart.java.
A collection of FSMs, listed from the "hardest" to the "easiest"
If you want to, send a description of why your FSM is tricky to the class list or me, and I'll forward along.

(Written version)

(b) can done with the row matching method and (a) cannot.