switching and finite automata theory_ z. kohavi

171
Scilab Textbook Companion for Switching And Finite Automata Theory by Z. Kohavi 1 Created by Kota Sumanth Kumar B.Tech (Pursuing) Electronics Engineering NIT Warangal College Teacher S. K. L. V. Sai Prakash, NIT Warangal Cross-Checked by Giridharan, IITB August 16, 2013 1 Funded by a grant from the National Mission on Education through ICT, http://spoken-tutorial.org/NMEICT-Intro. This Textbook Companion and Scilab codes written in it can be downloaded from the ”Textbook Companion Project” section at the website http://scilab.in

Upload: chakri474

Post on 30-Dec-2015

596 views

Category:

Documents


10 download

DESCRIPTION

pdf

TRANSCRIPT

Page 1: Switching and Finite Automata Theory_ Z. Kohavi

Scilab Textbook Companion forSwitching And Finite Automata Theory

by Z. Kohavi1

Created byKota Sumanth Kumar

B.Tech (Pursuing)Electronics Engineering

NIT WarangalCollege Teacher

S. K. L. V. Sai Prakash, NIT WarangalCross-Checked byGiridharan, IITB

August 16, 2013

1Funded by a grant from the National Mission on Education through ICT,http://spoken-tutorial.org/NMEICT-Intro. This Textbook Companion and Scilabcodes written in it can be downloaded from the ”Textbook Companion Project”section at the website http://scilab.in

Page 2: Switching and Finite Automata Theory_ Z. Kohavi

Book Description

Title: Switching And Finite Automata Theory

Author: Z. Kohavi

Publisher: Tata McGraw - Hill Education

Edition: 2

Year: 2008

ISBN: 0-07-099387-4

1

Page 3: Switching and Finite Automata Theory_ Z. Kohavi

Scilab numbering policy used in this document and the relation to theabove book.

Exa Example (Solved example)

Eqn Equation (Particular equation of the above book)

AP Appendix to Example(Scilab Code that is an Appednix to a particularExample of the above book)

For example, Exa 3.51 means solved example 3.51 of this book. Sec 2.3 meansa scilab code whose theory is explained in Section 2.3 of the book.

2

Page 4: Switching and Finite Automata Theory_ Z. Kohavi

Contents

List of Scilab Codes 5

1 Number System and Codes 8

2 Sets Relations and Lattices 21

3 Switching Algebra And Its Applications 34

4 Minimization Of Switching Functions 44

5 Logical Design 89

6 Functional Decomposition And Symmetric Functions 95

7 Threshold Logic 99

8 Reliable Design And Fault Diagnosis 105

10 Capabilities Minimization and transformation Of SequentialMachines 108

12 Structure Of Sequential Machines 111

13 State Identificaiton And Fault Detection Experiments 118

14 Memory Definiteness Information Losslessness of Finite Au-tomata 120

15 Linear Sequential Machines 128

3

Page 5: Switching and Finite Automata Theory_ Z. Kohavi

16 Finite State Recognizers 137

4

Page 6: Switching and Finite Automata Theory_ Z. Kohavi

List of Scilab Codes

Exa 1.1 converts no to base 10 . . . . . . . . . . . . . . . . . . 8Exa 1.2 converts binary number to base 10 . . . . . . . . . . . 9Exa 1.3 convert decimal number to base 8 . . . . . . . . . . . . 11Exa 1.4 Convert decimal value in base 10 to base 8 . . . . . . 12Exa 1.5 convert decimal number to base 2 . . . . . . . . . . . . 13Exa 1.6 Convert Octal number to Base 2 . . . . . . . . . . . . 14Exa 1.7 Adds two binary numbers . . . . . . . . . . . . . . . . 17Exa 1.8 Subtracts Two Binary numbers . . . . . . . . . . . . . 18Exa 1.9 Multiplies two Binary numbers . . . . . . . . . . . . . 19Exa 1.10 Division of Two Binary Numbers . . . . . . . . . . . . 19Exa 2.1 Set Of All even Numbers . . . . . . . . . . . . . . . . 21Exa 2.2 Subsets Of a Faces of a die . . . . . . . . . . . . . . . 22Exa 2.4 Relation between two sets . . . . . . . . . . . . . . . . 24Exa 2.5 Equivalence relation . . . . . . . . . . . . . . . . . . . 25Exa 2.6 Equivalence relation 2 . . . . . . . . . . . . . . . . . . 27Exa 2.7 Function Check . . . . . . . . . . . . . . . . . . . . . . 28Exa 2.11 Partial Ordering Divisibilty Relation . . . . . . . . . . 29Exa 2.12 Ordering Relation . . . . . . . . . . . . . . . . . . . . 30Exa 2.15 Lattice Of subsets . . . . . . . . . . . . . . . . . . . . 31Exa 2.16 glb and ulb . . . . . . . . . . . . . . . . . . . . . . . . 32Exa 3.1 Simplify 1 . . . . . . . . . . . . . . . . . . . . . . . . . 34Exa 3.2 Simplify 2 . . . . . . . . . . . . . . . . . . . . . . . . . 34Exa 3.3 Prove the identity . . . . . . . . . . . . . . . . . . . . 35Exa 3.4 Determine The Output of expression . . . . . . . . . . 36Exa 3.5 Simplify 3 . . . . . . . . . . . . . . . . . . . . . . . . . 36Exa 3.6 Simplify 4 . . . . . . . . . . . . . . . . . . . . . . . . . 37Exa 3.7 Expand the Expression . . . . . . . . . . . . . . . . . 37Exa 3.8 Expand the Expression 2 . . . . . . . . . . . . . . . . 38

5

Page 7: Switching and Finite Automata Theory_ Z. Kohavi

Exa 3.9 POS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Exa 3.10 Tabulate the Function of 2 variables . . . . . . . . . . 39Exa 3.11 NOR . . . . . . . . . . . . . . . . . . . . . . . . . . . 40Exa 3.12 Transmission function . . . . . . . . . . . . . . . . . . 41Exa 3.13 Air Conditioning System . . . . . . . . . . . . . . . . 41Exa 3.14 DeMorgans Law . . . . . . . . . . . . . . . . . . . . . 42Exa 4.1 Irredundant expressions . . . . . . . . . . . . . . . . . 44Exa 4.2 Irredundant expressions 2 . . . . . . . . . . . . . . . . 52Exa 4.3 Reduce Expression . . . . . . . . . . . . . . . . . . . . 60Exa 4.4 BCD to Excess 3 Convertor . . . . . . . . . . . . . . . 68Exa 4.5 5 variable Kmap . . . . . . . . . . . . . . . . . . . . . 69Exa 4.6 Prime Implicants . . . . . . . . . . . . . . . . . . . . . 86Exa 4.7 Prime Implicants 2 . . . . . . . . . . . . . . . . . . . . 87Exa 4.8 Prime Implicants Of a Function . . . . . . . . . . . . . 87Exa 4.9 Prime Implicants Of a Function 2 . . . . . . . . . . . . 88Exa 4.10 Cyclic Prime Implicant map . . . . . . . . . . . . . . . 88Exa 5.1 Odd Parity Bit Generator . . . . . . . . . . . . . . . . 89Exa 5.2 Serial To Parallel converter . . . . . . . . . . . . . . . 90Exa 5.3 Transmission function for a network . . . . . . . . . . 91Exa 5.4 4 Input Contact Network . . . . . . . . . . . . . . . . 92Exa 5.5 Minimal contact Network . . . . . . . . . . . . . . . . 93Exa 6.1 Function Decomposition . . . . . . . . . . . . . . . . . 95Exa 6.3 Muliplicity . . . . . . . . . . . . . . . . . . . . . . . . 95Exa 6.6 Symmetric . . . . . . . . . . . . . . . . . . . . . . . . 97Exa 6.7 Symmetric 2 . . . . . . . . . . . . . . . . . . . . . . . 97Exa 7.1 weighted Sum . . . . . . . . . . . . . . . . . . . . . . . 99Exa 7.2 Inequalities . . . . . . . . . . . . . . . . . . . . . . . . 100Exa 7.3 Unate Functions . . . . . . . . . . . . . . . . . . . . . 102Exa 7.4 three cube representation . . . . . . . . . . . . . . . . 102Exa 7.5 True Vertex . . . . . . . . . . . . . . . . . . . . . . . . 103Exa 8.1 NOR Logic Circuit . . . . . . . . . . . . . . . . . . . . 105Exa 8.2 Path Sensitizing . . . . . . . . . . . . . . . . . . . . . 106Exa 8.3 Two level OR AND Network . . . . . . . . . . . . . . 106Exa 8.4 Various errors Summarized . . . . . . . . . . . . . . . 107Exa 10.1 Reducing machine . . . . . . . . . . . . . . . . . . . . 108Exa 10.2 Compaitability Graph . . . . . . . . . . . . . . . . . . 109Exa 12.4 Closed Partitions . . . . . . . . . . . . . . . . . . . . . 111Exa 12.5 Output Consistent . . . . . . . . . . . . . . . . . . . . 112

6

Page 8: Switching and Finite Automata Theory_ Z. Kohavi

Exa 12.7 Dependence . . . . . . . . . . . . . . . . . . . . . . . . 113Exa 12.8 input Consistent Matrix . . . . . . . . . . . . . . . . . 113Exa 12.9 Implementation of Input Consistent matrix . . . . . . 114Exa 12.10 Autonous Clock . . . . . . . . . . . . . . . . . . . . . 114Exa 12.11 partition pair . . . . . . . . . . . . . . . . . . . . . . . 115Exa 12.12 partition pair 2 . . . . . . . . . . . . . . . . . . . . . . 115Exa 12.14 State Consistent Partitions . . . . . . . . . . . . . . . 116Exa 13.1 Fault DetectionExeriment . . . . . . . . . . . . . . . . 118Exa 14.2 Synchronizing tree . . . . . . . . . . . . . . . . . . . . 120Exa 14.3 Contracted State Machine . . . . . . . . . . . . . . . . 121Exa 14.4 Testing Table . . . . . . . . . . . . . . . . . . . . . . . 124Exa 14.6 Testing graph . . . . . . . . . . . . . . . . . . . . . . . 125Exa 16.7 Testing Table 2 . . . . . . . . . . . . . . . . . . . . . . 126Exa 15.3 Transfer function . . . . . . . . . . . . . . . . . . . . . 128Exa 15.4 Impulse response . . . . . . . . . . . . . . . . . . . . . 129Exa 15.5 Null Sequence . . . . . . . . . . . . . . . . . . . . . . 130Exa 15.6 Null Sequence 2 . . . . . . . . . . . . . . . . . . . . . 130Exa 15.10 Reducable . . . . . . . . . . . . . . . . . . . . . . . . . 131Exa 15.11 Linear Machine . . . . . . . . . . . . . . . . . . . . . . 132Exa 15.12 Linear Machine 2 . . . . . . . . . . . . . . . . . . . . . 133Exa 15.15 Commutative ring . . . . . . . . . . . . . . . . . . . . 134Exa 15.16 Identifying Whether the Ring is a Field Or not . . . . 134Exa 15.17 Finite Field . . . . . . . . . . . . . . . . . . . . . . . . 135Exa 16.2 Prove the identity . . . . . . . . . . . . . . . . . . . . 137Exa 16.3 Prove the identity 2 . . . . . . . . . . . . . . . . . . . 137AP 1 Kmap Solver with out Dontcares . . . . . . . . . . . . 139AP 2 No.of . . . . . . . . . . . . . . . . . . . . . . . . . . . 146AP 3 Kmap Solver with out Dontcares . . . . . . . . . . . . 147AP 4 No.of 3d matrix . . . . . . . . . . . . . . . . . . . . . 154AP 5 Check . . . . . . . . . . . . . . . . . . . . . . . . . . . 154AP 6 Decimal to Base 2 Converter . . . . . . . . . . . . . . 155AP 7 Kmap with dont cares . . . . . . . . . . . . . . . . . . 157AP 8 Kmap for 3 variables with out dontcares . . . . . . . . 164AP 9 Binary to Decimal convertor . . . . . . . . . . . . . . 168

7

Page 9: Switching and Finite Automata Theory_ Z. Kohavi

Chapter 1

Number System and Codes

Scilab code Exa 1.1 converts no to base 10

1 clc // c l e a r s the command window2 clear // c l e a r s a l l the v a r i a b l e s34 i=1;w=1; // f l a g s56 bin =432.2 // g i v en o c t a l number which shou ld be

e xp r e s s e d i n base 107 temp1=floor(bin);// s e p a r a t i n g i n t e g e r pa r t from the

g i v en number8 temp2=modulo(bin ,1);// s e p a r a t i n g dec ima l pa r t from

the g i v en number9 temp2=temp2 *10^3; // c o nv e r t i n g dec ima l va l u e to

i n t e r g e r f o r c onv en i en c e10 while(temp1 >0) // s t o r i n g each i n t e g e r d i g i t i n v e c t o r

f o r c onv en i en c e11 p(i)=modulo(temp1 ,10);

12 temp1=round(temp1 /10);

13 i=i+1;

14 end

15 while(temp2 >0) // s t o r i n g each dec ima l d i g i t i n v e c t o rf o r c onv en i en c e

8

Page 10: Switching and Finite Automata Theory_ Z. Kohavi

16 q(w)=modulo(temp2 ,10);

17 temp2=(temp2 /10);

18 temp2=round(temp2);

19 w=w+1;

20 end

21 temp1 =0; // c l e a r i n g temporary v a r i a b l e ’ temp1 ’22 for i=1: length(p)// ch e ck i ng whether i t i s a b ina ry

number or not23 if(p(i) >8) then

24 disp( ’ not a b ina ry number ’ );25 abort;

26 end

27 end

2829 for i=1: length(p)// m u l t i p l i y i n g the b i t s o f i n t e g e r

pa r t with t h e i r p o s i t i o n v a l u e s and adding30 temp1=temp1 +(p(i)*8^(i-1));

31 end

3233 temp2 =0; // f l a g b i t3435 for z=1: length(q)

36 // m u l t i p l i y i n g the b i t s o f dec ima l pa r t with t h e i rp o s i t i o n v a l u e s and adding

37 temp2=temp2 +(q(z)*8^( -1*(4 -z)));

38 end

39 temp=temp1+temp2;

40 // f i n a l l y adding both the i n t e g e r and dec ima l p a r t sto g e t t o t a l output .

41 disp(temp);// d i s p l a y i n g the output

Scilab code Exa 1.2 converts binary number to base 10

1 clc;// c l e a r s the command window2 clear;// c l e a r s a l l the v a r i a b l e s

9

Page 11: Switching and Finite Automata Theory_ Z. Kohavi

3 i=1;w=1;

4 bin =1101.01; // Given b ina ry number which we need tobe c onv e r t i n t o dec ima l

5 temp1=floor(bin);// s e p a r a t i n g i n t e g e r pa r t from theg i v en number

6 temp2=modulo(bin ,1);// s e p a r a t i n g dec ima l pa r t fromthe g i v en number

7 temp2=temp2 *10^3; // c o nv e r t i n g dec ima l va l u e toi n t e r g e r f o r c onv en i en c e

8 while(temp1 >0) // s t o r i n g each i n t e g e r d i g i t i n v e c t o rf o r c onv en i en c e

9 p(i)=modulo(temp1 ,10);

10 temp1=floor(temp1 /10);

11 i=i+1;

12 end

13 while(temp2 >0) // s t o r i n g each dec ima l d i g i t i n v e c t o rf o r c onv en i en c e

14 q(w)=modulo(temp2 ,2);

15 temp2=(temp2 /10);

16 temp2=floor(temp2);

17 w=w+1;

18 end

19 temp1 =0; // f l a g b i t20 for i=1: length(p)// ch e ck i ng whether i t i s a b ina ry

number or not21 if(p(i) >1) then

22 disp( ’ not a b ina ry number ’ );23 abort;

24 end

25 end

26 for i=1: length(p)

27 // m u l t i p l i y i n g b i t s o f i n t e g e r pa r t with t h e i rp o s i t i o n v a l u e s and adding

28 temp1=temp1 +(p(i)*2^(i-1));

29 end

30 temp2 =0; // f l a g b i t31 for z=1: length(q)

32 // m u l t i p l i y i n g b i t s o f dec ima l pa r t with t h e i r

10

Page 12: Switching and Finite Automata Theory_ Z. Kohavi

p o s i t i o n v a l u e s and adding33 temp2=temp2 +(q(z)*2^( -1*(4 -z)));

34 end

35 temp=temp1+temp2;

36 // f i n a l l y adding both the i n t e g e r and dec ima l p a r t sto g e t t o t a l output .

37 disp(temp);// d i s p l a y i n g the output

Scilab code Exa 1.3 convert decimal number to base 8

1 clc;// c l e a r s the command window2 clear;// c l e a r s a l l the v a r i a b l e s3 format( ’ v ’ ,8);// making the d e f a u l t p r e c i s i o n to 8

s i g n i f i c a n t d i g i t s4 i=1;

5 dec =548; // g i v en dec ima l number which shou ld bee xp r e s s e d i n base 8

6 temp=dec;

7 i=1;

8 d=8;

9 while(temp >0) // s t o r i n g each i n t e g e r d i g i t i n v e c t o rf o r c onv en i en c e

10 p(i)=( modulo(floor(temp),d))

11 temp=floor(temp)/d;

12 i=i+1;

13 end

14 temp2 =0;

15 for j=1: length(p)

16 // m u l t i p l i y i n g b i t s o f i n t e g e r pa r t with t h e i rp o s i t i o n v a l u e s and adding

17 temp2=temp2 +(p(j)*10^(j-1));

18 end

19 disp(temp2 ,” Octa l number”);20 dec =345;

21 // g i v en dec ima l number which shou ld be e xp r e s s e d i n

11

Page 13: Switching and Finite Automata Theory_ Z. Kohavi

base 822 temp=dec;

23 i=1;

24 d=6;

25 while(temp >0) // s t o r i n g each i n t e g e r d i g i t i n v e c t o rf o r c onv en i en c e

26 p(i)=( modulo(floor(temp),d))

27 temp=floor(temp)/d;

28 i=i+1;

29 end

30 temp2 =0;

31 for j=1: length(p)

32 // m u l t i p l i y i n g b i t s o f i n t e g e r pa r t with t h e i rp o s i t i o n v a l u e s and adding

33 temp2=temp2 +(p(j)*10^(j-1));

34 end

35 disp(temp2 ,”Base 6”);

Scilab code Exa 1.4 Convert decimal value in base 10 to base 8

1 clc;// c l e a r s the command window2 clear;// c l e a r s a l l the v a r i a b l e s3 format( ’ v ’ ,8);// making the d e f a u l t p r e c i s i o n to 8

s i g n i f i c a n t d i g i t s4 i=1;

5 dec =0.3125; // g i v en dec ima l number which shou ld bee xp r e s s e d i n base 8

6 temp=modulo (0.3125 ,1);// s e p a r a t i n g dec ima l pa r t fromthe g i v en number

78 while(temp ~=0) // s t o r i n g each dec ima l d i g i t i n

v e c t o r f o r c onv en i en c e9 temp=temp *8;

10 p(i)=floor(temp);

11 i=i+1;

12

Page 14: Switching and Finite Automata Theory_ Z. Kohavi

12 temp=modulo(temp ,1);

13 end

1415 temp1 =0; // f l a g b i t16 for j=1: length(p)

17 // m u l t i p l i y i n g b i t s o f dec ima l pa r t with t h e i rp o s i t i o n v a l u e s and adding

18 temp1=temp1 +(10^( -1*j)*p(j))

19 end

20 disp(temp1);// d i s p l a y s the f i n a l output

Scilab code Exa 1.5 convert decimal number to base 2

1 clc;// c l e a r s the command window2 clear;// c l e a r s a l l the v a r i a b l e s3 format( ’ v ’ ,18);// chang ing the d e f a u l t p r c i s i o n to 20

s i g n i f i c a n t d i g i t s45 i=1;x=1; // f l a g b i t s67 dec =432.354; // g i v en dec ima l number which shou ld be

e xp r e s s e d i n base 28 temp2=floor(dec);// s e p a r a t i n g i n t e g e r pa r t from the

g i v en number9 temp4=modulo(dec ,1);// s e p a r a t i n g dec ima l pa r t from

the g i v en number1011 while(temp2 >0) // s t o r i n g each i n t e g e r d i g i t i n v e c t o r

f o r c onv en i en c e12 p(i)=( modulo(floor(temp2) ,2))

13 temp2=floor(temp2)/2;

14 i=i+1;

15 end

1617 temp2 =0; // c l e a r i n g temporary v a r i a b l e ’ temp2 ’

13

Page 15: Switching and Finite Automata Theory_ Z. Kohavi

1819 for j=1: length(p)

20 // m u l t i p l i y i n g b i t s o f i n t e g e r pa r t with t h e i rp o s i t i o n v a l u e s and adding

21 temp2=temp2 +(p(j)*10^(j-1));

22 end

2324 while(temp4 ~=0) // s t o r i n g each dec ima l d i g i t i n

v e c t o r f o r c onv en i en c e25 temp4=temp4 *2;

26 d(x)=floor(temp4);

27 x=x+1;

28 temp4=modulo(temp4 ,1);

29 end

3031 temp5 =0; // c l e a r i n g temporary v a r i a b l e ’

temp5 ’3233 for j=1: length(d)

34 // m u l t i p l i y i n g b i t s o f dec ima l pa r t with t h e i rp o s i t i o n v a l u e s and adding

35 temp5=temp5 +(10^( -1*j)*d(j))

36 end

3738 temp3=temp2+temp5;

39 // f i n a l l y adding both the i n t e g e r and dec ima l p a r t sto g e t t o t a l output .

40 disp(temp3);// d i s p l a y s output

Scilab code Exa 1.6 Convert Octal number to Base 2

1 clc;// c l e a r s the command window2 clear;// c l e a r s a l l the v a r i a b l e s3 format( ’ v ’ ,8);// s e t t i n g the d e f a u l t p r e c i s i o n to 84

14

Page 16: Switching and Finite Automata Theory_ Z. Kohavi

5 i=1;w=1;

67 bin =123.4; // Given o c t a l number which we need to be

c onve r t i n t o b ina ry8 temp1=floor(bin);// s e p a r a t i n g i n t e g e r pa r t from the

g i v en number9 temp2=modulo(bin ,1);// s e p a r a t i n g dec ima l pa r t from

the g i v en number10 temp2=temp2 *10^3; // c o nv e r t i n g dec ima l va l u e to

i n t e r g e r f o r c onv en i en c e1112 while(temp1 >0) // s t o r i n g each i n t e g e r d i g i t i n

v e c t o r f o r c onv en i en c e13 p(i)=modulo(temp1 ,10);

14 temp1=round(temp1 /10);

15 i=i+1;

16 end

1718 while(temp2 >0) // s t o r i n g each dec ima l d i g i t i n

v e c t o r f o r c onv en i en c e19 q(w)=modulo(temp2 ,10);

20 temp2=(temp2 /10);

21 temp2=round(temp2);

22 w=w+1;

23 end

2425 temp1 =0; // c l e a r i n g temporary v a r i a b l e ’ temp1 ’2627 for i=1: length(p) // ch e ck i ng whether i t i s a b ina ry

number or not28 if(p(i) >8) then

29 disp( ’ not a b ina ry number ’ );30 abort;

31 end

32 end

3334 for i=1: length(p)

35 // m u l t i p l i y i n g b i t s o f dec ima l pa r t with t h e i r

15

Page 17: Switching and Finite Automata Theory_ Z. Kohavi

p o s i t i o n v a l u e s and adding36 temp1=temp1 +(p(i)*8^(i-1));

37 end

3839 temp2 =0; // c l e a r i n g temporary v a r i a b l e ’ temp2 ’4041 for z=1: length(q)

42 // m u l t i p l i y i n g b i t s o f dec ima l pa r t with t h e i rp o s i t i o n v a l u e s and adding

43 temp2=temp2 +(q(z)*8^( -1*(4 -z)));

44 end

4546 temp=temp1+temp2;

47 // adding both i n t e g e r and dec ima l p a r t s to g e t t o t a lde c i aml va lu e .

48 dec=temp;

4950 temp2=floor(dec); // s e p a r a t i n g i n t e g e r pa r t from the

g i v en number51 temp3=modulo(dec ,1);// s e p a r a t i n g dec ima l pa r t from

the g i v en number52 format( ’ v ’ ,18);// s e t t i n g the d e f a u l t p r e c i s i o n to 85354 i=1;x=1; // f l a g b i t s5556 while(temp2 >0) // s t o r i n g each i n t e g e r d i g i t i n v e c t o r

f o r c onv en i en c e57 p(i)=( modulo(floor(temp2) ,2))

58 temp2=floor(temp2)/2;

59 i=i+1;

60 end

6162 temp2 =0; // c l e a r s temporary v a r i a b l e ’ temp2 ’6364 for j=1: length(p)

65 // m u l t i p l i y i n g b i t s o f i n t e g e r pa r t with t h e i rp o s i t i o n v a l u e s and adding

66 temp2=temp2 +(p(j)*10^(j-1));

16

Page 18: Switching and Finite Automata Theory_ Z. Kohavi

67 end

6869 temp4=modulo(temp3 ,1);

7071 while(temp4 ~=0) // s t o r i n g each dec ima l d i g i t i n

v e c t o r f o r c onv en i en c e72 temp4=temp4 *2;

73 d(x)=floor(temp4);

74 x=x+1;

75 temp4=modulo(temp4 ,1);

76 end

7778 temp5 =0; // c l e a r s temporary v a r i a b l e ’ temp2 ’7980 for j=1: length(d)

81 // m u l t i p l i y i n g b i t s o f dec ima l pa r t with t h e i rp o s i t i o n v a l u e s and adding

82 temp5=temp5 +(10^( -1*j)*d(j))

83 end

8485 temp=temp2+temp5;

86 // f i n a l l y adding both the i n t e g e r and dec ima l p a r t sto g e t t o t a l output .

87 disp(temp);// d i s p l a y i n g the output

check Appendix AP 9 for dependency:

bin21dec.sci

check Appendix AP 6 for dependency:

dec21bin.sci

Scilab code Exa 1.7 Adds two binary numbers

1 clc;

2 a=0111.10; // f i r s t number

17

Page 19: Switching and Finite Automata Theory_ Z. Kohavi

3 b=1111.01; // second number4 A=bin21dec(a); // c o nv e r t i n g a i n to dec ima l number5 B=bin21dec(b); // c o nv e r t i n g b in to dec ima l number6 S=A+B; // adding the two dec ima l numbers7 temp=dec21bin(S); // c o nv e r t i n g the dec ima l sum back

to b ina ry8 format( ’ v ’ ,10); // chang ing the d e f a u l t p r e c i s i o n

to 89 disp(temp); // d i s p l a y i n g the f i n a l output

check Appendix AP 9 for dependency:

bin21dec.sci

check Appendix AP 6 for dependency:

dec21bin.sci

Scilab code Exa 1.8 Subtracts Two Binary numbers

1 clc;

2 format( ’ v ’ ,8); // chang ing the d e f a u l t p r e c i s i o n to8

3 a=10010.11; // f i r s t number4 b=01100.10; // second number5 A=bin21dec(a); // c o nv e r t i n g a i n to dec ima l number6 B=bin21dec(b); // c o nv e r t i n g b in to dec ima l number7 S=A-B; // s u b t r a c t i n g the two dec ima l

numbers8 temp=dec21bin(S); // c o nv e r t i n g the dec ima l number

back to b ina ry9 disp(temp); // d i s p l a y i n g the f i n a l output

check Appendix AP 9 for dependency:

bin21dec.sci

check Appendix AP 6 for dependency:

18

Page 20: Switching and Finite Automata Theory_ Z. Kohavi

dec21bin.sci

Scilab code Exa 1.9 Multiplies two Binary numbers

1 clc;

2 format( ’ v ’ ,8); // chang ing the d e f a u l t p r e c i s i o n to8

3 a=11001.1; // f i r s t number4 b=110.1; // second number5 A=bin21dec(a); // c o nv e r t i n g a i n to dec ima l number6 B=bin21dec(b); // c o nv e r t i n g b in to dec ima l number7 S=A*B; // mu l t i p l y the two dec ima l numbers8 temp=dec21bin(S); // c o nv e r t i n g the dec ima l product

back to b ina ry9 disp(temp); // d i s p l a y i n g the f i n a l output

check Appendix AP 9 for dependency:

bin21dec.sci

check Appendix AP 6 for dependency:

dec21bin.sci

Scilab code Exa 1.10 Division of Two Binary Numbers

1 clc;

2 format( ’ v ’ ,8);// chang ing the d e f a u l t p r e c i s i o n to 83 a=1000100110; // f i r s t number4 b=11001; // second number5 A=bin21dec(a);// c o nv e r t i n g a i n to dec ima l number6 B=bin21dec(b);// c o nv e r t i n g b in to dec ima l number7 S=A/B; // mu l t i p l y the two dec ima l numbers8 temp=dec21bin(S);// c o nv e r t i n g the dec ima l product

back to b ina ry

19

Page 21: Switching and Finite Automata Theory_ Z. Kohavi

9 disp(” qu o t i e n t ”);10 disp(temp);// d i s p l a y i n g the f i n a l output

20

Page 22: Switching and Finite Automata Theory_ Z. Kohavi

Chapter 2

Sets Relations and Lattices

Scilab code Exa 2.1 Set Of All even Numbers

1 clear;

2 clc;

3 // l owe r=input (” input the l owe r l i m i t o f the s e t ”) ;4 // upper=input (” input the upper l i m i t o f the s e t ”) ;5 lower =1; // l owe r l i m i t o f the s e t6 upper =10; // upper l i m i t o f the s e t7 temp=lower;

8 h=1;i=1;

9 while(temp <= upper)

10 if(modulo(temp ,2) ==0) // ch e ck i ng whether anumber i s even or not

11 e(h)=temp;

12 h=h+1;

13 else

14 o(i)=temp; // odd number15 i=i+1;

16 end

17 temp=temp +1;

18 end;

19 disp(” the s e t o f even number between the l i m i t s ”)20 disp(e);

21

Page 23: Switching and Finite Automata Theory_ Z. Kohavi

21 disp(” the s e t o f odd number between the l i m i t s ”)22 disp(o);

Scilab code Exa 2.2 Subsets Of a Faces of a die

1 clear;

2 clc;

3 //N=input (” e n t e r the e l emen t s i n the s e t ”) ;4 //n=1;5 // wh i l e ( n<=N)6 // i ( n )=input (” e n t e r the e l emen t s o f f i r s t s e t ”) ;7 // n=n+1;8 // end ;9 N=6;

10 i(1)= ’ f 1 ’ ;i(2)= ’ f 2 ’ ;i(3)= ’ f 3 ’ ;i(4)= ’ f 4 ’ ;i(5)= ’ f 5 ’ ;i(6)= ’ f 6 ’ ;

11 disp(” n u l l s e t ”); // s i n c e n u l l s e t i s s ub s e t o fany s e t .

12 for a=1:1:N // s e t o f s i n g l e e l emen t s13 disp(i(a));

14 end

15 c=1;

16 for a=1:1:N-1 // s e t o f two e l ement s17 for b=a:1:N

18 if(a~=b)

19 m(c,1)=i(a);

20 m(c,2)=i(b);

21 c=c+1;

22 end

23 end;

24 end;

25 disp(m);

26 d=1;

27 for a=1:1:N // s e t o f t h r e e e l emen t s28 for b=a:1:N

22

Page 24: Switching and Finite Automata Theory_ Z. Kohavi

29 for c=b:1:N

30 if((a~=b)&(b~=c)&(c~=a))

31 p(d,1)=i(a);

32 p(d,2)=i(b);

33 p(d,3)=i(c);

34 d=d+1;

35 end

36 end

37 end

38 end

39 disp(p);

40 e=1;

41 for a=1:1:N // s e t o f f o u r e l emen t s42 for b=a:1:N

43 for c=b:1:N

44 for d=c:1:N

45 if((a~=b)&(b~=c)&(c~=d)&(d~=a)&(b~=d

)&(a~=c))

46 q(e,1)=i(a);

47 q(e,2)=i(b);

48 q(e,3)=i(c);

49 q(e,4)=i(d)

50 e=e+1;

51 end

52 end

53 end

54 end

55 end

56 disp(q);

57 f=1;

58 for a=1:1:N // s e t o f f i v e e l emen t s59 for b=a:1:N

60 for c=b:1:N

61 for d=c:1:N

62 for e=d:1:N

63 if((a~=b)&(b~=c)&(c~=d)&(d~=e)&(

e~=a)&(a~=c)&(a~=d)&(b~=d)&(c

~=e)&(b~=e))

23

Page 25: Switching and Finite Automata Theory_ Z. Kohavi

64 r(f,1)=i(a);

65 r(f,2)=i(b);

66 r(f,3)=i(c);

67 r(f,4)=i(d);

68 r(f,5)=i(e);

69 f=f+1;

70 end

71 end

72 end

73 end

74 end

75 end

76 disp(r);

77 for a=1:1:N // s e t o f s i x e l emen t s78 s(1,1)=i(1);

79 s(1,2)=i(2);

80 s(1,3)=i(3);

81 s(1,4)=i(4);

82 s(1,5)=i(5);

83 s(1,6)=i(6);

84 end

85 disp(s);

Scilab code Exa 2.4 Relation between two sets

1 clear;

2 clc;

3 N1=2;

4 N2=3;

5 //n=1;6 // wh i l e ( n<=N1)7 // i ( n )=input (” e n t e r the e l emen t s o f f i r s t s e t ”) ;8 // n=n+1;9 // end ;

10 i=[ ’ p ’ ’ q ’ ]; // s e t A

24

Page 26: Switching and Finite Automata Theory_ Z. Kohavi

11 //n=1;12 // wh i l e ( n<=N2)13 // j ( n )=input (” e n t e r the e l emen t s o f s econd s e t ”)

;14 // n=n+1;15 // end ;16 j=[ ’ r ’ ’ s ’ ’ t ’ ]; // s e t B17 c=1;d=1;

18 for a=1:1:N1 // r e a l t i o n between s e t s A and B19 for b=1:1:N2

20 m(c,d)=i(a);

21 m(c,d+1)=j(b);

22 c=c+1;

23 end;

24 end;

25 disp(m);

Scilab code Exa 2.5 Equivalence relation

1 clear;

2 clc;

3 //N=input (” e n t e r the no o f e l emen t s i n the s e t : ” ) ;4 // f o r i =1 : 1 :N5 // s ( 1 , i )=input (” e n t e r the e l emen t s i n the s e t

: ” ) ;6 // end ;7 //n=input (” e n t e r the number o f p a i r s i n the r e l a t i o n

: ” ) ;8 // f o r j =1 :1 : n9 // f o r k =1 :1 : 2

10 // r ( j , k )=input (” e n t e r the e l emen t s i n ther e l a t i o n : ” ) ;

11 // end12 // end13 N=2;

25

Page 27: Switching and Finite Automata Theory_ Z. Kohavi

14 s=[ ’ a ’ ’ b ’ ]; // e l ement s i n the s e t15 n=3;

16 r=[ ’ a ’ ’ a ’ ; ’ b ’ ’ b ’ ; ’ a ’ ’ b ’ ]; // r e a l t i o n betweenthe e l emen t s i n the above s e t .

17 ref=zeros(1,N);

18 for a=1:1:N

19 for b=1:1:n

20 if(r(b,1)==s(1,a)&r(b,2)==s(1,a))

21 ref(1,a)=1;

22 end

23 end

24 end

25 for i=1:1:N // ch e ck i ng whether above r e l a t i o ni s r e f l e x i v e or not

26 if(ref(1,i)==1)

27 disp(” the above r e l a t i o n i s r e f l e x i v e withe l emen t s ”);

28 disp(s(1,i));

29 disp(” ”);30 end

31 end

32 sym=zeros (1,(N*N-1)/2);

33 s(1,N+1)=s(1,1);

34 for a=1:1:N // ch e ck i ng whether abover e l a t i o n i s symmetr ic or not

35 for b=1:1:n

36 if(r(b,1)==s(1,a)&r(b,2)==s(1,a+1))

37 for d=1:1:n

38 if(r(d,1)==s(1,a+1)&r(d,2)==s(1,a))

39 sym(1,a)=1;

40 disp(” the above r e l a t i o n i ssymmetr ic f o r t h e s e p a i r s : ”);

41 disp(” ) ”,s(1,a+1),s(1,a),” ( ”);42 end

43 end

44 end

45 end

46 end

26

Page 28: Switching and Finite Automata Theory_ Z. Kohavi

47 for a=1:1:n // ch e ck i ng whether i t i st r a n s t i v e or not .

48 u=r(a,1);

49 v=r(a,2);

50 for b=a:1:n

51 if(r(b,1)==v)

52 w=r(b,2);

53 for c=b:1:n

54 if(r(c,1)==w&r(c,2)==u)

55 disp(” s a t i s f i e st r a n s t i t v e p r ope r t y ”);

56 abort;

57 end

58 end

59 end

60 end

61 end

Scilab code Exa 2.6 Equivalence relation 2

1 clear;

2 clc;

3 //N=input (” e n t e r the e l emen t s i n the s e t : ” ) ;4 // f o r i =1 : 1 :N5 // s ( i )=input (” e n t e r the e l emen t s : ” ) ;6 // end7 N=2;

8 s=[ ’ a ’ ’ b ’ ];9 disp(”The e q u i v a l e n c e r e l a t i o n o f above s e t i s : ”);

10 h=1;

11 for i=1:1:N // to s a t i s f y r e f l e x i v e p r op e r t y12 ref(h,1)=s(i);

13 ref(h,2)=s(i);

14 h=h+1;

27

Page 29: Switching and Finite Automata Theory_ Z. Kohavi

15 end

16 for i=1:1:N // to s a t i s f y symmetr ic p r op e r t y17 for j=i:1:N

18 if(i~=j)

19 ref(h,1)=s(i);

20 ref(h,2)=s(j);

21 h=h+1;

22 end

23 end

24 end

25 m=1;

26 for i=1: max(size(ref(:,1))) // to s a t i s f yt r a n s t i v e p r op e r t y

27 if(ref(i,1)~=ref(i,2))

28 ref1(m,1)=ref(i,2);

29 ref1(m,2)=ref(i,1);

30 m=m+1;

31 end

32 end

33 disp(ref);

34 disp(ref1);

Scilab code Exa 2.7 Function Check

1 clc;

2 clear;

3 //n1=input (” e n t e r the no o f e l emen t s i n the 1 s t s e t”) ;

4 // f o r i =1 : 1 : n15 // s1 ( i )=input (” e n t e r the e l emen t s o f 1 s t s e t : ” ) ;6 // end7 n1=3;

8 s1=[ ’ a1 ’ ’ a2 ’ ’ a3 ’ ]; // s e t A9 //n2=input (” e n t e r the no o f e l emen t s i n the 2nd s e t

”) ;

28

Page 30: Switching and Finite Automata Theory_ Z. Kohavi

10 // f o r i =1 : 1 : n211 // s2 ( i )=input (” e n t e r the e l emen t s o f 2 ns s e t : ” ) ;12 // end13 n2=2;

14 s1=[ ’ b1 ’ ’ b2 ’ ]; // s e t B15 //N=input (” e n t e r the p a i r s i n the r e l a t i o n which you

want to check whether i s a f u n c t i o n ”) ;16 // f o r i =1 : 1 :N17 // f o r j =1 :1 : 218 // r ( i , j )=input (” e n t e r the e l emen t s i n the

r e l a t i o n : ” ) ;19 // end20 // end21 N=3;

22 r=[ ’ a1 ’ ’ b1 ’ ; ’ a2 ’ ’ b2 ’ ; ’ a2 ’ ’ b1 ’ ]; // Rea l t i o nr

23 for i=1:1:N // che ck s whether the r e l a t i o ni s f u n c t i o n or not

24 for j=i:1:N

25 if(r(i,1)==r(j,1) & i~=j)

26 disp(” the r e l a t i o n i s not a f u n c t i o n ”);27 abort;

28 end

29 end

30 end

31 disp(” the r e a l t i o n i s a f u c n t i o n ”);

Scilab code Exa 2.11 Partial Ordering Divisibilty Relation

1 clear;

2 clc;

3 //N=input (” e n t e r the number f o r which d i v i s i b i l t y ”);

4 N=45; // d i v i d e n t5 h=1;

29

Page 31: Switching and Finite Automata Theory_ Z. Kohavi

6 for i=1:N // f i n d i n g a l l the d i v i s o r s o f 457 if(modulo(N,i)==0)

8 r(h)=i;

9 h=h+1;

10 end

11 end

12 n=max(size(r));

13 disp(” Hasse Diagram”) // d i s p l a y i n g i n the formo f ha s s e diagram

14 disp(”−−−−−−−−−−−−”)15 disp(r(n));

16 h=2;

17 for i=n-1: -2:3

18 disp(”−−−−−−−−−−−”);19 disp(r(i),r(i-1));

20 h=h+1;

21 end

22 disp(”−−−−−−−−−−”)23 disp(r(1));

Scilab code Exa 2.12 Ordering Relation

1 clear

2 clc

3 N=4;

4 // d e f i n i n g a l l the p a r t i a l o rd e r ed s e t s5 s(1,:)=[1 0];

6 s(2,:)=[0 1];

7 s(3,:)=[0 0];

8 s(4,:)=[1 1];

9 // F ind ing10 a=1;b=1;

11 for i=1:1:N // s o r t i n g based on the l e v e l12 for j=i:1:N

13 if(i~=j)

30

Page 32: Switching and Finite Automata Theory_ Z. Kohavi

14 u=s(i,1)+s(i,2);

15 v=s(j,1)+s(j,2);

16 if(u<v)

17 temp (1)=s(i,1);

18 temp (2)=s(i,2);

19 s(i,1)=s(j,1);

20 s(i,2)=s(j,2);

21 s(j,1)=temp (1);

22 s(j,2)=temp (2);

23 end

24 end

25 end

26 end

27 // d i s p l a y i n g i n the form o f ha s s e graph form28 disp(”1 s t s t a g e o f Hasse diagram ”);29 disp(s(1,:));

30 disp(”2nd s t a g e o f Hasse diagram ”);31 disp(s(2,:));

32 disp(s(3,:));

33 disp(”3 rd s t a g e o f Hasse diagram ”);34 disp(s(4,:));

Scilab code Exa 2.15 Lattice Of subsets

1 clear

2 clc

3 N=3;

4 s=[ ’ a ’ ’ b ’ ’ c ’ ]; // s e t f o r which l a t t i c eshou ld be d e f i n e d

5 for i=2:2^3

6 s(i,:)=s(1,:);

7 end

8 // d e f i n i n g 2nd l e v e l v e r t i c e s o f the l a t t i c e9 for i=2:4

10 s(i,i-1)= ’ 0 ’ ;

31

Page 33: Switching and Finite Automata Theory_ Z. Kohavi

11 end

12 // d e f i n i n g 3 rd l e v e l v e r t i c e s o f the l a t t i c e13 for i=5:6

14 s(i,i-4)= ’ 0 ’ ;15 s(i,i-3)= ’ 0 ’ ;16 end

17 s(7,1)= ’ 0 ’ ;s(7,3)= ’ 0 ’ ;18 // d e f i n i n g the f i n a l l e v e l o f v e r t i c e s o f the

l a t t i c e19 s(8,:)=[ ’ 0 ’ ’ 0 ’ ’ 0 ’ ];20 disp(”1 s t l e v e l ”);21 disp(s(1,:));

22 disp(”2nd l e v e l ”);23 disp(s(2,:));

24 disp(s(3,:));

25 disp(s(4,:));

26 disp(”3 rd l e v e l ”);27 disp(s(5,:));

28 disp(s(6,:));

29 disp(s(7,:));

30 disp(”4 th l e v e l ”);31 disp(s(8,:));

Scilab code Exa 2.16 glb and ulb

1 clear;

2 clc;

3 par1=[ ’ ab ’ , ’ cde ’ , ’ f h ’ , ’ g i ’ ]; // i n i t i a l p a r t i t i o n spar1

4 par2=[ ’ abc ’ , ’ de ’ , ’ f g ’ , ’ h i ’ ]; // p a r t i t i o n 25 // par=par1+par2 ;6 // lub−l owe r upper bound7 par_lub =[ ’ abcde ’ , ’ f g h i ’ ];8 disp(par_lub);

9 // par=par1 . par2

32

Page 34: Switching and Finite Automata Theory_ Z. Kohavi

10 // glb−g r e a t e s t l owe r bound11 par_glb =[ ’ ab ’ , ’ c ’ , ’ de ’ , ’ f ’ , ’ g ’ , ’ h ’ , ’ i ’ ];12 disp(par_glb);

33

Page 35: Switching and Finite Automata Theory_ Z. Kohavi

Chapter 3

Switching Algebra And ItsApplications

Scilab code Exa 3.1 Simplify 1

1 clear

2 clc;

3 disp(”T( x , y , z )=xˆyˆ z+yz+xz ”);4 disp(”∗∗Minimise the g i v en e x p r e s s i o n ∗∗”);5 disp(”∗∗ S i n c e z i s common in eve ry term tak i n g z

common∗∗”);6 disp(”T( x , y , z )=z ( xˆyˆ+y+x ) ”);7 disp(”∗∗From the p r ope r t y a+aˆb=a+b ∗∗”);8 disp(”T( x , y , z )=z ( xˆ+y+x ) ”);9 disp(”∗∗ S i n c e we know tha t a+aˆ=1 ∗∗”);

10 disp(”T( x , y , z )=z (1+y ) ”);11 disp(”∗∗we know tha t 1+a=1 ∗∗”);12 disp(”T( x , y , z )=z . 1 ”);13 disp(”T( x , y , z )=z ”);

Scilab code Exa 3.2 Simplify 2

34

Page 36: Switching and Finite Automata Theory_ Z. Kohavi

1 clear

2 clc

3 disp(”T( x , y , z )=(x+y ) [ x ˆ( yˆ+z ˆ) ]ˆ+xˆyˆ+xˆ z ˆ”);4 disp(”From the p r o p e r t i e s 1 . ( ab )ˆ=aˆ+bˆ 2 . ( a+b )ˆ=a

ˆbˆ”);5 disp(”T( x , y , z ) =((x+y ) ( x+yz ) )+xˆyˆ+xˆ z ˆ”);6 disp(” M u l t i p l i y i n g the f i r s t 2 terms ”);7 disp(”T( x , y , z )=(x+xyz+xy+yz )+xˆyˆ+xˆ z ˆ”);8 disp(”T( x , y , z )=(x(1+y+yz )+yz )+xˆyˆ+xˆ z ˆ”);9 disp(”T( x , y , z )=x+yz+xˆyˆ+xˆ z ˆ”);

10 disp(”we know a+aˆb=a+b”);11 disp(”T( x , y , z )=x+yˆ+yz+xˆ z ˆ”);12 disp(”T( x , y , z )=x+zˆ+yˆ+yz ”);13 disp(”T( x , y , z )=x+zˆ+yˆ+z ”);14 disp(” s i n c e z+zˆ=1”);15 disp(”T( x , y , z )=x+1+yˆ”);16 disp(”T( x , y , z )=1”)

Scilab code Exa 3.3 Prove the identity

1 clear

2 clc;

3 disp(”L .H. S = xy+xˆyˆ+yz ”);4 disp(”R.H. S = xy+xˆyˆ+xˆ z ”);5 disp(”Based on con s en su s theorem ”)6 disp(”we can w r i t e xˆyˆ+yz as xˆyˆ+yz+xˆ z bcoz the

two e x p r e s s i o n s a r e equa l ”);7 disp(” ( xˆyˆ+yz+xˆ z ( y+y ˆ) )=xˆyˆ+yz+xˆ yz+xˆyˆ z ”);8 disp(”xˆyˆ+yz+xˆ yz+xˆyˆ z=xˆyˆ(1+ z )+yz (1+x ˆ) ”);9 disp(”xˆyˆ+yz=xˆyˆ+yz+xˆ z ”);

10 disp(” so L .H. S=xy+xˆyˆ+yz=xy+xˆyˆ+yz+xˆ z ”);11 disp(” In the s i m i l a r way xy+yz+xˆ z can be s i m p l i f i e d

as xy+xˆ z ”);12 disp(” so L .H. S becomes xy+xˆ z+xˆyˆ”);13 disp(” thus L .H. S= R.H. S”);

35

Page 37: Switching and Finite Automata Theory_ Z. Kohavi

14 disp(” hence proved ”)

Scilab code Exa 3.4 Determine The Output of expression

1 clear;

2 clc;

3 // f u n c t i o n d e f i n i t i o n4 x=[0;0;0;0;1;1;1;1];

5 y=[0;0;1;1;0;0;1;1];

6 z=[0;1;0;1;0;1;0;1];

7 f=[1;0;1;1;0;0;1;1];

8 g=[0;1;0;1;1;0;1;0];

9 // c a l c u l a t i n g the v a l u e s o f e x p r e s s i o n s g i v en10 forg=bitor(f,g);

11 fandg=bitand(f,g);

12 fcmp=bitcmp(f,1);

13 s(:,1)=x;

14 s(:,2)=y;

15 s(:,3)=z;

16 s(:,4)=f;

17 s(:,5)=g;

18 s(:,6)=forg;

19 s(:,7)=fandg;

20 s(:,8)=fcmp;

21 p=[ ’ x ’ , ’ y ’ , ’ z ’ , ’ f ’ , ’ g ’ , ’ f+g ’ , ’ f g ’, ’ f ˆ ’ ];

22 disp(p);

23 disp(s);

Scilab code Exa 3.5 Simplify 3

1 clear;

2 clc;

36

Page 38: Switching and Finite Automata Theory_ Z. Kohavi

3 disp(”T(A,B,C,D)=AˆCˆ+ABD+BCˆD+ABˆDˆ+ABCDˆ”);4 disp(”Assume Aˆ=x , Cˆ=y , BD=z”);5 disp(”Now from con s en su s theorem f o r the f i r s t t h r e e

terms ”);6 disp(”BCˆD i s the redundant term so i t can be

removed ”);7 disp(”T(A,B,C,D)=AˆCˆ+ABD+ABˆDˆ+ABCDˆ”);8 disp(”T(A,B,C,D)=AˆCˆ+ABD+ADˆ(Bˆ+BC) ”);9 disp(”we know tha t a+aˆb=a+b”);

10 disp(”T(A,B,C,D)=AˆCˆ+ABD+ADˆ(Bˆ+C) ”);11 disp(”T(A,B,C,D)=AˆCˆ+A(BD+Dˆ(Bˆ+C) ) ”);

Scilab code Exa 3.6 Simplify 4

1 clear

2 clc

3 disp(”T(A,B,C,D)=AˆB+ABD+ABˆCDˆ+BC”);4 disp(”T(A,B,C,D)=B(Aˆ+AD)+C(ADˆBˆ+B) ”);5 disp(”T(A,B,C,D)=B(Aˆ+D)+C(ADˆ+B) ”);6 disp(”T(A,B,C,D)=AˆB+BD+ACDˆ+BC”);7 disp(”T(A,B,C,D)=AˆB+BD+ACDˆ+BC(A+Aˆ) ”);8 disp(”T(A,B,C,D)=AˆB+AˆBC+ABC+BD+ACDˆ”);9 disp(”T(A,B,C,D)=AˆB(1+C)+ABC+BD+ACDˆ”);

10 disp(”T(A,B,C,D)=AˆB+ABC+BD+ACDˆ”);11 disp(”∗∗Now apply c on s en su s theorem f o r 2nd 3 rd and

4 th terms ∗∗”);12 disp(” l e t x=D, y=B, z=AC”);13 disp(”T(A,B,C,D)=AˆB+BD+ACDˆ”);

Scilab code Exa 3.7 Expand the Expression

1 clear;

2 clc;

37

Page 39: Switching and Finite Automata Theory_ Z. Kohavi

3 disp(”T( x , y , z )=xˆy+zˆ+xyz ”);4 disp(”∗∗To det e rmine the c a n o n i c a l sum o f p roduc t s

we have to check f o r a product which i s not a minterm and then mu l t i p l y with the m i s s i n g v a r i a b l esuch tha t the e x p r e s s i o n va lu e doe sn t change ∗∗”)

;

5 disp(”T( x , y , z )=xˆy ( z+z ˆ)+(x+x ˆ) ( y+y ˆ) zˆ+xyz ”);6 disp(”T( x , y , z )=xˆ yz+xˆ yzˆ+xyzˆ+xyˆ zˆ+xˆ yzˆ+xˆyˆ zˆ+

xyz ”);7 disp(”T( x , y , z )=xˆ yz+xˆ yzˆ+xyzˆ+xyˆ zˆ+xˆyˆ zˆ+xyz ”);

Scilab code Exa 3.8 Expand the Expression 2

1 clear;

2 clc;

3 disp(”T( x , y , z )=x ˆ( yˆ+z ) ”);4 disp(”∗∗To det e rmine the c a n o n i c a l p roduct o f sums

form you need to check f o r a product which i s nota max term and then add i t with the m i s s i n g

terms such tha t the e x p r e s s i o n va lu e i s nota l t e r e d ∗∗”);

5 disp(”T( x , y , z )=(xˆ+yyˆ+zz ˆ) ( xxˆ+yˆ+z ) ”);6 disp(”a+b+cc ˆ can be w r i t t e n as product o f 2 max

terms ( a+b+c ) ( a+b+c ˆ) ”);7 disp(”a+bbˆ+cc ˆ can be w r i t t e n as ( a+b+c ) ( a+b+c ˆ) ( a+

bˆ+c ) ( a+bˆ+c ˆ) ”);8 disp(” from the above two p r o p e r t i e s we can w r i t e the

T( x , y , z ) as ”);9 disp(”T( x , y , z )=(xˆ+y+z ) ( xˆ+y+z ˆ) ( xˆ+yˆ+z ) ( xˆ+yˆ+z ˆ) (

x+yˆ+z ) ( xˆ+yˆ+z ) ”);10 disp(”T( x , y , z )=(xˆ+y+z ) ( xˆ+y+z ˆ) ( xˆ+yˆ+z ) ( xˆ+yˆ+z ˆ) (

x+yˆ+z ) ”);

38

Page 40: Switching and Finite Automata Theory_ Z. Kohavi

Scilab code Exa 3.9 POS

1 clear;

2 clc;

3 disp(”T( x , y , z )=xˆyˆ zˆ+xˆyˆ z+xˆ yz+xyz+xyˆ z+xyˆ z ˆ”);4 disp(” the complement Tˆ c o n s i s t s o f t ho s e minterms

which a r e not c on t a i n ed i n the e x p r e s s i o n f o r T”);

5 disp(”T=[xˆ yzˆ+xyz ˆ ] ˆ ”);6 disp(” ( x+yˆ+z ) ( xˆ+yˆ+z ) ”);

Scilab code Exa 3.10 Tabulate the Function of 2 variables

1 clear;

2 clc;

3 a1=0;a2=a1;a3=a1;

4 // a l l c omb ina t i on s o f 2 v a r i b l e i npu t s5 f(:,1) =[0;0;1;1];

6 f(:,2) =[0;1;0;1];

7 disp(”The tu r t h t a b l e o f f f o r a l l the comb ina t i on so f a0 , a1 , a2 , a3 a r e shown below ”)

8 // de t e rm in i ng the v a l u e s o f f f o r a l l c omb ina t i on so f a0 , a1 , a2 , a3

9 for a3=0:1

10 for a2=0:1

11 for a1=0:1

12 for a0=0:1

13 disp([ ’ a3 ’ ’ a2 ’ ’ a1 ’ ’ a0 ’ ]);

14 disp([a3 a2 a1 a0]);

15 i=1;

16 for x=0:1

17 for y=0:1

18 f0=bitand(a0 ,bitand(bitcmp(x

,1),bitcmp(y,1)));

39

Page 41: Switching and Finite Automata Theory_ Z. Kohavi

19 f1=bitand(a1 ,bitand(bitcmp(x

,1),y));

20 f2=bitand(a2 ,bitand(x,bitcmp

(y,1)));

21 f3=bitand(a3 ,bitand(x,y));

22 f4=bitor(f0 ,f1);

23 f5=bitor(f2 ,f3);

24 f(i,3)=bitor(f4 ,f5);

25 i=i+1;

26 end

27 end

28 disp([ ’ x ’ ’ y ’ ’ f ’ ]);29 disp(f);

30 disp( ’∗−−−−−−−−−−−−−−−−−−−−∗ ’ );31 end

32 end

33 end

34 end

Scilab code Exa 3.11 NOR

1 clear;

2 clc;

3 disp(”x NOR x=(x+x ) ˆ”);4 disp(”NOT Gate”);5 disp(”x NOR x=xˆxˆ=xˆ”);6 disp(”OR Gate”);7 disp(” ( x NOR y ) NOR ( x NOR y ) = ( xˆ NOR y ˆ) ˆ = x+y”)

;

8 disp(”AND Gate”);9 disp(” ( x NOR x ) NOR ( y NOR y )= xˆ NOR yˆ = xy”);

10 disp(”NAND Gate”);11 disp(” NOT ( ( x NOR x ) NOR ( y NOR y ) )= NOT ( xˆ NOR y

ˆ) = NOT( xy ) = ( xy ) ˆ”);12 disp(”XOR Gate”);

40

Page 42: Switching and Finite Automata Theory_ Z. Kohavi

13 disp(” ( xˆ NOR y ˆ) NOR ( x NOR y ) = xˆy+xyˆ”);14 disp(”XNOR Gate”);15 disp(” ( xˆ NOR y ) NOR ( x NOR y ˆ) = xy+xˆyˆ”);16 disp(” S i n c e eve ry o th e r ga t e can be implemented

u s i n g NOR gat e i t i s s a i d to be f u n c t i o n a l l ycomple te ”)

Scilab code Exa 3.12 Transmission function

1 clear;

2 clc;

3 disp(”T=xyˆ+(x+y ˆ) z ”);4 disp(” from the i d e n t i t y a+aˆb=a+b”);5 disp(”T=xyˆ+z ”);

Scilab code Exa 3.13 Air Conditioning System

1 clear;

2 clc;

3 disp(” Air c o n d i t i o n i n g system o f a s t o r a g e warehousew i l l be turned on i f and on ly i f i t s a t i s f i e s

t h e s e c o n d i t i o n s ”);4 disp(” l e t W deno t e s we ight o f 100 ton s or more”);5 disp(”H deno t e s r e l a t i v e humidi ty o f a t l e a s t 60

p e r c en t ”);6 disp(”T deno t e s t emparature above 60 d e g r e e s ”);7 disp(”P deno t e s ba r ome t r i c p r e s s u r e o f 30 or more”);8 disp(”∗− f i r s t c ond i t i o n −∗”);9 disp(”W<100 ton s => Wˆ ,H>=60 => H , T>60 ”);

10 disp(”A1=WˆHT”);11 disp(”∗−s econd cond i t i o n −∗”);12 disp(”W>100 ton s => W , T>60 => T”);13 disp(”A2=WT”);

41

Page 43: Switching and Finite Automata Theory_ Z. Kohavi

14 disp(”∗− t h i r d c ond i t i o n −∗”);15 disp(”W<100 ton s => Wˆ ,P>30 => P”);16 disp(”A3=WˆP”);17 disp(” s i n c e Air c ond t i o n i n g system shou ld be

a c t i v a t e d i f any one o f the above i s s a t i s f i e d so”);

18 disp(”A=A1+A2+A3”);19 disp(”A=WˆHT+WT+WˆP”);20 disp(”A=T(WˆH+W)+WˆP”);21 disp(”A=T(W+H)+WˆP”);22 disp(”Thus a comb ina t i ona l system with above

e x p r e s s i o n makes the a i r c o n d i t i o n i n g system onwhen r e q u i r e d ”)

Scilab code Exa 3.14 DeMorgans Law

1 clear;

2 clc;

3 i=1;

4 // a l l c omb ina t i on s o f 2 v a r i a b l e i npu t s5 f(:,1) =[0;0;1;1];

6 f(:,2) =[0;1;0;1];

7 // v e r i f y i n g D’ morgan f i r s t law8 for a=0:1

9 for b=0:1

10 f(i,3)=bitcmp(bitor(a,b) ,1);

11 f(i,4)=bitand(bitcmp(a,1),bitcmp(b,1));

12 i=i+1;

13 end

14 end

15 disp(” a b ( a+b ) ˆ aˆbˆ”);16 disp(f);

17 disp(” The r e f o r e ( a+b )ˆ=aˆ bˆ ”);18 // v e r f y i n g D’ morgan 2nd law19 i=1;

42

Page 44: Switching and Finite Automata Theory_ Z. Kohavi

20 for a=0:1

21 for b=0:1

22 f(i,3)=bitcmp(bitand(a,b) ,1);

23 f(i,4)=bitor(bitcmp(a,1),bitcmp(b,1));

24 i=i+1;

25 end

26 end

27 disp(” a b ( ab ) ˆ aˆ+bˆ”);28 disp(f);

29 // p rov ing D’ morgans laws t h e o r i t i c a l l y30 disp(” ( a+b )ˆ=a ˆ . bˆ”);31 disp(” ( a . b )ˆ=aˆ+bˆ”);32 disp(”we have show tha t ( a+b ) ( a+b ) ˆ=0 and ( a+b )+a ˆ . b

ˆ=1”);33 disp(” ( a+b ) aˆbˆ=aaˆbˆ+baˆbˆ=0+aˆbbˆ=0+0=0”);34 disp(” ( a+b )+aˆbˆ=a+b+aˆbˆ=a+b+aˆ=b+a+aˆ=b+1=1”);35 disp(” This p rove s the f i r s t Dmorgan law and in the

s i m i l a r way 2nd law can a l s o be proved ”);

43

Page 45: Switching and Finite Automata Theory_ Z. Kohavi

Chapter 4

Minimization Of SwitchingFunctions

check Appendix AP 2 for dependency:

number_of.sci

Scilab code Exa 4.1 Irredundant expressions

1 clc;

2 n=4; // f o u r v a r i a b l e kmap3 k=[1 1 0 1;

4 0 1 1 1;

5 0 1 1 0;

6 0 0 0 0];

7 k(:,:,2)=zeros(n,n); // temporary matr ix to knowwhether a e l ement i s p a i r e d or not

8 // d e c l a r i n g n o t a t i o n s to d i s p l a y output9 var=[ ’ y ’ ’ z ’ ’w ’ ’ x ’ ];

10 p1=[ ’ y ’ ’ z ’ ’ ’ ’ y ’ ’ z ’ ’ yz ’ ’ yz ’ ’ ’ ];11 p2=[ ’w ’ ’ x ’ ’ ’ ; ’w ’ ’ x ’ ; ’wx ’ ; ’wx ’ ’ ’ ];12 //minimum redundant e l emen t s a c c ep t ed wh i l e p a i r i n g13 cmn4 =4;

14 cmn2 =2;

44

Page 46: Switching and Finite Automata Theory_ Z. Kohavi

15 temp =1;

16 disp(”The minimal e c p r e s s i o n o f the g i v en Kmap ”);17 disp(k(:,:,1));

18 disp(” i s : ”);19 disp(” ”)20 // 16 c e l l s21 for i=1:n

22 for j=1:n

23 if(k(i,j)~=1)

24 temp =0;

25 break;

26 end

27 end

28 end

29 printf( ’ f= ’ );30 if(temp ==1)

31 printf(”1”);32 abort;

33 end

34 // 8 c e l l s35 z1=ones (2,4);

36 temp1=[ ’ 00 ’ ’ 01 ’ ’ 11 ’ ’ 10 ’ ];37 temp2=temp1 ’;

38 for i=1:n

39 if(i==4)

40 t=1;

41 else

42 t=i+1;

43 end

44 z=[k(i,:,1);k(t,:,1)];

45 if(z==z1)

46 k(i,:,2)=[1 1 1 1];

47 k(t,:,2)=[1 1 1 1];

48 a=strsplit(temp2(i,1));

49 b=strsplit(temp2(t,1));

50 c=strcmp(a,b);

51 for in=1: max(size(c))

52 if(c(in)==0 & a(in)== ’ 0 ’ )

45

Page 47: Switching and Finite Automata Theory_ Z. Kohavi

53 printf( ’%s ’ ’ ’ ,var(in));54 printf( ’+ ’ );55 break;

56 else

57 if(c(in)==0 & a(in)== ’ 1 ’ )58 printf(var(in));

59 printf( ’+ ’ );60 break;

61 end

62 end

63 end

64 end

65 end

66 z2=ones (4,2);

67 for j=1:n

68 if(j==4)

69 t=1;

70 else

71 t=j+1;

72 end

73 z=[k(:,j,1) k(:,t,1)];

74 if(z==z2)

75 k(:,j,2) =[1;1;1;1];

76 k(:,t,2) =[1;1;1;1];

77 a=strsplit(temp1(1,j));

78 b=strsplit(temp1(1,t));

79 c=strcmp(a,b);

80 for in=1: max(size(c))

81 if(c(in)==0 & a(in)== ’ 0 ’ )82 printf( ’%s ’ ’ ’ ,var(2+in));83 printf( ’+ ’ );84 break;

85 else

86 if(c(in)==0 & a(in)== ’ 1 ’ )87 printf(var(2+in));

88 printf( ’+ ’ );89 break;

90 end

46

Page 48: Switching and Finite Automata Theory_ Z. Kohavi

91 end

92 end

93 end

94 end

95 // 4 c e l l s96 z1=ones (1,4);

97 z2=ones (4,1);

98 z3=ones (2,2);

99 temp1=[ ’ 00 ’ ’ 01 ’ ’ 11 ’ ’ 10 ’ ];100 temp2=temp1 ’;

101 for t=1:n

102 z=k(t,:,1);

103 no=number_of(k(t,:,2) ,1);

104 if(z==z1 & no <cmn4)

105 k(t,:,2)=z1;

106 a=strsplit(temp1(1,t));

107 for in=1: max(size(a))

108 if(a(in)== ’ 0 ’ )109 printf( ’%s ’ ’ ’ ,var(in));110 end

111 if(a(in)== ’ 1 ’ )112 printf(var(in));

113 end

114 end

115 printf(”+”);116 end

117 end

118 for t=1:n

119 z=k(:,t,1);

120 no=number_of(k(:,t,2) ,1);

121 if(z==z2 & no <cmn4)

122 k(:,t,2)=z2;

123 a=strsplit(temp2(t,1));

124 for in=1: max(size(a))

125 if(a(in)== ’ 0 ’ )126 printf( ’%s ’ ’ ’ ,var(2+in));127 end

128 if(a(in)== ’ 1 ’ )

47

Page 49: Switching and Finite Automata Theory_ Z. Kohavi

129 printf(var(2+in));

130 end

131 end

132 printf(”+”);133 end

134 end

135 for i=1:n

136 for j=1:n

137 if(i==n)

138 t1=1;

139 else

140 t1=i+1;

141 end

142 if(j==n)

143 t2=1;

144 else

145 t2=j+1;

146 end

147 z4=[k(i,j,1) k(i,t2 ,1);k(t1 ,j,1) k(t1,t2 ,1)

];

148 z5=[k(i,j,2) k(i,t2 ,2);k(t1 ,j,2) k(t1,t2 ,2)

];

149 no=number_of(z5 ,1);

150 if(z4==z3 & no <cmn4)

151 k(i,j,2)=1;

152 k(i,t2 ,2)=1;

153 k(t1 ,j,2)=1;

154 k(t1 ,t2 ,2) =1;

155 a=strsplit(temp2(i,1));

156 b=strsplit(temp2(t1 ,1));

157 c=strcmp(a,b);

158 for in=1: max(size(c))

159 if(c(in)==0 & a(in)== ’ 0 ’ )160 printf( ’%s ’ ’ ’ ,var(in));161 end

162 if(c(in)==0 & a(in)== ’ 1 ’ )163 printf(var(in));

164 end

48

Page 50: Switching and Finite Automata Theory_ Z. Kohavi

165 end

166 a=strsplit(temp1(1,j));

167 b=strsplit(temp1(1,t2));

168 c=strcmp(a,b);

169 for in=1: max(size(c))

170 if(c(in)==0 & a(in)== ’ 0 ’ )171 printf( ’%s ’ ’ ’ ,var(2+in));172 end

173 if(c(in)==0 & a(in)== ’ 1 ’ )174 printf(var(2+in));

175 end

176 end

177 printf(”+”);178 end

179 end

180 end

181 // 2 c e l l s182 z6=[1 1];

183 z7=z6 ’;

184 for i=1:n

185 for j=1:n

186 if(i==n)

187 t1=1;

188 else

189 t1=i+1;

190 end

191 if(j==n)

192 t2=1;

193 else

194 t2=j+1;

195 end

196 z8=[k(i,j,1) k(i,t2 ,1)];

197 z9=[k(i,j,2) k(i,t2 ,2)];

198 no1=number_of(z9 ,1);

199 if(z8==z6 & no1 <cmn2 & i+j~=2)

200 k(i,j,2)=1;

201 k(i,t2 ,2)=1;

202 a=strsplit(temp1(1,j));

49

Page 51: Switching and Finite Automata Theory_ Z. Kohavi

203 b=strsplit(temp1(1,t2));

204 c=strcmp(a,b);

205 for in=1: max(size(c))

206 if(c(in)==0 & a(in)== ’ 0 ’ )207 printf(p1(1,i));

208 printf( ’%s ’ ’ ’ ,var(2+in));209 printf(”+”);210 end

211 if(c(in)==0 & a(in)== ’ 1 ’ )212 printf(p1(1,i));

213 printf(var(2+in));

214 printf(”+”);215 end

216 end

217 end

218 end

219 end

220 for i=1:n

221 for j=1:n

222 if(i==n)

223 t1=1;

224 else

225 t1=i+1;

226 end

227 if(j==n)

228 t2=1;

229 else

230 t2=j+1;

231 end

232 z10=[k(i,j,1);k(t1 ,j,1)];

233 z11=[k(i,j,2);k(t1 ,j,2)];

234 no2=number_of(z11 ,1);

235 if(z10==z7 & no2 <cmn2)

236 k(i,j,2)=1;

237 k(t1 ,j,2)=1;

238 a=strsplit(temp2(i,1));

239 b=strsplit(temp2(t1 ,1));

240 c=strcmp(a,b);

50

Page 52: Switching and Finite Automata Theory_ Z. Kohavi

241 for in=1: max(size(c))

242 if(c(in)==0 & a(in)== ’ 0 ’ )243 printf(p2(j,1));

244 printf( ’%s ’ ’ ’ ,var(in));245 printf(”+”);246 end

247 if(c(in)==0 & a(in)== ’ 1 ’ )248 printf(p2(j,1));

249 printf(var(in));

250 printf(”+”);251 end

252 end

253 end

254 end

255 end

256 // s i n g l e c e l l257 for i=1:n

258 for j=1:n

259 if(k(i,j,2) ==0 & k(i,j,1) ==1)

260 a=strsplit(temp1(1,j));

261 b=strsplit(temp2(i,1));

262 for in=1: max(size(a(:,1)))

263 if(a(in ,1)== ’ 1 ’ )264 printf(var(in+2));

265 else

266 if(a(in ,1)== ’ 0 ’ )267 printf( ’%s ’ ’ ’ ,var(2+in));268 end

269 end

270 end

271 for in=1: max(size(b(:,1)))

272 if(b(in ,1)== ’ 1 ’ )273 printf(var(in));

274 else

275 if(b(in ,1)== ’ 0 ’ )276 printf( ’%s ’ ’ ’ ,var(in));277 end

278 end

51

Page 53: Switching and Finite Automata Theory_ Z. Kohavi

279 end

280 if(i~=4 & j~=4)

281 printf(”+”);282 end

283 end

284 end

285 end

286 printf(”0”);

check Appendix AP 2 for dependency:

number_of.sci

Scilab code Exa 4.2 Irredundant expressions 2

1 clc;

2 n=4; // f o u r v a r i a b l e kmap3 k=[1 1 0 1;

4 0 1 1 1;

5 0 1 1 0;

6 0 0 0 0];

7 k(:,:,2)=zeros(n,n); // temporary matr ix to knowwhether a e l ement i s p a i r e d or not

8 // d e c l a r i n g n o t a t i o n s to d i s p l a y output9 var=[ ’ y ’ ’ z ’ ’w ’ ’ x ’ ];

10 p1=[ ’ yˆ z ˆ ’ ’ y ’ ’ z ’ ’ yz ’ ’ yz ’ ’ ’ ];11 p2=[ ’wˆxˆ ’ ; ’w ’ ’ x ’ ; ’wx ’ ; ’wx ’ ’ ’ ];12 //minimum redundant e l emen t s a c c ep t ed wh i l e p a i r i n g13 cmn4 =1;

14 cmn2 =1;

15 temp =1;

16 disp(”The minimal e c p r e s s i o n o f the g i v en Kmap ”);17 disp(k(:,:,1));

18 disp(” i s : ”);19 disp(” ”)20 // 16 c e l l s

52

Page 54: Switching and Finite Automata Theory_ Z. Kohavi

21 for i=1:n

22 for j=1:n

23 if(k(i,j)~=1)

24 temp =0;

25 break;

26 end

27 end

28 end

29 printf( ’ f= ’ );30 if(temp ==1)

31 printf(”1”);32 abort;

33 end

34 // 8 c e l l s35 z1=ones (2,4);

36 z2=ones (4,2);

37 temp1=[ ’ 00 ’ ’ 01 ’ ’ 11 ’ ’ 10 ’ ];38 temp2=temp1 ’;

39 for i=1:n

40 if(i==4)

41 t=1;

42 else

43 t=i+1;

44 end

45 z=[k(i,:,1);k(t,:,1)];

46 if(z==z1)

47 k(i,:,2)=[1 1 1 1];

48 k(t,:,2)=[1 1 1 1];

49 a=strsplit(temp2(i,1));

50 b=strsplit(temp2(t,1));

51 c=strcmp(a,b);

52 for in=1: max(size(c))

53 if(c(in)==0 & a(in)== ’ 0 ’ )54 printf( ’%s ’ ’ ’ ,var(in));55 printf( ’+ ’ );56 break;

57 else

58 if(c(in)==0 & a(in)== ’ 1 ’ )

53

Page 55: Switching and Finite Automata Theory_ Z. Kohavi

59 printf(var(in));

60 printf( ’+ ’ );61 break;

62 end

63 end

64 end

65 end

66 end

67 for j=1:n

68 if(j==4)

69 t=1;

70 else

71 t=j+1;

72 end

73 z=[k(:,j,1) k(:,t,1)];

74 if(z==z2)

75 k(:,j,2) =[1;1;1;1];

76 k(:,t,2) =[1;1;1;1];

77 a=strsplit(temp1(1,j));

78 b=strsplit(temp1(1,t));

79 c=strcmp(a,b);

80 for in=1: max(size(c))

81 if(c(in)==0 & a(in)== ’ 0 ’ )82 printf( ’%s ’ ’ ’ ,var(2+in));83 printf( ’+ ’ );84 break;

85 else

86 if(c(in)==0 & a(in)== ’ 1 ’ )87 printf(var(2+in));

88 printf( ’+ ’ );89 break;

90 end

91 end

92 end

93 end

94 end

95 // 4 c e l l s96 z1=ones (1,4);

54

Page 56: Switching and Finite Automata Theory_ Z. Kohavi

97 z2=ones (4,1);

98 z3=ones (2,2);

99 temp1=[ ’ 00 ’ ’ 01 ’ ’ 11 ’ ’ 10 ’ ];100 temp2=temp1 ’;

101 for t=1:n

102 z=k(t,:,1);

103 no=number_of(k(t,:,2) ,1);

104 if(z==z1 & no <cmn4)

105 k(t,:,2)=z1;

106 a=strsplit(temp1(1,t));

107 for in=1: max(size(a))

108 if(a(in)== ’ 0 ’ )109 printf( ’%s ’ ’ ’ ,var(in));110 end

111 if(a(in)== ’ 1 ’ )112 printf(var(in));

113 end

114 end

115 printf(”+”);116 end

117 end

118 for t=1:n

119 z=k(:,t,1);

120 no=number_of(k(:,t,2) ,1);

121 if(z==z2 & no <cmn4)

122 k(:,t,2)=z2;

123 a=strsplit(temp2(t,1));

124 for in=1: max(size(a))

125 if(a(in)== ’ 0 ’ )126 printf( ’%s ’ ’ ’ ,var(2+in));127 end

128 if(a(in)== ’ 1 ’ )129 printf(var(2+in));

130 end

131 end

132 printf(”+”);133 end

134 end

55

Page 57: Switching and Finite Automata Theory_ Z. Kohavi

135 for i=1:n

136 for j=1:n

137 if(i==n)

138 t1=1;

139 else

140 t1=i+1;

141 end

142 if(j==n)

143 t2=1;

144 else

145 t2=j+1;

146 end

147 z4=[k(i,j,1) k(i,t2 ,1);k(t1 ,j,1) k(t1,t2 ,1)

];

148 z5=[k(i,j,2) k(i,t2 ,2);k(t1 ,j,2) k(t1,t2 ,2)

];

149 no=number_of(z5 ,1);

150 if(z4==z3 & no <cmn4)

151 k(i,j,2)=1;

152 k(i,t2 ,2)=1;

153 k(t1 ,j,2)=1;

154 k(t1 ,t2 ,2) =1;

155 a=strsplit(temp2(i,1));

156 b=strsplit(temp2(t1 ,1));

157 c=strcmp(a,b);

158 for in=1: max(size(c))

159 if(c(in)==0 & a(in)== ’ 0 ’ )160 printf( ’%s ’ ’ ’ ,var(in));161 end

162 if(c(in)==0 & a(in)== ’ 1 ’ )163 printf(var(in));

164 end

165 end

166 a=strsplit(temp1(1,j));

167 b=strsplit(temp1(1,t2));

168 c=strcmp(a,b);

169 for in=1: max(size(c))

170 if(c(in)==0 & a(in)== ’ 0 ’ )

56

Page 58: Switching and Finite Automata Theory_ Z. Kohavi

171 printf( ’%s ’ ’ ’ ,var(2+in));172 end

173 if(c(in)==0 & a(in)== ’ 1 ’ )174 printf(var(2+in));

175 end

176 end

177 printf(”+”);178 end

179 end

180 end

181 // 2 c e l l s182 z6=[1 1];

183 z7=z6 ’;

184 for i=1:n

185 for j=1:n

186 if(i==n)

187 t1=1;

188 else

189 t1=i+1;

190 end

191 if(j==n)

192 t2=1;

193 else

194 t2=j+1;

195 end

196 z8=[k(i,j,1) k(i,t2 ,1)];

197 z9=[k(i,j,2) k(i,t2 ,2)];

198 no1=number_of(z9 ,1);

199 if(z8==z6 & no1 <cmn2)

200 k(i,j,2)=1;

201 k(i,t2 ,2)=1;

202 a=strsplit(temp1(1,j));

203 b=strsplit(temp1(1,t2));

204 c=strcmp(a,b);

205 for in=1: max(size(c))

206 if(c(in)==0 & a(in)== ’ 0 ’ )207 printf(p1(1,i));

208 printf( ’%s ’ ’ ’ ,var(2+in));

57

Page 59: Switching and Finite Automata Theory_ Z. Kohavi

209 printf(”+”);210 end

211 if(c(in)==0 & a(in)== ’ 1 ’ )212 printf(p1(1,i));

213 printf(var(2+in));

214 printf(”+”);215 end

216 end

217 end

218 end

219 end

220 for i=1:n

221 for j=1:n

222 if(i==n)

223 t1=1;

224 else

225 t1=i+1;

226 end

227 if(j==n)

228 t2=1;

229 else

230 t2=j+1;

231 end

232 z10=[k(i,j,1);k(t1 ,j,1)];

233 z11=[k(i,j,2);k(t1 ,j,2)];

234 no2=number_of(z11 ,1);

235 if(z10==z7 & no2 <cmn2)

236 k(i,j,2)=1;

237 k(t1 ,j,2)=1;

238 a=strsplit(temp2(i,1));

239 b=strsplit(temp2(t1 ,1));

240 c=strcmp(a,b);

241 for in=1: max(size(c))

242 if(c(in)==0 & a(in)== ’ 0 ’ )243 printf(p2(j,1));

244 printf( ’%s ’ ’ ’ ,var(in));245 printf(”+”);246 end

58

Page 60: Switching and Finite Automata Theory_ Z. Kohavi

247 if(c(in)==0 & a(in)== ’ 1 ’ )248 printf(p2(j,1));

249 printf(var(in));

250 printf(”+”);251 end

252 end

253 end

254 end

255 end

256 // s i n g l e c e l l257 for i=1:n

258 for j=1:n

259 if(k(i,j,2) ==0 & k(i,j,1) ==1)

260 a=strsplit(temp1(1,j));

261 b=strsplit(temp2(i,1));

262 for in=1: max(size(a(:,1)))

263 if(a(in ,1)== ’ 1 ’ )264 printf(var(in+2));

265 else

266 if(a(in ,1)== ’ 0 ’ )267 printf( ’%s ’ ’ ’ ,var(2+in));268 end

269 end

270 end

271 for in=1: max(size(b(:,1)))

272 if(b(in ,1)== ’ 1 ’ )273 printf(var(in));

274 else

275 if(b(in ,1)== ’ 0 ’ )276 printf( ’%s ’ ’ ’ ,var(in));277 end

278 end

279 end

280 printf(”+”);281 end

282 end

283 end

284 printf(”0”);

59

Page 61: Switching and Finite Automata Theory_ Z. Kohavi

check Appendix AP 2 for dependency:

number_of.sci

Scilab code Exa 4.3 Reduce Expression

1 clc;

2 n=4; // f o u r v a r i a b l e kmap3 k=[0 0 1 0;

4 1 1 1 0;

5 0 1 1 1;

6 0 1 0 0];

7 k(:,:,2)=zeros(n,n); // temporary matr ix to knowwhether a e l ement i s p a i r e d or not

8 // d e c l a r i n g n o t a t i o n s to d i s p l a y output9 var=[ ’ y ’ ’ z ’ ’w ’ ’ x ’ ];

10 p1=[ ’ yˆ z ˆ ’ ’ y ’ ’ z ’ ’ yz ’ ’ yz ’ ’ ’ ];11 p2=[ ’wˆxˆ ’ ; ’w ’ ’ x ’ ; ’wx ’ ; ’wx ’ ’ ’ ];12 //minimum redundant e l emen t s a c c ep t ed wh i l e p a i r i n g13 cmn4 =1;

14 cmn2 =1;

15 temp =1;

16 disp(”The minimal e c p r e s s i o n o f the g i v en Kmap ”);17 disp(k(:,:,1));

18 disp(” i s : ”);19 disp(” ”)20 // 16 c e l l s21 for i=1:n

22 for j=1:n

23 if(k(i,j)~=1)

24 temp =0;

25 break;

26 end

27 end

28 end

60

Page 62: Switching and Finite Automata Theory_ Z. Kohavi

29 printf( ’ f= ’ );30 if(temp ==1)

31 printf(”1”);32 abort;

33 end

34 // 8 c e l l s35 z1=ones (2,4);

36 z2=ones (4,2);

37 temp1=[ ’ 00 ’ ’ 01 ’ ’ 11 ’ ’ 10 ’ ];38 temp2=temp1 ’;

39 for i=1:n

40 if(i==4)

41 t=1;

42 else

43 t=i+1;

44 end

45 z=[k(i,:,1);k(t,:,1)];

46 if(z==z1)

47 k(i,:,2)=[1 1 1 1];

48 k(t,:,2)=[1 1 1 1];

49 a=strsplit(temp2(i,1));

50 b=strsplit(temp2(t,1));

51 c=strcmp(a,b);

52 for in=1: max(size(c))

53 if(c(in)==0 & a(in)== ’ 0 ’ )54 printf( ’%s ’ ’ ’ ,var(in));55 printf( ’+ ’ );56 break;

57 else

58 if(c(in)==0 & a(in)== ’ 1 ’ )59 printf(var(in));

60 printf( ’+ ’ );61 break;

62 end

63 end

64 end

65 end

66 end

61

Page 63: Switching and Finite Automata Theory_ Z. Kohavi

67 for j=1:n

68 if(j==4)

69 t=1;

70 else

71 t=j+1;

72 end

73 z=[k(:,j,1) k(:,t,1)];

74 if(z==z2)

75 k(:,j,2) =[1;1;1;1];

76 k(:,t,2) =[1;1;1;1];

77 a=strsplit(temp1(1,j));

78 b=strsplit(temp1(1,t));

79 c=strcmp(a,b);

80 for in=1: max(size(c))

81 if(c(in)==0 & a(in)== ’ 0 ’ )82 printf( ’%s ’ ’ ’ ,var(2+in));83 printf( ’+ ’ );84 break;

85 else

86 if(c(in)==0 & a(in)== ’ 1 ’ )87 printf(var(2+in));

88 printf( ’+ ’ );89 break;

90 end

91 end

92 end

93 end

94 end

95 // 2 c e l l s96 z6=[1 1];

97 z7=z6 ’;

98 for i=1:n

99 for j=1:n

100 if(i==n)

101 t1=1;

102 else

103 t1=i+1;

104 end

62

Page 64: Switching and Finite Automata Theory_ Z. Kohavi

105 if(j==n)

106 t2=1;

107 else

108 t2=j+1;

109 end

110 z8=[k(i,j,1) k(i,t2 ,1)];

111 z9=[k(i,j,2) k(i,t2 ,2)];

112 no1=number_of(z9 ,1);

113 if(z8==z6 & no1 <cmn2)

114 if(i==3 & i+j==5)

115 ;

116 else

117 k(i,j,2)=1;

118 k(i,t2 ,2) =1;

119 a=strsplit(temp1(1,j));

120 b=strsplit(temp1(1,t2));

121 c=strcmp(a,b);

122 for in=1: max(size(c))

123 if(c(in)==0 & a(in)== ’ 0 ’ )124 printf(p1(1,i));

125 printf( ’%s ’ ’ ’ ,var(2+in));126 printf(”+”);127 end

128 if(c(in)==0 & a(in)== ’ 1 ’ )129 printf(p1(1,i));

130 printf(var(2+in));

131 printf(”+”);132 end

133 end

134 end

135 end

136 end

137 end

138 for i=1:n

139 for j=1:n

140 if(i==n)

141 t1=1;

142 else

63

Page 65: Switching and Finite Automata Theory_ Z. Kohavi

143 t1=i+1;

144 end

145 if(j==n)

146 t2=1;

147 else

148 t2=j+1;

149 end

150 z10=[k(i,j,1);k(t1 ,j,1)];

151 z11=[k(i,j,2);k(t1 ,j,2)];

152 no2=number_of(z11 ,1);

153 if(z10==z7 & no2 <cmn2)

154 k(i,j,2)=1;

155 k(t1 ,j,2)=1;

156 a=strsplit(temp2(i,1));

157 b=strsplit(temp2(t1 ,1));

158 c=strcmp(a,b);

159 for in=1: max(size(c))

160 if(c(in)==0 & a(in)== ’ 0 ’ )161 printf(p2(j,1));

162 printf( ’%s ’ ’ ’ ,var(in));163 printf(”+”);164 end

165 if(c(in)==0 & a(in)== ’ 1 ’ )166 printf(p2(j,1));

167 printf(var(in));

168 printf(”+”);169 end

170 end

171 end

172 end

173 end

174 // 4 c e l l s175 z1=ones (1,4);

176 z2=ones (4,1);

177 z3=ones (2,2);

178 temp1=[ ’ 00 ’ ’ 01 ’ ’ 11 ’ ’ 10 ’ ];179 temp2=temp1 ’;

180 for t=1:n

64

Page 66: Switching and Finite Automata Theory_ Z. Kohavi

181 z=k(t,:,1);

182 no=number_of(k(t,:,2) ,1);

183 if(z==z1 & no <cmn4)

184 k(t,:,2)=z1;

185 a=strsplit(temp1(1,t));

186 for in=1: max(size(a))

187 if(a(in)== ’ 0 ’ )188 printf( ’%s ’ ’ ’ ,var(in));189 end

190 if(a(in)== ’ 1 ’ )191 printf(var(in));

192 end

193 end

194 printf(”+”);195 end

196 end

197 for t=1:n

198 z=k(:,t,1);

199 no=number_of(k(:,t,2) ,1);

200 if(z==z2 & no <cmn4)

201 k(:,t,2)=z2;

202 a=strsplit(temp2(t,1));

203 for in=1: max(size(a))

204 if(a(in)== ’ 0 ’ )205 printf( ’%s ’ ’ ’ ,var(2+in));206 end

207 if(a(in)== ’ 1 ’ )208 printf(var(2+in));

209 end

210 end

211 printf(”+”);212 end

213 end

214 for i=1:n

215 for j=1:n

216 if(i==n)

217 t1=1;

218 else

65

Page 67: Switching and Finite Automata Theory_ Z. Kohavi

219 t1=i+1;

220 end

221 if(j==n)

222 t2=1;

223 else

224 t2=j+1;

225 end

226 z4=[k(i,j,1) k(i,t2 ,1);k(t1 ,j,1) k(t1,t2 ,1)

];

227 z5=[k(i,j,2) k(i,t2 ,2);k(t1 ,j,2) k(t1,t2 ,2)

];

228 no=number_of(z5 ,1);

229 if(z4==z3 & no <cmn4)

230 k(i,j,2)=1;

231 k(i,t2 ,2)=1;

232 k(t1 ,j,2)=1;

233 k(t1 ,t2 ,2) =1;

234 a=strsplit(temp2(i,1));

235 b=strsplit(temp2(t1 ,1));

236 c=strcmp(a,b);

237 for in=1: max(size(c))

238 if(c(in)==0 & a(in)== ’ 0 ’ )239 printf( ’%s ’ ’ ’ ,var(in));240 end

241 if(c(in)==0 & a(in)== ’ 1 ’ )242 printf(var(in));

243 end

244 end

245 a=strsplit(temp1(1,j));

246 b=strsplit(temp1(1,t2));

247 c=strcmp(a,b);

248 for in=1: max(size(c))

249 if(c(in)==0 & a(in)== ’ 0 ’ )250 printf( ’%s ’ ’ ’ ,var(2+in));251 end

252 if(c(in)==0 & a(in)== ’ 1 ’ )253 printf(var(2+in));

254 end

66

Page 68: Switching and Finite Automata Theory_ Z. Kohavi

255 end

256 printf(”+”);257 end

258 end

259 end

260 // s i n g l e c e l l261 for i=1:n

262 for j=1:n

263 if(k(i,j,2) ==0 & k(i,j,1) ==1)

264 a=strsplit(temp1(1,j));

265 b=strsplit(temp2(i,1));

266 for in=1: max(size(a(:,1)))

267 if(a(in ,1)== ’ 1 ’ )268 printf(var(in+2));

269 else

270 if(a(in ,1)== ’ 0 ’ )271 printf( ’%s ’ ’ ’ ,var(2+in));272 end

273 end

274 end

275 for in=1: max(size(b(:,1)))

276 if(b(in ,1)== ’ 1 ’ )277 printf(var(in));

278 else

279 if(b(in ,1)== ’ 0 ’ )280 printf( ’%s ’ ’ ’ ,var(in));281 end

282 end

283 end

284 printf(”+”);285 end

286 end

287 end

288 printf(”0”);

check Appendix AP 6 for dependency:

dec21bin.sci

67

Page 69: Switching and Finite Automata Theory_ Z. Kohavi

check Appendix AP 7 for dependency:

donkmap.sci

check Appendix AP 2 for dependency:

number_of.sci

Scilab code Exa 4.4 BCD to Excess 3 Convertor

1 clc;

2 n=10;

3 // c o v e r t i n g dec ima l numbers i n t o e x c e s s 3 v a l u e s4 for i=0:n-1

5 c(i+1,1)=dec21bin(i+3);

6 end

7 a=c;

8 b=zeros (10 ,4);

9 // p l a c i n g e x c e s s 3 output s i n matr ix f o r c onv en i en c e10 for i=1:n

11 j=4;

12 while(a(i,1) >=1)

13 b(i,j)=round(modulo(a(i,1) ,10));

14 a(i,1)=a(i,1) /10;

15 j=j-1;

16 end

17 end

18 // dont c a r e i s r e p r e s e n t e d by a 2 s i n c e s c i l a bdoe sn t a l l ow a matr ix to c on t a i n s t r i n g and anumber .

19 for i=n+1:16

20 b(i,:)=[2 2 2 2];

21 end

22 //map o f each output v a r i a b l e23 z=[b(1,1) b(5,1) b(13,1) b(9,1);b(2,1) b(6,1) b

(14 ,1) b(10 ,1);

68

Page 70: Switching and Finite Automata Theory_ Z. Kohavi

24 b(3,1) b(7,1) b(15,1) b(11,1);b(4,1) b(8,1) b

(16 ,1) b(12 ,1)];

25 y=[b(1,2) b(5,2) b(13,2) b(9,2);b(2,2) b(6,2) b

(14 ,2) b(10 ,2);

26 b(3,2) b(7,2) b(15,2) b(11,2);b(4,2) b(8,2) b

(16 ,2) b(12 ,2)];

27 w=[b(1,3) b(5,3) b(13,3) b(9,3);b(2,3) b(6,3) b

(14 ,3) b(10 ,3);

28 b(3,3) b(7,3) b(15,3) b(11,3);b(4,3) b(8,3) b

(16 ,3) b(12 ,3)];

29 x=[b(1,4) b(5,4) b(13,4) b(9,4);b(2,4) b(6,4) b

(14 ,4) b(10 ,4);

30 b(3,4) b(7,4) b(15,4) b(11,4);b(4,4) b(8,4) b

(16 ,4) b(12 ,4)];

31 donkmap(w,1);

32 donkmap(x,2);

33 donkmap(y,3);

34 donkmap(z,4);

check Appendix AP 5 for dependency:

check.sci

check Appendix AP 4 for dependency:

noof3.sci

check Appendix AP 2 for dependency:

number_of.sci

Scilab code Exa 4.5 5 variable Kmap

1 // f=xˆyˆ z+wxz+xy+vˆwˆyz ˆ2 clc;

3 n=4;

4 k=[0 0 0 0;

69

Page 71: Switching and Finite Automata Theory_ Z. Kohavi

5 1 0 1 1;

6 0 1 1 0;

7 1 1 1 0];

8 k(:,:,2)=[0 0 0 0;

9 1 0 1 1;

10 0 1 1 0;

11 0 1 1 0];

12 //k=[1 0 0 0 ;13 // 0 0 0 0 ;14 // 0 0 0 0 ;15 // 0 0 1 0 ] ;16 //k ( : , : , 2 ) =[1 0 0 0 ;17 // 0 0 0 0 ;18 // 0 0 0 0 ;19 // 1 0 0 0 ] ;20 k(:,:,3)=zeros(n,n);

21 k(:,:,4)=zeros(n,n);

22 var=[ ’ y ’ ’ z ’ ’ v ’ ’w ’ ’ x ’ ];23 p1=[ ’ y ’ ’ z ’ ’ ’ ’ y ’ ’ z ’ ’ yz ’ ’ yz ’ ’ ’ ];24 p2=[ ’ v ’ ’w ’ ’ x ’ ’ ’ ; ’ v ’ ’w ’ ’ x ’ ; ’ v ’ ’wx ’ ; ’ v ’ ’wx ’ ’ ’ ;25 ’ vw ’ ’ x ’ ’ ’ ; ’ vw ’ ’ x ’ ; ’ vwx ’ ; ’ vwx ’ ’ ’ ];26 cmn16 =9;

27 cmn8 =5;

28 cmn4 =3;

29 cmn2 =2;

30 temp =1;

31 printf( ’ The minimal e c p r e s s i o n o f the g i v en Kmap’ );

32 disp(k(:,:,1));

33 disp(k(:,:,2));

34 disp(” i s : ”);35 printf( ’ f ’ );36 printf(”=”);37 // 32 c e l l s38 for i=1:n

39 for j=1:n

40 for l=1:2

41 if(k(i,j,l)~=1 & k(i,j,l)~=2)

70

Page 72: Switching and Finite Automata Theory_ Z. Kohavi

42 temp =0;

43 break;

44 end

45 end

46 end

47 end

48 if(temp ==1)

49 printf(”1”);50 abort;

51 end

52 // 16 c e l l s53 //8+8 row c e l l s54 z1=ones (2,4,2);

55 z2=ones (4,2,2);

56 temp1=[ ’ 00 ’ ’ 01 ’ ’ 11 ’ ’ 10 ’ ];57 temp2=[ ’ 000 ’ ’ 001 ’ ’ 011 ’ ’ 010 ’ ’ 100 ’ ’ 101 ’ ’ 111 ’ ’

110 ’ ];58 for i=1:n

59 if(i==4)

60 t=1;

61 else

62 t=i+1;

63 end

64 z=[k(i,: ,1:2);k(t,: ,1:2)];

65 z1=[k(i,: ,3:4);k(t,: ,3:4)];

66 if(noof3(z,0)==0 & noof3(z1 ,1)<cmn16)

67 k(i,: ,3:4)=ones (4,2);

68 k(t,: ,3:4)=ones (4,2);

69 a=strsplit(temp1(1,i));

70 b=strsplit(temp1(1,t));

71 c=strcmp(a,b);

72 for in=1: max(size(c))

73 if(c(in)==0 & a(in)== ’ 0 ’ )74 printf( ’%s ’ ’ ’ ,var(in));75 else

76 if(c(in)==0 & a(in)== ’ 1 ’ )77 printf(var(in));

78 end

71

Page 73: Switching and Finite Automata Theory_ Z. Kohavi

79 end

80 end

81 k(i,: ,3:4)=ones(1,4,2);

82 k(t,: ,3:4)=ones(1,4,2);

83 end

84 end

85 //8+8 column c e l l s86 for j=1:n

87 if(j==4)

88 t=1;

89 else

90 t=j+1;

91 end

92 z=[k(:,j ,1:2) k(:,t,1:2)];

93 z1=[k(:,j,3:4) k(:,t,3:4)];

94 if(noof3(z,0)==0 & noof3(z1 ,1)<cmn16)

95 k(:,j ,3:4)=ones (4,2);

96 k(:,t ,3:4)=ones (4,2);

97 a=strsplit(temp2(1,j));

98 b=strsplit(temp2(1,t));

99 c=strsplit(temp2(1,j+4));

100 d=strsplit(temp2(1,t+4));

101 c1=check(a,b,c,d);

102 for in=1: max(size(c1))

103 if(c1(in)==0 & a(in)== ’ 0 ’ )104 printf( ’%s ’ ’ ’ ,var(2+in));105 else

106 if(c1(in)==0 & a(in)== ’ 1 ’ )107 printf(var(2+in));

108 end

109 end

110 end

111 printf(”+”);112 k(:,j ,3:4)=ones(1,4,2);

113 k(:,t ,3:4)=ones(1,4,2);

114 end

115 end

116 // 4x4 f r o n t matr ix

72

Page 74: Switching and Finite Automata Theory_ Z. Kohavi

117 if(number_of(k(:,:,1) ,0)==0 & number_of(k(:,:,3) ,1)<

cmn16)

118 printf(var(3));

119 printf( ’ ’ ’ ’ );120 k(:,:,3)=ones (4,4);

121 end

122 // 4x4 r e a r matr ix123 if(number_of(k(:,:,2) ,0)==0 & number_of(k(:,:,4) ,1)<

cmn16)

124 printf(var(3));

125 k(:,:,4)=ones (4,4);

126 end

127 // 8 c e l l s128 // 2x2 f r o n t and r e a r c e l l s129 for i=1:n

130 for j=1:n

131 if(i==4)

132 t=1;

133 else

134 t=i+1;

135 end

136 if(j==4)

137 u=1;

138 else

139 u=j+1;

140 end

141 z=k(i,j ,1:2);

142 z(1,2,:)=k(i,u,1:2);

143 z(2,1,:)=k(t,j,1:2);

144 z(2,2,:)=k(t,u,1:2);

145 z1=k(i,j,3:4);

146 z1(1,2,:)=k(i,u ,3:4);

147 z1(2,1,:)=k(t,j ,3:4);

148 z1(2,2,:)=k(t,u ,3:4);

149 if(noof3(z,0)==0 & noof3(z1 ,1)<cmn8)

150 a=strsplit(temp1(1,i));

151 b=strsplit(temp1(1,t));

152 c=strcmp(a,b);

73

Page 75: Switching and Finite Automata Theory_ Z. Kohavi

153 for in=1: max(size(c))

154 if(c(in)==0 & a(in)== ’ 0 ’ )155 printf( ’%s ’ ’ ’ ,var(in));156 else

157 if(c(in)==0 & a(in)== ’ 1 ’ )158 printf(var(in));

159 end

160 end

161 end

162 a=strsplit(temp2(1,j));

163 b=strsplit(temp2(1,u));

164 c=strsplit(temp2 (1,4+j));

165 d=strsplit(temp2 (1,4+u));

166 c1=check(a,b,c,d);

167 for in=1: max(size(c1))

168 if(c1(in)==0 & a(in)== ’ 0 ’ )169 printf( ’%s ’ ’ ’ ,var(2+in));170 else

171 if(c1(in)==0 & a(in)== ’ 1 ’ )172 printf(var(2+in));

173 end

174 end

175 end

176 k(i,j ,3:4)=ones(1,1,2);

177 k(i,u ,3:4)=ones(1,1,2);

178 k(t,j ,3:4)=ones(1,1,2);

179 k(t,u ,3:4)=ones(1,1,2);

180 printf(”+”);181 end

182 end

183 end

184 // 1x4 f r o n t and r e a r c e l l s185 for i=1:n

186 z=k(i,: ,1:2);

187 z1=k(i,: ,3:4);

188 if(noof3(z,0)==0 & noof3(z1 ,1)<cmn8)

189 printf(p1(i));

190 printf(”+”);

74

Page 76: Switching and Finite Automata Theory_ Z. Kohavi

191 k(i,: ,3:4)=ones(1,4,2);

192 end

193 end

194 // 4x1 f r o n t and r e a r c e l l s195 for j=1:n

196 z=k(:,j ,1:2);

197 z1=k(:,j,3:4);

198 if(noof3(z,0)==0 & noof3(z1 ,1)<cmn8)

199 a=strsplit(temp2(1,j));

200 b=strsplit(temp2(1,u));

201 c=strcmp(a,b);

202 for in=1: max(size(c))

203 if(c(in)==0 & a(in)== ’ 0 ’ )204 printf( ’%s ’ ’ ’ ,var(2+in));205 else

206 if(c(in)==0 & a(in)== ’ 1 ’ )207 printf(var(2+in));

208 end

209 end

210 end

211 printf(”+”);212 k(:,j ,3:4)=ones(1,2,4);

213 end

214 end

215 // 2x4 f r o n t c e l l s216 for i=1:n

217 if(i==4)

218 t=1;

219 else

220 t=i+1;

221 end

222 z=k(i,:,1);

223 z(2,:,1)=k(t,:,1);

224 z1=k(i,:,3);

225 z1(2,:,1)=k(t,:,3);

226 if(number_of(z,0)==0 & number_of(z1 ,1)<cmn8)

227 a=strsplit(temp1(1,i));

228 b=strsplit(temp1(1,t));

75

Page 77: Switching and Finite Automata Theory_ Z. Kohavi

229 c=strcmp(a,b);

230 for in=1: max(size(c))

231 if(c(in)==0 & a(in)== ’ 0 ’ )232 printf( ’%s ’ ’ ’ ,var(in));233 else

234 if(c(in)==0 & a(in)== ’ 1 ’ )235 printf(var(in));

236 end

237 end

238 end

239 printf( ’%s ’ ’ ’ ,var(3));240 printf(”+”);241 k(i,:,3)=ones (1,4);

242 k(t,:,3)=ones (1,4);

243 end

244 end

245 // 2x4 r e a r c e l l s246 for i=1:n

247 if(i==4)

248 t=1;

249 else

250 t=i+1;

251 end

252 z=k(i,:,2);

253 z(2,:,1)=k(t,:,2);

254 z1=k(i,:,4);

255 z1(2,:,1)=k(t,:,4);

256 if(number_of(z,0)==0 & number_of(z1 ,1)<cmn8)

257 a=strsplit(temp1(1,i));

258 b=strsplit(temp1(1,t));

259 c=strcmp(a,b);

260 for in=1: max(size(c))

261 if(c(in)==0 & a(in)== ’ 0 ’ )262 printf( ’%s ’ ’ ’ ,var(in));263 else

264 if(c(in)==0 & a(in)== ’ 1 ’ )265 printf(var(in));

266 end

76

Page 78: Switching and Finite Automata Theory_ Z. Kohavi

267 end

268 end

269 printf(var(3));

270 printf(”+”);271 k(i,:,4)=ones (1,4);

272 k(t,:,4)=ones (1,4);

273 end

274 end

275 // 4x2 f r o n t c e l l s276 for j=1:n

277 if(j==4)

278 u=1;

279 else

280 u=j+1;

281 end

282 z=k(:,j,1);

283 z(:,2,1)=k(:,u,1);

284 z1=k(:,j,3);

285 z1(:,2,1)=k(:,u,3);

286 if(number_of(z,0)==0 & number_of(z1 ,1)<cmn8)

287 a=strsplit(temp2(1,i));

288 b=strsplit(temp2(1,t));

289 c=strcmp(a,b);

290 for in=1: max(size(c))

291 if(c(in)==0 & a(in)== ’ 0 ’ )292 printf( ’%s ’ ’ ’ ,var(in));293 else

294 if(c(in)==0 & a(in)== ’ 1 ’ )295 printf(var(in));

296 end

297 end

298 end

299 printf( ’%s ’ ’ ’ ,var(3));300 printf(”+”);301 k(:,j,3)=ones (4,1);

302 k(:,u,3)=ones (4,1);

303 end

304 end

77

Page 79: Switching and Finite Automata Theory_ Z. Kohavi

305 // 4x2 r e a r c e l l s306 for j=1:n

307 if(j==4)

308 u=1;

309 else

310 u=j+1;

311 end

312 z=k(:,j,2);

313 z(:,2,1)=k(:,u,2);

314 z1=k(:,j,4);

315 z1(:,2,1)=k(:,u,4);

316 if(number_of(z,0)==0 & number_of(z1 ,1)<cmn8)

317 a=strsplit(temp2(1,i));

318 b=strsplit(temp2(1,t));

319 c=strcmp(a,b);

320 for in=1: max(size(c))

321 if(c(in)==0 & a(in)== ’ 0 ’ )322 printf( ’%s ’ ’ ’ ,var(4+in));323 else

324 if(c(in)==0 & a(in)== ’ 1 ’ )325 printf(var(4+in));

326 end

327 end

328 end

329 printf(var(3));

330 printf(”+”);331 k(:,j,4)=ones (4,1);

332 k(:,u,4)=ones (4,1);

333 end

334 end

335 // 4 c e l l s336 // 1x4 f r o n t c e l l s337 for i=1:n

338 z=k(i,:,1);

339 z1=k(i,:,3);

340 if(number_of(z,0)==0 & number_of(z1 ,1)<cmn4)

341 printf(p1(1,i));

342 printf( ’%s ’ ’ ’ ,var(3));

78

Page 80: Switching and Finite Automata Theory_ Z. Kohavi

343 printf(”+”);344 k(i,:,3)=ones (1,4);

345 end

346 end

347 // 1x4 r e a r c e l l s348 for i=1:n

349 z=k(i,:,2);

350 z1=k(i,:,4);

351 if(number_of(z,0)==0 & number_of(z1 ,1)<cmn4)

352 printf(p1(1,i));

353 printf(var(3));

354 printf(”+”);355 k(i,:,4)=ones (1,4);

356 end

357 end

358 // 4x1 f r o n t c e l l s359 for j=1:n

360 z=k(:,j,1);

361 z1=k(:,j,3);

362 if(number_of(z,0)==0 & number_of(z1 ,1)<cmn4)

363 printf(p2(j,1));

364 printf(”+”);365 k(:,j,3)=ones (4,1);

366 end

367 end

368 // 4x1 r e a r c e l l s369 for j=1:n

370 z=k(:,j,2);

371 z1=k(:,j,4);

372 if(number_of(z,0)==0 & number_of(z1 ,1)<cmn4)

373 printf(p2(4+j,1));

374 printf(”+”);375 k(:,j,4)=ones (4,1);

376 end

377 end

378 // 2x1 f r o n t and r e a r matr ix379 for i=1:n

380 for j=1:n

79

Page 81: Switching and Finite Automata Theory_ Z. Kohavi

381 if(i==4)

382 t=1;

383 else

384 t=i+1;

385 end

386 z=[k(i,j,1);k(t,j,1)];

387 z(:,:,2)=[k(i,j,2) k(t,j,2)];

388 z1=[k(i,j,3);k(t,j,3)];

389 z1(:,:,2)=[k(i,j,4) k(t,j,4)];

390 if(noof3(z,0)==0 & noof3(z1 ,1)<cmn4)

391 a=strsplit(temp1(1,i));

392 b=strsplit(temp1(1,t));

393 c=strcmp(a,b);

394 for in=1: max(size(c))

395 if(c(in)==0 & a(in)== ’ 0 ’ )396 printf( ’%s ’ ’ ’ ,var(in));397 else

398 if(c(in)==0 & a(in)== ’ 1 ’ )399 printf(var(in));

400 end

401 end

402 end

403 a=strsplit(temp2(1,j));

404 b=strsplit(temp2 (1,4+j));

405 c=strcmp(a,b);

406 for in=1: max(size(c))

407 if(c(in)==0 & a(in)== ’ 0 ’ )408 printf( ’%s ’ ’ ’ ,var(2+in));409 else

410 if(c(in)==0 & a(in)== ’ 1 ’ )411 printf(var(2+in));

412 end

413 end

414 end

415 printf( ’+ ’ );416 k(i,j,3)=1;k(t,j,3)=1;

417 k(i,j,4)=1; k(t,j,4)=1;

418 end

80

Page 82: Switching and Finite Automata Theory_ Z. Kohavi

419 end

420 end

421 // 1x2 f r o n t and r e a r matr ix422 for i=1:n

423 for j=1:n

424 if(j==4)

425 u=1;

426 else

427 u=j+1;

428 end

429 z=[k(i,j,1) k(i,u,1)];

430 z(:,:,2)=[k(i,j,2) k(i,u,2)];

431 z1=[k(i,j,3) k(i,u,3)];

432 z1(:,:,2)=[k(i,j,4) k(i,u,4)];

433 if(noof3(z,0)==0 & noof3(z1 ,1) <1)

434 printf(p1(i));

435 a=strsplit(temp2(1,j));

436 b=strsplit(temp2(1,u));

437 c=strsplit(temp2 (1,4+j));

438 d=strsplit(temp2 (1,4+j));

439 c1=check(a,b,c,d);

440 for in=1: max(size(c1))

441 if(c1(in)==0 & a(in)== ’ 0 ’ )442 printf( ’%s ’ ’ ’ ,var(2+in));443 else

444 if(c1(in)==0 & a(in)== ’ 1 ’ )445 printf(var(2+in));

446 end

447 end

448 end

449 printf( ’+ ’ );450 k(i,j,3)=1; k(i,u,3)=1;

451 k(i,j,4)=1; k(i,u,4)=1;

452 end

453 end

454 end

455 // 2 c e l l s456 // 1x2 f r o n t c e l l s

81

Page 83: Switching and Finite Automata Theory_ Z. Kohavi

457 for i=1:n

458 for j=1:n

459 if(j==4)

460 u=1;

461 else

462 u=j+1;

463 end

464 z=[k(i,j,1) k(i,u,1)];

465 z1=[k(i,j,3) k(i,u,3)];

466 if(number_of(z,0)==0 & number_of(z1 ,1)<cmn2)

467 printf(p1(1,i));

468 a=strsplit(temp2(1,j));

469 b=strsplit(temp2(1,u));

470 c=strcmp(a,b);

471 for in=1: max(size(c))

472 if(c(in)==0 & a(in)== ’ 0 ’ )473 printf( ’%s ’ ’ ’ ,var(2+in));474 else

475 if(c(in)==0 & a(in)== ’ 1 ’ )476 printf(var(2+in));

477 end

478 end

479 end

480 printf( ’+ ’ );481 k(i,j,3)=1; k(i,u,3)=1;

482 end

483 end

484 end

485 // 1x2 r e a r c e l l s486 for i=1:n

487 for j=1:n

488 if(j==4)

489 u=1;

490 else

491 u=j+1;

492 end

493 z=[k(i,j,2) k(i,u,2)];

494 z1=[k(i,j,4) k(i,u,4)];

82

Page 84: Switching and Finite Automata Theory_ Z. Kohavi

495 if(number_of(z,0)==0 & number_of(z1 ,1)<cmn2)

496 printf(p1(1,i));

497 a=strsplit(temp2 (1,4+j));

498 b=strsplit(temp2 (1,4+u));

499 c=strcmp(a,b);

500 for in=1: max(size(c))

501 if(c(in)==0 & a(in)== ’ 0 ’ )502 printf( ’%s ’ ’ ’ ,var(2+in));503 else

504 if(c(in)==0 & a(in)== ’ 1 ’ )505 printf(var(2+in));

506 end

507 end

508 end

509 printf( ’+ ’ );510 k(i,j,4)=1; k(i,u,4)=1;

511 end

512 end

513 end

514 // 2x1 f r o n t c e l l s515 for i=1:n

516 for j=1:n

517 if(i==4)

518 t=1;

519 else

520 t=i+1;

521 end

522 z=[k(i,j,1);k(t,j,1)];

523 z1=[k(i,j,3) k(t,j,3)];

524 if(number_of(z,0)==0 & number_of(z1 ,1)<cmn2)

525 a=strsplit(temp1(1,i));

526 b=strsplit(temp1(1,t));

527 c=strcmp(a,b);

528 for in=1: max(size(c))

529 if(c(in)==0 & a(in)== ’ 0 ’ )530 printf( ’%s ’ ’ ’ ,var(in));531 else

532 if(c(in)==0 & a(in)== ’ 1 ’ )

83

Page 85: Switching and Finite Automata Theory_ Z. Kohavi

533 printf(var(in));

534 end

535 end

536 end

537 printf(p2(j,1))

538 printf( ’+ ’ );539 k(i,j,3)=1; k(i,u,3)=1;

540 end

541 end

542 end

543 // 2x1 r e a r c e l l s544 for i=1:n

545 for j=1:n

546 if(i==4)

547 t=1;

548 else

549 t=i+1;

550 end

551 z=[k(i,j,2);k(t,j,2)];

552 z1=[k(i,j,4) k(t,j,4)];

553 if(number_of(z,0)==0 & number_of(z1 ,1)<cmn2)

554 a=strsplit(temp1(1,i));

555 b=strsplit(temp1(1,t));

556 c=strcmp(a,b);

557 for in=1: max(size(c))

558 if(c(in)==0 & a(in)== ’ 0 ’ )559 printf( ’%s ’ ’ ’ ,var(in));560 else

561 if(c(in)==0 & a(in)== ’ 1 ’ )562 printf(var(in));

563 end

564 end

565 end

566 printf(p2(4+j,1))

567 printf( ’+ ’ );568 k(i,j,4)=1; k(i,u,4)=1;

569 end

570 end

84

Page 86: Switching and Finite Automata Theory_ Z. Kohavi

571 end

572 // 1 c e l l f r o n t and r e a r matr ix573 for i=1:n

574 for j=1:n

575 z=k(i,j ,1:2);

576 z1=k(i,j,3:4);

577 if(noof3(z,0)==0 & noof3(z1 ,1)<cmn2)

578 printf(p1(1,i));

579 a=strsplit(temp2(1,j));

580 b=strsplit(temp2 (1,4+j));

581 c=strcmp(a,b);

582 for in=2: max(size(c))

583 if(a(in)== ’ 0 ’ & c(in)==0)

584 printf( ’%s ’ ’ ’ ,var(2+in));585 else

586 if(a(in)== ’ 1 ’ & c(in)==0)

587 printf(var(2+in));

588 end

589 end

590 end

591 printf( ’+ ’ );592 k(i,j,3:4)=ones(1,1,2);

593 end

594 end

595 end

596 // s i n g l e c e l l597 for i=1:n

598 for j=1:n

599 for z=1:2

600 if(k(i,j,z)==1 & k(i,j,z+2) ==0)

601 printf(p2(j,1));

602 printf(p1(1,i));

603 printf( ’+ ’ );604 end

605 end

606 end

607 end

608 printf( ’ 0 ’ );

85

Page 87: Switching and Finite Automata Theory_ Z. Kohavi

Scilab code Exa 4.6 Prime Implicants

1 clc;

2 clear;

3 z=1;

4 // e v a l u a t i n g f i r s t e x p r e s s i o n5 for i=0:1

6 for j=0:1

7 for k=0:1

8 for l=0:1

9 f1(z,1)=bitor(bitand(i,j),bitand(k,l

));

10 z=z+1;

11 end

12 end

13 end

14 end

15 z=1;

16 // e v a l u a t i n g 2nd e x p r e s s i o n17 for i=0:1

18 for j=0:1

19 for k=0:1

20 for l=0:1

21 f2(z,1)=bitand(bitand(i,j),bitcmp(k

,1));

22 z=z+1;

23 end

24 end

25 end

26 end

27 // de t e rm in i ng whether f c o v e r s h or not .28 for i=1:16

29 if(f2(i,1) ==1)

30 if(f2(i,1)==f1(i,1))

86

Page 88: Switching and Finite Automata Theory_ Z. Kohavi

31 ;

32 else

33 disp(” f doe sn t cov e r h”);34 abort;

35 end

36 end

37 end

38 disp(” f c o v e r s h and h i m p l i e s f ”);

Scilab code Exa 4.7 Prime Implicants 2

1 clc;

2 clear;

3 disp(” f=xˆy+xz+yˆ z ˆ”);4 disp(” s i n c e xˆy i s a pr ime imp l i c a n t n e i t h e r xˆ nor

y a l on e i m p l i e s f ”);5 disp(” on ly xˆy a r e cove r ed by f ”);

check Appendix AP 1 for dependency:

karmap.sci

check Appendix AP 3 for dependency:

karmap1.sci

check Appendix AP 2 for dependency:

number_of.sci

Scilab code Exa 4.8 Prime Implicants Of a Function

1 clc;

2 k=[1 1 0 1;

3 0 1 1 1;

87

Page 89: Switching and Finite Automata Theory_ Z. Kohavi

4 0 1 1 0;

5 0 0 0 0];

6 disp(”The prime imp l i c a n t s o f f u n c t i o n f ”);7 karmap(k);

8 karmap1(k);

check Appendix AP 1 for dependency:

karmap.sci

check Appendix AP 2 for dependency:

number_of.sci

Scilab code Exa 4.9 Prime Implicants Of a Function 2

1 clc;

2 k=[0 1 1 1;

3 0 1 1 0;

4 0 0 1 0;

5 0 0 1 0];

6 disp(”The prime imp l i c a n t s o f the f u n c t i o n f ”);7 karmap(k);

check Appendix AP 8 for dependency:

karmap3.sci

check Appendix AP 2 for dependency:

number_of.sci

Scilab code Exa 4.10 Cyclic Prime Implicant map

1 clc;

2 k=[1 1 0 1;

3 0 1 1 1];

4 karmap3(k);

88

Page 90: Switching and Finite Automata Theory_ Z. Kohavi

Chapter 5

Logical Design

Scilab code Exa 5.1 Odd Parity Bit Generator

1 clc;

2 clear;

3 // Takes x input and check whether i t i s v a l i d l o g i cl e v e l o r not .

4 x=input(”x = ”);5 while(x~=0 & x~=1)

6 disp(” e n t e r a v a l i d l o g i c a l l e v e l ”);7 x=input(”x = ”);8 end

9 // Takes y input and check whether i t i s v a l i d l o g i cl e v e l o r not .

10 y=input(”y = ”);11 while(y~=0 & y~=1)

12 disp(” e n t e r a v a l i d l o g i c a l l e v e l ”);13 y=input(”y = ”);14 end

15 // Takes z input and check whether i t i s v a l i d l o g i cl e v e l o r not .

16 z=input(” z = ”);17 while(z~=0 & z~=1)

18 disp(” e n t e r a v a l i d l o g i c a l l e v e l ”);

89

Page 91: Switching and Finite Automata Theory_ Z. Kohavi

19 z=input(” z = ”);20 end

21 p1=bitand(bitand(bitcmp(x,1),bitcmp(y,1)),z);

22 p2=bitand(bitand(bitcmp(x,1),y),bitcmp(z,1));

23 p3=bitand(bitand(bitcmp(y,1),x),bitcmp(z,1));

24 p4=bitand(bitand(x,y),z);

25 p=bitor(bitor(p1,p2),bitor(p3,p4));

26 disp(p,”The output o f the odd p a r i t y g e n e r a t o rc i r c u i t i s ”);

27 disp(”p= xˆyˆ z+xˆ yzˆ+xyˆ zˆ+xyz ”);

Scilab code Exa 5.2 Serial To Parallel converter

1 clc;

2 clear;

3 // Takes x input and check whether i t i s v a l i d l o g i cl e v e l o r not .

4 disp(” e n t e r the vaLue o f i nput L ine & controLs i gnaL s C1 and C2”);

5 x=input(”x = ”);6 while(x~=0 & x~=1)

7 disp(” e n t e r a vaLid LogicaL LeveL”);8 x=input(”x = ”);19 end

10 // Takes C1 input and check whether i t i s v a l i d l o g i cl e v e l o r not .

11 C1=input(”C1 = ”);12 while(C1~=0 & C1~=1)

13 disp(” e n t e r a vaLid LogicaL LeveL”);14 C1=input(”C1 = ”);15 end

16 // Takes C2 input and check whether i t i s v a l i d l o g i cl e v e l o r not .

17 C2=input(”C2 = ”);18 while(C2~=0 & C2~=1)

90

Page 92: Switching and Finite Automata Theory_ Z. Kohavi

19 disp(” e n t e r a vaLid LogicaL LeveL”);20 C2=input(”C2 = ”);21 end

22 disp(”−−−−−−−OUTPUT−−−−−−−”);23 disp(L1=bitand(bitand(bitcmp(C1 ,1),bitcmp(C2 ,1)),x),

”L1 = ”);24 disp(L2=bitand(bitand(bitcmp(C1 ,1),C2),x),”L2 = ”);25 disp(L3=bitand(bitand(C1 ,bitcmp(C2 ,1)),x),”L3 = ”);26 disp(L4=bitand(bitand(C1 ,C2),x),”L4 = ”);27 disp(”L1=xC1ˆC2ˆ”);28 disp(”L2=xC1ˆC2”);29 disp(”L3=xC1C2ˆ”);30 disp(”L4=xC1ˆC2ˆ”);

Scilab code Exa 5.3 Transmission function for a network

1 clc;

2 clear;

3 // Takes input and check whether i t i s v a l i d l o g i cl e v e l o r not .

4 w=input(”w = ”);5 while(w~=0 & w~=1)

6 disp(” e n t e r a v a l i d l o g i c a l l e v e l ”);7 w=input(”w = ”);8 end

9 x=input(”x = ”);10 while(x~=0 & x~=1)

11 disp(” e n t e r a v a l i d l o g i c a l l e v e l ”);12 x=input(”x = ”);13 end

14 y=input(”y = ”);15 while(y~=0 & y~=1)

16 disp(” e n t e r a v a l i d l o g i c a l l e v e l ”);17 y=input(”y = ”);18 end

91

Page 93: Switching and Finite Automata Theory_ Z. Kohavi

19 z=input(” z = ”);20 while(z~=0 & z~=1)

21 disp(” e n t e r a v a l i d l o g i c a l l e v e l ”);22 z=input(” z = ”);23 end

24 disp(” o r i g i n a l network x ˆ [ ( ( yˆ z+z ˆy )wˆ)+w+yˆ+xˆ z ˆ ] ”);

25 disp(”x ˆ [wˆyˆ z+wˆyzˆ+w+yˆ+xˆ z ˆ ] ”);26 disp(”x ˆ [ y ˆ(wˆ z+1)+wˆyzˆ+w+xˆ z ˆ ] ”);27 disp(”x ˆ [ yˆ+w+yzˆ+xˆ z ˆ ] ”);28 disp(”x ˆ [ yˆ+yzˆ+w+xˆ z ˆ ] ”);29 disp(”x ˆ [ yˆ+zˆ+xˆ zˆ+w] ”);30 disp(”x ˆ [ yˆ+zˆ+w] ”);31 // output o f the r e l a y network f o r the i npu t s g i v en32 disp(p=bitand(bitcmp(x,1),bitor(bitor(bitcmp(y,1),

bitcmp(z,1)),w)),” output = ”);

Scilab code Exa 5.4 4 Input Contact Network

1 clc;

2 clear;

3 // Takes input and check whether i t i s v a l i d l o g i cl e v e l o r not .

4 w=input(”w = ”);5 while(w~=0 & w~=1)

6 disp(” e n t e r a v a l i d l o g i c a l l e v e l ”);7 w=input(”w = ”);8 end

9 x=input(”x = ”);10 while(x~=0 & x~=1)

11 disp(” e n t e r a v a l i d l o g i c a l l e v e l ”);12 x=input(”x = ”);13 end

14 y=input(”y = ”);15 while(y~=0 & y~=1)

92

Page 94: Switching and Finite Automata Theory_ Z. Kohavi

16 disp(” e n t e r a v a l i d l o g i c a l l e v e l ”);17 y=input(”y = ”);18 end

19 z=input(” z = ”);20 while(z~=0 & z~=1)

21 disp(” e n t e r a v a l i d l o g i c a l l e v e l ”);22 z=input(” z = ”);23 end

24 disp(”We have 4 r e l a y s W,X,Y, Z which t ak e s BCDnumber as input ”);

25 disp(” so the max va lu e va lu e we can ge t i s 1001 ”);26 disp(”By drawing the Karnaugh map( c o n s i d e r a l l terms

above 1001 as dont c a r e s ) the min imisede x p r e s s i o n i s ”);

27 disp(”T(w, x , y , z )=wz+xyzˆ+xˆ yz ”);28 disp(”T(w, x , y , z )=xyzˆ+xˆ yz ”);29 disp(”Draw the s e r i e s p a r a l l e l r e a l i z a t i o n o f T”);30 disp(”We can i d e n t i f y the redundancy o f y c on t a c t at

the r i g h t end”);31 disp(”which can be removed ”);32 disp(”The c u t s e t r e a l i s a t i o n o f the above minimized

s e r i e s p a r a l l e l network i s ”);33 disp(”T(w, x , y , z )=(w+y ) ( x+z ) ( xˆ+z ˆ) ”);

Scilab code Exa 5.5 Minimal contact Network

1 clc;

2 clear;

3 disp(”Given minimal c on t a c t network i s T(w, x , y , z )=wxy+wxz+wˆxˆyˆ zˆ+wˆxˆ yz ”);

4 disp(”T(w, x , y , z )=wx( y+z )+wˆx ˆ( yˆ zˆ+yz ) ”);5 disp(”Draw the e q u i v a l e n t s e r i e s p a r a l l e l c i r c u i t o f

T”);6 disp(” I n t e r c h ang e the l o c a t i o n s o f c o n t a c t s o f wˆ

and xˆ and connec t the nodes ”);

93

Page 95: Switching and Finite Automata Theory_ Z. Kohavi

7 disp(”By conn e c t i n g i n the above manner t h e r e i s nol o g i c a l e f f e c t s i n c e the c onn e c t i o n path i s notat a l l used ”);

8 disp(”now the l owe r branch o f yz+yˆ z ˆ can be w r i t t e nas ( y+z ˆ) ( yˆ+z ) so t r a n s f e r c o n t a c t s can be used

”);9 disp(” This p a r a l l e l c onn e c t i o n e n ab l e s us to combine

two p a r a l l e l z c o n t a c t s and thus the minimumsp r i n g c onn e c t i o n i s ob ta i n ed ”);

94

Page 96: Switching and Finite Automata Theory_ Z. Kohavi

Chapter 6

Functional Decomposition AndSymmetric Functions

Scilab code Exa 6.1 Function Decomposition

1 clc;

2 clear;

3 disp(”Given f u n c t i o n f (w, x , y , z ) can be w r i t t e n asf o l l o w s ”);

4 disp(” f (w, x , y , z )=wˆxˆ zˆ+wxˆ z+wˆyz+wyzˆ”);5 disp(” f (w, x , y , z ) =((wˆ zˆ+wz ) xˆ+(wˆ z+wzˆ) y ) ”);6 disp(” l e t Q=wˆ zˆ+wz”);7 disp(” then we can r e w r i t e f as f (w, x , y , z )=Qxˆ+Qˆy”);8 disp(” f (w, x , y , z )=Qxˆ+Qˆy=F [Q(w, z ) , x , y ] ”);

Scilab code Exa 6.3 Muliplicity

1 clc;

2 clear;

3 // de t e rm in e s the row and column m u l t i p l i c i t y o f amtra ix

95

Page 97: Switching and Finite Automata Theory_ Z. Kohavi

4 //m=input (” e n t e r the number o f v a r i a b l e s i n thef u n c t i o n =”) ;

5 m=4;

6 for i=1:m

7 for j=1:m

8 x(i,j)=0;

9 end

10 end

11 //k=’y ’ ;12 // d i s p (” Enter the c e l l s i ndex whose v a l u e s a r e 1 i n

the matr ix r e p r e s e n t i n g your f u n c t i o n ”) ;13 // wh i l e ( k˜=’n ’ )14 // i=input (” x index =”) ;15 // j=input (” y index =”) ;16 // x ( i , j ) =1;17 // k=input (” I f you want to e n t e r more e n t e r y ( i n

quo t e s ) e l s e n ( i n quo t e s ) : ” ) ;18 // end19 x=[1 0 1 1;

20 0 0 1 0;

21 0 1 1 1;

22 1 1 0 1];

23 l=0;

24 // che ck s eve ry row and f i n d the max no o f ones i n arow .

25 for i=1:m

26 k=0;

27 for j=1:m

28 if(x(i,j)==1)

29 k=k+1;

30 end

31 end

32 if(k>l)

33 l=k;

34 end

35 end

36 disp(l,”Row m u l t i p l i c i t y =”);37 l=0;

96

Page 98: Switching and Finite Automata Theory_ Z. Kohavi

38 // che ck s eve ry column and f i n d the max no o f ones i na column .

39 for j=1:m

40 k=0;

41 for i=1:m

42 if(x(i,j)==1)

43 k=k+1;

44 end

45 end

46 if(k>l)

47 l=k;

48 end

49 end

50 disp(l,”Column m u l t i p l i c i t y =”);

Scilab code Exa 6.6 Symmetric

1 clc;

2 clear;

3 disp(” f ( x , y , z )=xˆyˆ z+xyˆ zˆ+xˆ yz ˆ”);4 disp(” s i n c e i n t e r c h a n g i n g any two v a r i a b l e s g i v e s us

the same equa t i on ”);5 disp(” f o r example i n t e r c h an g e x and y”);6 disp(” f ( y , x , z )=yˆxˆ z+yxˆ zˆ+yˆ xz ˆ”);7 disp(” f ( x , y , z )=f ( y , x , z ) ”);8 disp(”So the f u n c t i o n f ( x , y , z ) i s symmetr ic ”);

Scilab code Exa 6.7 Symmetric 2

1 clc;

2 clear;

3 disp(” f ( x1 , x2 , x3 )=x1ˆx2ˆx3ˆ+x1x2 ˆx3+x1ˆ x2x3 ”);

97

Page 99: Switching and Finite Automata Theory_ Z. Kohavi

4 disp(”you can check tha t above e q u a t i o i n i s notsymmetr ic i n x1 , x2 , x3”);

5 disp(”But i t i s symmetr ic i n x1 , x2 , x3ˆ”);6 disp(” l e t us v e r i f y i t with i n t e r c h a n g i n g x1 and x3ˆ

”);7 disp(” f ( x3 ˆ , x2 , x1 )=x3x2 ˆx1+x3ˆx2ˆx1ˆ+x3x2x1 ˆ”);8 disp(”you can i d e n t i f y tha t f ( x1 , x2 , x3 )=f ( x3 ˆ , x2 , x1 )

”);

98

Page 100: Switching and Finite Automata Theory_ Z. Kohavi

Chapter 7

Threshold Logic

Scilab code Exa 7.1 weighted Sum

1 clc;

2 clear;

3 // t a k e s the input and check whether i t i s v a l i d ornot

4 x1=input(”x1 = ”);5 while(x1~=0 & x1~=1)

6 disp(” e n t e r a v a l i d l o g i c a l l e v e l ”);7 x1=input(”x1 = ”);8 end

9 x2=input(”x2 = ”);10 while(x2~=0 & x2~=1)

11 disp(” e n t e r a v a l i d l o g i c a l l e v e l ”);12 x2=input(”x = ”);13 end

14 x3=input(”x3 = ”);15 while(x3~=0 & x3~=1)

16 disp(” e n t e r a v a l i d l o g i c a l l e v e l ”);17 x3=input(”x3 = ”);18 end

19 f=-x1+(2*x2)+x3;

20 if(f >0.5) then

99

Page 101: Switching and Finite Automata Theory_ Z. Kohavi

21 f=1;

22 else

23 f=0;

24 end

25 disp(f,” output y i s ”);26 m=1;

27 // d i s p l a y s the output o f the above e x p r e s s i o n f o ra l l the comb ina t i on s o f i n pu t s .

28 for x=0:1

29 for y=0:1

30 for z=0:1

31 f1(m,1)=x;

32 f1(m,2)=y;

33 f2(m,3)=z;

34 f1(m,4)=-x+(2*y)+z;

35 if(f1(m,4) >0.5) then

36 f1(m,5)=1;

37 else

38 f1(m,5)=0;

39 end

40 m=m+1;

41 end

42 end

43 end

44 disp(” x1 x2 x3 sum y”);45 disp(f1)

Scilab code Exa 7.2 Inequalities

1 clc;

2 clear;

3 y= ’ y ’ ;4 i=1;

5 // Takes the e q u i v a l e n t dec ima l va l u e o f the minterms f o r eg : xˆ yz=011=3

100

Page 102: Switching and Finite Automata Theory_ Z. Kohavi

6 while(y== ’ y ’ )7 disp(” e n t e r the minterm o f a 3 v a r i a b l e f u n c t i o n

”);8 x(i)=input(” : ”);9 while(x(i) >7)

10 disp(” e n t e r a v a l i d minterm”);11 end

12 disp(” p r e s s y i f you want to e n t e r more minterms e l s e n : ”);

13 y=input(””);14 i=i+1;

15 end

16 a=1;

17 // Genera t ing t r u th t a b l e f o r d e t e rm in i ng thei n e q u a l i t i e s

18 for i=0:1

19 for j=0:1

20 for k=0:1

21 for z=1: length(x)

22 if(x(z)==a-1);

23 f(a,4)=1;

24 end

25 end

26 f(a,1)=i;

27 f(a,2)=j;

28 f(a,3)=k;

29 a=a+1;

30 end

31 end

32 end

33 // d i s p l a y i n g the t r u th t a b l e34 disp(” x1 x2 x3 f ”);35 disp(f);

36 disp(””);37 a=1;

38 // g e n e r a t i n g i n e q u a l i t i e s39 for i=0:1

40 for j=0:1

101

Page 103: Switching and Finite Automata Theory_ Z. Kohavi

41 for k=0:1

42 if(f(a,4) ==1)

43 printf( ’%3d ∗ w1 + %3d ∗ w2 + %3d ∗w3>=T ’ ,f(a,1),f(a,2),f(a,3))

44 disp(””)45 else

46 printf( ’%3d ∗ w1 + %3d ∗ w2 + %3d ∗w3<T ’ ,f(a,1),f(a,2),f(a,3))

47 disp(””)48 end

49 a=a+1;

50 end

51 end

52 end

53 disp(”By s o l v i n g the above i n e q u a l i t i e s we can ge tthe v a l u e s o f we i gh t s and T”);

Scilab code Exa 7.3 Unate Functions

1 clc;

2 clear;

3 disp(”Given f u n c t i o n i s f=x1x2ˆ+x2x3 ˆ”);4 disp(” S i n c e x1 has no complemented form in the above

f u n c t i o n f , f i s p o s i t i v e i n x1”);5 disp(”x2 has both complemented and uncomplemented

forms in f so f i s not unate i n x2”);6 disp(”x3 i s on ly i n complemented form so f i s

n e g a t i v e i n x3”);

Scilab code Exa 7.4 three cube representation

1 clc;

2 clear;

102

Page 104: Switching and Finite Automata Theory_ Z. Kohavi

3 disp(” g i v en f u n c t i o n i s f=x1ˆx2+x2x3 ˆ”);4 disp(” S i n c e the v a r i b l e s x1 and x3 a r e on ly i n t h e i r

complemented form f i s n e g a t i v e and unate i n x1and x3”);

5 disp(” even x2 i s on ly i n i t s uncomplemented form sof i s p o s i t i v e i n x2”);

Scilab code Exa 7.5 True Vertex

1 clc;

2 clear;

3 n=input(” Enter the no o f i nput v a r i a b l e s : ”);4 // Input the t r u e minimal v e r t i c e s5 v=input(” Enter the no o f minimal t r u e v e r t i c e s : ”);6 disp(” v e r t e x w i l l be i n the form o f 101 i f i t i s 3

v a r i a b l e ”);7 for i=1:v

8 printf( ’ Vertex %3d : ’ ,i)9 s(i)=input(” ”);

10 end

11 tv=input(” e n t e r a v e r t e x which you want f i n d whethert r u e v e r t e x or not ”);

12 // de t e rm in e s whether the v e r t e x i s a t r u e or not bycomparing i t with the t r u e minimal v e r t i c e s

13 for i=1:v

14 if(tv>s(i))

15 disp(” I t i s a t r u e v e r t e x ”);16 break;

17 else

18 if(i==v)

19 disp(” I t i s not a t r u e v e r t e x s i n c e i ti s not > than any o f the minv e r t i c e s ”);

20 end

21 end

103

Page 105: Switching and Finite Automata Theory_ Z. Kohavi

22 end

104

Page 106: Switching and Finite Automata Theory_ Z. Kohavi

Chapter 8

Reliable Design And FaultDiagnosis

Scilab code Exa 8.1 NOR Logic Circuit

1 clc;

2 clear;

3 disp(”To f i n d whether h i s s−a−0 or not ”);4 disp(” F i r s t we have to e x p r e s s f as f u n c t i o n o f h

and x1 , x2 , x3 , x4”);5 disp(” S imp l i f y i n g the g i v en l o g i c a l c i r c u i t we

ob t a i n the e x p r e s s i o n o f output as ”);6 disp(” f (X, h ) = x1x2x3x4 + h ( x2x3 + x1ˆx2ˆx3ˆx4 ˆ) ) ”);7 disp(”Here h = x2ˆx3ˆ”);8 disp(” l e t G = x1x2x3x4 & H = h ( x2x3 + x1ˆx2ˆx3ˆx4 ˆ) ”

);

9 disp(”Taking d e r i v a t i v e on both s i d e s ”);10 disp(” d f /dh=GˆdH/dh”);11 disp(” App l l y i ng the fo rmu la d [ f (X)+g (X) ] / dx=f ˆ(X) dg (

X) /dx exor g ˆ(X) d f (X) /dx exor d f (X) /dx . dg (X) /dx”);

12 disp(” d f /dh=GˆdH/dh=(x1ˆ+x2ˆ+x3ˆ+x4 ˆ) ( x2x3+x1ˆx2ˆx3ˆx4 ˆ) ”);

13 disp(” d f /dh=x1ˆ x2x3+x2x3x4ˆ+x1ˆx2ˆx3ˆx4ˆ”);

105

Page 107: Switching and Finite Automata Theory_ Z. Kohavi

14 disp(”To f i n d t e s t s f o r h s−a−0 we compute thev a l u e s f o r which h ( d f /dh )=1”);

15 disp(” hdf /dh=x2ˆx3 ˆ( x1ˆ x2x3+x2x3x4ˆ+x1ˆx2ˆx3ˆx4 ˆ) ”);16 disp(” hdf /dh=x1ˆx2ˆx3ˆx4ˆ”);17 disp(”Thus the t e s t s e t f o r h s−a−0 i s X( 0 , 0 , 0 , 0 ) ”);

Scilab code Exa 8.2 Path Sensitizing

1 clc;

2 clear;

3 disp(”To prove whether t h e r e p o s s i b i l i y o fi d e n t i f i n g the f a u l t by s e n s i t i s i n g j u s t a s i n g l epath ”);

4 disp(” Let us s e n s i t i z e the path G3 G6 G9”);5 disp(” This r e q u i r e s G6=1 , G10=0 , G11=0 ,G8=0 ”);6 disp(”Which i n t u r n r e q u i r e s x2=0 and x3=0 ( s i n c e G6

=1)”);7 disp(”G10=0 i m p i l e s tha t x4=1 r e g a r d l e s s o f whether

t h e r e i s a f a u l t or not ”);8 disp(”G11=0 i m p l i e s G7=1( s i n c e x3=0) which i n turn

i m p l i e s x4=0”);9 disp(” Ev id en t l y to s a t i s f y both G10=0 and G11=0 we

must s e t c o n f l i c t i n g r e qu i r emen t s on x4 and thushave a c o n t r a d i c t i o n ”);

10 disp(”By symmetry o f the c i r c u i t i t i s obv i ou s tha tan attempt to s e n s i t i z e the path through G10 w i l l

a l s o f a i l ”);11 disp(”Hence the method o f one d imen s i ona l path

s e n s i t i z i n g f a i l s to g e n e r a t e the t e s t i n pu t s tod e t e c t the f a u l t ”);

Scilab code Exa 8.3 Two level OR AND Network

106

Page 108: Switching and Finite Automata Theory_ Z. Kohavi

1 clc;

2 clear;

3 disp(”BY f o l l o w i n g the p ro c edu r e d i s c u s s e d i nS e c t i o n 8 . 6 ”);

4 disp(”we f i n d tha t {a}={0 or 2 or 3 , 9 , 15} ”);5 disp(”and {b }={7 , 8 . 1 1 . 1 3 . 1 4} ”);6 disp(”Thus the minimal s e t s o f t e s t s f o r the above

network a r e ”);7 disp(”{T}={0 or 2 or 3 , 7 , 8 , 9 , 1 1 , 1 3 , 1 4 , 1 5} ”);8 disp(” In t h i s c a s e the s−t e s t s and b−t e s t s

c o r r e spond to s−a−0 and s−a−1 r e s p e c t i v e l y ”);

Scilab code Exa 8.4 Various errors Summarized

1 clc;

2 clear;

3 disp(” Var ious e r r o r s a s s o c i a t e d with some commonlyused g a t e s a r e summarised below ”);

4 disp(”A 0−to−1 e r r o r i n an AND gat e with R i d e n t i c a li n pu t s i s s u b c r i t i c a l ”);

5 disp(” s i n c e the output depends on the o th e r i nput soi t i s s u b c r i t i c a l ”);

6 disp(” I f the same 0−to−1 e r r o r i s i n a OR gat e withR i d e n t i c a l i n pu t s then i t i s c r i t i c a l e r r o r ”);

7 disp(” s i n c e an e r r o r i nput s t r u c k at 1 w i l l make theoutput o f OR gat e to 1 a l l the t ime ”);

8 disp(” S i m i l a r l y the c r i t i c a l e r r o r o f AND gat e i ss u b c r i t i c a l e r r o r o f OR gat e ”);

9 disp(” S i m i l a r l y the e r r o r c l a s s i c f i c a t i o n i n v a r i o u sg a t e s i s ment ioned in Table 8−2”)

107

Page 109: Switching and Finite Automata Theory_ Z. Kohavi

Chapter 10

Capabilities Minimization andtransformation Of SequentialMachines

Scilab code Exa 10.1 Reducing machine

1 clc;

2 clear;

3 disp(” . . . NS ”);4 disp(” PS x=0 x=1 ”);5 disp(” A E, 0 C, 0 ”);6 disp(” B C, 0 A, 0 ”);7 disp(” C B, 0 G, 0 ”);8 disp(” D G, 0 A, 0 ”);9 disp(” E F , 1 B, 0 ”);

10 disp(” F E, 0 D, 0 ”);11 disp(” G D, 0 G, 0 ”);12 disp(” I n i t i a l p a r t i t i o n c o n s i s t s o f a l l the s t a t e s ”)

;

13 disp(”P0=(ABCDEFG) ”);14 disp(” S i n c e E on ly has 1 e q u i v a l e n t d i f f e r e n t from

othe r s , i t can be p a r t i t i o n e d from o t h e r s ”);15 disp(”P1=(ABCDFG)E”);

108

Page 110: Switching and Finite Automata Theory_ Z. Kohavi

16 disp(”now check f o r 2− e q u i v a l e n t i . e . 1− e q u i v a l e n tand t h e i r I i s u c c e s o r s f o r a l l p o s s i b l e I i a r ea l s o 1 e q u i v a l e n t ”);

17 disp(”A,F dont s a t i s f y the 2− e q u i v a l e n t so they canbe p a r t i t i o n e d from o t h e r s ”);

18 disp(”P2=(AF) (BCDG)E”);19 disp(” In the s i m i l a r manner P3 can be ob ta i n ed by

s p l i t t i n g BD and CG s i n c e they dont have the same3 e q u i v a l e n t ”);

20 disp(”P3=(AF) (BD) (CG)E”);21 disp(” In the same way P4 can be ob ta i n ed by

s p l i t t i n g A and F”);22 disp(”P4=(A) (F) (BD) (CG)E”);23 disp(”P4 cant be s p l i t t e d more so P5 w i l l be the

same and the p a r t i t i o n s t o p s ”);24 disp(”P5=(A) (F) (BD) (CG) (E) ”);25 disp(” so the reduced machine i s ”);26 disp(” . . . NS ”);27 disp(” . . PS x=0 x=1 ”);28 disp(” A−−−−a e , 0 c , 0 ”);29 disp(” F−−−−f e , 0 b , 0 ”);30 disp(” . (BD)−−b c , 0 a , 0 ”);31 disp(” (CG)−−c b , 0 c , 0 ”);32 disp(” E−−−−e f , 1 b , 0 ”);

Scilab code Exa 10.2 Compaitability Graph

1 clc;

2 clear;

3 disp(” Con s i d e r i n g the merger graph o f machine M6 inPG 339 ”);

4 disp(”A s e t o f c o m p a i t a b i l i t i e s i s s a i d to be c l o s e di f and on ly i f f o r eve ry compa i t ab l e c on t a i n ed

i n the s e t and a l l i t s imp l i e d c o m p a i t a b i l i t i e sa r e a l s o i n the same s e t ”);

109

Page 111: Switching and Finite Automata Theory_ Z. Kohavi

5 disp(”A c l o s e d s e t o f c ompa i t ab l e s which c o n t a i n sa l l the s t a t e s o f M i s c a l l e d a c l o s e d c o v e r i n g ”);

6 disp(”By ob s e r v i n g the merger graph we can f i n d tha t{ (AD) (BE) (CD) } i s a c l o s e d s e t ”);

7 disp(”And the s e t { (AB) (CD) (EF) } appea r s to be ac l o s e d c o v e r i n g ”);

110

Page 112: Switching and Finite Automata Theory_ Z. Kohavi

Chapter 12

Structure Of SequentialMachines

Scilab code Exa 12.4 Closed Partitions

1 clc;

2 clear;

3 disp(”we know tha t a p a r t i t i o n p i on the s e t o fs t a t e s o f a S e q u e n t i a l machine M i s s a i d to bec l o s e d i f , f o r eve ry two s t a t e s S i and S j whicha r e i n the same b l o ck o f p i and any I t h inputs u c c e s s o r o f S i and S j a r e a l s o i n the same group”);

4 disp(”Based on the above d e f i n i t i o n we can makeseven c l o s e d p a r t i t i o n s as below ”);

5 disp(”∗∗ Pa r i t i o n 1∗∗ ”);6 disp(”{A,B,C,D,E , F ,G,H}”)7 disp(”∗∗ Pa r i t i o n 1∗∗ ”);8 disp(” { (ABCD) (EFGH) }”);9 disp(”∗∗ Pa r i t i o n 2∗∗ ”);

10 disp(” { (ADEH) (BCFG) }”)11 disp(”∗∗ Pa r i t i o n 3∗∗ ”);12 disp(” { (AD) (BCFG) (EH) }”);13 disp(”∗∗ Pa r i t i o n 4∗∗ ”);

111

Page 113: Switching and Finite Automata Theory_ Z. Kohavi

14 disp(” { (ADEH) (BC) (FG) }”)15 disp(”∗∗ Pa r i t i o n 5∗∗ ”);16 disp(” { (AD) (BC) (EH) (FG) }”)17 disp(”∗∗ Pa r i t i o n 6∗∗ ”);18 disp(” { (ABCCDEFGH) }”);19 disp(”By a s s i g n i n g v a l u e s from 000 to 111 to a l l the

s t a t e s from A to H and ob t a i n i n g the f u n c t i o n sf o r Y1 , Y2 , Y3 and z w i l l r e s u l t i n t h i s e qu a t i o n s ”);

20 disp(”Y1=xˆy1ˆ”);21 disp(”Y2=xˆy2+xy2ˆ”);22 disp(”Y3=xy2+xˆy1ˆ y2y3ˆ+y3ˆy2ˆy3+y1y2y3+xˆy1y2 ˆy3ˆ”)

;

23 disp(” z=y1ˆy2ˆy3”);

Scilab code Exa 12.5 Output Consistent

1 clc;

2 clear;

3 disp(”For the 4 s t a t e machine M4 in PG 397 ”);4 disp(” IF the f o u r s t a t e s A,B,C,D ar e a s s i g n e d as

00 , 0 1 , 1 0 , 1 1 ( ta ={(AC) (BD) } ) and 00 , 0 1 , 1 1 , 1 0 ( tb={(AD) (BC) } ) ”);

5 disp(”And i f the output , next s t a t e f u n c t i o n s o f boththe a s s i gnment s a r e c a l c u l a t e d we can f i n d tha t

”);6 disp(”For f i r s t a s s i gnment ”);7 disp(”Y1=xˆy1+xy1ˆ”);8 disp(”Y2=xˆy2ˆ+y1ˆy2ˆ+xy1y2 ”);9 disp(” z=xˆy1ˆy2ˆ+xˆy1y2+xy1ˆy2+xy1y2 ˆ”);

10 disp(” Second Ass ignment ”);11 disp(”Y1=xˆy1+xˆy1”);12 disp(”Y2=xˆy2ˆ+xy1ˆy2+y1y2 ˆ”);13 disp(” z=xˆy2ˆ+xy2”);

112

Page 114: Switching and Finite Automata Theory_ Z. Kohavi

14 disp(” S i n c e the second as s i gnment r e s u l t s i n reducedoutput e x p r e s s i o n t h i s p a r t i t i o n i s c a l l e d as

output−c o n s i s t e n t p a r t i t i o n ”)

Scilab code Exa 12.7 Dependence

1 clc;

2 clear;

3 disp(”A p a r t i t i o n p i 0 on the s t a t e s o f a machine Mi s s a i d to be output c o n s i s t e n t i f f o r eve ryb l o ck p i 0 and eve ry input , a l l the s t a t e sc on t a i n ed i n the b l o ck have the same output s ”);

4 disp(” Con s i d e r i n g the above d e f i n i t i o n I t can beunde r s tood tha t ”);

5 disp(” p i 0 ={(AD) , (BC) } i s an output c o n s i s t e n tp a r t i t i o n o f machine M4”);

6 disp(” s i n c e the output s o f A,D s t a t e s f o r any i npu t sa r e same and s i m i l a r l y the output s o f B ,C a r e

same . ”);7 disp(”So the p a r t i t i o n { (AD) , (BC) } a r e s a i d to be

output c o n s i s t e n t ”);

Scilab code Exa 12.8 input Consistent Matrix

1 clc;

2 clear;

3 disp(”For the Machine M5 in PG 400 ”);4 disp(” S t a t e A i m p l i e s the i d e n t i f i c a t i o n o f s t a t e s C

and D”);5 disp(” s i m i l a r l y C i m p l i e s the i d e n t i f i c a t i o n o f E

and F s t a t e s ”);6 disp(” In the same way C i m p l i e s the i d e n t i f i c a t i o n

o f A and B”);

113

Page 115: Switching and Finite Automata Theory_ Z. Kohavi

7 disp(”Thus the s m a l l e s t i nput c o n s i s t e n t p a r t i t i o nf o r M5 i s ”);

8 disp(” p i ={(AB) , (CD) , (EF) }”);9 disp(”Any o th e r p a r t i t i o n tha t c o n t a i n s p i i s a l s o

input c o n s i s t e n t ”)

Scilab code Exa 12.9 Implementation of Input Consistent matrix

1 clc;

2 clear;

3 disp(” In p r e v i o s u l y prob lems we have dete rmined theinput and output c o n s i s t e n t p a r t i t i o n s f o r theMachine M5”);

4 disp(” Input c o n s i s t e n t p a r t i t i o n { (AB) , (CD) , (EF) }”);5 disp(”Output c o n s i s t e n t p a r t i t i o n { (ACE) , (BDF) }”);6 disp(”By a s s i g n i n g 000 to 101 to a l l the s t a t e s from

A to F”);7 disp(”we can f i n d the e x p r e s s i o n s f o r the next s t a t e

and the output ”);8 disp(”Y1=y2”);9 disp(”Y2=y1ˆy2ˆ”);

10 disp(”Y3=xy3+xy2+xˆy2ˆy3ˆ+y2y3 ”);11 disp(” z=xy3ˆ”);

Scilab code Exa 12.10 Autonous Clock

1 clc;

2 clear;

3 disp(” P a r t i t i o n p i o f the machine M5 i s { (AB) , (CD) , (EF) }”);

4 disp(” I f M5 po s s e s a c l o s e d p a r t i t i o n p i such tha tpi> i . i f the autonomous c l o c k has #p i s t a t e s

114

Page 116: Switching and Finite Automata Theory_ Z. Kohavi

the p e r i o d p w i l l be l e s s than or equa l to #p i ”);

5 disp(” s i n c e i n the above c l o s e d p a r t i t i o n o f M5 wehave 3 s t a t e s i . e . (AB) as one s t a t e and (CD) and(EF) as o th e r two”);

6 disp(”So the p e r i o d o f the autonomous c l o c k i s p=3”)

Scilab code Exa 12.11 partition pair

1 clc;

2 clear

3 disp(”From the d e f i n i t i o n o f p a r t i t i o n p a i r (T,Tˆ)which i s an o rd e r ed p a i r o f p a r t i t i o n s such tha ti f S i and S j a r e i n the same b l o ck o f t , then f o reve ry input Ik i n I , next s t a t e s a r e i n the sameb l o ck o f Tˆ ”);

4 disp(”By app l y i ng the above d e f i n i t i o n we can ob ta i nthe f o l l o w i n g p a r t i t i o n p a i r s ”);

5 disp(” ( pi1 , p i 1 ˆ) =({(ABC) , (DEF) } ,{ (ABC) , (DEF) } ) ”);6 disp(” ( t1 , t1 ˆ) =({(ABCD) , (EF) } ,{ (AE) , (BCDF) } ) ”);7 disp(” ( t2 , t2 ˆ) =({(AE) , (BCDF) } ,{ (ACDE) , (BF) } ) ”);

Scilab code Exa 12.12 partition pair 2

1 clc;

2 clear;

3 // 1 i s e q u i v a l e n t to A ad 2 to B and so on .4 p1=[ ’A ’ ’D ’ ]; // p a i r s i n p a r t i t i o n t (1 and 4

r e p r e s e n t s tha t 1 s t and 4 th s t a t e a r e i n the sameb l o ck ) ;

5 p2=[ ’C ’ ’E ’ ];67 q1=[ ’A ’ ’E ’ ]; // p a i r s i n p a r t i t i o n t ˆ

115

Page 117: Switching and Finite Automata Theory_ Z. Kohavi

8 q2=[ ’B ’ ’D ’ ];9 q3=[ ’C ’ ’F ’ ];

1011 disp(” the f o l l o w i n g a r e the p a r t i t i o n s o f the

machine M8”);12 disp(”T”);13 disp( ’F ’ ,p2(2),p2(1), ’B ’ ,p1);14 disp(”Tˆ”);15 disp(q3,q2,q1);

16 disp(”−−−−−−”);17 disp(”T”);18 disp( ’F ’ ,p2 , ’B ’ ,p1);19 disp(”Tˆ”);20 disp(q3 ,[q1 q2]);

21 disp(”−−−−−−”);

Scilab code Exa 12.14 State Consistent Partitions

1 clc;

2 clear;

3 // assume the f i r s t cloumn va l u e s a r e o f machine M1and 2nd column ar e o f M2

4 p=[1 ,1;1 3;2 2;2 4;3 3;3 1;4 4;4 2];

5 z=1;

6 for i=1: length(p(:,1))

7 for j=i:length(p(:,1))

8 if(p(i,1)==p(j,1) & i~=j)

9 q(z,:)=[p(i,:) p(j,:)];

10 z=z+1;

11 end

12 end

13 end

14 disp(” p i (R) ”);15 disp(q);

16 z=1;

116

Page 118: Switching and Finite Automata Theory_ Z. Kohavi

17 for i=1: length(p(:,1))

18 for j=i:length(p(:,1))

19 if(p(i,2)==p(j,2) & i~=j)

20 q(z,:)=[p(i,:) p(j,:)];

21 z=z+1;

22 end

23 end

24 end

25 disp(” p i ( S ) ”);26 disp(q);

117

Page 119: Switching and Finite Automata Theory_ Z. Kohavi

Chapter 13

State Identificaiton And FaultDetection Experiments

Scilab code Exa 13.1 Fault DetectionExeriment

1 clc;

2 clear;

3 disp(”By f o l l o w i n g the g e n e r a l p r o c edu r e f o r f a u l td e t e c t i o n i n the t e x t book Page n . o 478 ”);

4 disp(” Accord ing to 3 & 4 s t e p s o f g e n e r a l p r o c edu r ea l l the i npu t s a r e taken as 0 and the output i schecked ] ”);

5 disp(”X: 0 0 0”);6 disp(” A B A B”);7 disp(”Z : 1 0 1”);8 disp(”By f o l l o w i n g the s t e p 5”);9 disp(”X: 1 0”);

10 disp(” B B A”);11 disp(”Z : 0 0”);12 disp(” Accor ing to s t ep 6”);13 disp(”X: 1 0 0 1 0 0”);14 disp(” A D D D C D D”);15 disp(”Z : 0 3 3 1 2 3”);16 disp(” Step 7 & 8”)

118

Page 120: Switching and Finite Automata Theory_ Z. Kohavi

17 disp(”X: 1 1 0”);18 disp(” D C A B”);19 disp(”Z : 1 1 1”);20 disp(”Whole ch e ck i ng expe r iment ”)21 disp(”X: 0 0 0 1 0 1 0 0 1 0 0 1 1 0

”);22 disp(” A B A B B A D D D C D D C A

B”);23 disp(”Z : 1 0 1 0 0 0 3 3 1 2 3 1 1

1”);

119

Page 121: Switching and Finite Automata Theory_ Z. Kohavi

Chapter 14

Memory DefinitenessInformation Losslessness ofFinite Automata

Scilab code Exa 14.2 Synchronizing tree

1 clc;

2 clear;

3 N=4;

4 // s t a t e t a b l e o f the machine5 s=[ ’PS ’ ’ x=0 ’ ’ x=1 ’ ;6 ’A ’ ’A ’ ’B ’ ;7 ’B ’ ’C ’ ’B ’ ;8 ’C ’ ’A ’ ’D ’ ;9 ’D ’ ’C ’ ’B ’ ];

1011 k=1;l=2;m=1;n=1;

12 f(k,4)= ’ABCD ’ ;13 k=k+1;

14 for i=2: max(size(s(:,1)))

15 for j=i:max(size(s(:,1)))

16 if(s(i,2)==s(j,2) & i~=j)

17 f(k,l)=strcat ([s(i,1) s(j,1)]);

120

Page 122: Switching and Finite Automata Theory_ Z. Kohavi

18 l=l+4;

19 if(s(i,2)==s(j,2))

20 g(n,m)=s(i,2);

21 g(n,m+1)= ’− ’ ;22 m=m+2;

23 else

24 g(n,m)=s(i,2);

25 g(n,m+1)=s(j,2);

26 g(n,m+2)= ’− ’ ;27 m=m+3;

28 end

29 if(s(i,3)==s(j,3))

30 g(n,m)=s(i,3);

31 g(n,m+1)= ’− ’ ;32 m=m+2;

33 else

34 g(n,m)=strcat ([s(i,3) s(j,3)]);

35 g(n,m+1)= ’− ’ ;36 m=m+2;

37 for z=2:max(size(s(:,1)))

38 if(s(z,3)==s(z,1))

39 h(1,3)=s(z,2);

40 h(1,5)=s(z,3);

41 end

42 end

43 end

44 end

45 end

46 end

47 disp(” Synch r on i z i n g t r e e f o r Machine M3 i s ”)48 disp(f);

49 disp(g);

50 disp(h);

Scilab code Exa 14.3 Contracted State Machine

121

Page 123: Switching and Finite Automata Theory_ Z. Kohavi

1 clc;

2 clear;

3 s=[ ’PS ’ ’ x=0 ’ ’ x=1 ’ ;4 ’A ’ ’A ’ ’B ’ ;5 ’B ’ ’E ’ ’B ’ ;6 ’C ’ ’E ’ ’F ’ ;7 ’D ’ ’E ’ ’F ’ ;8 ’E ’ ’A ’ ’D ’ ;9 ’F ’ ’E ’ ’B ’ ];

10 z=0;

11 disp(” O r i g i n a l Machine M4”);12 disp(s);

13 p=s;

14 n=max(size(s(:,1)));

15 for i=2:n

16 for j=i:n

17 if(s(i,2)==s(j,2) & s(i,3)==s(j,3) & i~=j)

18 z=z+1;

19 for k=j:n-1

20 p(k,:)=p(k+1,:);

21 end

22 for k=2:n-1

23 if(p(k,2)==s(j,1))

24 p(k,2)=s(i,1);

25 end

26 if(p(k,3)==s(j,1))

27 p(k,3)=s(i,1);

28 end

29 end

30 end

31 end

32 end

33 s=p(1:n-z,:);

34 disp(”The c on t r a c t e d Table M4”);35 disp(s);

36 p=s;

37 n=n-z;

38 z=0;

122

Page 124: Switching and Finite Automata Theory_ Z. Kohavi

39 for i=2:n

40 for j=i:n

41 if(s(i,2)==s(j,2) & s(i,3)==s(j,3) & i~=j)

42 z=z+1;

43 for k=j:n-1

44 p(k,:)=p(k+1,:);

45 end

46 for k=2:n-1

47 if(p(k,2)==s(j,1))

48 p(k,2)=s(i,1);

49 end

50 if(p(k,3)==s(j,1))

51 p(k,3)=s(i,1);

52 end

53 end

54 end

55 end

56 end

57 s=p(1:n-z,:);

58 disp(” Repeated Con t r a c t i o n s o f M4”);59 disp(s);

60 p=s;

61 n=n-z;

62 z=0;

63 for i=2:n

64 for j=i:n

65 if(s(i,2)==s(j,2) & s(i,3)==s(j,3) & i~=j)

66 z=z+1;

67 for k=j:n-1

68 p(k,:)=p(k+1,:);

69 end

70 for k=2:n-1

71 if(p(k,2)==s(j,1))

72 p(k,2)=s(i,1);

73 end

74 if(p(k,3)==s(j,1))

75 p(k,3)=s(i,1);

76 end

123

Page 125: Switching and Finite Automata Theory_ Z. Kohavi

77 end

78 end

79 end

80 end

81 s=p(1:n-z,:);

82 disp(s);

83 p=s;

84 n=n-z;

85 z=0;

86 for i=2:n

87 for j=i:n

88 if(s(i,2)==s(j,2) & s(i,3)==s(j,3) & i~=j)

89 z=z+1;

90 for k=j:n-1

91 p(k,:)=p(k+1,:);

92 end

93 for k=2:n-1

94 if(p(k,2)==s(j,1))

95 p(k,2)=s(i,1);

96 end

97 if(p(k,3)==s(j,1))

98 p(k,3)=s(i,1);

99 end

100 end

101 end

102 end

103 end

104 s=p(1:n-z,:);

105 disp(s);

Scilab code Exa 14.4 Testing Table

1 clc;

2 clear;

3 N=4;

124

Page 126: Switching and Finite Automata Theory_ Z. Kohavi

4 s=[ ’PS ’ ’ x=0 ’ ’ x=1 ’ ;5 ’A ’ ’A ’ ’B ’ ;6 ’B ’ ’C ’ ’B ’ ;7 ’C ’ ’A ’ ’D ’ ;8 ’D ’ ’C ’ ’B ’ ];9 n=max(size(s(:,1)));

10 s(n+1,:)=[ ’− ’ ’− ’ ’− ’ ];11 l=2;

12 for i=2:n

13 for j=i:n

14 if(i~=j)

15 s(n+l,1)=strcat ([s(i,1) s(j,1)]);

16 s(n+l,2)=strcat ([s(i,2) s(j,2)]);

17 s(n+l,3)=strcat ([s(i,3) s(j,3)]);

18 l=l+1;

19 end

20 end

21 end

22 disp(s);

Scilab code Exa 14.6 Testing graph

1 clc;

2 clear;

3 s=[ ’PS ’ ’ x=0 ’ ’ x=1 ’ ;4 ’A ’ ’A ’ ’B ’ ;5 ’B ’ ’C ’ ’D ’ ;6 ’C ’ ’D ’ ’C ’ ;7 ’D ’ ’B ’ ’A ’ ];8 q=[0 0;0 0;1 1;1 1];

9 n=max(size(s(:,1)));

10 l=1;

11 for i=2:n

12 z=0;x=0;

13 for j=i:n

125

Page 127: Switching and Finite Automata Theory_ Z. Kohavi

14 if(q(i-1,1)==0 & q(i-1,2)==0 & i~=j & z==0)

15 p(l,1)=s(i,1);

16 p(l,2)=strcat ([s(i,2) s(i,3)]);

17 p(l,3)= ’− ’ ;18 l=l+1;z=z+1;

19 else

20 if(q(i-1,1)==1 & q(i-1,2)==1 & x==0)

21 p(l,1)=s(i,1);

22 p(l,2)= ’− ’ ;23 p(l,3)=strcat ([s(i,2) s(i,3)]);

24 l=l+1;x=x+1;

25 end

26 end

27 end

28 end

29 disp([ ’PS ’ ’ z=0 ’ ’ z=1 ’ ]);30 disp(p);

31 disp([ ’AB ’ ’ (AC) (AD) (BC) (BD) ’ ’− ’ ;32 ’CD ’ ’− ’ ’ (AC) (AD) (BC) (BD) ’ ]);

Scilab code Exa 16.7 Testing Table 2

1 clc;

2 clear;

3 s=[ ’ S ’ ’C1 ’ ’ SB1 ’ ;4 ’B1 ’ ’ S ’ ’− ’ ;5 ’C1 ’ ’C2 ’ ’− ’ ;6 ’C2 ’ ’− ’ ’ S ’ ];7 n=max(size(s(:,1)));

8 l=1;

9 for i=1:n

10 for j=i:n

11 if(i~=j)

12 p(l,1)=strcat ([s(i,1) s(j,1)]);

13 if(s(i,2)== ’− ’ | s(j,2)== ’− ’ )

126

Page 128: Switching and Finite Automata Theory_ Z. Kohavi

14 p(l,2)= ’− ’ ;15 else

16 p(l,2)=strcat ([s(i,2) s(j,2)]);

17 end

18 if(s(i,3)== ’− ’ | s(j,3)== ’− ’ )19 p(l,3)= ’− ’ ;20 else

21 p(l,3)=strcat ([s(i,3) s(j,3)]);

22 end

23 l=l+1;

24 end

25 end

26 end

127

Page 129: Switching and Finite Automata Theory_ Z. Kohavi

Chapter 15

Linear Sequential Machines

Scilab code Exa 15.3 Transfer function

1 clc;

2 clear;

3 T1=[1 2 1];

4 T2=[0 1 1];

5 n=max(size(T1));

6 a=n-1;

7 b=a;

8 T3=zeros(1,a+b+1);

9 for i=1:n

10 b=n-1;

11 for j=1:n

12 T3(a+b+1)=T3(a+b+1)+(T1(i)*T2(j));

13 b=b-1;

14 end

15 a=a-1;

16 end

17 m=max(size(T3));

18 i=1;

19 j=m;

20 while(i<=floor(m/2) & j>=( ceil(m/2)+1))

21 t=T3(i);

128

Page 130: Switching and Finite Automata Theory_ Z. Kohavi

22 T3(i)=modulo(T3(j) ,3);

23 T3(j)=modulo(t,3);

24 i=i+1;

25 j=j-1;

26 end

27 T3(ceil(m/2))=modulo(T3(ceil(m/2)) ,3);

28 disp(”Top row o f the below matr ix i s powers o f thet r a n s f e r f u n c t i o n and bottom row i s o fc o e f f i c i e n t s o f r e s p e c t i v e powers ”);

29 disp ([4 3 2 1 0]);

30 disp(T3);

Scilab code Exa 15.4 Impulse response

1 clc;

2 clear;

3 T1=[1 0 1 1];

4 h=[1 1 0 1 0 0 0 0 0];

5 in=[1 0 1 1];

6 l=1;

7 for i=2: max(size(in(1,:)))

8 h1=h;

9 if(in(i)==1)

10 for k=1:i-1

11 t=h1(max(size(h1(1,:))));

12 for j=max(size(h1(1,:))) -1:-1:1

13 h1(j+1)=h1(j);

14 end

15 h1(1)=t;

16 end

17 D(l,:)=h1(1,:);

18 l=l+1;

19 end

20 end

21 output=h+D(1,:)+D(2,:);

129

Page 131: Switching and Finite Automata Theory_ Z. Kohavi

22 output=modulo(output ,2);

23 disp(output);

Scilab code Exa 15.5 Null Sequence

1 clc;

2 clear;

3 //T=1+D+Dˆ3 ove r GF( 2 )4 // l e t X0 i s the n u l l s equence5 //0=X0+DX0+Dˆ3X0 s i n c e output o f the n u l l s equence

i s z e r o6 // Adding X0 on both s i d e s we ge t X0=DX0+Dˆ3X07 nul =[0 0 1];

8 T=[0 1 0 1];

9 j=1;

10 for i=1: max(size(T));

11 if(T(i)==1)

12 s(1,j)=i-1;

13 j=j+1;

14 end

15 end

16 j=4;

17 for i=1:7

18 nul(1,j)=nul(1,j-s(1))+nul(1,j-s(2));

19 nul(1,j)=modulo(nul(1,j) ,2);

20 j=j+1;

21 end

22 disp(” Nu l l Sequence f o r i nput 001 i s ”);23 disp(nul);

Scilab code Exa 15.6 Null Sequence 2

1 clc;

130

Page 132: Switching and Finite Automata Theory_ Z. Kohavi

2 clear;

3 //T=1+2Dˆ2+Dˆ3 ove r GF( 3 )4 // l e t X0 i s the n u l l s equence5 //0=X0+2Dˆ2∗X0+Dˆ3∗X0 s i n c e output o f the n u l l

s equence i s z e r o6 // Adding X0 on both s i d e s we ge t 2X0=2Dˆ2∗X0+Dˆ3∗X07 //X0=Dˆ2∗X0+2Dˆ3∗X08 nul =[1 1 1];

9 T=[0 0 1 2];

10 j=1;

11 for i=1: max(size(T));

12 if(T(i) >=1)

13 s(1,j)=i-1;

14 j=j+1;

15 end

16 end

17 j=4;

18 for i=1:15

19 nul(1,j)=nul(1,j-s(1))+2* nul(1,j-s(2));

20 nul(1,j)=modulo(nul(1,j) ,3);

21 j=j+1;

22 end

23 disp(” Nu l l Sequence f o r i nput 001 i s ”);24 disp(nul);

Scilab code Exa 15.10 Reducable

1 clc;

2 clear;

3 A=[0 1 1;

4 1 0 0;

5 1 0 0];

6 B=[1;1;0];

7 C=[1 1 0;

8 1 1 1];

131

Page 133: Switching and Finite Automata Theory_ Z. Kohavi

9 D=[0;1];

10 K=[C;C*A;C*(A*A)];

11 K=modulo(K,2);

12 disp(”K matr ix ”)13 disp(K);

14 disp(rank(K), ’ s i n c e the rank o f K i s ’ );15 disp(”K i s not f u r t h e r r e d u c i b l e ”);16 // z=K ∗ y ;

Scilab code Exa 15.11 Linear Machine

1 clc;

2 clear;

3 A=[0 1 0;

4 1 0 0;

5 0 1 1];

6 B=[1;1;1];

7 C=[1 0 0];

8 D=[1];

9 K=[C;C*A;C*(A*A)];

10 disp(K);

11 disp(rank(K), ’ rank o f K matr ix i s ’ );12 disp(” S i n c e the rank i s 2 K matr ix can be reduced ”);13 disp(”As on ly the f i r s t 2 rows a r e l i n e a r l y

independent t h e r e f o r e ”);14 T=[1 0 0;0 1 0];

15 disp(T, ’T = ’ );16 disp(” In t h i s c a s e Q i s ”);17 Q=[1 0;0 1];

18 disp(Q);

19 Q_inv=inv(Q);

20 R=T’;

21 // y r ed=T∗y ;22 A_red=T*A*R;

23 B_red=T*B;

132

Page 134: Switching and Finite Automata Theory_ Z. Kohavi

24 C_red=C*R;

25 D_red=D;

Scilab code Exa 15.12 Linear Machine 2

1 clc;

2 clear;

3 A=[1 0 0 0;

4 0 0 1 1;

5 1 1 0 0;

6 1 0 1 0];

7 B=[1 0;

8 0 0;

9 1 1;

10 1 1];

11 C=[0 1 0 1;

12 1 1 1 0];

13 D=[1 0;

14 0 1];

15 K=[C;C*A;C*(A*A)];

16 K=modulo(K,2);

17 T=K(1:3 ,:);

18 Q=K(1:3 ,1:3);

19 Q_inv=inv(Q);

20 Q_inv=abs(modulo(Q_inv ,2));

21 R=[Q_inv ;[0 0 0]];

22 disp(”Reduced matr ix A i s ”);23 disp(A_red=T*A*R);

24 disp(”Reduced matr ix B i s ”);25 disp(B_red=T*B);

26 disp(”Reduced matr ix C i s ”);27 disp(C_red=C*R);

28 disp(”Reduced matr ix D i s ”);29 disp(D_red=D);

133

Page 135: Switching and Finite Automata Theory_ Z. Kohavi

Scilab code Exa 15.15 Commutative ring

1 clc;

2 clear;

3 n=4;

4 for i=1:4

5 for j=1:4

6 p(i,j)=modulo(i+j-2,4);

7 end

8 end

9 disp(”modulo 4 Add i t i on ”);10 disp(p);

11 for i=1:4

12 for j=1:4

13 p(i,j)=modulo ((i-1)*(j-1) ,4);

14 end

15 end

16 disp(”modulo 4 M u l t i p l i c a t i o n ”);17 disp(p);

Scilab code Exa 15.16 Identifying Whether the Ring is a Field Or not

1 clc;

2 clear;

3 n=4;

4 a=zeros(1,n);

5 for i=1:n

6 for j=1:n

7 pad(i,j)=modulo(i+j-2,4);

8 end

9 end

10 for i=1:n

134

Page 136: Switching and Finite Automata Theory_ Z. Kohavi

11 for j=1:n

12 pmu(i,j)=modulo ((i-1)*(j-1) ,4);

13 end

14 end

15 t=0;

16 for i=1:n

17 for j=1:n

18 if(pad(i,j)==1)

19 t=1;

20 break;

21 end

22 end

23 end

24 if(t==0)

25 disp(”Modulo 4 r i n g i s not a f i e l d ”);26 end

27 for i=0:3

28 for j=0:3

29 if(modulo(i*j,4) ==1)

30 a(i)=1;

31 end

32 end

33 end

34 res =0;

35 for i=1: max(size(a))

36 if(a(i)==1)

37 res=res+1;

38 end

39 end

40 if(res ==4)

41 disp(”Modulo 4 r i n g i s a f i e l d ”);42 else

43 disp(”Modulo 4 r i n g i s not a f i e l d ”);44 end

135

Page 137: Switching and Finite Automata Theory_ Z. Kohavi

Scilab code Exa 15.17 Finite Field

1 clc;

2 clear;

3 n=3;

4 for i=1:n

5 for j=1:n

6 p(i,j)=modulo(i+j-2,3);

7 end

8 end

9 disp(”modulo 3 Add i t i on ”);10 disp(p);

11 for i=1:n

12 for j=1:n

13 p(i,j)=modulo ((i-1)*(j-1) ,3);

14 end

15 end

16 disp(”modulo 3 M u l t i p l i c a t i o n ”);17 disp(p);

136

Page 138: Switching and Finite Automata Theory_ Z. Kohavi

Chapter 16

Finite State Recognizers

Scilab code Exa 16.2 Prove the identity

1 clc;

2 clear;

3 disp(”R1= +1∗(011) ∗ ( 1∗ ( 0 1 1 ) ∗ ) ∗”);4 // from the i d e n t i t y +RR∗=R∗ where R=1∗(011) ∗5 disp(”R2=(1+011)∗”);6 // from the i d e n t i t y (P+Q) ∗=(P∗Q∗ ) ∗7 disp(”R1= +1∗(011) ∗ ( 1∗ ( 0 1 1 ) ∗ ) ∗”);8 disp(” ( 1∗ ( 0 1 1 ) ∗ ) ∗”);9 disp(” (1+011)∗=R2”);

Scilab code Exa 16.3 Prove the identity 2

1 clc;

2 clear;

3 disp(” (1+00∗1) +(1+00∗1) (0+10∗1) ∗(0+10∗1) =0∗1(0+10∗1)∗”);

4 disp(” (1+00∗1) +(1+00∗1) (0+10∗1) ∗(0+10∗1) ”);5 //by t ak i n g (1+00∗1) as common

137

Page 139: Switching and Finite Automata Theory_ Z. Kohavi

6 disp(”=(1+00∗1) [ +(0+10∗1) ∗(0+10∗1) ] ”);7 disp(” [ ( +00∗) 1 ] [ +(0+10∗1) ∗(0+10∗1) ] ”);8 // from the i d e n t i t y +RR∗=R∗9 disp(” [0∗1(0+10∗1) ∗ ] ”);

138

Page 140: Switching and Finite Automata Theory_ Z. Kohavi

Appendix

Scilab code AP 1 Kmap Solver with out Dontcares

1 function []= karmap(k)

2 n=4;

3 k(:,:,2)=zeros(n,n);

4 var=[ ’ y ’ ’ z ’ ’w ’ ’ x ’ ];5 // var =[ ’w’ ’ x ’ ’ y ’ ’ z ’ ] ;6 p1=[ ’ y ’ ’ z ’ ’ ’ ’ y ’ ’ z ’ ’ yz ’ ’ yz ’ ’ ’ ];7 p2=[ ’w ’ ’ x ’ ’ ’ ; ’w ’ ’ x ’ ; ’wx ’ ; ’wx ’ ’ ’ ];8 cmn4 =4;

9 cmn2 =2;

10 temp =1;

11 // 16 c e l l s12 for i=1:n

13 for j=1:n

14 if(k(i,j)~=1)

15 temp =0;

16 break;

17 end

18 end

19 end

20 if(temp ==1)

21 printf(”1”);22 abort;

23 end

24 // 8 c e l l s25 z1=ones (2,4);

26 z2=ones (4,2);

139

Page 141: Switching and Finite Automata Theory_ Z. Kohavi

27 temp1=[ ’ 00 ’ ’ 01 ’ ’ 11 ’ ’ 10 ’ ];28 temp2=temp1 ’;

29 for i=1:n

30 if(i==4)

31 t=1;

32 else

33 t=i+1;

34 end

35 z=[k(i,:,1);k(t,:,1)];

36 if(z==z1)

37 k(i,:,2)=[1 1 1 1];

38 k(t,:,2)=[1 1 1 1];

39 a=strsplit(temp2(i,1));

40 b=strsplit(temp2(t,1));

41 c=strcmp(a,b);

42 for in=1: max(size(c))

43 if(c(in)==0 & a(in)== ’ 0 ’ )44 printf( ’%s ’ ’ ’ ,var(in));45 disp(””);46 break;

47 else

48 if(c(in)==0 & a(in)== ’ 1 ’ )49 printf(var(in));

50 disp(””);51 break;

52 end

53 end

54 end

55 end

56 end

57 for j=1:n

58 if(j==4)

59 t=1;

60 else

61 t=j+1;

62 end

63 z=[k(:,j,1) k(:,t,1)];

64 if(z==z2)

140

Page 142: Switching and Finite Automata Theory_ Z. Kohavi

65 k(:,j,2) =[1;1;1;1];

66 k(:,t,2) =[1;1;1;1];

67 a=strsplit(temp1(1,j));

68 b=strsplit(temp1(1,t));

69 c=strcmp(a,b);

70 for in=1: max(size(c))

71 if(c(in)==0 & a(in)== ’ 0 ’ )72 printf( ’%s ’ ’ ’ ,var(2+in));73 disp(””);74 break;

75 else

76 if(c(in)==0 & a(in)== ’ 1 ’ )77 printf(var(2+in));

78 disp(””);79 break;

80 end

81 end

82 end

83 end

84 end

85 // 4 c e l l s86 z1=ones (1,4);

87 z2=ones (4,1);

88 z3=ones (2,2);

89 temp1=[ ’ 00 ’ ’ 01 ’ ’ 11 ’ ’ 10 ’ ];90 temp2=temp1 ’;

91 for t=1:n

92 z=k(t,:,1);

93 no=number_of(k(t,:,2) ,1);

94 if(z==z1 & no <cmn4)

95 k(t,:,2)=z1;

96 a=strsplit(temp1(1,t));

97 for in=1: max(size(a))

98 if(a(in)== ’ 0 ’ )99 printf( ’%s ’ ’ ’ ,var(in));

100 end

101 if(a(in)== ’ 1 ’ )102 printf(var(in));

141

Page 143: Switching and Finite Automata Theory_ Z. Kohavi

103 end

104 end

105 disp(””);106 end

107 end

108 for t=1:n

109 z=k(:,t,1);

110 no=number_of(k(:,t,2) ,1);

111 if(z==z2 & no <cmn4)

112 k(:,t,2)=z2;

113 a=strsplit(temp2(t,1));

114 for in=1: max(size(a))

115 if(a(in)== ’ 0 ’ )116 printf( ’%s ’ ’ ’ ,var(2+in));117 end

118 if(a(in)== ’ 1 ’ )119 printf(var(2+in));

120 end

121 end

122 disp(””);123 end

124 end

125 for i=1:n

126 for j=1:n

127 if(i==n)

128 t1=1;

129 else

130 t1=i+1;

131 end

132 if(j==n)

133 t2=1;

134 else

135 t2=j+1;

136 end

137 z4=[k(i,j,1) k(i,t2 ,1);k(t1,j,1) k(t1 ,t2

,1)];

138 z5=[k(i,j,2) k(i,t2 ,2);k(t1,j,2) k(t1 ,t2

,2)];

142

Page 144: Switching and Finite Automata Theory_ Z. Kohavi

139 no=number_of(z5 ,1);

140 if(z4==z3 & no <cmn4)

141 k(i,j,2)=1;

142 k(i,t2 ,2) =1;

143 k(t1 ,j,2) =1;

144 k(t1 ,t2 ,2) =1;

145 a=strsplit(temp2(i,1));

146 b=strsplit(temp2(t1 ,1));

147 c=strcmp(a,b);

148 for in=1: max(size(c))

149 if(c(in)==0 & a(in)== ’ 0 ’ )150 printf( ’%s ’ ’ ’ ,var(in));151 end

152 if(c(in)==0 & a(in)== ’ 1 ’ )153 printf(var(in));

154 end

155 end

156 a=strsplit(temp1(1,j));

157 b=strsplit(temp1(1,t2));

158 c=strcmp(a,b);

159 for in=1: max(size(c))

160 if(c(in)==0 & a(in)== ’ 0 ’ )161 printf( ’%s ’ ’ ’ ,var(2+in));162 end

163 if(c(in)==0 & a(in)== ’ 1 ’ )164 printf(var(2+in));

165 end

166 end

167 disp(””);168 end

169 end

170 end

171 // 2 c e l l s172 z6=[1 1];

173 z7=z6 ’;

174 for i=1:n

175 for j=1:n

176 if(i==n)

143

Page 145: Switching and Finite Automata Theory_ Z. Kohavi

177 t1=1;

178 else

179 t1=i+1;

180 end

181 if(j==n)

182 t2=1;

183 else

184 t2=j+1;

185 end

186 z8=[k(i,j,1) k(i,t2 ,1)];

187 z9=[k(i,j,2) k(i,t2 ,2)];

188 no1=number_of(z9 ,1);

189 if(z8==z6 & no1 <cmn2 & i+j~=2)

190 k(i,j,2)=1;

191 k(i,t2 ,2) =1;

192 a=strsplit(temp1(1,j));

193 b=strsplit(temp1(1,t2));

194 c=strcmp(a,b);

195 for in=1: max(size(c))

196 if(c(in)==0 & a(in)== ’ 0 ’ )197 printf(p1(1,i));

198 printf( ’%s ’ ’ ’ ,var(2+in));199 disp(””);200 end

201 if(c(in)==0 & a(in)== ’ 1 ’ )202 printf(p1(1,i));

203 printf(var(2+in));

204 disp(””);205 end

206 end

207 end

208 end

209 end

210 for i=1:n

211 for j=1:n

212 if(i==n)

213 t1=1;

214 else

144

Page 146: Switching and Finite Automata Theory_ Z. Kohavi

215 t1=i+1;

216 end

217 if(j==n)

218 t2=1;

219 else

220 t2=j+1;

221 end

222 z10=[k(i,j,1);k(t1 ,j,1)];

223 z11=[k(i,j,2);k(t1 ,j,2)];

224 no2=number_of(z11 ,1);

225 if(z10==z7 & no2 <cmn2)

226 k(i,j,2)=1;

227 k(t1 ,j,2) =1;

228 a=strsplit(temp2(i,1));

229 b=strsplit(temp2(t1 ,1));

230 c=strcmp(a,b);

231 for in=1: max(size(c))

232 if(c(in)==0 & a(in)== ’ 0 ’ )233 printf(p2(j,1));

234 printf( ’%s ’ ’ ’ ,var(in));235 disp(””);236 end

237 if(c(in)==0 & a(in)== ’ 1 ’ )238 printf(p2(j,1));

239 printf(var(in));

240 disp(””);241 end

242 end

243 end

244 end

245 end

246 // s i n g l e c e l l247 for i=1:n

248 for j=1:n

249 if(k(i,j,2) ==0 & k(i,j,1) ==1)

250 a=strsplit(temp1(1,j));

251 b=strsplit(temp2(i,1));

252 for in=1: max(size(a(:,1)))

145

Page 147: Switching and Finite Automata Theory_ Z. Kohavi

253 if(a(in ,1)== ’ 1 ’ )254 printf(var(in+2));

255 else

256 if(a(in ,1)== ’ 0 ’ )257 printf( ’%s ’ ’ ’ ,var(2+in))

;

258 end

259 end

260 end

261 for in=1: max(size(b(:,1)))

262 if(b(in ,1)== ’ 1 ’ )263 printf(var(in));

264 else

265 if(b(in ,1)== ’ 0 ’ )266 printf( ’%s ’ ’ ’ ,var(in));267 end

268 end

269 end

270 if(i~=4 & j~=4)

271 disp(””);272 end

273 end

274 end

275 end

276 endfunction

Scilab code AP 2 No.of

1 // f i n d s the number o f z ’ s i n the matr ix A2 function res=number_of(a,z)

3 res =0;

4 for i=1: max(size(a(:,1)))

5 for j=1: max(size(a(1,:)))

6 if(a(i,j)==z)

7 res=res+1;

8 end

9 end

10 end

146

Page 148: Switching and Finite Automata Theory_ Z. Kohavi

11 endfunction

Scilab code AP 3 Kmap Solver with out Dontcares

1 function []= karmap1(k)

2 n=4;

3 k(:,:,2)=zeros(n,n);

4 var=[ ’ y ’ ’ z ’ ’w ’ ’ x ’ ];5 p1=[ ’ y ’ ’ z ’ ’ ’ ’ y ’ ’ z ’ ’ yz ’ ’ yz ’ ’ ’ ];6 p2=[ ’w ’ ’ x ’ ’ ’ ; ’w ’ ’ x ’ ; ’wx ’ ; ’wx ’ ’ ’ ];7 cmn4 =1;

8 cmn2 =1;

9 temp =1;

10 // 16 c e l l s11 for i=1:n

12 for j=1:n

13 if(k(i,j)~=1)

14 temp =0;

15 break;

16 end

17 end

18 end

19 if(temp ==1)

20 printf(”1”);21 abort;

22 end

23 // 8 c e l l s24 z1=ones (2,4);

25 z2=ones (4,2);

26 temp1=[ ’ 00 ’ ’ 01 ’ ’ 11 ’ ’ 10 ’ ];27 temp2=temp1 ’;

28 for i=1:n

29 if(i==4)

30 t=1;

31 else

32 t=i+1;

33 end

34 z=[k(i,:,1);k(t,:,1)];

147

Page 149: Switching and Finite Automata Theory_ Z. Kohavi

35 if(z==z1)

36 k(i,:,2)=[1 1 1 1];

37 k(t,:,2)=[1 1 1 1];

38 a=strsplit(temp2(i,1));

39 b=strsplit(temp2(t,1));

40 c=strcmp(a,b);

41 for in=1: max(size(c))

42 if(c(in)==0 & a(in)== ’ 0 ’ )43 printf( ’%s ’ ’ ’ ,var(in));44 disp(””);45 break;

46 else

47 if(c(in)==0 & a(in)== ’ 1 ’ )48 printf(var(in));

49 disp(””);50 break;

51 end

52 end

53 end

54 end

55 end

56 for j=1:n

57 if(j==4)

58 t=1;

59 else

60 t=j+1;

61 end

62 z=[k(:,j,1) k(:,t,1)];

63 if(z==z2)

64 k(:,j,2) =[1;1;1;1];

65 k(:,t,2) =[1;1;1;1];

66 a=strsplit(temp1(1,j));

67 b=strsplit(temp1(1,t));

68 c=strcmp(a,b);

69 for in=1: max(size(c))

70 if(c(in)==0 & a(in)== ’ 0 ’ )71 printf( ’%s ’ ’ ’ ,var(2+in));72 disp(””);

148

Page 150: Switching and Finite Automata Theory_ Z. Kohavi

73 break;

74 else

75 if(c(in)==0 & a(in)== ’ 1 ’ )76 printf(var(2+in));

77 disp(””);78 break;

79 end

80 end

81 end

82 end

83 end

84 // 4 c e l l s85 z1=ones (1,4);

86 z2=ones (4,1);

87 z3=ones (2,2);

88 temp1=[ ’ 00 ’ ’ 01 ’ ’ 11 ’ ’ 10 ’ ];89 temp2=temp1 ’;

90 for t=1:n

91 z=k(t,:,1);

92 no=number_of(k(t,:,2) ,1);

93 if(z==z1 & no <cmn4)

94 k(t,:,2)=z1;

95 a=strsplit(temp1(1,t));

96 for in=1: max(size(a))

97 if(a(in)== ’ 0 ’ )98 printf( ’%s ’ ’ ’ ,var(in));99 end

100 if(a(in)== ’ 1 ’ )101 printf(var(in));

102 end

103 end

104 disp(””);105 end

106 end

107 for t=1:n

108 z=k(:,t,1);

109 no=number_of(k(:,t,2) ,1);

110 if(z==z2 & no <cmn4)

149

Page 151: Switching and Finite Automata Theory_ Z. Kohavi

111 k(:,t,2)=z2;

112 a=strsplit(temp2(t,1));

113 for in=1: max(size(a))

114 if(a(in)== ’ 0 ’ )115 printf( ’%s ’ ’ ’ ,var(2+in));116 end

117 if(a(in)== ’ 1 ’ )118 printf(var(2+in));

119 end

120 end

121 disp(””);122 end

123 end

124 for i=1:n

125 for j=1:n

126 if(i==n)

127 t1=1;

128 else

129 t1=i+1;

130 end

131 if(j==n)

132 t2=1;

133 else

134 t2=j+1;

135 end

136 z4=[k(i,j,1) k(i,t2 ,1);k(t1,j,1) k(t1 ,t2

,1)];

137 z5=[k(i,j,2) k(i,t2 ,2);k(t1,j,2) k(t1 ,t2

,2)];

138 no=number_of(z5 ,1);

139 if(z4==z3 & no <cmn4)

140 k(i,j,2)=1;

141 k(i,t2 ,2) =1;

142 k(t1 ,j,2) =1;

143 k(t1 ,t2 ,2) =1;

144 a=strsplit(temp2(i,1));

145 b=strsplit(temp2(t1 ,1));

146 c=strcmp(a,b);

150

Page 152: Switching and Finite Automata Theory_ Z. Kohavi

147 for in=1: max(size(c))

148 if(c(in)==0 & a(in)== ’ 0 ’ )149 printf( ’%s ’ ’ ’ ,var(in));150 end

151 if(c(in)==0 & a(in)== ’ 1 ’ )152 printf(var(in));

153 end

154 end

155 a=strsplit(temp1(1,j));

156 b=strsplit(temp1(1,t2));

157 c=strcmp(a,b);

158 for in=1: max(size(c))

159 if(c(in)==0 & a(in)== ’ 0 ’ )160 printf( ’%s ’ ’ ’ ,var(2+in));161 end

162 if(c(in)==0 & a(in)== ’ 1 ’ )163 printf(var(2+in));

164 end

165 end

166 disp(””);167 end

168 end

169 end

170 // 2 c e l l s171 z6=[1 1];

172 z7=z6 ’;

173 for i=1:n

174 for j=1:n

175 if(i==n)

176 t1=1;

177 else

178 t1=i+1;

179 end

180 if(j==n)

181 t2=1;

182 else

183 t2=j+1;

184 end

151

Page 153: Switching and Finite Automata Theory_ Z. Kohavi

185 z8=[k(i,j,1) k(i,t2 ,1)];

186 z9=[k(i,j,2) k(i,t2 ,2)];

187 no1=number_of(z9 ,1);

188 if(z8==z6 & no1 <cmn2)

189 k(i,j,2)=1;

190 k(i,t2 ,2) =1;

191 a=strsplit(temp1(1,j));

192 b=strsplit(temp1(1,t2));

193 c=strcmp(a,b);

194 for in=1: max(size(c))

195 if(c(in)==0 & a(in)== ’ 0 ’ )196 printf(p1(1,i));

197 printf( ’%s ’ ’ ’ ,var(2+in));198 disp(””);199 end

200 if(c(in)==0 & a(in)== ’ 1 ’ )201 printf(p1(1,i));

202 printf(var(2+in));

203 disp(””);204 end

205 end

206 end

207 end

208 end

209 for i=1:n

210 for j=1:n

211 if(i==n)

212 t1=1;

213 else

214 t1=i+1;

215 end

216 if(j==n)

217 t2=1;

218 else

219 t2=j+1;

220 end

221 z10=[k(i,j,1);k(t1 ,j,1)];

222 z11=[k(i,j,2);k(t1 ,j,2)];

152

Page 154: Switching and Finite Automata Theory_ Z. Kohavi

223 no2=number_of(z11);

224 if(z10==z7 & no2 <cmn2)

225 k(i,j,2)=1;

226 k(t1 ,j,2) =1;

227 a=strsplit(temp2(i,1));

228 b=strsplit(temp2(t1 ,1));

229 c=strcmp(a,b);

230 for in=1: max(size(c))

231 if(c(in)==0 & a(in)== ’ 0 ’ )232 printf(p2(j,1));

233 printf( ’%s ’ ’ ’ ,var(in));234 disp(””);235 end

236 if(c(in)==0 & a(in)== ’ 1 ’ )237 printf(p2(j,1));

238 printf(var(in));

239 disp(””);240 end

241 end

242 end

243 end

244 end

245 // s i n g l e c e l l246 for i=1:n

247 for j=1:n

248 if(k(i,j,2) ==0 & k(i,j,1) ==1)

249 a=strsplit(temp1(1,j));

250 b=strsplit(temp2(i,1));

251 for in=1: max(size(a(:,1)))

252 if(a(in ,1)== ’ 1 ’ )253 printf(var(in+2));

254 else

255 if(a(in ,1)== ’ 0 ’ )256 printf( ’%s ’ ’ ’ ,var(2+in))

;

257 end

258 end

259 end

153

Page 155: Switching and Finite Automata Theory_ Z. Kohavi

260 for in=1: max(size(b(:,1)))

261 if(b(in ,1)== ’ 1 ’ )262 printf(var(in));

263 else

264 if(b(in ,1)== ’ 0 ’ )265 printf( ’%s ’ ’ ’ ,var(in));266 end

267 end

268 end

269 if(i~=4 & j~=4)

270 disp(””);271 end

272 end

273 end

274 end

275 endfunction

Scilab code AP 4 No.of 3d matrix

1 // f i n d s the number o f z ’ s i n the 3 d imen s i ona lmatr ix A

2 function res=noof3(a,z)

3 res =0;

4 for i=1: max(size(a(:,1,1)))

5 for j=1: max(size(a(1,:,1)))

6 for l=1:2

7 if(a(i,j,l)==z)

8 res=res+1;

9 end

10 end

11 end

12 end

13 endfunction

Scilab code AP 5 Check

1 function out= check(a,b,c,d)

2 for i=1: max(size(a));

154

Page 156: Switching and Finite Automata Theory_ Z. Kohavi

3 if(a(i,1)==b(i,1) & b(i,1)==c(i,1) & c(i,1)

==d(i,1))

4 out(i)=0;

5 else

6 out(i)=1;

7 end

8 end

9 endfunction

Scilab code AP 6 Decimal to Base 2 Converter

1 // dec21b in i s a f u n c t i o n whcih c o nv e r t s any dec ima lnumber g i v en to i t w i l l output i t s e q u i v a l e n tb ina ry number

2 // pas s the dec ima l number as an argument to thef u n c t i o n

3 // For eg : dec21b in ( 1 0 )4 // Wi l l g i v e an output o f 101056 function [temp]= dec21bin(dec)

7 temp2=floor(dec);

// s e p a r a t i n gi n t e g e r pa r t from the g i v en number

8 temp4=modulo(dec ,1);

// s e p a r a t i n gdec ima l pa r t from the g i v en number

910 format( ’ v ’ ,18);

// chang ingthe d e f a u l t p r e c i s i o n to 18

1112 i=1;p=0;x=1;

// f l a gb i t s

1314 while(temp2 >0)

// s t o r i n g each i n t e g e r d i g i t i n v e c t o r f o rc onv en i en c e

155

Page 157: Switching and Finite Automata Theory_ Z. Kohavi

15 p(i)=( modulo(floor(temp2) ,2))

16 temp2=floor(temp2)/2;

17 i=i+1;

18 end

1920 temp2 =0;

// c l e a r i n g the temporary v a r i a b l e ’ temp2 ’2122 for j=1: length(p)

// m u l t i p l i y i n g the b i t s o f i n t e g e r pa r t witht h e i r p o s i t i o n v a l u e s and adding

23 temp2=temp2 +(p(j)*10^(j-1));

24 end

2526 while(temp4 ~=0)

// s t o r i n geach i n t e g e r d i g i t i n v e c t o r f o r c onv en i en c e

27 temp4=temp4 *2;

28 d(x)=floor(temp4);

29 x=x+1;

30 temp4=modulo(temp4 ,1);

31 end

3233 temp5 =0;

// c l e a r i n g the temporary v a r i a b l e ’ temp2 ’3435 for j=1:x-1 //

m u l t i p l i y i n g the b i t s o f dec ima l pa r t witht h e i r p o s i t i o n v a l u e s and adding

36 temp5=temp5 +(10^( -1*j)*d(j))

37 end

3839 temp=temp2+temp5;

//f i n a l l y adding both the i n t e g e r and dec ima lp a r t s to g e t t o t a l output .

40 endfunction

156

Page 158: Switching and Finite Automata Theory_ Z. Kohavi

Scilab code AP 7 Kmap with dont cares

1 function []= donkmap(k,l)

2 n=4; // f o u r v a r i a b l e kmap3 k(:,:,2)=zeros(n,n); // temporary matr ix to

know whether a e l ement i s p a i r e d or not4 // d e c l a r i n g n o t a t i o n s to d i s p l a y output5 var=[ ’ y ’ ’ z ’ ’w ’ ’ x ’ ];6 p1=[ ’ y ’ ’ z ’ ’ ’ ’ y ’ ’ z ’ ’ yz ’ ’ yz ’ ’ ’ ];7 p2=[ ’w ’ ’ x ’ ’ ’ ; ’w ’ ’ x ’ ; ’wx ’ ; ’wx ’ ’ ’ ];8 //minimum redundant e l emen t s a c c ep t ed wh i l e

p a i r i n g9 cmn4 =4;

10 cmn2 =2;

11 temp =1;

12 printf( ’ f ’ );13 printf( ’%1d ’ ,l);14 printf(”=”);15 // 16 c e l l s16 for i=1:n

17 for j=1:n

18 if(k(i,j)~=1 | k(i,j)~=2)

19 temp =0;

20 break;

21 end

22 end

23 end

24 if(temp ==1)

25 printf(”1”);26 abort;

27 end

28 // 8 c e l l s29 z1=ones (2,4);

30 z2=ones (4,2);

31 temp1=[ ’ 00 ’ ’ 01 ’ ’ 11 ’ ’ 10 ’ ];32 temp2=temp1 ’;

33 for i=1:n

34 if(i==4)

157

Page 159: Switching and Finite Automata Theory_ Z. Kohavi

35 t=1;

36 else

37 t=i+1;

38 end

39 z=[k(i,:,1);k(t,:,1)];

40 if(number_of(z,0)==0 & number_of(z,1) >1)

41 k(i,:,2)=[1 1 1 1];

42 k(t,:,2)=[1 1 1 1];

43 a=strsplit(temp2(i,1));

44 b=strsplit(temp2(t,1));

45 c=strcmp(a,b);

46 for in=1: max(size(c))

47 if(c(in)==0 & a(in)== ’ 0 ’ )48 printf( ’%s ’ ’ ’ ,var(in));49 printf( ’+ ’ );50 break;

51 else

52 if(c(in)==0 & a(in)== ’ 1 ’ )53 printf(var(in));

54 printf( ’+ ’ );55 break;

56 end

57 end

58 end

59 end

60 end

61 for j=1:n

62 if(j==4)

63 t=1;

64 else

65 t=j+1;

66 end

67 z=[k(:,j,1) k(:,t,1)];

68 if(number_of(z,0)==0 & number_of(z,1) >0)

69 k(:,j,2) =[1;1;1;1];

70 k(:,t,2) =[1;1;1;1];

71 a=strsplit(temp1(1,j));

72 b=strsplit(temp1(1,t));

158

Page 160: Switching and Finite Automata Theory_ Z. Kohavi

73 c=strcmp(a,b);

74 for in=1: max(size(c))

75 if(c(in)==0 & a(in)== ’ 0 ’ )76 printf( ’%s ’ ’ ’ ,var(2+in));77 printf( ’+ ’ );78 break;

79 else

80 if(c(in)==0 & a(in)== ’ 1 ’ )81 printf(var(2+in));

82 printf( ’+ ’ );83 break;

84 end

85 end

86 end

87 end

88 end

89 // 4 c e l l s90 z1=ones (1,4);

91 z2=ones (4,1);

92 z3=ones (2,2);

93 temp1=[ ’ 00 ’ ’ 01 ’ ’ 11 ’ ’ 10 ’ ];94 temp2=temp1 ’;

95 for t=1:n

96 z=k(t,:,1);

97 no=number_of(k(t,:,2) ,1);

98 if(number_of(z,0)==0 & no <cmn4 &

number_of(z,1) >0)

99 k(t,:,2)=z1;

100 a=strsplit(temp1(1,t));

101 for in=1: max(size(a))

102 if(a(in)== ’ 0 ’ )103 printf( ’%s ’ ’ ’ ,var(in));104 end

105 if(a(in)== ’ 1 ’ )106 printf(var(in));

107 end

108 end

109 printf(”+”);

159

Page 161: Switching and Finite Automata Theory_ Z. Kohavi

110 end

111 end

112 for t=1:n

113 z=k(:,t,1);

114 no=number_of(k(:,t,2) ,1);

115 if(number_of(z,0)==0 & no <cmn4 & number_of(z

,1) >0)

116 k(:,t,2)=z2;

117 a=strsplit(temp2(t,1));

118 for in=1: max(size(a))

119 if(a(in)== ’ 0 ’ )120 printf( ’%s ’ ’ ’ ,var(2+in));121 end

122 if(a(in)== ’ 1 ’ )123 printf(var(2+in));

124 end

125 end

126 printf(”+”);127 end

128 end

129 for i=1:n

130 for j=1:n

131 if(i==n)

132 t1=1;

133 else

134 t1=i+1;

135 end

136 if(j==n)

137 t2=1;

138 else

139 t2=j+1;

140 end

141 z4=[k(i,j,1) k(i,t2 ,1);k(t1,j,1) k(t1 ,t2

,1)];

142 z5=[k(i,j,2) k(i,t2 ,2);k(t1,j,2) k(t1 ,t2

,2)];

143 no=number_of(z5 ,1);

160

Page 162: Switching and Finite Automata Theory_ Z. Kohavi

144 if(number_of(z4 ,0)==0 & no <cmn4 &

number_of(z4 ,1) >0)

145 k(i,j,2)=1;

146 k(i,t2 ,2) =1;

147 k(t1 ,j,2) =1;

148 k(t1 ,t2 ,2) =1;

149 a=strsplit(temp2(i,1));

150 b=strsplit(temp2(t1 ,1));

151 c=strcmp(a,b);

152 for in=1: max(size(c))

153 if(c(in)==0 & a(in)== ’ 0 ’ )154 printf( ’%s ’ ’ ’ ,var(in));155 end

156 if(c(in)==0 & a(in)== ’ 1 ’ )157 printf(var(in));

158 end

159 end

160 a=strsplit(temp1(1,j));

161 b=strsplit(temp1(1,t2));

162 c=strcmp(a,b);

163 for in=1: max(size(c))

164 if(c(in)==0 & a(in)== ’ 0 ’ )165 printf( ’%s ’ ’ ’ ,var(2+in));166 end

167 if(c(in)==0 & a(in)== ’ 1 ’ )168 printf(var(2+in));

169 end

170 end

171 printf(”+”);172 end

173 end

174 end

175 // 2 c e l l s176 z6=[1 1];

177 z7=z6 ’;

178 for i=1:n

179 for j=1:n

180 if(i==n)

161

Page 163: Switching and Finite Automata Theory_ Z. Kohavi

181 t1=1;

182 else

183 t1=i+1;

184 end

185 if(j==n)

186 t2=1;

187 else

188 t2=j+1;

189 end

190 z8=[k(i,j,1) k(i,t2 ,1)];

191 z9=[k(i,j,2) k(i,t2 ,2)];

192 no1=number_of(z9 ,1);

193 if(number_of(z8 ,0)==0 & no1 <cmn2 &

number_of(z8 ,1) >0)

194 k(i,j,2)=1;

195 k(i,t2 ,2) =1;

196 a=strsplit(temp1(1,j));

197 b=strsplit(temp1(1,t2));

198 c=strcmp(a,b);

199 for in=1: max(size(c))

200 if(c(in)==0 & a(in)== ’ 0 ’ )201 printf(p1(1,i));

202 printf( ’%s ’ ’ ’ ,var(2+in));203 printf(”+”);204 end

205 if(c(in)==0 & a(in)== ’ 1 ’ )206 printf(p1(1,i));

207 printf(var(2+in));

208 printf(”+”);209 end

210 end

211 end

212 end

213 end

214 for i=1:n

215 for j=1:n

216 if(i==n)

217 t1=1;

162

Page 164: Switching and Finite Automata Theory_ Z. Kohavi

218 else

219 t1=i+1;

220 end

221 if(j==n)

222 t2=1;

223 else

224 t2=j+1;

225 end

226 z10=[k(i,j,1);k(t1 ,j,1)];

227 z11=[k(i,j,2);k(t1 ,j,2)];

228 no2=number_of(z11 ,1);

229 if(number_of(z10 ,0) ==0 & no2 <cmn2 &

number_of(z10 ,1) >0)

230 k(i,j,2)=1;

231 k(t1 ,j,2) =1;

232 a=strsplit(temp2(i,1));

233 b=strsplit(temp2(t1 ,1));

234 c=strcmp(a,b);

235 for in=1: max(size(c))

236 if(c(in)==0 & a(in)== ’ 0 ’ )237 printf(p2(j,1));

238 printf( ’%s ’ ’ ’ ,var(in));239 printf(”+”);240 end

241 if(c(in)==0 & a(in)== ’ 1 ’ )242 printf(p2(j,1));

243 printf(var(in));

244 printf(”+”);245 end

246 end

247 end

248 end

249 end

250 // s i n g l e c e l l251 for i=1:n

252 for j=1:n

253 if(k(i,j,2) ==0 & k(i,j,1) ==1)

254 a=strsplit(temp1(1,j));

163

Page 165: Switching and Finite Automata Theory_ Z. Kohavi

255 b=strsplit(temp2(i,1));

256 for in=1: max(size(a(:,1)))

257 if(a(in ,1)== ’ 1 ’ )258 printf(var(in+2));

259 else

260 if(a(in ,1)== ’ 0 ’ )261 printf( ’%s ’ ’ ’ ,var(2+in))

;

262 end

263 end

264 end

265 for in=1: max(size(b(:,1)))

266 if(b(in ,1)== ’ 1 ’ )267 printf(var(in));

268 else

269 if(b(in ,1)== ’ 0 ’ )270 printf( ’%s ’ ’ ’ ,var(in));271 end

272 end

273 end

274 if(i~=4 & j~=4)

275 printf(”+”);276 end

277 end

278 end

279 end

280 printf(”0”);281 disp(” ”)282 endfunction

Scilab code AP 8 Kmap for 3 variables with out dontcares

1 function []= karmap3(k)

2 n=4; // t h r e e v a r i a b l e kmap3 m=2

4 k(:,:,2)=zeros(m,n);

5 var=[ ’ z ’ ’ x ’ ’ y ’ ];6 p1=[ ’ z ’ ’ ’ ’ z ’ ];

164

Page 166: Switching and Finite Automata Theory_ Z. Kohavi

7 p2=[ ’ x ’ ’ y ’ ’ ’ ; ’ x ’ ’ y ’ ; ’ xy ’ ; ’ xy ’ ’ ’ ];8 cmn4 =4;

9 cmn2 =3;

10 temp =1;

11 printf( ’ The minimal e c p r e s s i o n o f the g i v en Kmap’ );

12 disp(k(:,:,1));

13 disp(” i s : ”);14 printf( ’ f ’ );15 printf(”=”);16 // 8 c e l l s17 for i=1:m

18 for j=1:n

19 if(k(i,j)~=1 & k(i,j)~=2)

20 temp =0;

21 break;

22 end

23 end

24 end

25 if(temp ==1)

26 printf(”1”);27 abort;

28 end

29 // 4 c e l l s30 z1=ones (1,4);

31 z2=ones (4,1);

32 z3=ones (2,2);

33 temp1=[ ’ 0 ’ ’ 1 ’ ];34 temp2=[ ’ 00 ’ ; ’ 01 ’ ; ’ 11 ’ ; ’ 10 ’ ];35 for t=1:m

36 z=k(t,:,1);

37 no=number_of(k(t,:,2) ,1);

38 if(number_of(z,0)==0 & no <cmn4 &

number_of(z,1) >0)

39 k(t,:,2)=z1;

40 a=strsplit(temp1(1,t));

41 for in=1: max(size(a))

42 if(a(in)== ’ 0 ’ )

165

Page 167: Switching and Finite Automata Theory_ Z. Kohavi

43 printf( ’%s ’ ’ ’ ,var(in));44 end

45 if(a(in)== ’ 1 ’ )46 printf(var(in));

47 end

48 end

49 printf(”+”);50 end

51 end

52 for i=1:m-1

53 for j=1:n

54 t1=i+1;

55 if(j==n)

56 t2=1;

57 else

58 t2=j+1;

59 end

60 z4=[k(i,j,1) k(i,t2 ,1);k(t1,j,1) k(t1 ,t2

,1)];

61 z5=[k(i,j,2) k(i,t2 ,2);k(t1,j,2) k(t1 ,t2

,2)];

62 no=number_of(z5);

63 if(number_of(z4 ,0)==0 & no <cmn4 &

number_of(z4 ,1) >0)

64 k(i,j,2)=1;

65 k(i,t2 ,2) =1;

66 k(t1 ,j,2) =1;

67 k(t1 ,t2 ,2) =1;

68 a=strsplit(temp2(j,1));

69 b=strsplit(temp2(t2 ,1));

70 c=strcmp(a,b);

71 for in=1: max(size(c))

72 if(c(in)==0 & a(in)== ’ 0 ’ )73 printf( ’%s ’ ’ ’ ,var(1+in));74 end

75 if(c(in)==0 & a(in)== ’ 1 ’ )76 printf(var(1+in));

77 end

166

Page 168: Switching and Finite Automata Theory_ Z. Kohavi

78 end

79 printf(”+”);80 end

81 end

82 end

83 // 2 c e l l s84 z6=[1 1];

85 z7=z6 ’;

86 for i=1:m

87 for j=1:n

88 t1=i+1;

89 if(j==n)

90 t2=1;

91 else

92 t2=j+1;

93 end

94 z8=[k(i,j,1) k(i,t2 ,1)];

95 z9=[k(i,j,2) k(i,t2 ,2)];

96 no1=number_of(z9 ,1);

97 if(number_of(z8 ,0)==0 & no1 <cmn2 &

number_of(z8 ,1) >0)

98 k(i,j,2)=1;

99 k(i,t2 ,2)=1;

100 printf(p1(1,i));

101 a=strsplit(temp2(j,1));

102 b=strsplit(temp2(t2 ,1));

103 c=strcmp(a,b);

104 for in=1: max(size(c))

105 if(c(in)==0 & a(in)== ’ 0 ’ )106 printf( ’%s ’ ’ ’ ,var(1+in));107 printf(”+”);108 end

109 if(c(in)==0 & a(in)== ’ 1 ’ )110 printf(var(1+in));

111 printf(”+”);112 end

113 end

114 end

167

Page 169: Switching and Finite Automata Theory_ Z. Kohavi

115 end

116 end

117 for i=1:m-1

118 for j=1:n

119 t1=i+1;

120 if(j==n)

121 t2=1;

122 else

123 t2=j+1;

124 end

125 z10=[k(i,j,1);k(t1 ,j,1)];

126 z11=[k(i,j,2);k(t1 ,j,2)];

127 no2=number_of(z11 ,1);

128 if(number_of(z10 ,0) ==0 & no2 <cmn2 &

number_of(z10 ,1) >0)

129 k(i,j,2)=1;

130 k(t1 ,j,2) =1;

131 printf(p2(j,1));

132 printf(”+”);133 end

134 end

135 end

136 // s i n g l e c e l l137 for i=1:m

138 for j=1:n

139 if(k(i,j,2) ==0 & k(i,j,1) ==1)

140 printf(p1(1,i));

141 printf(p2(j,1));

142 printf(”+”);143 end

144 end

145 end

146 printf(”0”);147 disp(” ”)148 endfunction

Scilab code AP 9 Binary to Decimal convertor

168

Page 170: Switching and Finite Automata Theory_ Z. Kohavi

1 // b in21dec i s a f u n c t i o n whcih c o nv e r t s any b ina rynumber g i v en to i t w i l l output i t s e q u i v a l e n tdec ima l number

2 // pas s the b ina ry number as an argument to thef u n c t i o n

3 // For eg : b i n21de c ima l ( 1 010 )4 // Wi l l g i v e an output o f 1056 function [temp]= bin21dec(bin)

7 i=1;w=1;

89 temp1=floor(bin);

// s e p a r a t i n gi n t e g e r pa r t from the g i v en number

10 temp2=modulo(bin ,1);

// s e p a r a t i n gdec ima l pa r t from the g i v en number

11 temp2=temp2 *10^3;

// c o nv e r t i n gdec ima l va l u e to i n t e r g e r f o r c onv en i en c e

1213 while(temp1 >0)

// s t o r i n g each i n t e g e r d i g i t i n v e c t o r f o rc onv en i en c e

14 p(i)=modulo(temp1 ,10);

15 temp1=floor(temp1 /10);

16 i=i+1;

17 end

1819 while(temp2 >0)

// s t o r i n g each i n t e g e r d i g i t i n v e c t o r f o rc onv en i en c e

20 q(w)=modulo(temp2 ,2);

21 temp2=(temp2 /10);

22 temp2=floor(temp2);

23 w=w+1;

24 end

25

169

Page 171: Switching and Finite Automata Theory_ Z. Kohavi

26 temp1 =0;

// c l e a r i n g the temporary v a r i a b l e ’ temp2 ’2728 for i=1: length(p)

// ch e ck i ng whether i t i s b i na ry or not .29 if(p(i) >1) then

30 disp( ’ not a b ina ry number ’ );31 abort;

32 end

33 end

3435 for i=1: length(p)

// m u l t i p l i y i n g the b i t s o f i n t e g e r pa r t witht h e i r p o s i t i o n v a l u e s and adding

36 temp1=temp1 +(p(i)*2^(i-1));

37 end

3839 temp2 =0;

// c l e a r i n g the temporary v a r i a b l e ’ temp2 ’4041 for z=1:w-1

// m u l t i p l i y i n g the b i t s o f dec ima l pa r t witht h e i r p o s i t i o n v a l u e s and adding

42 temp2=temp2 +(q(z)*2^( -1*(4 -z)));

43 end

4445 temp=temp1+temp2;

// f i n a l l y adding both the i n t e g e r and dec ima lp a r t s to g e t t o t a l output .

46 endfunction

170