Laboratorijske vježbe
Programski ostvariti generator i simulator konačnog automata za upravljanje radom semafora na pješačkom prijelazu prema slici 1. Sustav semafora za regulaciju prometa na pješačkom prijelazu sastoji se od semafora za automobile i semafora za pješake. Semafori za automobile sastoje se od crvenog, žutog i zelenog svjetla, dok se semafori za pješake sastoje od crvenog i zelenog svjetla. Tijekom rada, semafori rade u ciklusu koji je prikazan tablicom 1.
Slika 1. Sustav semafora upravljan konačnim automatom
Tablica 1. Ciklus rada semafora
Stanje semafora za automobile | Stanje semafora za pješake |
crveno | crveno |
crveno+žuto | crveno |
zeleno | crveno |
žuto | crveno |
crveno | crveno |
crveno | zeleno |
Semafori su opremljeni senzorima za praćenje dolaska pješaka i automobila i rade u sljedećem režimu:
zeleno svjetlo na semaforu za automobile traje minimalno TAZmin sekundi, a maksimalno TAZmax sekundi
zeleno svjetlo na semaforu za pješake traje minimalno TPZmin sekundi, a maksimalno TPZmax sekundi
ako se na semaforu za pješake okupi minimalno NP pješaka prije isteka vremena TAZmax, pokreće se izmjena stanja semafora u korist pješaka
ako se na semaforu za automobile okupi minimalno NA automobila prije isteka vremena TPZmax, pokreće se izmjena stanja semafora u korist automobila
crveno+žuto svjetlo na semaforu za automobile traje TACŽ sekundi
žuto svjetlo na semaforu za automobile traje TAŽ sekundi
crveno svjetlo istovremeno na oba semafora traje TACPC sekundi
Napisati program za generiranje konačnog automata za upravljanje radom semafora prema zadanom režimu. Vrijednosti TAZmin, TAZmax, TPZmin, TPZmax, NP, NA, TACŽ, TAŽ i TACPC su parametri za generiranje automata i zadaju se prilikom pokretanja programa.
Ulaznu abecedu automata čine znakovi P, A i S. Značenje znakova je sljedeće:
P - novi pješak je pristigao na semafor za pješake
A - novi automobil je pristigao na semafor za automobile
S - protekla je 1 sekunda od prethodnog slanja znaka S
Može se zamisliti da znakovi P i A dolaze od senzora za praćenje dolaska pješaka i automobila, a znak S svake sekunde od sata.
Izlaz automata u svakom trenutku trebaju biti dvije informacije:
upaljeno svjetlo na semaforu za automobile
upaljeno svjetlo na semaforu za pješake
Može se zamisliti da je izlaz konačnog automata spojen na odgovarajuće prekidače koji pale žarulje na semaforima.
Dodatne pretpostavke kod rješavanja zadatka:
pješaci i automobili dolaze proizvoljnom dinamikom, za vrijeme bilo koje kombinacije svjetala na semaforima
ako automobil ili pješak naiđe na zeleno svjetlo na semaforu, trenutačno prolazi kroz semafor (ne troši vrijeme ni prostor)
svi pješaci ili automobili koji su prethodno bili zaustavljeni na crvenom svjetlu na semaforu, u trenutku paljenja zelenog svjetla trenutačno prolaze kroz semafor bez obzira na duljinu nagomilanog reda (neposredno nakon gašenja zelenog svjetla, nitko ne čeka na taj semafor)
nije bitno s koje strane semafora nailaze automobili i pješaci (parametri NA i NP promatraju se kao ukupni broj automobila, odnosno pješaka s obje strane semafora)
početno stanje prometnog sustava:
početno stanje semafora je prvi redak u tablici 1 (crvena svjetla na oba semafora), nakon čega se semafor pali u korist automobila
još nema nijednog pristiglog automobila ni pješaka
promjene stanja semafora uvijek se događaju sinkrono sa signalom sata (nakon primljenog odgovarajućeg broja znakova S). To ujedno znači da će promjena stanja semafora uzrokovana prekoračenjem kritičnog broja automobila ili pješaka nastupiti sinkrono sa sljedećim signalom sata (pod uvjetom da je proteklo barem TAZmin, odnosno TPZmin sekundi), a ne neposredno nakon što se dosegne kritični broj automobila ili pješaka koji čekaju na semafor
Generirani konačni automat OBVEZNO zapisati u izlaznu datoteku. Format zapisa definicije automata je proizvoljan.
Programski ostvariti simulator konačnog automata koji:
iz datoteke učitava definiciju konačnog automata dobivenu iz generatora
od korisnika učitava proizvoljan broj ulaznih nizova
ispisuje izlaz automata na zaslon računala
Shema povezivanja generatora i simulatora prikazana je slikom 2.
Slika 2. Shema povezivanja generatora i simulatora konačnog automata
Programski ostvariti simulator nedeterminističkog potisnog automata.
Ulaz u simulator potisnog automata je definicija automata zadana tablicom prijelaza u ulaznoj datoteci proizvoljnog formata.
U svakom koraku rada, program simulator treba na zaslon ili u izlaznu datoteku ispisivati:
a) znak koji trenutno učitava
b) stanje u kojem se trenutno nalazi
c) sadržaj stoga (sadržaj stoga uključuje SVE ZNAKOVE koji se trenutno nalaze na stogu)
d) prijelaz koji obavlja
e) novo stanje u koje prelazi
f) novi sadržaj stoga
g) prihvaća li se dosad učitani dio ulaznog niza
Ispravnost rada simulatora provjeriti na primjeru potisnog automata koji prihvaća ispravno napisane aritmetičke izraze u infiks notaciji korištenjem operatora +, -, *, /, (, ), te operanada A, B, C, D, E.
Primjer ulaznog niza kojeg prihvaća potisni automat je:
(A+(C*C)/D)-A
Za zadani potisni automat definirati tablicu prijelaza te ispitati ispravnost rada primjenom ostvarenog simulatora.
Programski ostvariti aplikaciju za određivanje prostorne i vremenske složenosti determinističkog Turingovog stroja s jednom trakom koja je beskonačna na obje strane. Aplikacija za zadani Turingov stroj i zadani niz zapisan na traci određuje prostornu i vremensku složenost prihvaćanja niza.
Prostornu složenost Turingovog stroja izraziti brojem korištenih ćelija trake, a vremensku brojem pomaka glave za čitanje i pisanje (Turingov stroj obavlja prijelaze sve dok ima definiranu funkciju prijelaza za zadanu konfiguraciju).
Aplikacija na početku izvođenja učitava sljedeće podatke:
1) funkciju prijelaza Turingovog stoja iz ulazne datoteke
Funkcija prijelaza Turingovog stroja zadaje se ulaznom datotekom. U prvom retku datoteke zapisana je oznaka početnog stanja. Prijelazi se zapisuju prema sljedećem formatu:
stanje#znak_na_traci#novo_stanje#novi_znak_na_traci#smjer_pomaka_glave
Oznake stanja mogu biti proizvoljni nizovi znakova. Za znakove trake koriste se pojedinačni znakovi. Prazna ćelija označava se oznakom B. Smjerovi pomaka glave su D za pomak u desno, odnosno L za pomak u lijevo. Primjer datoteke s funkcijom prijelaza (primjer 4.1 u udžbeniku):
0
0#0#1#X#D
1#0#1#0#D
2#0#2#0#L
1#1#2#Y#L
2#X#0#X#D
0#Y#3#Y#D
1#Y#1#Y#D
2#Y#2#Y#L
3#Y#3#Y#D
3#B#4#B#D
2) niz zapisan na traci od korisnika
3) početni položaj glave za čitanje i pisanje od korisnika
Položaj glave zadaje se brojčanom oznakom koja određuje poziciju ćelije na kojoj se nalazi glava u odnosu na ćeliju u kojoj je zapisan krajnje lijevi znak ulaznog niza. Primjeri zadavanja položaja glave:
0 - ćelija u kojoj je zapisan krajnje lijevi znak ulaznog niza
1 - ćelija u kojoj je zapisan drugi znak ulaznog niza
N - ćelija koja se nalazi N mjesta desno od ćelije u kojoj je zapisan krajnje lijevi znak ulaznog niza
-1 - ćelija neposredno lijevo od ćelije u kojoj je zapisan krajnje lijevi znak ulaznog niza
-N - ćelija koja se nalazi N mjesta lijevo od ćelije u kojoj je zapisan krajnje lijevi znak ulaznog niza
Opće napomene o izvođenju laboratorijskih vježbi
u okviru predmeta postoje tri laboratorijske vježbe
laboratorijske vježbe se obavljaju samostalno
svi
programi trebaju učitavati podatke iz ulaznih datoteka čija imena
su zadana pri pozivu programa ili su unaprijed određena
kôd se pregledava i ne smije biti komentiran
programi mogu biti pisani u bilo kojem programskom jeziku, ali s obzirom da se predaju u fakultetskim laboratorijima trebaju raditi na jednoj od platformi koje su tamo dostupne
studentima je omogućena predaja laboratorijskih vježbi na vlastitim prijenosnim računalima
Izrada
vježbi:
vrijeme predviđeno za predaju zadataka ne predviđa i vrijeme potrebno za njihovu izradu. To znači sljedeće:
izradu zadatka potrebno je obaviti kod kuće
u terminima predaje, studenti dežurnom asistentu pokazuju i objašnjavaju svoje rješenje te demonstriraju rad programa
svaka vježba, odnosno zadatak, predaje se zasebno
na predaji se provjerava poznavanje predanog programa i dijela teorije vezanog uz zadatak
laboratorijske
vježbe nije moguće predati nakon zadanih termina
Predaja vježbi:
vježbe se predaju u tjednima za predaju laboratorijskih vježbi nakon svakog ciklusa predavanja
termini predaje laboratorijskih vježbi određeni su kalendarom nastave i odlukama prodekana za nastavu
tijekom predaje 1. laboratorijske vježbe, dodatno će se obavljati
podjela zadataka za izradu 1. domaće zadaće (SoftLab zadatak)
tijekom predaje 2. laboratorijske vježbe, dodatno će se obavljati
predaja 1. domaće zadaće (SoftLab zadatak)
podjela zadataka za izradu 2. domaće zadaće (samostalni studentski projekt)
© FER - ZEMRIS, 2008.
Datum zadnje izmjene:
01-06-2009