Professional Documents
Culture Documents
Thut ton Loang thng c ng dng vo vic bin i trng thi Otomat cng
nh cc bi ton tm kim trn th trong trng hp yu cu bi ton l: s
php bin i l t nht.
u im ca n l: rt d ci t v cho li gii ti u. Tuy nhin n li cha ng
mt nhc im rt ln l khi s lng cu hnh lu tr qu ln s gy trn b
nh. Tt nhin cng c nhng cch khc phc nhc im ny nhng chng ta
s bn sau.
tng ca thut ton l ch: t mt trng thi ban u, chng ta s to ln
lt cc trng thi c th c t trng thi cho v cc trng thi c to ra li
to tip cc trng thi khc (chnh v vy thut ton mi c tn l Loang!). Cc
trng thi mi c to ra s c lu vo mt hng i Queue. Nh vy, r rng:
- Nu thc hin n ht chng ta thu c mi trng thi t trng thi ban
u.
- Nu cn bin i n mt trng thi no th nh th t duyt cu hnh theo
kiu "Vo trc ra trc" (First in First out) nh vy m khi dng trng thi th
s lng php bin i l cc tiu.
d hiu ta xt v d sau y:
V d 1: C mt Otomat c ghp t cc chi tit c mt trong hai trng thi 0 hay
1 nh hnh 1. Otomat c cu trc nh hnh 2 gm 8 chi tit G1,...,G8 vi ba li v
A,B,C. Trng thi ca Otomat c th hin bi mt xu nh phn di 8 l cc
trng thi tng ng ca G1,...,G8.
TmpOtomat[1]:='1';
End;
'1': Begin
Case TmpOtomat[4] of
'0': Begin
if TmpOtomat[6]='0' then TmpOtomat[6]:='1'
Else TmpOtomat[6]:='0';
TmpOtomat[4]:='1';
End;
'1': Begin
if TmpOtomat[7]='0' then
TmpOtomat[7]:='1'
Else TmpOtomat[7]:='0';
TmpOtomat[4]:='0';
End;
End;
TmpOtomat[1]:='0';
End;
End;
ThaA:=TmpOtomat;
End;
Cc th tc cn thit xong!. Mt vn ny sinh l lm th no a ra th
t th cc (m iu ny li l yu cu ca bi ton)?. Gii quyt vn ny rt
n gin!
Chng ta dng thm 2 mng:
-Mng Luu dng lu li vo (A,B,C) cn th t c trng thi .
-Mng Truoc dng tr t trng thi mi to v trng thi to ra n.
Var Luu: Array[1..256] of char;
Truoc: Array[1..256] of byte;
M hnh li gii s n gin nh sau:
Procedure LOANG;
Begin
Found:=True;
While not Empty(Queue) do
Begin
Remove(CurrentOtomat,Queue);
For ch:=A,B,C do
Begin
NewOtomat:=Thch)(CurrentOtomat);
If not Check(NewOtomat) then
Begin
A(NewOtomat,Queue);
Luu:=ch; Truoc[Last]:=First-1;
If NewOtomat=T2 then Exit;
{Gp trng thi ch}
End;
End;
Found:=False;
{Khng tm thy}
End;