Reti di petri

Transcript

Reti di petri
RETI
DI
PETRI
Nell’Unità Didattica PROBLEM SOLVING abbiamo imparato un metodo per risolvere
molti problemi : aritmetici , logici , da risolvere al computer o semplicemente di vita quotidiana.
Erano prima semplici poi sempre più complessi e gli schemi a blocchi, uniti al metodo della
programmazione strutturata , ci hanno aiutato ad applicarlo .
Avevano però tutti una caratteristica : erano problemi sequenziali ,ovvero si potevano
tutti risolvere con una serie di operazioni che venivano eseguite una di seguito all’altra .Questo
valeva anche per le più complesse che prima si scomponevano in azioni sempre più semplici e
poi eseguite . Una volta trasformati in Schemi a Blocchi venivano tradotti in Programmi in
linguaggio Basic ed eseguiti, un’istruzione dopo l’altra in ordine sequenziale (non fatevi trarre in
inganno dalla CALL-SUB, perché anch’essa è sequenziale, solamente si sposta un momento ad
eseguire una serie di operazione poi torna diligentemente al suo posto ad eseguire la
successiva).
In realtà spesso questo è un modo di procedere semplificato che però riesce brillantemente a
risolvere un’infinità di problemi ,inoltre è l’unico usabile quando si hanno a disposizione
strumenti sequenziali come il linguaggio di programmazione BASIC .
Riprendiamo ad esempio la ricetta del “risotto allo zafferano” che abbiamo imparato a
… cucinare in Problem Solving. Se ricordate l’abbiamo scomposta in questa serie di azioni:1)
Soffriggere la cipolla nell’olio,2) aggiungere il riso,3) insaporire,4)aggiungere lo zafferano,
5)aggiungere a mano a mano il brodo caldo sempre mescolando,6) quando è cotto aggiungere il
parmigiano,7) spegnere, 8)servire.
Questa ricetta è giusta ,preparerete un buon risotto, ma analizzandola meglio possiamo
osservare che è imprecisa in un punto: anche il brodo deve essere preparato, ha un suo
metodo e un suo tempo di cottura e soprattutto deve essere caldo quando va aggiunto al riso,
quindi ha bisogno di operazioni che vanno eseguite in momenti sia precedenti che
contemporanei a quelli della cottura del risotto.
Il formalismo degli schemi a blocchi non ci aiuta quando dobbiamo indicare azioni
concorrenti cioè che devono essere contemporanee o che una deve essere eseguita prima di
un’altra ma non mi interessa specificare quanto prima purchè sia pronta quando serve .
Abbiamo quindi bisogno di un nuovo metodo grafico che ci aiuti in queste situazioni.
Useremo le RETI di PETRI e con esse descriveremo anche ambienti complessi , ad esempio il
funzionamento di una trattoria e dei vari personaggi che in essa si muovono.
Reti di Petri 1
Le RETI di PETRI sono grafi composti da due elementi : le condizioni e gli eventi. Questi si
indicano con cerchietti e con barrette collegati da frecce orientate che indicano il verso di
percorrenza. Una freccia collegherà sempre un cerchietto a una barretta o viceversa ma mai
due barrette o due cerchietti.
Condizione
Una RdP avrà questo aspetto:
Evento
La possiamo leggere così : devono esistere tutte le condizioni indicate nei cerchietti in alto, cioè
in ingresso, perché avvenga l’evento indicato nella barretta e quindi il sistema renda vere le
condizioni indicate sotto cioè in uscita.
Vediamo una semplice RdP: ho ottomila lire in tasca e decido di andare a prendere un
hamburger da McD’s.
Ecco cosa sono riuscito a indicare con questa semplice rete:
sono un cliente affamato
con £8000 in tasca
davanti ad una cassa di McD’s
ordino un hamburger e una bibita
mi trovo con un hamburger
e una bibita in mano
da McD’s
ma senza più un soldo in tasca.
Reti di Petri 2
Vediamo ora la nostra ricetta del risotto allo zafferano .
Siamo riusciti ad indicare tutte le azioni che
si svolgono sequenzialmente, quelle
concorrenti ( brodo ) e tutte le condizioni
necessarie perché gli eventi (cotture,
soffritti, tenere in caldo) avvengano.
Vediamo un altro esempio: andiamo in biblioteca,
consultiamo gli scaffali e troviamo il libro che vogliamo,
lo mostriamo all’addetto che prende nota e aggiorna
l’elenco dei libri presenti, usciamo con il libro.
Reti di Petri 3
Usiamo le RdP per qualcosa di più interessante e più complesso.
Disegnamo la favola di
Cappuccetto Rosso che tutti
conosciamo.
Si vede chiaramente l’intreccio
della favola , si può seguire
l’azione del protagonista e si
possono scoprire tutte le
azioni contemporanee degli
altri personaggi, ad esempio
mentre Cappuccetto Rosso
raccoglie i fiori, il lupo corre
dalla nonna che è, nello stesso
momento, a letto.
Reti di Petri 4
Proviamo con un’altra favola altrettanto famosa: I tre porcellini.
Se non la ricordate ecco la trama molto brevemente.
I tre porcellini sono ormai cresciuti e vengono invitati dalla mamma ad andarsene ciascuno
per la propria strada. Il primo si costruisce una casetta di paglia, il secondo di legno e il terzo
di mattoni. Arriva il lupo che distrugge la casetta di paglia ma il porcellino riesce a rifugiarsi
dal secondo fratello. Il lupo lo insegue ma soffia via anche la casetta di legno. I due porcellini
corrono dal terzo fratellino e si riparano nella casetta di mattoni che non verrà distrutta dal
lupo.
Alla fine rimarranno i tre
porcellini sani e salvi, il lupo
sconfitto e la casetta di
mattoni in piedi.
A voi la morale ma a noi la
corrispondente RdP.
Costruzione
delle case
Allo stesso modo si possono narrare racconti più complicati , prova ad esempio con la trama di
un libro o con quella dell’ultimo film visto , o meglio ancora con l’intreccio di un giallo .
Reti di Petri 5
Finora abbiamo visto e descritto situazioni in cui un processo parte da un inizio e , con il
concorso di vari elementi , evolve verso una fine.
Ci sono situazioni che ,volendo descriverle con maggior dettaglio, non hanno in realtà una fine
ma sono cicliche e ripartono sempre dall’inizio.
Immaginatevi di andare in videoteca e di noleggiare una videocassetta.. Cercate tra gli scaffali, la
trovate , la prendete, la portate alla cassa ,pagate il noleggio e uscite. Nel frattempo il cassiere ,
che era libero, vi serve lasciandovi lo scontrino e ,alla vostra uscita, si rimette in attesa del
prossimo cliente ritrovandosi ancora libero.
Voi entrate in videoteca , fate quello che dovete fare ed uscite. Il cassiere è in videoteca, serve
i clienti che man mano gli si presentano e rimane in videoteca . (Ad un certo momento anche
lui andrà a casa ma in questo momento non ci preoccupiamo di questo aspetto).
Ora che siamo diventati esperti nel descrivere situazioni complesse, facciamo un ulteriore
passo: descriviamo processi concorrenti.
In questi processi le singole parti evolvono contemporaneamente ma ciascuna in modo
scorrelato, hanno dei legami tra loro, ad esempio un evento deve avvenire prima di un altro,
ma non ci interessa sapere se tutte le condizioni di uno si sono verificate prima di un altro o
meno. Ogni processo evolve autonomamente e, ogni tanto, ne incrocia un altro che,
anch’esso, sta svolgendo la sua storia in modo indipendente.
Reti di Petri 6
Abbiamo fame, siamo nelle vicinanze di un Mc Donald’s, decidiamo di entrare, ma prima di
ordinare ci fermiamo ad osservare il comportamento dei singoli cassieri e di ciascun cliente.
Ecco cosa possiamo notare:
CASSIERE
C LIEN TE
cassiere in attesa
cliente
arrivato
O RDINAZIO NE
FA CO NTO
O R DIN AZIO N E
VASSO IO
PRO NTO
cameriere
occupato
ATTESA cliente
SCO NTRIN O
RICEVU TA
VASSO IO
PREPAR A VASSO IO
cliente
servito
vassoio
pronto
RICERCA
PO STO
CO NSEG NA
posto trovato
vassoio al
cliente
CO N SUMAZIO N E PASTO
cliente saz io
Reti di Petri 7
L’addetto , dopo aver servito un cliente si rimette in attesa del successivo ,mentre il cliente
arriva, ordina e se ne va . Solo quando arriva l’ordine del cliente l’addetto prepara il vassoio ed
emette lo scontrino e, di conseguenza il cliente ,solo quando ha ricevuto il vassoio, può cercare
un posto e andare a mangiare. Ecco il processo completo che ne risulta.
cassiere in attesa
O R DINAZIO NE
cliente
arrivato
FA CO NTO
O RD INE
cameriere
occupato
ATTESA cliente
SCO NTRIN O
RICEVUTA
VASSO IO
PREPARA VASSO IO
cliente
servito
vassoio
pronto
R ICER CA
PO STO
C O NSEG N A
posto trovato
vassoio al
cliente
CO N SUMAZIO NE PASTO
cliente sazio
Reti di Petri 8
Non a tutti piace un hamburger e quindi decidiamo di andare in trattoria. Vediamo cosa
succede lì.
Seguiamo il lavoro del cameriere, del cliente e del cuoco .
CUO CO
cuoco libero
CAMERIERE
ORD INE
RIC HIESTA
cameriere
libero
PREPARAZIO NE
ORD INAZIO NE
O RDINE
piatto
morto
cucina libera
VASSOIO
cameriere in
attesa
SERVE AL TAVOLO
CUO CE
pranzo servito
cibo cotto
CLIENTE
PREPARAZIO NE
VASSO IO
clienti
OR DINAZIONE
VASSOIO
sul banco
clienti in attesa
ORD INE
piatto servito
CO NSUMAZIO NE
cliente sazio
Reti di Petri 9
Ma i nostri tre personaggi si muovono contemporaneamente e le loro attività si incrociano e
dipendono una dall’altra .Vediamo il loro lavoro nell’insieme
cuoco libero
O RD IN E
R ICH IESTA
cameriere
libero
PREPARAZIO N E
O RD IN AZIO NE
piatto
morto
cucina libera
cameriere in
attesa
CU O CE
SERVE AL TAVO LO
cibo cotto
pranzo servito
PREPARAZIO N E
VASSO IO
clienti
OR D IN AZIO NE
VASSO IO
sul banco
clienti in attesa
C O NSUMAZIO N E
cliente sazio
Reti di Petri 10
Torniamo nella nostra realtà quasi quotidiana e andiamo in mensa a vedere come fare a
scoprire, momento per momento in che stato si trova un processo e come può evolvere in
base alla sua situazione in quell’istante.
All’ingresso in mensa un addetto ritira i tagliandi di pranzo pagato, gli alunni si mettono in coda
e vengono serviti , ad uno ad uno, da una scodellatrice. Solo dopo essere stato servito il singolo
alunno può mangiare.
Fotografiamo la mensa in vari istanti e segnamo con un pallino nero le condizioni che in
momento sono vere .Devono essere vere tutte le condizioni in entrata ad un evevto perché
questo evolva e mi permetta di rendere vere le condizioni in uscita.
Vediamo l’addetto all’ingresso, tanti alunni fuori dalla mensa e una scodellatrice in attesa.
M en sa
A d d e tto ai tag lian d i
A lu n n o
A cce tt a zio n e
S co de lla trice
A lu n n o in co da
Ls scodellatrice non può far nulla finchè un
alunno non consegna il suo tagliando e si
mette in coda.
V e rs a n e l pia t to
A lu n n o s e rv ito
M en sa
A d d e tto ai tag lian d i
C o n s u m a zio n e
A lu n n o
A lu n n o s a zio
A cce tt a zio n e
S co de lla trice
A lu n n o in co da
V e rs a n e l pia t to
A lu n n o s e rv ito
C o n s u m a zio n e
A lu n n o s a zio
Reti di Petri 11
A questo punto l’alunno può
mangiare il suo meritato ( sic !!! )
pranzo
M en sa
A d d e tto ai tag lian d i
A lu n n o
A cce tt a zio n e
S co de lla t rice
A lu n n o in coda
V e rs a n e l pia tt o
A lu n n o s e rv it o
C o n s u m a zio n e
A lu n n o s a zio
A voi adesso il divertimento di riprendere i grafi dei paragrafi precedenti e, seguendo
l’evoluzione dei vari processi mettere, passo dopo passo, i pallini ai punti giusti.
cuoco libero
O R DINE
cuoco libero
O R DINE
RICH IE STA
RICH IE STA
camer iere
libero
P R EP AR AZIO N E
camer iere
libero
P R EP AR AZIO N E
O RD IN AZIO N E
O RD IN AZIO N E
piatto
morto
cucina libera
cameriere in
attesa
CUOCE
piatto
morto
cucina libera
cameriere in
attesa
S E RV E AL TAV O LO
CUOCE
S E RV E AL TAV O LO
cibo cotto
pr anz o servito
cibo cotto
pr anz o servito
clienti
P R EP AR AZIO N E
V ASS O IO
P R EP AR AZIO N E
V ASS O IO
clienti
O R DIN AZIO N E
O R DIN AZIO N E
V AS SO IO
sul banco
clienti in attesa
V AS SO IO
sul banco
clienti in attesa
CO N SU MAZIO NE
Condizioni all’evento
ORDINAZIONE
CO N SU MAZIO NE
Condizioni all’evento
PREPARAZIONE
cliente saz io
cliente saz io
Reti di Petri 12
cuoco libero
O R DINE
cuoco libero
O RD IN E
RICH IE STA
R IC HIES TA
camer iere
libero
P R EP AR AZIO N E
cameriere
libero
P R EP AR AZIO N E
O RD IN AZIO N E
O R DINAZIO N E
piatto
morto
cucina libera
cameriere in
attesa
CUOCE
piatto
morto
cucina libera
camer ier e in
attesa
S E RV E AL TAV O LO
C UO C E
SE R VE AL TAV O LO
cibo cotto
pr anz o servito
cibo cotto
pranz o ser vito
clienti
P R EP AR AZIO N E
V ASS O IO
clienti
P R EP AR AZIO N E
V ASS O IO
O R DIN AZIO N E
O R DINAZIO N E
V AS SO IO
sul banco
V AS SO IO
sul banco
clienti in attesa
clienti in attesa
CO N SU MAZIO NE
Condizioni all’evento
PREPARAZIONE
VASSOIO
Condizioni all’evento
CUOCE
C O NS UMAZIO N E
cliente saz io
cliente saz io
cuoco libero
O RD IN E
cuoco libero
O R DINE
R IC HIES TA
RICH IE STA
cameriere
libero
P R EP AR AZIO N E
camer iere
libero
P R EP AR AZIO N E
O R DINAZIO N E
O RD IN AZIO N E
piatto
morto
cucina libera
camer ier e in
attesa
C UO C E
piatto
morto
SE R VE AL TAV O LO
cucina libera
cameriere in
attesa
CUOCE
S E RV E AL TAV O LO
cibo cotto
pranz o ser vito
cibo cotto
pr anz o servito
clienti
P R EP AR AZIO N E
V ASS O IO
clienti
P R EP AR AZIO N E
V ASS O IO
O R DINAZIO N E
O R DIN AZIO N E
V AS SO IO
sul banco
clienti in attesa
V AS SO IO
sul banco
clienti in attesa
C O NS UMAZIO N E
CO N SU MAZIO NE
Condizioni all’evento
SERVE AL TAVOLO
cliente saz io
Condizioni all’evento
CONSUMAZIONE
cliente saz io
Reti di Petri 13
7)
Ci siamo fermati tutti in mensa perché
un professore ci aveva dato il compito
di svolgere un lavoro di gruppo.
Dobbiamo preparare un cartellone su
cui incollare una relazione e delle foto,
il tutto presentato con un bel titolo e
delle frecce di collegamento.
la vo ro d i g rup p o
A
B
C
ric e rc a
te s to
ric e rc a fo to
s c rive re
tito lo
fo to
c a rte llo ne
c o n tito lo
te s to
Ci dividiamo in tre gruppi: A prepara la
relazione, B le foto e C il cartellone
vero e proprio.
A s s e m bla g g io
c a rte llo ne
finito
In questo modo ci siamo divisi in tre gruppi ma
non sappiamo ancora bene cosa deve fare
ciascuno.
Entriamo nell’evento “Ricerca foto “ ed
espandiamolo proprio come abbiamo sempre
fatto in Program Solving con l’approccio “top
down” o per “raffinamenti successivi”.
Chiaramente dobbiamo usare un formalismo
diverso da quello precedente ma restiamo
sempre nelle RdP.
Per assolvere al compito “Ricerca foto”
dobbiamo sfogliare delle riviste, trovare le foto
appropriate, scannerizzarle ,poiché la rivista
non è ritagliabile e poi stamparle a colori.
Disegno la RdP corrispondente incorniciando
tutto in un grande rettangolo che chiameremo
“ Ricerca foto “. In ingresso avremo il gruppo
A e in uscita la foto pronta, proprio come
all’entrata e all’uscita dell’evento “Ricerca foto”
nel grafo precedente più grossolano.
R icer ca fo to
A
R ivis ta
s fogliare
foto
trova ta
s can n e r
f oto n e l Pc
s tam pa
foto
Reti di Petri 14
S C A NNER
La foto così come ci appare
sul video dopo averla
scannerizzata però non ci
piace molto, possiamo
modificarla espandendo la
condizione “foto nel Pc” che
si troverà in un grande
cerchio con l’evento
“scanner” in ingresso e
“stampa” in uscita
e s p a n s ion e foto n e l P c
fo to acqu is ita
Modifica
foto ritocca ta
S tam pa
B
r ice r ca te s to
En ciclo pe dia
S foglio
Allo stesso modo decidiamo
cosa deve fare il gruppo B.
Prende un’enciclopedia, la
sfoglia, trova il testo che
interessa, lo riassume , lo
inserisce nel computer e lo
stampa.
te s to
trovato
R ias s u n to
te s to
s u Pc
T es to s u P C
te s to s u d is c o
Siamo molto precisi nei nostri lavori
e quindi indichiamo anche come
vogliamo produrre il nostro testo:
chiaramente useremo Word e per
sicurezza memorizzeremo il testo
anche su dischetto.
s ta m pa
testo A4
Nel frattempo il gruppo C ha comperato il foglio di grande formato e ha scritto il titolo.
Potete tenere le espansioni successive oppure potete ricomporre tutto in un unico grande
grafo.
Le operazioni di espansione che abbiamo compiuto sugli eventi e sulle condizioni si chiama
MORFISMO.
Reti di Petri 15
8)
Il nostro laboratorio è un po’ povero e possiede due PC ma una sola stampante. I due gruppi A
e B hanno però bisogno entrambi di questa stessa risorsa . Infatti questa è una risorsa condivisa
dal processo “Lavoro di gruppo”.
1° P C
2° P C
F o to s u P C
T e s to s u P C
P ro va s u s c he rm o
S tam p ante
F ile O K
P ro va s u s c he rm o
S tam p ante
F ile O K
M io T urno
M io T urno
S tam p a d e f initiva
S ta m p a d e f initiva
F o to s ta m p ata
T e s to s tam p ato
E’ quindi necessario che i due gruppi si mettano d’accordo e decidano in che ordine usare la
stampante, ovvero stabiliscano le condizioni in base alle quali ,amichevolmente , si dividano i
tempi d’uso della risorsa comune ed evitino quindi di …… arrivare alle mani e usare la
rissa come metodo di risoluzione dei conflitti !!! . Detto per inciso, sprecherebbero tempo
prezioso della risorsa unica e condivisa , la stampante, che resterebbe ferma per tutto il tempo
della rissa e della proclamazione del vincitore.
1° PC
2° PC
F o to s u P C
P ro va s u s c he rm o
T e s to s u P C
P ro va s u s c he rm o
S tam p ante
F ile O K
F ile O K
M io T urno
M io T urno
S tam p a d e finitiva
F o to s tam p ata
T e s to s tam p ato
Reti di Petri 16
Provate voi a risolvere il conflitto, inserendo i pallini neri prima della fase di stampa e
obbligando i due gruppi a fare dei turni....
PRIMO TURNO
1° PC
2° PC
F o to s u P C
P ro va s u s c he rm o
T e s to s u P C
P ro va s u s c he rm o
S tam p ante
F ile O K
F ile O K
M io T urno
M io T urno
S tam p a d e finitiva
F o to s tam p ata
T e s to s tam p ato
SECONDO TURNO
1° PC
2° PC
F o to s u P C
P ro va s u s c he rm o
T e s to s u P C
P ro va s u s c he rm o
S tam p ante
F ile O K
F ile O K
M io T urno
M io T urno
S tam p a d e finitiva
F o to s tam p ata
T e s to s tam p ato
Credits
Un grazie “grosso così” all’Ing Mandelli che ha scritto il testo dell’unità e agli alunni Arabsolgar,
Cucci, Incognito, Petrelli e Viappiani (rigorosamente in ordine alfabetico), che hanno disegnato i
diagrammi.
Il corso di informatica
Reti di Petri 17