Continuo a provare a google, ma i risultati che sto riscontrando stanno solo aggiungendo alla mia confusione. Sembra che possa essere eventualmente usato per entrambi? In tal caso, per quale motivo è stato progettato per impostazione predefinita e cosa è necessario modificare per farlo funzionare in modo non predefinito (indipendentemente dal fatto che sia diretto o non diretto)?L'algoritmo di Dijkstra è per i grafici diretti o indiretti?
Edit: per riferimento, ho avuto un problema lo scorso semestre in cui mi è stata data una lista come questa (aeroporti):
AER,KZN,1.8835
ASF,KZN,1.3005
ASF,MRV,1.1204
CEK,KZN,1.9263
CEK,OVB,1.6733
DME,KZN,1.7892
DME,NBC,2.2319
DME,UUA,2.3786
EGO,KGD,1.4649
EGO,KZN,1.2603
GYD,NBC,2.0755
mi hanno detto che era diretto, e ha chiesto di trovare il percorso più breve. L'ho inserito nell'algoritmo di Dijkstra che ho trovato su Github (era un midterm open-computer, quindi non avevamo abbastanza tempo per scrivere l'algoritmo da zero) e il mio professore ha detto che il percorso più breve che ha restituito non era corretto e che era nemmeno un possibile percorso perché la lista doveva essere diretta. Non ero sicuro di dover modificare l'algoritmo o l'elenco per effettuare questa correzione. Finì per essere il caso in cui il secondo percorso più breve che è stato restituito fosse in realtà il percorso più breve diretto, ma mi chiedo ancora quale fosse il problema.
Quindi, se la mia lista non include una voce duplicata ma invertita per ogni spigolo dovrebbe darmi il percorso più diretto diretto? Poiché mi è stato detto che la lista che mi è stata data era diretta, ma l'implementazione di Dijkstra che ho usato mi ha dato un percorso non indiretto. – Austin
Bene, sembra che l'implementazione che hai trovato interpreti le voci della tua lista come non orientate, il che non è quello che vuoi, quindi probabilmente dovresti implementare l'algoritmo da solo. Quelli che conosco generalmente usano solo una lista di adiacenze (che è una lista che contiene informazioni su quali nodi si possono raggiungere da un dato nodo * => le connessioni sono dirette *). Questo è il motivo per cui ho detto che non devi fare nulla per farlo funzionare per i grafici non orientati, tuttavia, se il tuo algoritmo, per qualsiasi motivo, interpreta automaticamente le connessioni come bidirezionali, deve essere cambiato. – Keiwan
@Keiwan Questo post https://stackoverflow.com/questions/22649416/why-cant-prims-or-kruskals-algorithms-be-used-on-a-directed-graph dice che l'algoritmo di prims fallirà per i grafici diretti. Quindi Dijkstras, che è quasi come prim, fallirà anche per gli esempi forniti nel post. – WSS