Azərbaycan  AzərbaycanDeutschland  DeutschlandLietuva  LietuvaMalta  Maltaශ්‍රී ලංකාව  ශ්‍රී ලංකාවTürkmenistan  TürkmenistanTürkiyə  TürkiyəУкраина  Украина
Pagalba
www.datawiki.lt-lt.nina.az
  • Pradžia

Šiam straipsniui ar jo daliai trūksta išnašų į patikimus šaltinius Jūs galite padėti Vikipedijai pridėdami tinkamas išna

Dinaminis programavimas

  • Pagrindinis puslapis
  • Dinaminis programavimas
Dinaminis programavimas
www.datawiki.lt-lt.nina.azhttps://www.datawiki.lt-lt.nina.az
   Šiam straipsniui ar jo daliai trūksta išnašų į patikimus šaltinius.
Jūs galite padėti Vikipedijai pridėdami tinkamas išnašas su šaltiniais.

Dinaminis programavimas – programavimo metodas, paremtas uždavinio skaidymu į mažesnes susijusias problemas, bei tų problemų sprendimų įsiminimu. Taigi laiko sąnaudos pakeičiamos atminties sąnaudomis. Jis naudojamas, kuomet „“ nėra pakankamai efektyvus. Gali būti pritaikomas įvairaus tipo uždaviniams, tačiau šio metodo taikymo galimybę pastebėti ne visuomet lengva.

Fibonačio skaičiai

Apibrėžimas: Fn=Fn−1+Fn−2{\displaystyle F_{n}=F_{n-1}+F_{n-2}}, F1=1{\displaystyle F_{1}=1}, F2=1{\displaystyle F_{2}=1}. Reikia apskaičiuoti n{\displaystyle n}-tąjį sekos narį. Rekursyvus sprendimas būtų toks:

 int Fibonacci(int n) { if (n < 2) { return 1; } else { return Fibonacci(n-1) + Fibonacci(n-2); } } 

Dinamiškai galime parašyti taip:

 int Fibonacci[N]; Fibonacci[0] = Fibonacci[1] = 1; for (int i = 2; i < N; i++) { Fibonacci[i] = Fibonacci[i-1] + Fibonacci[i-2]; } 

Taip gauname visas reikšmes nuo F1{\displaystyle F_{1}} iki FN{\displaystyle F_{N}}.

Taip pat yra algoritmas surasti tam tikrą Fibonačio skaičių:

 Fibonacci[0] := 1; Fibonacci[1] := 1; for i := 2 to n do begin tmp := Fibonacci[0]; Fibonacci[0] := Fibonacci[1]; Fibonacci[1] := Fibonacci[0] + tmp; end; 

„Kuprinės“ uždavinys

Šio tipo uždaviniai gana dažni. Bendrai jie formuluojami taip: turime N{\displaystyle N} daiktų, bei žinome jų dydžius Di{\displaystyle D_{i}} bei vertes Vi{\displaystyle V_{i}}. Kuprinės dydis yra K{\displaystyle K}, taigi galima paimti tik tiek daiktų, kad jų dydis neviršytų K{\displaystyle K}. Reikia surasti tokį daiktų rinkinį, kurio vertė būtų didžiausia.

Dinaminio sprendimo idėja:

  • Tarkime, nagrinėjame J{\displaystyle J}-tąjį daiktą, o kuprinėje dar yra K{\displaystyle K} talpos vienetų
  • Jeigu daiktą imame, tuomet galime iš J−1{\displaystyle J-1} daiktų paimti tiek, kad neviršytų K−Dj{\displaystyle K-D_{j}}
  • Jeigu neimame, tuomet galime iš J−1{\displaystyle J-1} daiktų paimti tiek, kad neviršytų K{\displaystyle K}
  • Iš šių dviejų atvejų, pasirenkame vertingesnį.

Taigi, problemą J{\displaystyle J} daiktų atveju galime išspręsti, jeigu žinome problemos J−1{\displaystyle J-1} daiktų daiktų atveju sprendimą. Matematiškai tai atrodo taip: F(j, k)=max(F(j−1, k), F(j−1, k−Dj)+V(j)){\displaystyle F(j,{\mbox{ }}k)=max(F(j-1,{\mbox{ }}k),{\mbox{ }}F(j-1,{\mbox{ }}k-D_{j})+V(j))}. Sprendimą galima rasti, ieškant nuo apačios, t. y. pirma apskaičiuojant F{\displaystyle F} reikšmes su mažesnėmis J{\displaystyle J} reikšmėmis. Taip pat, būtina atkreipti dėmesį, kad būtina turėti tam tikras „ribines“ reikšmes. Šiuo atveju tai būtų: F(0, k)=0{\displaystyle F(0,{\mbox{ }}k)=0}.

Programos fragmentai:

 for ik := 0 to K do F[0, ik] := 0; for J := 1 to N do begin for ik := 0 to K do begin F[J, ik] := F[J-1, ik]; if D[J] <= ik then F[J, ik] := Max(F[J, ik], F[J-1, ik-D[J]] + V[J]); end; end; 

Autorius: www.NiNa.Az

Išleidimo data: 18 Lie, 2025 / 23:00

vikipedija, wiki, lietuvos, knyga, knygos, biblioteka, straipsnis, skaityti, atsisiųsti, nemokamai atsisiųsti, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, pictu, mobilusis, porn, telefonas, android, iOS, apple, mobile telefl, samsung, iPhone, xiomi, xiaomi, redmi, pornografija, honor, oppo, Nokia, Sonya, mi, pc, web, kompiuteris, Informacija apie Dinaminis programavimas, Kas yra Dinaminis programavimas? Ką reiškia Dinaminis programavimas?

Siam straipsniui ar jo daliai truksta isnasu į patikimus saltinius Jus galite padeti Vikipedijai pridedami tinkamas isnasas su saltiniais Dinaminis programavimas programavimo metodas paremtas uzdavinio skaidymu į mazesnes susijusias problemas bei tu problemu sprendimu įsiminimu Taigi laiko sanaudos pakeiciamos atminties sanaudomis Jis naudojamas kuomet nera pakankamai efektyvus Gali buti pritaikomas įvairaus tipo uzdaviniams taciau sio metodo taikymo galimybe pastebeti ne visuomet lengva Fibonacio skaiciaiApibrezimas Fn Fn 1 Fn 2 displaystyle F n F n 1 F n 2 F1 1 displaystyle F 1 1 F2 1 displaystyle F 2 1 Reikia apskaiciuoti n displaystyle n tajį sekos narį Rekursyvus sprendimas butu toks int Fibonacci int n if n lt 2 return 1 else return Fibonacci n 1 Fibonacci n 2 Dinamiskai galime parasyti taip int Fibonacci N Fibonacci 0 Fibonacci 1 1 for int i 2 i lt N i Fibonacci i Fibonacci i 1 Fibonacci i 2 Taip gauname visas reiksmes nuo F1 displaystyle F 1 iki FN displaystyle F N Taip pat yra algoritmas surasti tam tikra Fibonacio skaiciu Fibonacci 0 1 Fibonacci 1 1 for i 2 to n do begin tmp Fibonacci 0 Fibonacci 0 Fibonacci 1 Fibonacci 1 Fibonacci 0 tmp end Kuprines uzdavinysSio tipo uzdaviniai gana dazni Bendrai jie formuluojami taip turime N displaystyle N daiktu bei zinome ju dydzius Di displaystyle D i bei vertes Vi displaystyle V i Kuprines dydis yra K displaystyle K taigi galima paimti tik tiek daiktu kad ju dydis nevirsytu K displaystyle K Reikia surasti tokį daiktu rinkinį kurio verte butu didziausia Dinaminio sprendimo ideja Tarkime nagrinejame J displaystyle J tajį daikta o kuprineje dar yra K displaystyle K talpos vienetuJeigu daikta imame tuomet galime is J 1 displaystyle J 1 daiktu paimti tiek kad nevirsytu K Dj displaystyle K D j Jeigu neimame tuomet galime is J 1 displaystyle J 1 daiktu paimti tiek kad nevirsytu K displaystyle K Is siu dvieju atveju pasirenkame vertingesnį Taigi problema J displaystyle J daiktu atveju galime isspresti jeigu zinome problemos J 1 displaystyle J 1 daiktu daiktu atveju sprendima Matematiskai tai atrodo taip F j k max F j 1 k F j 1 k Dj V j displaystyle F j mbox k max F j 1 mbox k mbox F j 1 mbox k D j V j Sprendima galima rasti ieskant nuo apacios t y pirma apskaiciuojant F displaystyle F reiksmes su mazesnemis J displaystyle J reiksmemis Taip pat butina atkreipti demesį kad butina tureti tam tikras ribines reiksmes Siuo atveju tai butu F 0 k 0 displaystyle F 0 mbox k 0 Programos fragmentai for ik 0 to K do F 0 ik 0 for J 1 to N do begin for ik 0 to K do begin F J ik F J 1 ik if D J lt ik then F J ik Max F J ik F J 1 ik D J V J end end

Naujausi straipsniai
  • Liepa 19, 2025

    Lietuvos futbolas 1934 m.

  • Liepa 20, 2025

    Lietuvos futbolas 1933 m.

  • Liepa 20, 2025

    Lietuvos futbolas 1926 m.

  • Liepa 19, 2025

    Lietuvos futbolas 1925 m.

  • Liepa 20, 2025

    Lietuvos futbolas 1924 m.

www.NiNa.Az - Studija

    Susisiekite
    Kalbos
    Susisiekite su mumis
    DMCA Sitemap
    © 2019 nina.az - Visos teisės saugomos.
    Autorių teisės: Dadash Mammadov
    Nemokama svetainė, kurioje galima dalytis duomenimis ir failais iš viso pasaulio.
    Viršuje