Asinkroni Produkt Usmjerenih Labeliranih Grafova

SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

SEMINAR

Asinkroni produkt usmjerenih !"e ir!nih #r!$o%!
Tomislav Bradarić Voditelj: Prof. dr. sc. Bruno Blašković

Zagreb, svibanj, !" #

S!dr&!j
"# Uvod#########################################################################################################################" # $snovni %oj&ovi####################################################################################################### #" Us&jereni labelirani gra'#################################################################################### # LTS 'or&at########################################################################################################## (# Asin)roni %rod*)t######################################################################################################+ (#" ,e'ini-ija#############################################################################################################+ (# Va.nost##############################################################################################################+ (#( /ri&jer################################################################################################################+ +# I&%le&enta-ija#########################################################################################################0 +#" $dabir je1i)a i ra-ionali1a-ija#############################################################################0 +#"#" S)*%ovi#######################################################################################################0 +#"# Rije2ni-i#######################################################################################################3 4# /ri&jene####################################################################################################################5 6# Za)lj*2a)################################################################################################################"! 0# Literat*ra################################################################################################################"" 3# Sa.eta)###################################################################################################################" 5# ,odata)##################################################################################################################"( 5#" ,odata) A 7 /erl aralts lts %arser###################################################################"( 5# ,odata) B 7 /8t9on s)ri%ta 1a asin)roni %rod*)t############################################"4

ina2e &o:no& text processoru. 1bog &no@tva &od*la. bilo )ona2ni9 a*to&ata# ?adalje. 'inan-ijs)* anali1*. *)lj*2*j*:i r*tiranje. adresne s*stave * )o&*ni)a-ijs)i& &re. &etoda i sl# ostvareni9 i o%ti&i1irani9 * je1i)* A.enje %rogra&s)i9 je1i)a te &noge dr*ge# Gra'ovi&a &o. *&jetn* inteligen-ij*. obli)ovat :* algorita& te i1raditi /8t9on s)ri%t* )oja *2in)ovito i1vodi o%era-ij* asin)ronog %rod*)ta %roi1voljnog broja *s&jereni9 labelirani9 gra'ova %retvoreni9 * )ona2ne a*to&ate * LTS 'or&at* te re1*ltat o%era-ije vra:a ta)o. te ta)o i&%le&entirati asin)roni %rod*)t bilo gra'ova. odnosno /8t9on s)ri%te# 1 . )ao i %osjedovanja i1ni&no %rigodni9 str*)t*ra %odata)a. teorij* )odiranja.e&o &ani%*lirati na brojne na2ine.'( U%od Za )ona2ne a*to&ate. )ao )oristan %rogra&s)i je1i) 1a i&%le&enta-ij* sa&og algorit&a asin)ronog %rod*)ta *s&jereni9 labelirani9 gra'ova na&e:e se s)ri%tni je1i) /8t9on# I&aj*:i to na *&*. biologij*. %revo. )ri%togra'ij*. * s)ri%tno& je1i)* /erl. odnosno nji9ov vi1*alni %ri)a1 )ao *s&jerene labelirane gra'ove %ostoje brojne %ri&jene.e&o obavljati nad nji&a je asin)roni %rod*)t# B*d*:i da ne %ostoji %ot%*na standardi1a-ija 1a%isni9 'or&ata *s&jereni9 labelirani9 gra'ova. odnosno LTS=engl# Labeled transition system>.ani s* * %oglavlj* +# Cednostavnije %ri&jene *)rat)o s* s%o&en*te * %oglavlj* 4# ?a%osljet)*. * dodat)* A i B na )raj* do)*&enta nala1i se source )od gore navedene /erl.a&a. a jedna od o%era-ija )oje &o. i1radit :* %arser )oji %retvara *s&jereni labelirani gra' * <aralts< 'or&at* * )ona2ni a*to&at.er * LTS 'or&at*# $snovni %oj&ovi i de'ini-ije )oje se ovdje )oriste o%isani s* * %oglavlj* # Bor&alni o%is algorit&a asin)ronog %rod*)ta o%isan je * %oglavlj* (# /ovr@ni o%is sa&e i&%le&enta-ije * s)ri%tno& je1i)* /8t9on te ra1lo1i i1a iste sadr. )ristalogra's)* anali1*. )o1&ologij*.

eni sa strane 2itljivosti=engl# 0uman readability> i &e&orijs)e *2in)ovitosti# Cedan ta)av 'or&at je LTS=engl# Labeled Transition 'ystem). L / ' • B⊆S E S)*% 'inalni9 stanja Frata) o%is %retvorbe gra' DG LTS: • /o2etno stanje %roi1voljno de'inira&o=ti%i2no %rvo %o red*> • S)*% stanja analogan je s)*%* vr9ova • S)*% labela analogan je s)*%* labela • B*n)-ije %rijela1a analogne s* s)*%* bridova# • Binalna stanja %roi1voljno de'inira&o )() LTS $orm!t Zbog %ra)ti2ni9 ra1loga.eljno je da ta)vi 'or&ati b*d* *ravnote.eno& troj)o&: A D =V. na%ose si&*la-ije i &ani%*la-ije na ra2*nali&a. <TRA?SITI$?S< %rijela1e te na%osljet)* <BI?AL< najavlj*je 'inalna stanja# Forisna je 2injeni-a da se %ri 1a%is* %rijela1a na stanja i labele re'eren-ira&o %o&o:* nji9ovi9 identi'i)atora.ene ntor)e 1a*1i&a jedan reda)# Flj*2na rije2 <I?IT< najavlj*je %o2etno stanje.e&o ostvariti 1natn* &e&orijs)* *@ted*# 2 . a sva)i %od2lan 2lanova *re. %otrebni s* odre.ona+an skup stan)a • L . <STATES< najavlj*je stanja. L>.eni 'or&ati 1a%isivanja de'ini-ija *s&jereni9 labelirani9 gra'ova te nji9ovog trans'or&ata * )ona2ni a*to&at# /o.)( Osno%ni pojmo%i )(' Usmjereni !"e ir!ni #r!$ Us&jereni labelirani gra' de'inira&o )ao s)*% 2vorova %ove1ani9 labelirani& bridovi&a *s&jereni& od jednog 2vora %re&a dr*go&e# Bor&alno ga &o.ona+an skup labela • T (unkci)a pri)ela-a ' . 2i&e * sl*2aj* des)ri%tivniji9 i&ena &o. E. gdje s*: • • • V E L E - S)*% vr9ova=engl# vertex) S)*% bridova=engl# Ed es) S)*% labela=engl# labels) Fona2ni a*to&at de'inira&o na sljede:i na2in: !" # $s%& '& L& T& ()& d)e su* • s% ∈ ' Po+etno stan)e • ' .ene %etor)e 'or&alne de'ini-ije * datote-i je najavljen )lj*2no& rije2j*. <LABELS< labele. Linije )oje %o2inj* 1na)o& <H< s&atraj* se )o&entari&a i ignoriraj* od strane ra2*nala# Sva)i 2lan *re.e&o de'inirati *re. a ne i&ena.

1a *s&jereni labelirani gra' I %ri)a1an na sli-i #"# %retvoren * )ona2ni a*to&at s %roi1voljno de'inirani& %o2etni& i 'inalni& stanje&. 1a%is * LTS 'or&at* glasi: INIT 1 STATES 1 2 LABELS 0i 1a 2b TRANSITIONS 12a 21b FINAL 2 'lika 1.2* Prim)er usm)ereno labelirano rafa 3 .?e)oli)o na%o&ena: • • Labela ti%i2no rednog broja ! te i&ena <i< o1na2ava %rijela1 * %o2etno stanje# /rijela1i s* obli)a <tren*tno stanje< <sljede-e stanje< <redni broj labele< ◦ Fori@tenje& rednog broja labele 1a re'eriranje na label* %oten-ijalno ostvar*je&o 1natn* &e&orijs)* *@ted* %ri %o9rani LTS datote)e jer strin s na1ivo& labele &ora&o %o9raniti sa&o jedan%*t. *&jesto %roi1voljnog broja %*ta# /ri&jeri-e.

. ta)o si o&og*:iv@i jednostavnije ostvarenje. 8i> ∈ Ai=T>. " O j On.###.8n> ∈ S je %ods)*% ele&enata A=S> )oji 1adovoljavaj* *vjet da ∀(x1. anali1* i si&*la-ij* teorets)i9 i stvarni9 s*stava# ?aravno. ∀i. ta)av da ∃i... " O i On. gdje je =N". dobiva se re1*ltantni gra' gra' A na sli-i (# # 4 . 1a )oji vrijedi =Ni. l.e&o %onovno %retvoriti ta)av )ona2ni a*to&at * *s&jereni labelirani gra'# *(* -rimjer $%era-ijo& asin)ronog %rod*)ta gdje s* o%erandi gra'ovi A" i A na sli-i (#"#. xi ∈ Ai(F) 4> B *() V!&nost Asin)roni& %rod*)to& o%erandi se <sta%aj*< * jedan re1*ltantni a*to&at )oji &o.Nn> ∈ S.8n>>.xn) ∈ C(F).###. dalje %o %otrebi &o. te =8".###.###An. jPi Q N j R 8j.###. ==8".ij! A)o i&a&o )ona2ne a*to&ate A". te ∀j. nad )oji&a obavlja&o o%era-ij* asin)ronog %rod*)ta. i to sljede:eg obli)a: "> s! > S (> L +> T je nEtor)a JA"=s!>.###. An=s!>K je Farte1ijev %rod*)t A"=S> L M# L An=S> je *nija A"=L> ∪ M ∪ An=L> je s)*% nEtor)i ==N".Nn>. re1*ltat je o%et )ona2ni a*to&at A.*( Asinkroni produkt *(' +e$ini.e&o 1ate:i o%erande )ada bi oni djelovali %ot%*no ne1avisno# U s)lad* s ti&e s&o %rijela1e i &odelirali ta)o da se bilo )oja dva <s*sjedna< stanja * re1*ltantno& s)*%* stanja ra1li)*j* * najvi@e jedno& <%odstanj*<=2lan* nEtor)e># $vo na& o&og*:*je da -ijeli jedan s*stav o%i@e&o i anali1ira&o %o&o:* sa&o jednog gra'a odnosno a*to&ata.e si&*lirati sve &og*:e )o&bina-ije stanja * )oje& &o. l..

3* 4raf 5 .'lika 3.2* 4raf ! 'lika 3.1* 4raf B 'lika 3.!sinkroni produkt rafova ! i B 5 .

LTS zapis grafa C glasi: INIT 1_3 STATES 1_3 2_3 1_4 2_4 LABELS 0i 1a 2b 3c 4d TRANSITIONS 1_3 2_3 1 1_3 1_4 3 2_3 1_3 2 2_3 2_4 3 1_4 1_3 4 1_4 2_4 1 2_4 1_4 2 2_4 2_3 4 FINAL 2_4 6 .

2i&e se osig*rava dovoljno veli)a br1ina i1vo.(' Od!"ir je/ik! i r!.enja asin)ronog %rod*)ta.ene 'or %etlje# Ia)ar to nije toli)o %otrebno )ad se i1vr@ava %rod*)t sa&o dva a*to&ata. %ri ra2*nanj* Farte1ijevog %rod*)ta dvaj* ili vi@e s)*%ova.enosti $="># B*d*:i da algorita& o%isan * %oglavlj* #(# *)lj*2*je 7 . &etoda i sl# )oje ola)@avaj* )odiranje slo. i%a) s%o&eni&o da. )ada i&a&o veli)* 'or %etlj* )oja dodaje ele&ente * list* ili s)*%. &e&orijs)i *2in)oviti9 alata )oji s* )orisni %ojedina2no ili * )o&bina-iji# Zajedno. )a)o * *2in)ovitosti i1vo.e&o i1bje:i nesavr@en* *%orab* s*stavs)og stoga ili stoga o%:enito# Co@ jedna )orisna osobina /8t9ona je gotova i&%le&enta-ija ra1ni9 na%redniji9 str*)t*ra %odata)a )oje se %o)a1*j* )orisni&.e i1voditi %retra. ta)o i * osig*ravanj* la)o:e i %rigodne ra1ine a%stra)-ije %ri i&%le&enta-iji istoga# ?e)e od ti9 str*)t*ra *)rat)o s* o%isane * ostat)* %oglavlja# .. * ne)* r*)* ostvar*j*:i ta)o1vani kod ko)i se sam piše.enijeg 1adat)a ovog ti%a# ?adalje. itertools i&a &etod* product )oja ra2*na Farte1ijev %rod*)t vi@estr*)o e'i)asnije nego @to bi to 2inile *gnije. 'or&iraj* <iterators)* algebr*<. 'et) )oji s* e)vivalent s)*%ovi&a * &ate&ati2)o& s&isl*# $si& svojstva jedinstvenosti 2lanova=re'erirati se na &ate&ati2)* de'ini-ij* s)*%a>. jedan )oristan &od*l je itertools )oji je ins%iriran )onstr*)ti&a i1 A/LEa.a veli)e &og*:nosti o%ti&i1a-ije. vje@to& )o&bina-ijo& s &etodo& imap& gore navedenoj &etodi &o.('(' Skupo%i Cedna od naj)orisniji9 str*)t*ra %odata)a %ri i&%le&enta-iji asin)ronog %rod*)ta s* s)*%ovi=en l. %ri *%orabi generiranog iteratora s*stav *na%rijed 1na )oli)o &e&orije je %otrebno te j* alo-ira odjedno&. ali i *br1avaj* rad s)ri%te# /ri&jeri-e.enja# /ri&jeri-e. 2i&e &o. )ao i svoje &og*:nosti svladavanja novi9 1nanja * 9od*.ivanje slo. ostvar*j*:i %oten-ijalno 1na2ajn* *@ted* %ro-esors)og vre&ena# T"U ?adalje. no od toga sa& od*stao jer ne %osjed*je ne)a od )orisni9 svojstava o%isani9 * ostat)* ovog %oglavlja# /8t9on i&a vrlo bogat 'ond &od*la. *&jesto da /8t9on 1a sva)i ele&ent %osebno alo-ira %otrebn* &e&orij*. osnovni &od*li i %oten-ijalno %ro-esors)i 1a9tjevne o%era-ije )ori@tene * i&%le&enta-iji algorit&a 1a%ravo s* %isane * je1i)* A )oji %r*.ij! U1i&aj*:i * ob1ir %ara&etre %roble&a.ion! i/!. i1a 2ega stoji vi@e ra1loga# ?a%o&en*o bi9 i )a)o sa& na %o2et)* algorita& na&jeravao i&%le&entirati * je1i)* /erl. )ao naj%ogodniji je1i) 1a i&%le&enta-ij* algorit&a asin)ronog %rod*)ta odabrao sa& s)ri%tni je1i) /8t9on.( Imp ement!.. o&og*:*j*:i je1grovit* i *2in)ovit* )onstr*)-ij* s%e-ijali1irani9 alata# Itertoolsove na%redne &og*:nosti generiranja iteratora ola)@avaj* i&%le&enta-ij*.e&o %redati -ijel* list* s)*%ova nad )oji&a radi&o Farte1ijev %rod*)t.ij! . Sas)ella te SILEa# Itertools &od*l nor&ira osnovni s)*% br1i9. i1ni&no )orisni& se %o)a1*je i to @to se nad s)*%o& &o.

enosti $="># $no @to i1dvaja rije2ni) od obi2nog %olja je to @to se vrijednost do9va:a na te&elj* 9as9 vrijednosti )lj*2a# To je. %resje)a i sl# obavljaj* se ta)o. ne inde)siraj* se redni& brojevi&a )ao tradi-ionalna %olja. rade na %rin-i%* *%arivanja )lj*2a i vrijednosti )oj* on inde)sira# Rije2ni) je najla)@e 1a&isliti )ao ne*re. )orisno )od *)lanjanja ne)e vrijednosti i1 rije2ni)a. Sli2no )ao i )od s)*%ova. ina2e * ne)i& dr*gi& je1i-i&a 1vani aso-ijativna %olja. s)*%ovi se %ri e'i)asnoj i&%le&enta-iji algorit&a %o)a1*j* neo%9odni&a# ?adalje.ivanja )oja s %ove:anje& broja o%eranada i nji9ovi9 veli2ina rast* vrlo br1o.e biti bilo )oji ti% %odat)a )oji je nei1&jenjiv= en l. ve: )lj*2 &o. tuple). Rije2ni-i. str*)t*ra %odata)a )ori@tena )ao )lj*2 je ntor)a=en l. immutable>. )ao i )od sortiranja vrijednosti %ri is%is* re1*ltata i sl#T(U 8 . do9vat vrijednosti %o&o:* )lj*2a odvija se * slo. %ri&jeri-e. @to 2ini rije2ni) i1ni&no br1i& i 'le)sibilni&# Ta dva svojstva rije2ni)a se %o)a1*j* i1ni&no )orisni& )od 2esti9 i1&jena %rijela1a %ri i&%le&enta-iji algorit&a. )a)o bi se odr.('() Rije0ni.eni9 %arova =)lj*2: vrijednost># .eni s)*% *re. o%era-ije &e.er vrlo *2in)ovito te s la)o:o& od strane %rogra&era#T U .a)le.i Co@ jedan vrlo )oristan alat s* rije2ni-i$en l. jer %ri to&e ostale vrijednosti ne &oraj* &ijenjati svoj* lo)a-ij* * &e&oriji.ao integritet rije2ni)a# U )onte)st* ovog se&inara. dictionaries).* s)*%ovi&a %o%*t *nije.&nogo %retra.

* isti&a# ?e)e od nji9 gdje se )oristi asin)roni %rod*)t s* veri'i)a-ija s*stavaT+U. te &noge dr*ge# /ri&jene sa&e o%era-ije asin)ronog %rod*)ta *glavno& se svode na )onstr*)-ij*. sig*rnost internets)i9 i distrib*irani9 a%li)a-ijaT0U. si&*la-ij* te anali1* %roi1voljnog broja o%eranada %o&o:* jednog gra'a ili a*to&ata# I&aj*:i na *&* 1a9tjevnost te&ati)e ne)i9 od ti9 %ri&jena. )ao i 2injeni-* da nji9ova o%se. )ri%togra'ijaT4U. 1adovoljit :e&o se sa&o ovi& nji9ovi& )rat)i& s%o&eno& i re'eren-a&a na odgovaraj*:* literat*r*# 9 .nost nad&a@*je te&ati)* ovoga se&inara.1( -rimjene /ostoje brojne i ra1novrsne %ri&jene *s&jereni9 labelirani9 gra'ova i )ona2ni9 a*to&ata te ra1ni9 o%era-ija &e.

re1*ltantni& gra'o& &o.e&o i1vr@iti o%era-ij* asin)ronog %rod*)ta# /o %otrebi. ta)o si o&og*:iv@i jednostavnije ostvarivanje i si&*la-ij* teorets)i9 i stvarni9 s*stava# 10 .e&o %retvoriti * 'or&at s )oji& gore navedena /8t9on s)ri%ta &o.2( 3!k ju0!k Za )ona2ne a*to&ate odnosno nji9ov vi1*alni %ri)a1 )ao *s&jereni labelirani gra' %ostoje brojne %ri&jene# $dgovaraj*:i& algorit&o& ostvareni& * %rogra&s)o& je1i)* /8t9on nad o%erandi&a 2ije se de'ini-ije nala1e * *la1ni& datote)a&a &o. )ao i odgovaraj*:e %rijela1e i labele# ?a)on toga. *la1ne datote)e ne%ovoljnog 'or&ata %o&o:* %rogra&s)og je1i)a /erl &o.e '*n)-ionirati# Asin)roni& %rod*)to& ? o%eranada <%ove1*je&o< * jedan re1*ltantni gra' 2ija :e stanja sadr.e&o o%isati i anali1irati -ijeli s*stav.avati sve &og*:e )o&bina-ije stanja o%eranada od )oji9 je nastao.

$tt#:%%docs...4( Liter!tur! 1: . -ictionaries.. 2004 11 .4..eter /c$sensc$la!er..$t'l. 0 r!en 1e##.eter /c$sensc$la!er. . 2002 7: 9saac A! do.or!%librar&%itertools. 3erication o" Coo#eratin! 4&ste's 5 An A##roac$ 6ased on For'al 7an! a!es.2012.#&t$on.#&t$on.0. Carsten 1 dol#$. itertools — F nctions creatin! iterators "or e""icient loo#in!.03.$t'l+dictionaries. $tt#:%%docs. 1ole based s#eci"ication and sec rit& anal&sis o" cr&#to!ra#$ic #rotocols sin! as&nc$rono s #rod ct a to'ata. class set()iterable*). 2: . 4#eci"ication and For'al :eri"ication o" sec rit& re< ire'ents.or!%t torial%datastr ct res. .#&t$on. 1oland 1ie2e.or!%librar&%stdt&#es.$t'l+set.2012.01.04. $tt#:%%docs. .1(. 9. 3: .: 4i!rid 8 r!ens. 0a:ier 7o#e.2012.7. 4: .

* dodat)* na )raj* do)*&enta nala1e se dvije gore navedene s)ri%te# 12 . a jedna od o%era-ija )oje nad nji&a &o. teorij* )odiranja. )ristalogra's)* anali1*. *)lj*2*j*:i r*tiranje. biologij*. 'inan-ijs)* anali1*.a&a. *&jetn* inteligen-ij*.ani s* * %oglavlj* +# Cednostavnije %ri&jene *)rat)o s* s%o&en*te * %oglavlj* 4# ?a%osljet)*.e&o obavljati je asin)roni %rod*)t# $vi& rado& ostvario sa& aralts DG lts %arser * s)ri%tno& je1i)* /erl te obli)ovao i i&%le&entirao algorita& asin)ronog %rod*)ta *s&jereni9 labelirani9 gra'ova * s)ri%tno& je1i)* /8t9on# $snovni %oj&ovi i de'ini-ije )oje se ovdje )oriste o%isao sa& * %oglavlj* # Bor&alni o%is algorit&a asin)ronog %rod*)ta nala1i se * %oglavlj* (# /ovr@ni o%is sa&e i&%le&enta-ije * s)ri%tno& je1i)* /8t9on te ra1lo1i i1a iste sadr.enje %rogra&s)i9 je1i)a te &noge dr*ge# Gra'ovi&a &o.5( S!&et!k Za *s&jerene labelirane gra'ove %ostoje brojne %ri&jene. )ri%togra'ij*.e&o &ani%*lirati na brojne na2ine. )o1&ologij*. %revo. adresne s*stave * )o&*ni)a-ijs)i& &re.

$init)state.6( +od!t!k 6(' +od!t!k A 7 -er !r! ts) ts p!rser #! /usr/bin/perl use Getopt::Long. o! !ile lines( each line is one transition # process input !ile if"defined"$input## print! . $na*e = $7.<<%<: 1o input !ile!'n Please e!ine an input !ile using the option 5i an !ile path as argu*ent@'n. > if" $aralts2lts == 7 # . o! all states +labels. $line)in e?. # arra. # <ea !ile into an arra.( $input.."cope56277tb# 8939: . #use warnings. exit. if"! open"01P23( . > +in!ile = 401P23&. o! !ile lines( each line is one label +transitions. my $aralts2lts = 0.# "/'D"@B#'D/#. my $input.#generate !ro* aralts: /s'n.# eter*ine initial state 13 . # option variable with e!ault value "!alse# $et%ptions "'aralts2lts' =& '$aralts2lts( # !lag 'i:s' =& '$input( # #. # initial auto*ata state +states. > # processes aralts input !ile sub input)aralts$line)in e? = 57. close"01# . use Switch 'Perl6'.4$input. # =lose the !ile > # en !ile input else die .'n.<<%<: =an't open !ile $input 'n.. given "$)# when "/C:3S/#. #cho*p"+in!ile#. #clear newlines !ro* each line # let's process the !ile foreach "+in!ile# $line)in e? = $line)in e? B 7. # arra. Aprint)as)lts)*o u!or*at. # # # %pen the !ile die . #use strict.# i! option on( call the appropriate subroutine Ainput)aralts. > when "/C<%%3/#. # arra.

my $s. > e!ault > > ### en switch > ## en > sub print)as)lts)*o u!or*atprint . $bla = $arcs)start B 7. > when "/C. print .$)'n.0103'n. given set o! states "/'D"E05FGB#'D/#.. $po* 4 $no e)count.:9K. > when "/CSIJK%:)=%213/#. $) = $in!ileE$blaG.*bols)start B 7.#$na*e'n#=%pe'n#$na*e@aralts'n#6277 3K'n'n. > > !ile *apping pass 14 . > when "/CSIJK%:S/#$s.*bols)start = $line)in e?. $) = $in!ileE$blaG.1H)9<=S/#print $in!ileE$blaG.S'n.1H)SIJK%:S/#print $in!ileE$blaG. $bla = $s. # > > when "/C9<=)=%213/#.S393.:S'n.# generate i*plicitl.# "/'D"E05FGB#'D/#.. > when "/C9<=S/#$arcs)start = $line)in e?. > when "/C1%H. my $arc)count = int"$7#.*bol)count = int"$7#. foreach "+states#print . $) = $in!ileE$blaG.# "/'D"E05FGB#'D/#. $blaBB.. $) = $in!ileE$blaG.1H):3S/#$lts)en = $line)in e?. for "$po* = 0. $po*BB# $statesE$po*G = $init)stateB$po*.$init)state'n. my $root = int"$7#. until "/C. print . $init)state = $root. > print . > print .."/'D"E05FGB#'D/#.. # print hea er print . my $no e)count = int"$7#. until "/C..)=%213/#.. $blaBB.3<91S030%1S'n.

s@argvE7:G# ############### # pretpostavlLa se a lista)auto*ata sa rMi va clana"Ler ra i*o postupno# e! as.# #parser@a # # )argu*ent"'5o'( '55output'( nargs='N'( est=.s i*port re i*port itertools i*port argparse !ro* collections i*port e!ault ict parser = argparse@9rgu*entParser" escription= '9s.# parse)results = parser@parse)args"s.( action=.store.n)pro "lista)auto*ata#: novo)pocetno = "lista)auto*ataE0G@pocetno)stanLe( lista)auto*ataE7G@pocetno)stanLe# stanLa = set"itertools@pro uct" Pitertools@i*ap"la*b a ?: ?@stanLa( lista)auto*ata### labele = set"# labele@up ate"lista)auto*ataE0G@labele# riLecniO = ict"# # Ma OonvertiranLe labela 2@ operan a nove)labele2 = set"# # Mbog pretrage Oo ugniLeM enih petlLi a = len"labele# !or labela in lista)auto*ataE7G@labele: i! labela in labele: riLecniOElabelaE0GG = labelaE0G # sve isto nove)labele2@a "labela# continue riLecniOElabelaE0GG = str"a# lab = "str"a#( labelaE7G# nove)labele2@a "lab# labele@a "lab# a B= 7 lista)auto*ataE7G@labele = nove)labele2 novi)priLelaMi = e!ault ict"list# !or OlLuc in lista)auto*ataE7G@priLelaMi: novi)OlLuc = ""OlLucE0G( str"riLecniOEOlLucE7GG### novi)priLelaMiEnovi)OlLucG B= "lista)auto*ataE7G@priLelaMiEOlLucG# el riLecniO # pripaMiti na ovo aOo se u sOriptu bu e o avalo # Los neOe !unOcionalnosti osi* pro uOta lista)auto*ataE7G@priLelaMi = novi)priLelaMi priLelaMi = e!ault ict"list# 15 .output.( est=.( e!ault=s.input.( e!ault=1one( help=.PutanLe o ulaMnih e!iniciLa gra!ova.PutanLa o iMlaMne atoteOe Ma reMultat.nchronousl. 1 irecte labele graphs'# parser@a )argu*ent"'5i'( '55input'( nargs='B'( action=.store.s@st in( help=. *ultipl.6() +od!t!k 8 7 -9thon skript! /! !sinkroni produkt i*port os i*port s.

S'#: init)stanLa = in eOs eli! "re aO == ':9K.:S'#: init)labele = in eOs eli! "re aO == '3<91S030%1S'#: init)priLelaMi = in eOs eli! "re aO == '8019:'#: init)!inal = in eOs niM)stanLa = EG # list"# niM)stanLa = niMEinit)stanLaB7:init)labeleG niM)labela = niMEinit)labeleB7:init)priLelaMiG niM)priLelaMa = niMEinit)priLelaMiB7:init)!inalG niM)!inalnih = niMEinit)!inalB7:G el niM sel!@stanLa = set"# !or stanLe in niM)stanLa: stanLe = "stanLe@split"' '##E0G # ne uM*i u obMir opis stanLa sel!@stanLa@a "stanLe# #labela = "i ent( naMiv# 16 .# neOa vas ne uplase !or petlLe( ne iMvo e se ugo !or in eOs( auto*at in enu*erate"lista)auto*ata#: # OratOa"2 Oruga# !or reMultantno)stanLe in stanLa: # OratOa"2 Oruga# !or labela in lista)auto*ataEin eOsG@labele: OlLuc = "reMultantno)stanLeEin eOsG( labelaE0G# i! OlLuc in lista)auto*ataEin eOsG@priLelaMi: slLe stanLa = lista)auto*ataEin eOsG@priLelaMiEOlLucG !or slLe ece in slLe stanLa: # relativno OratOa i! in eOs == 0: slLe ece = "slLe ece( reMultantno)stanLeE75in eOsG# eli! in eOs == 7: slLe ece = "reMultantno)stanLeE75in eOsG( slLe ece# i! slLe ece in stanLa: priLelaMiE"reMultantno)stanLe( OlLucE7G#G@appen " slLe ece# !inalna)stanLa = set"itertools@pro uct"Pitertools@i*ap" la*b a ?: ?@!inalna)stanLa( lista)auto*ata### reMultantni)auto*at = 9uto*at"# reMultantni)auto*at@pocetno)stanLe = novo)pocetno reMultantni)auto*at@stanLa = stanLa reMultantni)auto*at@labele = labele reMultantni)auto*at@priLelaMi = priLelaMi reMultantni)auto*at@!inalna)stanLa = !inalna)stanLa return reMultantni)auto*at class 9uto*at"obLect#: e! ucitaL)iM) atoteOe"sel!( atoteOa#: niM = 1one with open" atoteOa( 'r'# as !p: niM = Eline@strip"''r'n'# !or line in !pG sel!@i*e)auto*at = atoteOa !or in eOs( re aO in enu*erate"niM#: i! "re aO == '0103'#: sel!@pocetno)stanLe = niMEin eOsB7G sel!@pocetno)stanLe = "sel!@pocetno)stanLe@split"' '##E0G eli! "re aO == 'S393.

E7G print '8019:' !or stanLe in sorte "sel!@!inalna)stanLa#: print ')'@Loin"stanLe# e! print)hea er"auto*ati#: 17 .E0G#( print ')'@Loin"sel!@priLelaMiEOe.sel!@labele = set"# !or labela in niM)labela: * = re@search"'"'9EC GP#"@P#'(labela# # split po prvo* raM*aOu i ent = *@group"7# Oo*entar = *@group"2#E7:G sel!@labele@a ""i ent(Oo*entar## sel!@priLelaMi = e!ault ict"list# !or priLelaM in niM)priLelaMa: # "trenutno( slLe ece( MnaO# priLelaM = priLelaM@split"' '# sel!@priLelaMiE"priLelaME0G( priLelaME2G#G@appen "priLelaME7G# sel!@!inalna)stanLa = set"# !or !inalno in niM)!inalnih: sel!@!inalna)stanLa@a "!inalno@split"' '#E0G# # # # # prilago ava *e ureMultat slLe ece* *noMenLu "aOo *noMi*o vise o 2 auto*ata o Le no*# ste lLiviLe Ma *e*oriLu nego rManLe svih operana a i ciLelog *e ureMultata u *e*oriLi o Le no* e! ucitaL)iM)*e*oriLe"sel!#: sel!@pocetno)stanLe = ')'@Loin"sel!@pocetno)stanLe# sel!@stanLa = set"*ap"la*b a ?: ')'@Loin"?#( sel!@stanLa## sel!@!inalna)stanLa = set"*ap"la*b a ?: ')'@Loin"?#( sel!@!inalna)stanLa## # labele ostaLu OaOo Lesu !or Oe.GEin eOsG## el sel!@priLelaMiEOe. in sel!@priLelaMi: new)Oe.G e! ispisi)se"sel!#: #sel!@print)hea er"# print '0103' print ')'@Loin"sel!@pocetno)stanLe# print 'S393. in sorte "sel!@priLelaMi#: !or in eOs( priLelaM in enu*erate"sorte "sel!@priLelaMiEOe.E0G#( Oe.G@appen "')'@Loin" sel!@priLelaMiEOe.G#: sel!@priLelaMiEnew)Oe.S' !or stanLe in sorte "sel!@stanLa#: print ')'@Loin"stanLe# print ':9K.G##: print ')'@Loin"Oe. = "')'@Loin"Oe.E7G# !or in eOs( priLelaM in enu*erate"sel!@priLelaMiEOe.GEin eOsG#( print Oe.:S' !or labela in sorte "sel!@labele#: print labelaE0G( labelaE7G print '3<91S030%1S' !or Oe.

print '# $enerate !ro*:'( !or auto*at in auto*ati: print auto*at@i*e)auto*at( print ''n# =%pe' print '# 6277 3K'n' i! ))na*e)) == '))*ain))': auto*ati = EG # list"# # atoteOe s e!iniciLa*a Ma ane preOo Oo*an ne liniLe !or in eOs( e!iniciLa in enu*erate"parse)results@input#: auto*ati@appen "9uto*at"## auto*atiEin eOsG@ucitaL)iM) atoteOe" e!iniciLa# print)hea er"auto*ati# # pri*a listu auto*ata"sa*o va Ler ra i*o postupno# reMultantni)auto*at = as.n)pro "Eauto*atiE0G( auto*atiE7GG# el auto*atiE:2G !or auto*at in auto*ati: reMultantni)auto*at@ucitaL)iM)*e*oriLe"# reMultantni)auto*at = as.n)pro "Eauto*at( reMultantni)auto*atG# reMultantni)auto*at@ispisi)se"# 18 .

Sign up to vote on this title
UsefulNot useful