Home Download Help Forum Resources Extensions FAQ NetLogo Publications Contact Us Donate Models: Library Community Modeling Commons Beginners Interactive NetLogo Dictionary (BIND) NetLogo Dictionary User Manuals: Web Printable Chinese Czech Farsi / Persian Japanese Spanish
|
NetLogo User Community Models(back to the NetLogo User Community Models)
## CHE COS'E'?
Questo modello simula l'esecuzione dell'algoritmo Fast MIS from 1986 per il calcolo del Maximal Independent Set su grafi. I grafi nel modello sono grafi generati in maniera casuale scegliendo il numero di nodi e archi oppure sono grafi generati scegliendo soltanto il numero dei nodi e calcolati applicando il modello probabilistico di Erdos-Renyi.
L' algoritmo opera su round sincroni che vengono raggruppati in fasi.
1) Ogni nodo v marca se stesso con probabilità pari a 1/(2d(v)) dove d(v) indica il grado attuale del nodo v.
L'algoritmo termina quando ogni nodo ha deciso se far parte o meno del Maximal Independent Set. Analizzando la correttezza dell'algoritmo abbiamo che grazie ai passi 1 e 2 siamo sicuri che se un nodo v entra a far parte del MIS allora i vicini di v non entreranno contemporaneamente a far parte anch'essi del MIS. Inoltre grazie al terzo passo siamo sicuri che se v entra a far parte del MIS, allora i suoi vicini non potranno mai più tentare di entrare nell'insieme. Dopo questa analisi, siamo certi quindi che l'algoritmo effettivamente è corretto.
## COME FUNZIONA
Sono presenti tre procedure. La procedura "fast_mis_1986" implementa effettivamente l'algoritmo. A ciascun agente sono assegnate quattro variabili locali:
- degree: variabile intera che indica il grado corrente del nodo.
Per implementare il primo passo dell'algoritmo, abbiamo che la scelta probabilistica (basata sempre sul grado corrente del nodo) viene effettuata utilizzando la funzione random-float che estrae un numero casuale compreso tra 0 e 1. In questo modo il nodo marca se stesso solo se tale valore è minore di 1/(2d(v)).
In "create-graph" sono presenti tutte le operazioni necessarie a creare la rete su cui verrà applicato l'algoritmo. Attraverso la variabile "graph-model" l'utente può scegliere la topologia del grafo che può essere: circle, random, oppure un grafo secondo il modello Erdos-Renyi. Il grafo quindi può essere creato in maniera random a partire dal numero di nodi e dal numero di archi specificati mediante le variabili globali "number-of-nodes" e "number-of-links", scelti dall'utente. Nel caso in cui il valore della variabile number-of-links sia maggiore del numero possibile massimo di archi presenti nel grafo, fissato il numero dei nodi, il numero di archi che vengono creati è pari al valore massimo consentito dalla topologia specificata. Oltre alla modalità random il grafo può essere creato secondo il modello Erdos-Renyi ed in questo caso verranno considerate le variabili globali "number-of-nodes" e "c-value" oppure "probability". Nel caso l'utente scelga di utilizzare la variabile "c-value" allora gli archi verrano generati con una probabilità pari a (c/n) log n. Altrimenti si può scegliere di utilizzare una probabilità indipendente dal numero di nodi ed in questo caso l'utente la può specificare grazie alla variabile "probability".
## COME USARLO
Per avviare l'algoritmo è necessario innanzitutto creare il grafo. Tale operazione viene effettuata specificando mediante gli appositi slider, il numero di nodi e di archi che si vuole creare nei layout "random" e "circle", oppure specificando il numero di nodi e la probabilità di generazione degli archi se si sceglie il modello "Erdos-Renyi". La fase di creazione del grafo termina cliccando sul bottone "Generate Graph" e viene visualizzato così il grafo scelto.
## DA NOTARE
E' da notare che dopo aver eseguito l'algoritmo, si può nuovamente premere il pulsante Run ed eseguire da capo l'algoritmo sulla stessa topologia. Questo porterà al calcolo di un nuovo MIS che può in generale essere diverso da quello di partenza. Infatti su uno stesso grafo è possibile avere più MIS validi e diversi tra di loro. L'algoritmo termina in numero atteso di passi pari ad O (log n).
## RIFERIMENTI
[1] M. Luby. A Simple Parallel Algorithm for the Maximal Independent Set Problem. In SIAM Journal on Computing, November 1986. |
(back to the NetLogo User Community Models)