Π—Π°ΠΊΠ°Π·Π°Ρ‚ΡŒ курсовыС, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅, Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚Ρ‹...
ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° Π·Π°ΠΊΠ°Π·. НСдорого!

ИдСя динамичСского программирования

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π”Π°ΠΆΠ΅ Π² Ρ‚Π°ΠΊΠΎΠΌ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ случаС вычислСния всСго Π΄Π²ΡƒΡ… чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ ΠΌΡ‹ ΡƒΠΆΠ΅ посчитали F (2) Π΄Π²Π°ΠΆΠ΄Ρ‹. Если ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ дальшС ΠΈ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ F (5), Ρ‚ΠΎ F (2) посчитаСтся Π΅Ρ‰Ρ‘ Π΄Π²Π° Ρ€Π°Π·Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ для вычислСния F (5) Π±ΡƒΠ΄ΡƒΡ‚ Π½ΡƒΠΆΠ½Ρ‹ ΠΎΠΏΡΡ‚ΡŒ F (3) ΠΈ F (4). ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: простой рСкурсивный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡ…ΠΎΠ΄ΠΎΠ²Π°Ρ‚ΡŒ врСмя Π½Π° Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ΡƒΠΆΠ΅ Ρ€Π΅ΡˆΠ°Π». Одним ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½Ρ‹Ρ… свойств… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ИдСя динамичСского программирования (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠšΠ»ΡŽΡ‡Π΅Π²Π°Ρ идСя Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ достаточно проста. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ, трСбуСтся Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ части Π·Π°Π΄Π°Ρ‡ΠΈ (ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ), послС Ρ‡Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ Π² ΠΎΠ΄Π½ΠΎ ΠΎΠ±Ρ‰Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Часто ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΡΡ‚ΠΈΡ… ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹. ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ динамичСского программирования состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, сократив Ρ‚Π΅ΠΌ самым количСство вычислСний. Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² ΡΠ»ΡƒΡ‡Π°ΡΡ…, ΠΊΠΎΠ³Π΄Π° число ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π²Π΅Π»ΠΈΠΊΠΎ.

ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Π°Ρ подструктура Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ исходной Π·Π°Π΄Π°Ρ‡ΠΈ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ Π² Π³Ρ€Π°Ρ„Π΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ (ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ s) Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ (ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ t) ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½ Ρ‚Π°ΠΊ: сначала считаСм ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ ΠΈΠ· Π²ΡΠ΅Ρ… Π²Π΅Ρ€ΡˆΠΈΠ½, смСТных с s, Π΄ΠΎ t, Π° Π·Π°Ρ‚Π΅ΠΌ, учитывая вСса Ρ€Π΅Π±Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ s ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π° со ΡΠΌΠ΅ΠΆΠ½Ρ‹ΠΌΠΈ Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ t (Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΊΡƒΡŽ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠΉΡ‚ΠΈ). Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ присутствуСт ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Π°Ρ подструктура, продСлывая ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Ρ€ΠΈ шага.

  • 1. Π Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.
  • 2. НахоТдСниС ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ рСкурсивно, продСлывая Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Ρ‚Ρ€Π΅Ρ…ΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.
  • 3. ИспользованиС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ для конструирования Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ исходной Π·Π°Π΄Π°Ρ‡ΠΈ.

ΠŸΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΡ… Π½Π° ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ Π΅Ρ‰Ρ‘ мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ Ρ‚. Π΄., ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡ€ΠΈΡ…одят ΠΊ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΡΠ»ΡƒΡ‡Π°ΡŽ Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ€Π΅ΡˆΠ°Π΅ΠΌΠΎΠΉ Π·Π° ΠΊΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½ΠΎΠ΅ врСмя (ΠΎΡ‚Π²Π΅Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ сразу). К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ссли Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ n!, Ρ‚ΠΎ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ 1! = 1 (ΠΈΠ»ΠΈ 0! = 1).

ΠŸΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ количСства Π·Π°Π΄Π°Ρ‡ (Π½Π΅ ΠΎΠ΄Π½ΠΎΠΉ) большСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π° (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π· ΠΏΡ€ΠΎΠ΄Π΅Π»Ρ‹Π²Π°Π΅ΠΌ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅). Π―Ρ€ΠΊΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ являСтся вычислСниС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ,.

F (3) = F (2) + F (1) ΠΈ F (4) = F (3) + F (2).

Π΄Π°ΠΆΠ΅ Π² Ρ‚Π°ΠΊΠΎΠΌ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ случаС вычислСния всСго Π΄Π²ΡƒΡ… чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ ΠΌΡ‹ ΡƒΠΆΠ΅ посчитали F (2) Π΄Π²Π°ΠΆΠ΄Ρ‹. Если ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ дальшС ΠΈ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ F (5), Ρ‚ΠΎ F (2) посчитаСтся Π΅Ρ‰Ρ‘ Π΄Π²Π° Ρ€Π°Π·Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ для вычислСния F (5) Π±ΡƒΠ΄ΡƒΡ‚ Π½ΡƒΠΆΠ½Ρ‹ ΠΎΠΏΡΡ‚ΡŒ F (3) ΠΈ F (4). ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: простой рСкурсивный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡ…ΠΎΠ΄ΠΎΠ²Π°Ρ‚ΡŒ врСмя Π½Π° Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ΡƒΠΆΠ΅ Ρ€Π΅ΡˆΠ°Π».

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ…ΠΎΠ΄Π° событий ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Ρ€Π΅ΡˆΠ°Π»ΠΈΡΡŒ, ΠΈ ΠΊΠΎΠ³Π΄Π° снова потрСбуСтся Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Π΅Π³ΠΎ Π·Π°Π½ΠΎΠ²ΠΎ, просто Π΄ΠΎΡΡ‚Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΈΠ· ΠΏΠ°ΠΌΡΡ‚ΠΈ. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ называСтся ΠΌΠ΅ΠΌΠΎΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. МоТно ΠΏΡ€ΠΎΠ΄Π΅Π»Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ — Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли ΠΌΡ‹ Ρ‚ΠΎΡ‡Π½ΠΎ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ большС Π½Π΅ ΠΏΠΎΡ‚рСбуСтся, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΊΠΈΠ½ΡƒΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· ΠΏΠ°ΠΌΡΡ‚ΠΈ, освободив Π΅Ρ‘ Π΄Π»Ρ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π½ΡƒΠΆΠ΄, ΠΈΠ»ΠΈ Ссли процСссор простаиваСт ΠΈ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, Π΅Ρ‰Ρ‘ Π½Π΅ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡, понадобится Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΈΡ… Π·Π°Ρ€Π°Π½Π΅Π΅.

Подводя ΠΈΡ‚ΠΎΠ³ΠΈ Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ динамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ свойствами Π·Π°Π΄Π°Ρ‡ΠΈ:

  • Β· ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ;
  • Β· ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Π°Ρ подструктура;
  • Β· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ запоминания Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡.

ДинамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ придСрТиваСтся Π΄Π²ΡƒΡ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ Π·Π°Π΄Π°Ρ‡:

  • Β· нисходящСС динамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: Π·Π°Π΄Π°Ρ‡Π° разбиваСтся Π½Π° ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΎΠ½ΠΈ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‚ΡΡ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ исходной Π·Π°Π΄Π°Ρ‡ΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡.
  • Β· восходящСС динамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: всС ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ впослСдствии понадобятся для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ исходной Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΡ€ΠΎΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для построСния Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ исходной Π·Π°Π΄Π°Ρ‡ΠΈ. Π­Ρ‚ΠΎΡ‚ способ Π»ΡƒΡ‡ΡˆΠ΅ нисходящСго программирования Π² ΡΠΌΡ‹ΡΠ»Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ стСка ΠΈ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Π° Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π±Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅Π»Π΅Π³ΠΊΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΈΡ… ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ Π½Π°ΠΌ потрСбуСтся Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ.

Π―Π·Ρ‹ΠΊΠΈ программирования ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (мСмоизация), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ «Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ». Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках такая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ встроСна (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Scheme, Common Lisp, Perl), Π° Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ (C++).

Π˜Π·Π²Π΅ΡΡ‚Π½Ρ‹ ΡΠ΅Ρ€ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ динамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΠΎΠ΅ Π²ΠΎ Π²ΡΠ΅ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠΈ ΠΏΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΈ Π½Π΅ΡΠ΅Ρ€ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ динамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΠ‘Π”ΠŸ), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π² Π½Π°ΡΡ‚оящСС врСмя слабо извСстно, хотя Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ Π² 1960;Ρ… Π³ΠΎΠ΄Π°Ρ….

ΠžΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ динамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ являСтся частным случаСм Π½Π΅ΡΠ΅Ρ€ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ динамичСского программирования, ΠΊΠΎΠ³Π΄Π° Π³Ρ€Π°Ρ„ взаимосвязСй ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… — просто ΠΏΡƒΡ‚ΡŒ. ΠΠ‘Π”ΠŸ, являясь СстСствСнным ΠΈ ΠΎΠ±Ρ‰ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ для ΡƒΡ‡Π΅Ρ‚Π° структуры Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, рассматриваСт мноТСство ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΈ/ΠΈΠ»ΠΈ Ρ†Π΅Π»Π΅Π²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊΠ°ΠΊ рСкурсивно Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΠΌΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π­Ρ‚ΠΎ позволяСт Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ поэтапно, Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΡΡ‚Π°ΠΏΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… этапах, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ этого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° прямо зависит ΠΎΡ‚ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π³Ρ€Π°Ρ„Π° взаимосвязСй ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Если этот Π³Ρ€Π°Ρ„ достаточно Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½, Ρ‚ΠΎ ΠΎΠ±ΡŠΡ‘ΠΌ вычислСний Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ этапС ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ Π² Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Ρ… ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ….

Одним ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½Ρ‹Ρ… свойств Π·Π°Π΄Π°Ρ‡, Ρ€Π΅ΡˆΠ°Π΅ΠΌΡ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ динамичСского программирования, являСтся Π°Π΄Π΄ΠΈΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ. НСаддитивныС Π·Π°Π΄Π°Ρ‡ΠΈ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. НапримСр, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ инвСстиций ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅Π°Π΄Π΄ΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ ΠΈ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сравнСния стоимости ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ инвСстиций ΠΈ Π±Π΅Π· Π½ΠΈΡ….

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ