DatorerProgrammering

Dynamisk programmering, de grundläggande principerna

För att välja den optimala lösningen vid utförande av programmeringsuppgifter är ibland att sortera stora mängder av datakombinationer som laddar minne persondatorn. Sådana metoder innefattar exempelvis, programmeringsmetoden "söndra och regeln". I detta fall algoritmen tillhandahåller separationsproblem i separata mindre underaktiviteter. Denna metod är endast i de fall där små deluppgifter är oberoende av varandra. För att undvika att utföra onödigt arbete om ömsesidigt beroende deluppgifter använder dynamisk programmering metod föreslagen amerikansk R.Bellmanom på 50-talet.

metoden

Dynamisk programmering är att bestämma den optimala lösningen av n-dimensionella problemet, dela hennes n separata steg. Var och en av dem är en sub-task med avseende på en variabel.

Den största fördelen med denna metod kan anses att utvecklarna är involverade i den endimensionella optimeringsproblem deluppgifter i stället för en n-dimensionell problem, och vårt främsta mål är att gå till "bottom-up".

Det är lämpligt att tillämpa dynamisk programmering i de fall där under uppgifter kopplade till varandra, det vill säga dela gemensamma moduler. Algoritmen ger beslutet av varje deluppgifter gång och spara svaren utförs i en särskild tabell. Detta gör det möjligt att inte beräkna ett svar när de möttes igen med samma sub-uppgift.

Dynamisk programmeringsuppgift löser problemet med optimering. Författaren till denna metod formulerades av R. Bellman optima princip: allt som är initialtillståndet för var och en av de steg och lösningen definieras i detta steg, alla följande att välja den optimala i förhållande till det tillstånd, som mottager systemet vid slutet av steg.

Förfarandet förbättrar utförandet av de uppgifter som löses med hjälp av varianter eller rekursion.

Byggnad uppgift algoritm

Dynamisk programmeringsalgoritm omfattar byggandet av sådana uppgifter som uppgiften så är uppdelad i två eller flera underaktiviteter till dess lösning är sammansatt av en optimal lösning på alla underaktiviteter, innehåller den. Vidare är det nödvändigt att skriva en upprepning relation, och beräkna de optimala parametervärden för uppgiften som helhet.

Ibland på 3: e steget är att memorera några ytterligare bakgrundsinformation om utvecklingen av varje uppgift. Detta kallas returslaget.

appliceringsmetod

Dynamisk programmering tillämpas när det finns två utmärkande drag:

  • optimal för underaktiviteter;
  • närvaro i problemet med överlappande delproblem.

Lösa optimeringsproblemet genom dynamisk programmering, måste du först beskriva uppbyggnaden av lösningen. Uppgiften måste vara optimal om lösningen är sammansatt av de bästa besluten för sina underaktiviteter. I detta fall är det lämpligt att använda dynamisk programmering.

Den andra egenskapen hos problemet viktigt i denna metod - ett litet antal deluppgifter. Rekursiv lösning av problemet med användning av samma överlappande underproblem, vars antal beror på storleken av den ursprungliga informationen. Svaret lagras i en särskild tabell sparar programtiden med hjälp av dessa data.

Särskilt effektiv är användningen av dynamisk programmering när i huvudsak behövs uppgift att fatta beslut i etapper. Till exempel anser ett enkelt exempel på problemet med utbyte och reparation av utrustning. Låt oss säga på gjutmaskinen fabrik för tillverkning av däck samtidigt gör däcket i två olika former. I händelse av att en av de former misslyckas, är det nödvändigt att montera isär maskinen. Det är förståeligt att ibland mer lönsamt att ersätta och en andra form för att ta isär maskinen i fallet och denna form kommer att vara ogenomförbar i nästa steg. Speciellt eftersom det är lättare att byta ut både arbets form innan de börjar att misslyckas. Dynamisk programmering metod bestämmer den bästa strategin i fråga om utbyte av dessa former, med hänsyn tagen till alla faktorer: fördelarna med fortsatta former av utnyttjande, förlust av driftstopp, kostnaden för kasserade däck och mycket mer.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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