Динамическое программирование: различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Метки: с мобильного устройства через мобильное приложение через приложение для Android
Добавлен язык D в список поддерживающих мемоизацию (см. https://dlang.org/library/std/functional/memoize.html)
Строка 35:
* восходящее динамическое программирование: все подзадачи, которые впоследствии понадобятся для решения исходной задачи просчитываются заранее и затем используются для построения решения исходной задачи. Этот способ лучше нисходящего программирования в смысле размера необходимого [[стек]]а и количества вызова функций, но иногда бывает нелегко заранее выяснить, решение каких подзадач нам потребуется в дальнейшем.
 
Языки программирования могут запоминать результат вызова функции с определённым набором аргументов ([[мемоизация]]), чтобы ускорить «вычисление по имени». В некоторых языках такая возможность встроена (например, [[Scheme]], [[Common Lisp]], [[Clojure]], [[Perl]], [[D (язык программирования)|D]]), а в некоторых требует дополнительных расширений ([[C++]]).
 
Известны сериальное динамическое программирование, включённое во все учебники по [[исследование операций|исследованию операций]], и несериальное динамическое программирование (НСДП), которое в настоящее время слабо известно, хотя было открыто в 1960-х годах.