PočítačeProgramování

Dynamické programování, základní principy

Chcete-li zvolit optimální řešení při plnění úlohy programování jsou někdy potřeba třídit velké objemy dat kombinace, které načte paměti osobního počítače. Takové způsoby zahrnují, například, programovací metoda „rozděl a panuj“. V tomto případě algoritmus poskytuje problém separace na jednotlivé menší dílčí úkoly. Tato metoda je použitelná pouze v těch případech, kdy malé dílčí úkoly jsou vzájemně nezávislé. Aby se zabránilo zbytečnému provádění fungovat, pokud na sobě závislých dílčích úkolů, používá dynamické programování metodu navrženou American R.Bellmanom v 50. letech.

metoda

Dynamické programování je určit optimální řešení problému n-dimenzionální, sdílení její n samostatné etapy. Každý z nich je sub-úkol s ohledem na jedné proměnné.

Hlavní výhodou tohoto přístupu lze považovat, že vývojáři zapojené do optimalizačního problému jednorozměrného dílčích úkolů namísto problému n-rozměrné, a naším hlavním cílem bude „bottom-up“.

Je vhodné aplikovat dynamické programování v těch případech, kdy jsou vzájemně propojené dílčí úkoly, tj sdílet společné moduly. Algoritmus poskytuje rozhodnutí každého z dílčích úkolů najednou, a odpovědi na úsporu probíhá ve speciální tabulce. To umožňuje, aby výpočet odpověď, když se znovu setkali se stejnou dílčí úkol.

Dynamické programování úkol řeší problém optimalizace. Autor tohoto způsobu formuloval princip optimality R. Bellman: co je počáteční stav každého z kroků a řešení definovaného v tomto kroku, všechny následující zvolit optimální vzhledem ke stavu, který přijímá systém na konci kroku.

Způsob zlepšuje výkon úkolů řešených pomocí variant, nebo rekurze.

Algoritmus úkol Building

Dynamické programování algoritmus zahrnuje výstavbu takových úkolů, že úkol, takže je rozděleno do dvou nebo více dílčích úkolů na jeho řešení se skládá ze optimální řešení pro všechny dílčí úkoly, to zahrnuje. Dále je nutné, aby napsat vztah opakování, a výpočet optimální hodnoty parametrů pro tento úkol jako celek.

Někdy se ve 3. kroku je zapamatovat si některé další základní informace o průběhu každého úkolu. Tento jev se nazývá zpětný zdvih.

Způsob nanášení

Dynamické programování je použita v případě, že jsou dva charakteristické rysy:

  • optimální pro dílčí úkoly;
  • Přítomnost v problému překrývajících subproblems.

Vyřešení problému optimalizace pomocí dynamického programování, je třeba nejprve popsat strukturu řešení. Úkol musí být optimální, pokud je roztok složený z nejlepších rozhodnutí jeho dílčích úkolů. V tomto případě je vhodné použít dynamické programování.

Druhá vlastnost tohoto problému, který je nezbytný při této metodě, - malý počet dílčích úkolů. Rekurzivní řešení problému s použitím stejných překrývající dílčí problémy, jejichž počet závisí na velikosti počáteční informace. Odpověď je uložen ve speciální tabulce, program šetří čas pomocí těchto dat.

Zvlášť efektivní je použití, kdy je nezbytně nutná úkol rozhodovat v několika fázích dynamického programování. Vezměme si například jednoduchý příklad problému výměny a opravy zařízení. Řekněme, že v továrně licí stroje na výrobu pneumatik ve stejnou dobu, aby se pneumatiky ve dvou různých formách. V případě, že jedna z forem selhání, je nutné demontovat zařízení. Je pochopitelné, že někdy výhodnější vyměnit a druhá forma, aby se demontáže zařízení v případě, že i tato forma bude neproveditelný v dalším stupni. Zejména proto, že je to jednodušší vyměnit oba pracovali tvar, než začnou selhávat. Dynamický způsob programování určuje nejlepší strategii ve věci náhrady těchto forem, přičemž v úvahu všechny faktory: přínosy dalšího forem vykořisťování, ztráty prostoje stroje, náklady na vyřazených pneumatik a další.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 cs.delachieve.com. Theme powered by WordPress.