Laste ned presentasjonen
Presentasjon lastes. Vennligst vent
PublisertThorstein Håkonsen Endret for 9 år siden
1
INF 295 Forelesning 19 - Dynamisk programmering Korteste vei alle til alle (Floyd) Hans Fr. Nordhaug (Ola Bø)
2
Dynamisk programmering (DP) Kan gi optimale løsninger. Problemer som ser ut til å kreve eksponentiell tid, kan løses i polynomisk tid. Algoritmene som oppstår ved bruk av DP er som regel ganske enkle med nøstede for- løkker for utfylling av en tabell. Floyds algoritme er et eksempel på DP
3
Dynamisk programmering Problemet må kunne deles opp (gjentatte ganger) i enkle delproblem som kan defineres lett og dermed lagres i en tabell. Løsning (optimum) for problemet må kunne settes sammen av løsning for delproblem. Løsninger til ikke-relaterte delproblem kan inneholde felles delproblem.
4
Korteste vei alle til alle Floyds algoritme Beregnes korteste vei mellom alle par av punkter i en rettet graf O(|V| 3 ) Samme problem kan løses ved å kjøre korteste vei fra en til alle (Dijkstra) i alle noder O(|V| 3 ) Floyd er trolig raskere ved tette grafer pga korte sløyfer Grunntanke: Hvis veien fra i til k er ik og veien fra k til j er kj, så går det en vei fra i gjennom k til j med lengde ik+kj
5
Floyds algoritme Start med avstand mellom noder lik vekten til kanten som binder dem sammen eller uendelig hvis det ikke er noen direkte kant. Trinn 0 se etter forbedringer med node 0 som mellomledd Trinn k: Avstanden mellom to noder er den korteste veien som bare bruker nodene 0,1,...,k Forbedring ved å gå gjennom k bygger på avstanden fra i til k og fra j til k som bruker nodene 0,1,....k-1 Avstanden mellom noder lagres i en |V|*|V| array
Liknende presentasjoner
© 2024 SlidePlayer.no Inc.
All rights reserved.