# Event driven simulation processo ad eventi discreti (cioè in cui il tempo è continuo ma gli eventi  accadono istantaneamente).  ragioniamo su una rete anche se nel caso iniziale abbiamo una topologia banale che ne è un caso particolare. supponiamo date due distribuzioni per i tempi di recovery e di infezione che chiamo p_r e p_i. Nel caso Poissoniano saranno esponenziali.  Poi vogliamo generalizzare la p_r ad un caso non poissoniano(ma in questo algoritmo non abbiamo bisogno di fare ipotesi sulle p) per il SIR chiamo di seguito "attivo" un nodo infetto o un link tra un nodo infetto e uno suscettibile (in generale avrò altre definizioni di attivo a seconda degli eventi che possono accadere nel processo) l'algoritmo dovrebbe procedere così:  - 0. definiamo un tempo assoluto t=0 - 1. assegniamo ad ogni nodo attivo un tempo di evento e_i estratto da p_r (a cui il nodo infetto può fare recovery I->R)  - 2. assegniamo ad ogni link attivo un tempo di infezione e_l estratto da p_i - 3. mettiamo a +infty il tempo evento di tutti i nodi e i link non attivi - 4. assegnamo tutti i tempi eventi ad una struttura dati appropriata (definita a parte)che li ordina in ordine crescente - 5.  prendiamo il primo evento e aggiorniamo il sistema accordingly:  - 5.1 se l'evento è ad un nodo i:  - aggiorniamo il tempo assoluto a t=e_i - aggiorniamo il tempo evento di i a +infty - aggiorniamo il tempo evento dei link che non sono più attivi come conseguenza del recovery a +infty - aggiorniamo e riordiniamo la data structure - 5.2 se l'evento è ad un link l: - aggiorniamo il tempo assoluto a t=e_l - aggiorniamo il tempo evento di l a +infty - aggiorniamo lo stato del sistema - aggiorniamo gli event times di nodi e link a k+t o +infty data structure min-heap