* V è il numero di vertici (nodi) nel grafico.
* E è il numero di bordi nel grafico.
Spiegazione:
1. Vertici: È necessario archiviare ogni vertice nel grafico almeno una volta (ad es. In un array, tavolo hash o qualche altra struttura che mappa all'elenco dei suoi vicini). Ciò contribuisce a O (V) alla complessità dello spazio.
2. bordi: Per ogni vertice, memorizza un elenco dei suoi vertici adiacenti (i suoi vicini). In una semplice rappresentazione, ogni bordo (o un riferimento/puntatore a un vicino) viene archiviato una volta per ogni vertice a cui è collegato. Pertanto, in totale, tutti i bordi sono archiviati negli elenchi.
* In un grafico non diretto , ogni bordo (u, v) verrà archiviato due volte:una volta nell'elenco di adiacenza del vertice `u` e una volta nell'elenco di adiacenza del vertice` V`. Quindi, memorizzerai effettivamente i bordi di 2 * e. Tuttavia, il fattore costante (2) viene lasciato cadere in una notazione di grande O, lasciandoci con O (E).
* In un grafico diretto , ogni bordo (u -> v) viene archiviato una sola volta, nell'elenco di adiacenza del vertice `u`. Quindi memorizzerai i bordi E, che si traduce in O (e).
perché O (V + E) è importante:
* Grafici sparsi: Quando E è significativamente più piccolo di V
* Grafici densi: Quando E è più vicino a V
Esempio:
Prendi in considerazione un grafico con 5 vertici (a, b, c, d, e) e 6 bordi:
* A <--> b
* A <--> c
* B <--> c
* B <--> d
* C <-> e
* D <--> e
Qui, v =5 ed e =6.
L'elenco di adiacenza richiederebbe spazio per:
* Memorizzazione dei 5 vertici (o (v)).
* Memorizza i 12 riferimenti ai vicini (6 bordi, ciascuno immagazzinato due volte perché è un grafico non diretto - o (2e) =o (e)).
Pertanto, lo spazio totale è O (V + E) =O (5 + 6) =O (11).
In sintesi: Gli elenchi di adiacenza forniscono un modo efficiente dal punto di vista spazio per rappresentare i grafici, in particolare i grafici sparsi, poiché la loro complessità spaziale si ridimensiona linearmente con il numero di vertici e bordi.
software © www.354353.com