* fix: imgur to s3 for russian guide without conflict (cherry picked from commit ac90750e36b0dd1fe508c69a2277b75be48e4b95) * fix: remove extra links Co-Authored-By: Randell Dawson <5313213+RandellDawson@users.noreply.github.com> * fix: revert unrelated changes * fix: revert changes
		
			
				
	
	
	
		
			2.8 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	title, localeTitle
| title | localeTitle | 
|---|---|
| Dynamic Programming | Динамическое программирование | 
Динамическое программирование
Динамическое программирование (DP) - это метод программирования для решения задач, где вычисления его подзадач перекрываются: вы пишете свою программу таким образом, чтобы избежать перекомпоновки уже разрешенных проблем. Этот метод обычно применяется в сочетании с memoization, который является методом оптимизации, в котором вы кэшируете ранее вычисленные результаты и возвращаете кешированный результат, когда снова требуется такое же вычисление.
Пример с серией Фибоначчи, который определяется как:
F(N) = F(N-1) + F(N-2)
Это дерево, чтобы найти F (5):
Для вычисления F (5) потребуется вычислить много раз одно и то же F (i). Использование рекурсии:
def fib(n) 
 { 
    if n <= 1: 
        return n 
    return fib(n-1) + fib(n-2); 
 } 
И ниже - оптимизированное решение (с использованием DP)
Для F (5) это решение будет генерировать вызовы, изображенные на изображении выше, работающие в O (2 ^ N).
Вот оптимизированное решение, которое использует DP и memoization:
lookup = {1 : 1, 2 : 1} # Create a lookup-table (a map) inizialized with the first 2 Fibonacci's numbers 
 
 def fib(n) 
 { 
    if n in lookup: # If n is already computed 
        return n # Return the previous computed solution 
    else 
        lookup[n] = fib(n-1) + fib(n-2) # Else, do the recursion. 
    return lookup[n] 
 } 
Кэширование вычисляемых решений в таблице поиска и запрос перед переходом рекурсии позволит программе иметь время работы O (N).
Дополнительная информация:
Что такое динамическое программирование на StackOverflow Разница между memoization и DP на StackOverflow
