So che ci sono due modi per rappresentare il mio grafico: uno sta usando una matrice e l'altro sta usando una lista.Come invertire un grafico in tempo lineare?
Se utilizzo una matrice, devo capovolgere tutti i bit nella matrice. Non richiede O (V^2)?
Se utilizzo una lista, non dovrei attraversare ogni lista, uno per uno, e creare un nuovo set? Sembrerebbe prendere O (V + E) tempo che è lineare. Ho ragione?
Quindi, ho un'altra domanda qui. Si consideri, ad esempio, che io uso l'algoritmo Dijkstra sul mio grafico (una matrice o una lista), e usiamo una coda di priorità per la struttura dati dietro la scena. C'è qualche relazione tra rappresentazione grafica e uso della struttura dati? Influirà sulle prestazioni dell'algoritmo?
Supponiamo che dovessi usare un elenco per le rappresentazioni e una coda di priorità per l'algoritmo Dijkstra, ci sarebbe una differenza tra la matrice e usare la coda di priorità per Dijkstra?
Immagino che riguardi solo l'operazione makeQueue
? O non hanno affatto diverso?
Traversal di liste di adiacenza non avviene in tempo lineare in generale come E = O (V^2). – collapsar
@collapsar Si * sempre * avviene in tempo lineare in relazione ai vertici * e ai bordi *. Definire la complessità del tempo solo su una parte dell'ingresso (cioè solo i vertici) (senza specificarlo esplicitamente) sembra in qualche modo illogico, * specialmente * quando il tempo è direttamente correlato a un'altra parte dell'input (ma non posso sostenere che molti le persone possono definirlo come hai fatto tu). E E = O (V^2) è per grafici densi. I grafici sparsi sono E = O (V). – Dukeling
@dukeling hai ragione nel sottolineare che ridurre la 'dimensione' di un problema a un singolo scalare comporta una mancanza di precisione. otoh, big-Oh notation descrive il caso peggiore e, considerando i grafici, senza vincoli addizionali, il caso peggiore è E = O (V^2). essendo preciso, O (V^2) non è corretto per l'inversione del fronte su una matrice di adiacenza o - se la rappresentazione mette in mostra una riga di flag-major vs. col-major, la trasposizione è O (1). – collapsar