1
Fork 0
mirror of https://github.com/Steffo99/appunti-magistrali.git synced 2024-11-25 03:34:17 +00:00
appunti-steffo/2 - Algoritmi e strutture dati/1 - Appunti/24 - Percorso più breve.md

1.3 KiB

Percorso più breve

Trovare il percorso più breve (o cammino minimo) tra due nodi di un grafo pesato è un problema frequente nell'informatica; per questo, sono stati sviluppati numerosi algoritmi per risolverlo.

Ad esempio, il pathfinding dei nemici nei videogiochi, oppure Google Maps!

Percorso più breve da una sorgente singola

Una sottocategoria del problema del percorso più breve è il caso in cui ci interessa sapere i percorsi più brevi che partono da uno specifico nodo del grafo: è detto problema del percorso più breve da una sorgente singola, o single-source shortest path.

Si può notare che se il grafo contiene costi negativi allora è possibile che il percorso più breve non esista, in quanto diventa possibile la comparsa di cicli di costo infinitamente negativo.

Possiamo notare che, se il percorso più breve tra A e D è A-B-C-D, allora il cammino minimo tra B e D passerà obbligatoriamente per C (B-C-D). Diremo più avanti che il percorso più breve ha una sottostruttura ottimale.

Esempi

Alcuni algoritmi che trovano il percorso più breve sono:

  • L'Algoritmo di Dijkstra
  • L'Algoritmo di Bellman-Ford
  • La ricerca A*