Достаточно посмотреть на на знаки компонент градиента целевой функции. И в зависимости от этих знаков соответствующая компонента решения будет
![$0$ $0$](https://dxdy-03.korotkov.co.uk/f/2/9/6/29632a9bf827ce0200454dd32fc3be8282.png)
или
![$1$ $1$](https://dxdy-01.korotkov.co.uk/f/0/3/4/034d0a6be0424bffe9a6e7ac9236c0f582.png)
.
вот я не могу доказать почему это так... и, наверное, поэтому не понимаю, что делать с нулевыми компонентами градиента.
Если с помощью условия (1) понизить размерность задачи, то, действительно, условие (1) исчезнет, появятся новые искомый вектор и целевая функция.
Да, но из первой задачи мы узнаём, что все компонеты точки максимума - единицы и нули, кроме какой-то
![$s$ $s$](https://dxdy-03.korotkov.co.uk/f/6/f/9/6f9bad7347b91ceebebd3ad7e6f6f2d182.png)
'ой, это поможет нам решить вторую задачу, в которой мы исключаем эту
![$s$ $s$](https://dxdy-03.korotkov.co.uk/f/6/f/9/6f9bad7347b91ceebebd3ad7e6f6f2d182.png)
'ю компоненту. Получаем целевую функцию (совпадающую по значениям с исходной) для которой не нужно знать чему равна "дробная" компонента
![$k_s$ $k_s$](https://dxdy-04.korotkov.co.uk/f/b/8/b/b8b6c1e8b5f314c5bc5368f5d017904082.png)
:
![$$\frac{1}{a_s+b_s}\left[
a_s \sum b_i +
\sum\limits_{i\neq s}(a_i b_s -a_s b_i)k_i
\right]$$ $$\frac{1}{a_s+b_s}\left[
a_s \sum b_i +
\sum\limits_{i\neq s}(a_i b_s -a_s b_i)k_i
\right]$$](https://dxdy-02.korotkov.co.uk/f/5/c/5/5c554a5bb215be6dd7b40ff3c241579082.png)
условия
![$0\leq k_s \leq 1$ $0\leq k_s \leq 1$](https://dxdy-03.korotkov.co.uk/f/a/3/7/a37b26da391e4cc046dab617d58cd8f182.png)
станут такими:
![$$0\leq \sum\limits_{i\neq s} b_i - \sum\limits_{i\neq s}(a_i+b_i)k_i \leq a_s + b_s
\qquad(3)(4)
$$ $$0\leq \sum\limits_{i\neq s} b_i - \sum\limits_{i\neq s}(a_i+b_i)k_i \leq a_s + b_s
\qquad(3)(4)
$$](https://dxdy-03.korotkov.co.uk/f/2/9/e/29e96349589aa1e6a199e07901e834e582.png)
А компоненты максимума уже известны (учитывая предположение о градиенте):
![$$k_i = \left\{
\begin{array}{ccl}
1&\text{если} &a_i / b_i > a_s / b_s \\
0&\text{если} &a_i / b_i > a_s / b_s \\
???&\text{если} &a_i / b_i = a_s / b_s
\end{array}
\right.$$ $$k_i = \left\{
\begin{array}{ccl}
1&\text{если} &a_i / b_i > a_s / b_s \\
0&\text{если} &a_i / b_i > a_s / b_s \\
???&\text{если} &a_i / b_i = a_s / b_s
\end{array}
\right.$$](https://dxdy-01.korotkov.co.uk/f/8/b/e/8be00bd251867cd0b53ec2bad5ff1f7482.png)
Теперь, получается, что максимум, который ищем - это некая функция от
![$s \in \overline{1,n}$ $s \in \overline{1,n}$](https://dxdy-04.korotkov.co.uk/f/b/7/8/b7868f8fbbeee00e377def5fd0092f1b82.png)
(для
![$s$ $s$](https://dxdy-03.korotkov.co.uk/f/6/f/9/6f9bad7347b91ceebebd3ad7e6f6f2d182.png)
должны выполняться условия (3) и (4)). Если все варинты перебирать, то выходит алгоритм за
![$O(n^2)$ $O(n^2)$](https://dxdy-04.korotkov.co.uk/f/3/9/8/3987120c67ed5a9162aa9841b531c3a982.png)
(выглядит так, что еще быстрее можно). Остаётся случай где "компоненты градиента" равны нулю, там нужно проверить и 0 и 1, что вываливается в экспоненциальное решение.