Dynaaminen ohjelmointi, kun se viittaa tietotekniikan alaan, kuvaa samankaltaisten tietokonealgoritmien ryhmän, jonka tarkoituksena on ratkaista monimutkaisia ongelmia jakamalla ongelma pienempien ongelmien joukkoihin. Richard Bellmanin 1950 -luvulla luoma dynaaminen ohjelmointi toimii ongelmien kanssa, jotka ovat joko päällekkäisiä osaongelmia tai optimaalisia alarakenteita. Jotta ymmärrät, miten dynaaminen ohjelmointi toimii, on parasta ymmärtää näiden kahden termin takana oleva käsite.
Päällekkäiset osaongelmat kuvaavat monimutkaisia yhtälöitä, jotka pienempiin yhtälöryhmiin hajotettuna käyttävät uudelleen osia pienemmistä yhtälöistä useammin kuin kerran löytääkseen vastauksen. Esimerkiksi matemaattinen yhtälö, joka käskee laskea kaikki mahdolliset tulokset käyttämällä numerosarjaa, voi laskea saman tuloksen useita kertoja, kun taas muita tuloksia lasketaan vain kerran. Dynaaminen ohjelmointi kertoisi tälle ongelmalle, että ensimmäisen tuloksen laskemisen jälkeen sen pitäisi tallentaa tulos ja liittää vastaus myöhemmin yhtälöön sen sijaan, että laskettaisiin se uudelleen. Pitkiä monimutkaisia prosesseja ja yhtälöitä käsiteltäessä tämä säästää aikaa ja luo nopeamman ratkaisun käyttämällä paljon vähemmän vaiheita.
Optimaaliset alarakenteet luovat ratkaisun etsimällä parhaan vastauksen kaikkiin osaongelmiin ja luomalla sitten parhaan kokonaisvastauksen. Kun monimutkainen ongelma on jaettu pienempiin ongelmiin, tietokone määrittää sitten matemaattisen järjestelmän avulla, mikä on paras ratkaisu jokaiseen ongelmaan. Se laskee vastauksen alkuperäiseen ongelmaan pienemmistä vastauksista. Tässä prosessissa on virheitä. Vaikka se tarjoaa ratkaisun, joka toimii parhaiten matemaattisesti, se voi olla tai ei ehkä olla paras ratkaisu tosielämässä riippuen ongelman tyypistä ja siitä, miten se liittyy todelliseen maailmaan.
Näiden toimintojen aikana dynaaminen ohjelmointialgoritmi yrittää löytää lyhimmän polun ratkaisuun. Tähän voi kulua yksi kahdesta lähestymistavasta. Ylhäältä alaspäin suuntautuva lähestymistapa jakaa yhtälön pienempiin yhtälöihin ja käyttää uudelleen näiden yhtälöiden vastauksia tarvittaessa. Alhaalta ylöspäin suuntautuva lähestymistapa yrittää ratkaista pienimmän matemaattisen arvon yhtälön murtamisen jälkeen ja jatkaa sitten ylöspäin kohti suurinta sieltä. Molemmat lähestymistavat säästävät aikaa, mutta dynaaminen ohjelmointi toimii vain silloin, kun alkuperäinen ongelma voi hajota pienemmiksi yhtälöiksi, joita jossain vaiheessa käytetään uudelleen yhtälön ratkaisemiseksi.