Apri il menu principale
Esempio di una rete di Petri

Una rete di Petri (conosciuta anche come rete posto/transizione o rete P/T) è una delle varie rappresentazioni matematiche di un sistema distribuito discreto. Come un linguaggio di modellazione, esso descrive la struttura di un sistema distribuito come un grafo bipartito con delle annotazioni. Furono inventate nel 1962 durante la tesi di dottorato dell'autore Carl Adam Petri.

Indice

DescrizioneModifica

Concetti baseModifica

Una rete di Petri PT (Place/Transition) è un grafo orientato con due tipi di nodi, posti e transizioni, connessi da archi diretti. I posti sono rappresentati graficamente da cerchi e le transizioni da rettangoli.

Un arco può unire solamente nodi di tipo diverso, quindi possono esserci archi tra posti e transizioni - ma non tra posti e posti o transizioni e transizioni. Un posto da cui un arco parte per finire in una transizione è detto posto di input della transizione; un posto in cui un arco arriva partendo da una transizione è detto posto di output della transizione.

I posti possono contenere un certo numero di token o marche. Una distribuzione di token sull'insieme dei posti della rete è detta marcatura. Le transizioni agiscono sui token in ingresso secondo una regola, detta regola di scatto (in inglese firing). Una transizione è abilitata se può scattare, cioè se ci sono token in ogni posto di input. Quando una transizione scatta, essa consuma token dai suoi posti di input, esegue dei task e posiziona un numero specificato di token in ognuno dei suoi posti di uscita. Ciò avviene automaticamente, ad esempio in un singolo step non-prelazionabile. L'esecuzione delle reti di Petri è non deterministica. Ciò significa due cose:

  1. se più transizioni sono abilitate nello stesso momento, una qualsiasi di esse può scattare
  2. non è garantito che una transizione abilitata scatti; una transizione abilitata può scattare immediatamente, dopo un tempo di attesa qualsiasi (a patto che resti abilitata), o non scattare affatto.

Poiché lo scatto di una transizione non è predicibile a priori, le reti di Petri sono molto adatte a modellare il comportamento di un sistema concorrente.

Definizione formaleModifica

Una rete di Petri è un'estensione della classe delle rete elementari:

Definizione 1: Una rete è una tripla   dove:

  1.   è un insieme di stati chiamati posti.
  2.   è un insieme di transizioni.
  3.   è un insieme di flussi relazionali chiamati “archi”. Tali flussi sono possibili solamente tra posti e transizioni o viceversa.

Una rete è un grafo bipartito, dove   è una partizione e   è l'altra. Più precisamente, per ogni   in   esistono   e   in   tali che   e   appartengono ad   e per ogni   e   in   se   e   sono in   allora  . In formula:

 

L'insieme   contiene gli elementi della rete. L'insieme dei posti definisce gli stati locali della rete, tuttavia, lo stato globale di una rete può essere definito da sottoinsiemi di posti.

Definizione 2: Data una rete   , una configurazione è un insieme  .

Definizione 3: Una rete elementare è una rete della forma   dove:

  1.   è una rete.
  2.   è una configurazione.

Definizione 4: Una rete di Petri è una rete della Teoria delle reti di Petri. Le proprietà teoriche delle reti di Petri sono state studiate ampiamente. Un motivo principale per usare le reti di Petri nel modellare i sistemi concorrenti è dato dalla possibilità di delineare formalmente e decidere delle proprietà desiderabili del sistema, come la liveness (ad esempio, in un sistema che non deve mai bloccarsi) o la boundedness (ad esempio, le risorse di un sistema come la CPU sono limitate). Naturalmente, la stessa proprietà in un contesto diverso può assumere un significato completamente diverso.

Una marcatura in una rete di Petri è raggiungibile se, partendo dalla marcatura iniziale, esiste una sequenza di scatto che la produce. Una rete di Petri è bounded se c'è un limite massimo al numero di token nelle sue marcature raggiungibili.

Tipi principaliModifica

 
I principali tipi di reti di Petri.

Ci sono sei tipi principali delle reti di Petri:

  1. Macchina a stati finiti (State Machine - SM) - in cui ogni transizione ha un solo arco entrante e un solo arco uscente. Ciò implica che non può esserci concorrenza ma può esserci conflitto (ovvero quando si pone la domanda: dove deve andare il token di un posto? In una o nell'altra transizione?). Matematicamente:  
  2. Grafo Marcato (Marked Graph - MG) - in cui ogni posto ha un solo arco entrante e un solo arco uscente. In questo caso non ci sono conflitti ma ci sono concorrenze. Matematicamente:  
  3. Scelta libera (Free choice - FC) - in cui l'arco è o l'unico arco che esce da un posto oppure l'unico arco che entra in una transizione. In altre parole, ci può essere sia concorrenza sia conflitto, ma non nello stesso istante. Matematicamente:  
  4. Scelta libera estesa (Extended free choice - EFC) - una rete di Petri che può essere trasformata in una FC.
  5. Scelta asimmetrica (Asymmetric choice - AC) - concorrenza e conflitto (insomma, confusion), ma non asimmetricamente. Matematicamente:  

EstensioniModifica

Esistono molte estensioni delle reti di Petri. Alcune di esse sono completamente retro-compatibili (ad esempio le reti di Petri colorate) con la rete di Petri originaria, altre aggiungono proprietà che non possono essere modellate nella rete di Petri d'origine (ad esempio le reti di Petri tempificate). Se esse possono essere modellate nella rete di Petri originale, esse non sono reali estensioni ma sono modi conveniente di far vedere la stessa cosa, e possono essere trasformate con opportune formule matematiche nell'originale rete, senza perdere di significato. Le estensioni che non possono essere trasformate sono a volte rappresentazioni molto potenti, ma tipicamente perdono una quantità di tools matematici disponibili per analizzare le normali reti di Petri.

Il termine rete di Petri ad alto livello è usato per molti formalismi delle reti di Petri che estendono il formalismo base P/T. Questo include anche le reti di Petri colorate, gerarchiche e tutte le altre estensioni citate in questa sezione.

Una breve lista delle possibili estensioni:

  • In una rete di Petri standard, i token sono indistinguibili. In una rete di Petri colorata, ogni token ha un valore. Nei tool popolari per le reti di Petri colorate, come CPN Tool, il valore del token è tipizzato e può essere testato e manipolato con un linguaggio di programmazione funzionale. Un sussidiario delle reti di Petri colorate sono le reti di Petri well-formed, dove le espressioni degli archi e di controllo sono vincolate a rendere più semplice l'analisi della rete.
  • Un'altra estensione popolare della rete di Petri è la gerarchia: la gerarchia nella forma di diverse viste che supportano vari livelli di rifinimento e astrazione furono studiate da Fehling. Un'altra forma di gerarchia si trova nelle cosiddette reti di Petri ad oggetti o nei sistemi ad oggetti, dove una rete di Petri può contenere diverse reti come suoi token, stabilendo una gerarchia di reti di Petri innestate che comunicano sincronizzando le transizioni su diversi livelli. Vedi [1] per un'introduzione informale delle reti di Petri ad oggetti.
  • Un Vector Addition System with States (VASS) può essere vista come generalizzazione di una rete di Petri (ma con qualcosa in meno). Si consideri un automa a stati finiti dove ogni transizione è tradotta in una transizione della rete di Petri. La rete di Petri segue dunque l'evoluzione dell'automa, ovvero una transizione nell'automa è eseguita allo stesso tempo nella corrispondente transizione nella rete di Petri. È possibile eseguire una transizione nell'automa solo se la corrispondente transizione nella rete è abilitata; è possibile che la transizione nella rete di Petri scatti solo se c'è una transizione dal corrente stato dell'automa etichettata da essa. Quello che gli automi a stati finiti non possono rappresentare sono le situazioni di sincronizzazioni che invece sono presenti nella rete di Petri: ad esempio, quando due posti sono in attesa su una transizione e la transizione non può scattare fin quando i due posti non rispondono entrambi ai vincoli della transizione.
  • Le reti di Petri con priorità aggiungono meccanismi di priorità alle transizioni, in base a cui una transizione non può scattare se una transizione di priorità più alta è abilitata. Le transizioni sono divise in gruppi di priorità, ad esempio il gruppo di priorità 3 può solo scattare se tutte le transizioni nel gruppo 1 e nel gruppo 2 sono disabilitate. Con un gruppo di priorità, lo scatto è ancora non deterministico.
  • La proprietà non-deterministica è di grande rilievo, poiché consente all'utente di astrarre un gran numero di proprietà (dipende dall'uso che bisogna fare della rete). In alcuni casi inoltre è necessario aggiungere al modello una tempificazione.

Nascono così le reti di Petri temporizzate, nelle quali ci sono delle transizioni che sono temporizzate e altre che non lo sono (tipicamente le transizioni senza tempificazione hanno una priorità più alta di quelle temporizzate). Si vedano anche le reti di Petri stocastiche che aggiungono un tempo non-deterministico per rendere un concetto di casualità delle transizioni. La distribuzione casuale esponenziale è tipicamente utilizzare per 'tempificare' tali reti. In questo caso, il grafo di raggiungibilità della rete diventa una catena di markov.

Ci sono molte altre estensioni alla rete di Petri, ma è importante ricordare che quanto più aumenta la complessità della rete in termini di proprietà estese, tanto più difficile è usare i tools standard per valutare certe proprietà della rete. Per questa ragione, è una buona idea usare il tipo di rete più semplice possibile per un dato processo di modellizzazione.

Modelli successivi di concorrenzaModifica

Successivamente all'invenzione delle reti di Petri, altri modelli di concorrenza, che sono basati sullo scambio di messaggi e sul comportamento composizionale, sono stati introdotti. Robin Milner e Carl Hewitt hanno infatti sostenuto che la mancanza della possibilità di composizione delle reti è una seria limitazione di Petri poiché è limitata la modularità.

In aggiunta, Hewitt ha sostenuto che le reti di Petri mancano di località poiché i token di input di una transizione scompaiono simultaneamente, cosa che limita il realismo del modello. Hewitt conosceva l'immediata contro-risposta alla sua osservazione, cioè che l'uso proprio delle reti di Petri è obbedire al vincolo del singolo evento, ogni transizione dovrebbe modellare un singolo evento. Ma senza tenere conto del tempo necessario perché l'evento accada o del tempo necessario affinché l'operazione associata alla transazione sia compiuta. forma   , che estende la rete elementare in modo che:

  1.   è una rete.
  2.   è un multiinsieme.
  3.   è un multiinsieme di archi.

SemanticaModifica

Un grafo di rete di Petri è una tripla   , dove:

  •   è un insieme finito di posti
  •   è un insieme finito di transizioni
  •  
  •   è un multiinsieme di archi.

La relazione di flusso è un insieme di archi   . In molti testi, gli archi possono avere molteplicità 1. Useremo la convenzione di usare   al posto di   ottenendo così che un grafo di rete di Petri è un multigrafo bipartito  .

Il pre-insieme di una transizione  , è l'insieme dei suoi posti di input:   ; il post-insieme è un insieme dei posti di output:  . Le due definizione sono analoghe.

Una marcatura di una rete di Petri è un multiinsieme dei suoi posti, cioè una mappatura   . Diremo quindi che la marcatura assegna un numero di token.

Una rete di Petri è una quartupla  , dove:

  •   è un grafo di rete di Petri;
  •   è la marcatura iniziale.

Semantica di EsecuzioneModifica

Il comportamento di una rete di Petri viene definito attraverso relazioni fra le marcature, da notare che la marcatura può essere aggiunta come un qualsiasi multiinsieme:  

L'esecuzione di un grafo di rete di Petri   può essere definito attraverso la relazione di transizione   sulle marcature, nel modo seguente:

  • per ogni t in  
  •  

In parole:

  • Far scattare una transizione   in una marcatura   consuma   token da ognuno dei posti in input   di  , e produce   token per ognuno dei posti output   di  .
  • Una transizione è abilitata (potrebbe scattare) se ci sono abbastanza token nei suoi posti input per rendere possibile il consumo di essi, vale a dire se e solo se   .

Siamo generalmente interessati a cosa potrebbe accadere nel caso in cui le transizioni scattassero in ordine arbitrario. Diciamo che una marcatura   è raggiungibile da una marcatura   in un solo passo se  , diciamo inoltre che è raggiungibile da   se   , dove   è la chiusura riflessiva e transitiva di   se è raggiungibile in 0 o più passi.

Per una rete di Petri (marcata)   , siamo interessati agli scatti che possono essere compiuti partendo dalla marcatura iniziale   . Definiamo l'insieme di marcature raggiungibili come:  

Il grafo di raggiungibilità di N è la relazione di transizione   ristretta alle marcature raggiungibili   .

Una sequenza di scatti per una rete di Petri, un grafo G e una marcatura iniziale   è una sequenza di transizioni   tale che   . L'insieme delle sequenze di scatti denotato da   .

Reti di Petri come vettori e matriciModifica

La marcatura per le reti di Petri   può essere apprezzato meglio sotto forma di vettore di interi non negativi di lunghezza   .

La relazione di transizione può essere descritta da una coppia di matrici di dimensioni   :

  •   definito da  
  •   definito da  

Allora la loro differenza:

 

può essere usato per descrivere la marcatura raggiungibile in termini di prodotto tra matrici nel modo seguente:

Per ogni sequenza di transizioni   , scriviamo   per il vettore che mappa ogni transizione al suo numero di occorrenza in w. Allora, abbiamo:

 

Da notare che è richiesto che   sia una frequenza di scatto, permettere sequenze di transizioni senza vincoli generalmente produce un insieme molto grande.

 
(b) Esempio di una rete di Petri

       

RaggiungibilitàModifica

 
Grafo di raggiungibilità della rete dell'esempio (a). Si nota che la rete è 2-bounded e quindi può avere solo un massimo di 9 ( ) stati.

Tutti gli stati che possono essere raggiunti da una rete   con marcatura iniziale   sono indicati con  . Il problema della raggiungibilità è il seguente: è vero che  ? Ovvero in quali casi   è uno stato "sbagliato", che non deve essere raggiunto, ad esempio il passaggio di un treno quando la sbarra del passaggio a livello è alzata, o la salita di un ascensore quando le porte sono aperte.

La raggiungibilità degli stati può essere rappresentata con un grafo di raggiungibilità ove sono indicati gli stati e gli archi rappresentano le transizioni tra due stati. Il grafo è costruito come segue: si considera per primo lo stato di partenza ( ) e vengono esplorate tutte le possibili transizioni da questo stato, poi le transizioni dagli stati trovati e così via. L'algoritmo con cui è costruito il grafo è quello di ricerca breadth-first, poiché il grafo può avere larghezza infinita, quindi una ricerca depth-first potrebbe non trovare tutti i possibili stati, anche se eseguito un numero infinito di volte. Si nota che la rete di Petri è intrinsecamente limitata (vedi appresso) se e solo se il suo grafo di raggiungibilità ha un numero finito di stati.

Mentre la raggiungibilità sembra essere un buon metodo per trovare gli stati "sbagliati", per problemi pratici il grafo costruito ha di solito troppi stati da calcolare. Per alleggerire questo problema, è usata spesso la logica temporale lineare (LTL) in congiunzione con il metodo tableau per provare che certi stati non possono essere raggiunti. LTL usa la tecnica della semi-decisione per trovare se davvero uno stato può essere raggiunto, ricercando un insieme di condizioni necessarie affinché lo stato sia raggiunto e provando che tali condizioni non possono essere soddisfatte.

LivenessModifica

Una rete di Petri è viva o live se, qualunque sia la marcatura   raggiunta a partire da  , da   è sempre possibile far scattare qualunque transizione della rete a seguito di un'ulteriore sequenza di scatti.

Sono definiti diversi livelli di liveness (in letteratura anche vivezza o vitalità), da   a  . Una transizione t di una rete di Petri ( ) è:

  •   live, o morta se e solo se essa non può scattare, cioè se non è in nessuna sequenza di scatto   dove  
  •   live, o quasi-viva, se e solo se essa ha la possibilità di scattare, cioè se si trova in una sequenza di scatto   ove  
  •   live se e solo se per ogni k intero positivo, t può scattare almeno k volte in una sequenza di scatto   ove  
  •   live se e solo se esiste una sequenza di scatto   dove t scatta all'infinito
  •   live o semplicemente live se e solo se in ogni stato raggiungibile M (cioè  ), t è   viva.

Si nota che questi sono requisiti sempre più stringenti, ad esempio se una transizione è   live, essa è automaticamente   ed   live. Come esempi, (b) mostra una rete di Petri viva con un dato stato iniziale, ma con un altro stato iniziale (per esempio totalmente vuoto) tutte le transizioni possono essere morte. Dall'altra parte, (a) mostra transizioni di una rete di Petri tutte   live non importa cosa sia lo stato iniziale - esse non sono   live, poiché quando lo stato è (0,2) oppure (2,0), una delle sue transizioni può non scattare in quanto la rete è 2-bounded.

Una rete di Petri è   live se e solo se ogni transizione con essa è   live.

LimitatezzaModifica

Ci sono delle reti di Petri in cui il numero massimo di token contenuti in un posto è limitato - in questo caso, la limitatezza è una proprietà intrinseca della rete. Comunque, le reti di Petri possono essere definite senza avere la proprietà della limitatezza; allora la limitatezza è una possibile proprietà della rete di Petri. Una rete di Petri si dice k-limitata se esiste un numero intero positivo k (finito) tale che il numero di token in ogni posto della rete è minore o uguale a k per ogni marcatura raggiungibile da   Una rete di Petri è sicura o safe se è 1-limitata. Naturalmente, la limitatezza dipende dalla marcatura dello stato iniziale   (cioè possiamo mettere 10 token in ogni posto inizialmente, rendendo impossibile avere una rete 2-limitata). Si nota inoltre che l'esempio (b) non è limitata poiché P4 può possedere un numero infinito di token, se la sequenza di scatto (T1,T2) si ripete all'infinito. Comunque, la rete dell'esempio (a) è intrinsecamente k-limitata per k=2 in tutti i posti e ciò è mostrato in tutti i possibili stati.

 
Esempio di trasformazione dei posti. Il posto grigio che era originariamente 2-bounded in maniera intrinseca è stato "trasformato" in due posti: il posto grigio originale e un posto di conteggio

La limitatezza di un particolare posto in una rete limitata intrinsecamente può essere rappresentata in modo equivalente con una rete non espressamente limitata mediante una "trasformazione di posto", ovvero inserendo un nuovo posto (chiamato counter-place, posto di conteggio) e facendo sì che tutte le transizioni che mettono x token nel posto originale prendano x token dal posto di conteggio, e tutte le transizioni che portano via x token dal posto originale mettano poi x token nel posto di conteggio. Il numero di token in   dovranno adesso soddisfare l'equazione posto + posto di conteggio = limitatezza. Quindi, facendo una trasformazione di posto per tutti i posti nella rete limitata e costringendo lo stato di partenza   ad adeguarsi alla suddetta eguaglianza, una rete limitata può semplicemente essere trasformata in una rete non limitata. Quindi un'analisi utilizzata per una rete intrinsecamente non-limitata può essere usata anche per le reti limitate.

P-invarianteModifica

I P-invarianti corrispondono ad un insieme di posti tale che la somma pesata dei gettoni che la contengono rimane costante per tutte le marcature raggiungibili dalla rete. Dato   matrice di incidenza della rete di Petri e   vettore colonna di dimensione |P|, i P-invarianti sono le soluzioni intere della seguente equazione:  

Dove, per esempio per una rete di Petri avente 5 posti, abbiamo il seguente vettore  

T-invarianteModifica

In modo duale ai P-invarianti, i T-invarianti rappresentano possibili sequenze di scatti che riportano la rete alla marcatura iniziale. Dato   matrice di incidenza della rete di Petri e   vettore colonna di dimensione |T|, i T-invarianti sono le soluzioni intere della seguente equazione:  

Sifoni e TrappoleModifica

Sono delle strutture fondamentali per riconoscere la vivezza di una rete di Petri.

SifoniModifica

Un sifone, è un insieme di posti che, durante l'evoluzione della rete, tende a perdere gettoni e non è più capace di acquistarne di nuovi. Dato S un insieme di posti della rete di Petri, il sifone è definito:  

TrappoleModifica

Sono il duale dei sifoni, è un insieme di posti che, durante l'evoluzione della rete, tende ad acquisire gettoni e non è più in grado di smarcarsi completamente. Dato S un insieme di posti della rete di Petri, la trappola è definita:  

Aree di applicazioneModifica

Tools di programmazioneModifica

BibliografiaModifica

Voci correlateModifica

Altri progettiModifica

Collegamenti esterniModifica

Controllo di autoritàGND (DE4045388-1