Возможна перестройка рекурсии в обычный цикл.
Это в ФП давно уже есть. Там же автоматные доказательства (потому что не каждая рекурсия может быть циклом). Scheme автоматические преобразует правильно оформленные рекурсионные вызовы в циклы во время исполнения программы.
1) при чём тут вообще задача управления, если здесь нет материального объекта?
А кто тогда одни биты в другие переводит? А где лежат сами биты? Тут аж два объекта управления - программа и комп. Программа в данном случае последовательность электронов в транзисторах ячеек памяти.
3) что должно быть целевой функцией и почему?
Ну это даже в теории языков программирования есть:
y=f(x), где y программа, х - исходный код, f - транслятор (обычно рассматривают компилятор, но строго говоря разницы нет). Есть куча выкладок по автоматическому построению f(x) и практические шаги типа того же yacc. Тут однозначно есть ответы, зависит от конкретики.
2) где тут шаги, из чего они возникают?
А это очень правильный вопрос и потому нужен программист. Часть принципов построения известна (например, в кодах какого процессора должен получиться y), а часть нет (универсальные параметры х, которые при вычислении f(x) приведут к у). Тут есть беда. Работать надо с допфункцией х=а(т),
где х - параметры для у=f(x), то есть сам исходный код
а - туева хуча функций, математическое представление программиста, ежу понятно, что а огромное число потому что сам программист это не просто конкретное значение а, а куча а1, а2, ..., аn, потому что программисты эволюционируют/деградируют - читают книги, узнают новые фишки и т.д.
т - входящая задача, цель, решить которую должна программа у. Тут прямо вот тоже огромная беда, потому что формальные правила описания целей отсутствуют.
Рассматривается статичный граф решения задачи, т.е. все узлы которого в процессе решения вычисляются единократно.
Делается один или несколько его минимальных разрезов [иногда возможно регулярных]. Каждый - шаг ДП.
По этой теме тоже есть куча матана, например, поиск оптимального пути на графе. Используется чуть более чем везде (например, в логистике). С такой точки зрения, ДП не признает циклов в пути. То есть маршрут на графе должен являться линией.
Отредактировано utkin (2017-08-19 08:24:00)