Föreläsning 6 Flashcards
(5 cards)
Vad innebär dynamic programming?
Problemet delas upp i delproblem, vars lösningar kan användas för att spara beräkningar senare.
Vad innebär pseudo-polynomial tidskomplexitet?
Tidskomplexiteten beror på en konstant multiplicerad med n, exempelvis O(n*W) där W är maxvikten i knapsack problem.
Hur fungerar Bellman-Ford algoritmen? Vad är dess tidskomplexitet?
Bellman-Ford algoritmen används för att hitta den optimala vägen från en nod till alla andra i en graf genom dynamic programming. Bellman-Ford klarar av negativa kostnader i grafen.
- Välj en rotnod, och sett dess vikt till 0. Sätt alla andra noders vikt till +inf.
- För varje nod, se över dess kanters vikter och jämför vägens kostnad med den i tabellen
- Fortsätt tills ingen skillnad sker, eller vi når n-1 iterationer
Tidskomplexitet: O(m*n)
Hur görs sequence alignment (DNA exempelvis) mest effektivt?
Med dynamic programming, genom att sätta upp en NxM matris där N och M är mängden symboler i vardera sekvens
Hur kan man identifiera negativa cykler med Bellman-Ford algoritmen?
Låt algoritmen köra n-1 steg. Om du nu kör ännu ett steg och det resulterar i en updatering måste det finnas en negativ cykel i grafen.