Strutture elementari delle reti di Petri
Le reti di Petri possono rappresentare sistemi anche molto complessi, ma alla base esistono alcune strutture elementari che ne regolano il funzionamento.
I modelli fondamentali con cui si descrivono il flusso degli eventi e le possibili evoluzioni del sistema sono quattro: sequenza, concorrenza, sincronizzazione e conflitto.
Dalla combinazione di queste strutture nascono tutte le reti di Petri più articolate utilizzate in applicazioni reali.
La rete di Petri a struttura sequenziale
In una rete di Petri a struttura sequenziale gli eventi si succedono secondo un ordine predeterminato.
Pertanto, le transizioni scattano in base a una determinata sequenzialità.
Esempio

L'evento t2 si verifica solo dopo che l'evento t1 si è verificato.
L'evento t3 dopo l'evento t2.
La rete di Petri a struttura parallela
In una rete di Petri a struttura parallela gli eventi si succedono senza seguire un ordine prefissato.
E' anche detta rete a concorrenza strutturale.
Le transizioni scattano una dopo l'altra o contemporaneamente ma il flusso degli eventi non è predeterminato.
Questo richiede che gli eventi non siano in conflitto strutturale tra loro.
Nota. Se il parallelismo è vincolato a una transizione iniziale (detta parallel begin o par begin), le transizioni parallele che seguono (dette ramificazioni fork) sono contemporaneamente abiltate soltanto dopo lo scatto della transizione par begin.
Un esempio pratico
In questa rete l'evento t1 è la transizione par begin.

Dopo lo scatto della transizione t1 sono simultaneamente abilitate le transizioni t2 e t3 ( dette ramificazione fork ).
Il flusso successivo degli eventi non è comunque scritto.
Può scattare prima t2 e poi t3, o viceversa.
La rete di Petri a struttura sincronizzata
In una rete di Petri la sincronizzazione vincola l'abiltazione di un evento al verificarsi di altri eventi. E' anche detta operazione join.
In genere è abinata a una struttura parallela dove più processi sono eseguiti simultaneamente.
Una transizione, detta parallel end ( o par end ), scatta quando altre transizioni sono già scattate.
Un esempio pratico
In questa rete di Petri la transizione t3 è abilitata soltanto dopo lo scatto delle transizioni t1 e t2.

Quindi, la transizione t3 è una transizione par end.
Se le transizioni t1 o t2 non sono già scattate, il flusso computazionale prima di t3 è sospeso.
La rete di Petri a conflitto strutturale
Una rete di Petri a conflitto strutturale è una struttura elementare che consente all'automa di fare una scelta tra eventi diversi e alternativi tra loro.
Un esempio pratico
In questa rete ci sono due transizioni (eventi) abilitate.
Soltanto un evento può verificarsi.

Quindi, se scatta la transizione t1, non scatta la transizione t2 e viceversa.
Nota. In questo semplice esempio ho considerato soltanto due scelte. Nulla vieta però di averne di più. Potrei configurarne tre, quattro o più. Il funzionamento è sempre lo stesso. Se scatta una transizione, si disabilitano le altre.
E così via.
