Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> software >> Compressione dei dati >> .

Qual è la complessità spaziale di una struttura dei dati dell'elenco di adiacenza?

La complessità spaziale di una struttura dei dati dell'elenco di adiacenza è o (v + e) ​​ , Dove:

* 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 2 (un grafico sparso), l'elenco di adiacenza è molto più efficiente dal punto di vista dello spazio rispetto alla matrice di adiacenza, che ha una complessità spaziale di O (V 2 ).

* Grafici densi: Quando E è più vicino a V 2 (Un grafico denso), la complessità spaziale di entrambe le rappresentazioni diventa simile. Tuttavia, i fattori costanti nell'implementazione possono ancora fare la differenza.

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