Laboratorijske vježbe

1. Zadatak

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:

Napisati program za generiranje konačnog automata za upravljanje radom semafora prema zadanom režimu. Vrijednosti TAZmin, TAZmax, TPZmin, TPZmax, NP, NA, TACŽ, T 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:

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:

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:

 

Generirani konačni automat OBVEZNO zapisati u izlaznu datoteku. Format zapisa definicije automata je proizvoljan.

 

Programski ostvariti simulator konačnog automata koji:

Shema povezivanja generatora i simulatora prikazana je slikom 2.

Slika 2. Shema povezivanja generatora i simulatora konačnog automata

2. Zadatak

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.

3. Zadatak

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

Izrada vježbi:

Predaja vježbi:

 

© FER - ZEMRIS, 2008.
Datum zadnje izmjene: 01-06-2009