Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
В информатике говорят, что проблема обладает оптимальной подструктурой, если оптимальное решение может быть построено из оптимальных решений её подзадач. Это свойство используется для оценки применимости жадных алгоритмов к решению проблемы. Как правило, жадный алгоритм применяется для решения проблемы с оптимальной подструктурой, если посредством индукции можно доказать, что он оптимален на каждом шаге. В противном случае, если проблема также характеризуется наличием перекрывающихся подзадач, могут быть использованы методы «разделяй и властвуй» или динамическое программирование. Если подходящих жадных алгоритмов нет, и проблема не демонстрирует перекрывающиеся подзадачи, часто наилучшим решением является длительный, но прямой поиск по пространству решений. При применении динамического программирования к задачам математической оптимизации принцип оптимальности Ричарда Беллмана основан на идее, что для решения задачи динамической оптимизации от начального момента времени t до конечного момента времени T необходимо неявно решать подзадачи, начиная с более поздних моментов времени s, где t < s < T. Это является примером оптимальной подструктуры. Принцип оптимальности используется для вывода уравнения Беллмана, которое показывает, как значение задачи, начинающейся с момента t, связано со значением задачи, начинающейся с момента s.
In computer science, a problem is said to have optimal substructure if an optimal solution can be constructed from optimal solutions of its subproblems. This property is used to determine the usefulness of greedy algorithms for a problem. Typically, a greedy algorithm is used to solve a problem with optimal substructure if it can be proven by induction that this is optimal at each step. Otherwise, provided the problem exhibits overlapping subproblems as well, divide and conquer methods or dynamic programming may be used. If there are no appropriate greedy algorithms and the problem fails to exhibit overlapping subproblems, often a lengthy but straightforward search of the solution space is the best alternative. In the application of dynamic programming to mathematical optimization, Richard Bellman's Principle of Optimality is based on the idea that in order to solve a dynamic optimization problem from some starting period t to some ending period T, one implicitly has to solve subproblems starting from later dates s, where t<s<T. This is an example of optimal substructure. The Principle of Optimality is used to derive the Bellman equation, which shows how the value of the problem starting from t is related to the value of the problem starting from s.
Пример
Рассмотрим задачу нахождения кратчайшего пути для поездки между двумя городами на автомобиле, как показано на рисунке 1. Такой пример, скорее всего, обладает оптимальной подструктурой. То есть, если кратчайший маршрут из Сиэтла в Лос-Анджелес проходит через Портленд, а затем через Сакраменто, то кратчайший маршрут из Портленда в Лос-Анджелес также должен проходить через Сакраменто. Таким образом, задача о том, как добраться из Портленда в Лос-Анджелес, является частью задачи о том, как добраться из Сиэтла в Лос-Анджелес. (Волнистые линии на графе представляют решения подзадач.) В качестве примера задачи, которая вряд ли обладает оптимальной подструктурой, рассмотрим задачу поиска самого дешевого авиабилета из Буэнос-Айреса в Москву. Даже если этот билет предполагает пересадки в Майами и затем в Лондоне, мы не можем заключить, что самый дешевый билет из Майами в Москву также включает пересадку в Лондоне, поскольку цена, по которой авиакомпания продает билет с несколькими рейсами, обычно не равна сумме цен на отдельные рейсы, входящие в этот билет.
Consider finding a shortest path for traveling between two cities by car, as illustrated in Figure 1. Such an example is likely to exhibit optimal substructure. That is, if the shortest route from Seattle to Los Angeles passes through Portland and then Sacramento, then the shortest route from Portland to Los Angeles must pass through Sacramento too. That is, the problem of how to get from Portland to Los Angeles is nested inside the problem of how to get from Seattle to Los Angeles. (The wavy lines in the graph represent solutions to the subproblems.) As an example of a problem that is unlikely to exhibit optimal substructure, consider the problem of finding the cheapest airline ticket from Buenos Aires to Moscow. Even if that ticket involves stops in Miami and then London, we can't conclude that the cheapest ticket from Miami to Moscow stops in London, because the price at which an airline sells a multi flight trip is usually not the sum of the prices at which it would sell the individual flights in the trip.
Определение
Можно дать несколько более формальное определение оптимальной подструктуры. Пусть "проблема" – это набор "альтернатив", и пусть у каждой альтернативы есть связанная с ней стоимость, c(a). Задача состоит в том, чтобы найти набор альтернатив, минимизирующих c(a). Предположим, что альтернативы можно разбить на подмножества, то есть каждая альтернатива принадлежит только одному подмножеству. Предположим, что у каждого подмножества есть своя функция стоимости. Можно найти минимумы каждой из этих функций стоимости, а также минимумы глобальной функции стоимости, ограниченные теми же подмножествами. Если эти минимумы совпадают для каждого подмножества, то становится почти очевидным, что глобальный минимум можно выбрать не из полного набора альтернатив, а только из набора, состоящего из минимумов меньших, локальных функций стоимости, которые мы определили. Если минимизация локальных функций является задачей "более низкого порядка", и (в особенности) если после конечного числа таких упрощений задача становится тривиальной, то задача обладает оптимальной подструктурой.
A slightly more formal definition of optimal substructure can be given. Let a "problem" be a collection of "alternatives", and let each alternative have an associated cost, c(a). The task is to find a set of alternatives that minimizes c(a). Suppose that the alternatives can be partitioned into subsets, i. e. each alternative belongs to only one subset. Suppose each subset has its own cost function. The minima of each of these cost functions can be found, as can the minima of the global cost function, restricted to the same subsets. If these minima match for each subset, then it's almost obvious that a global minimum can be picked not out of the full set of alternatives, but out of only the set that consists of the minima of the smaller, local cost functions we have defined. If minimizing the local functions is a problem of "lower order", and (specifically) if, after a finite number of these reductions, the problem becomes trivial, then the problem has an optimal substructure.