Проверьте.
Я только коэффициент получу. Делаем через указание автора.
Пусть
![$k$ $k$](https://dxdy-03.korotkov.co.uk/f/6/3/b/63bb9849783d01d91403bc9a5fea12a282.png)
- номер шага. Число элементов в массиве равно
![$2n$ $2n$](https://dxdy-01.korotkov.co.uk/f/4/7/c/47c124971e1327d1d3882a141f95face82.png)
.
![$a_k$ $a_k$](https://dxdy-01.korotkov.co.uk/f/8/8/8/888b6c2a06fc366952ac84a80c43f5f782.png)
- число элементов, которые еще ни разу ни с кем не сравнивались
![$b_k$ $b_k$](https://dxdy-01.korotkov.co.uk/f/c/1/a/c1a30f400620a0b6da57046c4b40e16b82.png)
- число элементов, которые может быть могут быть минимальными, но уже не могут быть максимальными
![$c_k$ $c_k$](https://dxdy-01.korotkov.co.uk/f/0/a/5/0a5ec44b76d454790dd94ab5cfe77d1282.png)
- число элементов, которые может быть могут быть максимальными, но уже не могут быть минимальными
![$d_k$ $d_k$](https://dxdy-01.korotkov.co.uk/f/8/5/2/852e27f19a205399dc63eb61502d744982.png)
- число элементов, которые уже не могут быть максимальными и не могут быть минимальными
(у
Legioner93 другое описание
![$b,c$ $b,c$](https://dxdy-04.korotkov.co.uk/f/3/5/b/35b7cfc2e9d02e39f655f6dfc01e1ca582.png)
)
Далее, автор спрашивает, как меняются эти числа при сравнениях?
Множества элементов будем обозначать
![$A,B,C,D$ $A,B,C,D$](https://dxdy-01.korotkov.co.uk/f/c/b/6/cb63236133ac227ec22a8b52d08036a782.png)
, будем писать
![$x_M, y_N$ $x_M, y_N$](https://dxdy-02.korotkov.co.uk/f/d/6/6/d66cd849d2e719e0dc38d2d25641648482.png)
в смысле
![$x \in M, y\in N$ $x \in M, y\in N$](https://dxdy-04.korotkov.co.uk/f/7/c/2/7c22a8fc38708abd656bf101bca55c6b82.png)
, где
![$M,N\in \{A,B,C,D\}$ $M,N\in \{A,B,C,D\}$](https://dxdy-02.korotkov.co.uk/f/5/a/d/5adeb6da83b04697bff102ccaa4e90b682.png)
Для того, чтобы определить, как могут меняться
![$a_k,b_k,c_k,d_k$ $a_k,b_k,c_k,d_k$](https://dxdy-03.korotkov.co.uk/f/a/c/6/ac63c22531cab9414f23ce4e8085470882.png)
надо разобрать все случаи
![$x_M<y_N$ $x_M<y_N$](https://dxdy-02.korotkov.co.uk/f/5/7/d/57d0b1e4ec6d3a07ef447f3b27c601e182.png)
для
![$M,N\in \{A,B,C\}$ $M,N\in \{A,B,C\}$](https://dxdy-01.korotkov.co.uk/f/c/0/d/c0d8210015c87405a436789cbc63feac82.png)
(всего 6 случаев). Каждому сравнению
![$x_M<y_N$ $x_M<y_N$](https://dxdy-02.korotkov.co.uk/f/5/7/d/57d0b1e4ec6d3a07ef447f3b27c601e182.png)
соответствует преобразование
![$(a_k,b_k,c_k,d_k)\to(a_{k+1},b_{k+1},c_{k+1},d_{k+1})$ $(a_k,b_k,c_k,d_k)\to(a_{k+1},b_{k+1},c_{k+1},d_{k+1})$](https://dxdy-02.korotkov.co.uk/f/1/e/2/1e2d32b1b822bbbd36cbeb91c7ffe2cc82.png)
. Каждому алгоритму, находящему максимум и минимум, соответствует некая последовательность сравнений. Последовательности сравнений соответствует последовательность шагов в пространстве, ведущая из точки
![$(n,0,0,0)$ $(n,0,0,0)$](https://dxdy-03.korotkov.co.uk/f/6/d/b/6dbd370d2abd7ea37478ec2e7bca779082.png)
в точку
![$(0,1,1,2n-2)$ $(0,1,1,2n-2)$](https://dxdy-02.korotkov.co.uk/f/d/c/5/dc5e06495a7269830cc185c8dd9b4d1882.png)
. Метрика в пространстве
![$\sum |x_i-y_i|$ $\sum |x_i-y_i|$](https://dxdy-02.korotkov.co.uk/f/9/9/4/994180e17c681b19c64df3da4fedc98f82.png)
. Нам надо тогда доказать, что для любой последовательности сравнений существует цепочка, состоящая из
![$3n+O(1)$ $3n+O(1)$](https://dxdy-03.korotkov.co.uk/f/6/6/9/669b930a173e6e39dfca1f2854fa5cec82.png)
шагов.
Разберем все случаи
![$x_M<y_N$ $x_M<y_N$](https://dxdy-02.korotkov.co.uk/f/5/7/d/57d0b1e4ec6d3a07ef447f3b27c601e182.png)
. Формулы можно выписать явно:
![$$1. \ x_A<y_A \to\left{
\begin{cases}
a_{k+1}=a_k-2 \\
b_{k+1}=b_k+1 \\
c_{k+1}=c_k+1 \\
d_{k+1}=d_k
\end{cases}$$ $$1. \ x_A<y_A \to\left{
\begin{cases}
a_{k+1}=a_k-2 \\
b_{k+1}=b_k+1 \\
c_{k+1}=c_k+1 \\
d_{k+1}=d_k
\end{cases}$$](https://dxdy-01.korotkov.co.uk/f/c/1/7/c175a96f6d0a8f5904cc049db45ceaa682.png)
![$$2. \ x_B<y_B \to\left{
\begin{cases}
a_{k+1}=a_k \\
b_{k+1}=b_k-1 \\
c_{k+1}=c_k \\
d_{k+1}=d_k+1
\end{cases}$$ $$2. \ x_B<y_B \to\left{
\begin{cases}
a_{k+1}=a_k \\
b_{k+1}=b_k-1 \\
c_{k+1}=c_k \\
d_{k+1}=d_k+1
\end{cases}$$](https://dxdy-03.korotkov.co.uk/f/a/0/f/a0fbd7d1dc2a84feafd112d5b47d2ab382.png)
![$$3. \ x_C<y_C \to\left{
\begin{cases}
a_{k+1}=a_k \\
b_{k+1}=b_k \\
c_{k+1}=c_k-1 \\
d_{k+1}=d_k+1
\end{cases}$$ $$3. \ x_C<y_C \to\left{
\begin{cases}
a_{k+1}=a_k \\
b_{k+1}=b_k \\
c_{k+1}=c_k-1 \\
d_{k+1}=d_k+1
\end{cases}$$](https://dxdy-03.korotkov.co.uk/f/e/5/7/e57af6b7eabd028737419489fe4c610f82.png)
![$$4. \ x_A*y_B \to\left{
\begin{cases}
a_{k+1}=a_k -1\\
b_{k+1}=b_k+[x_A>y_B] \\
c_{k+1}=c_k \\
d_{k+1}=d_k+[x_A<y_B]
\end{cases}$$ $$4. \ x_A*y_B \to\left{
\begin{cases}
a_{k+1}=a_k -1\\
b_{k+1}=b_k+[x_A>y_B] \\
c_{k+1}=c_k \\
d_{k+1}=d_k+[x_A<y_B]
\end{cases}$$](https://dxdy-04.korotkov.co.uk/f/f/3/b/f3b7c4914da41bc7b79239006dfec98582.png)
![$$5. \ x_A*y_C \to\left{
\begin{cases}
a_{k+1}=a_k-1 \\
b_{k+1}=b_k \\
c_{k+1}=c_k+[x_A<y_C] \\
d_{k+1}=d_k+[x_A>y_C]
\end{cases}$$ $$5. \ x_A*y_C \to\left{
\begin{cases}
a_{k+1}=a_k-1 \\
b_{k+1}=b_k \\
c_{k+1}=c_k+[x_A<y_C] \\
d_{k+1}=d_k+[x_A>y_C]
\end{cases}$$](https://dxdy-04.korotkov.co.uk/f/f/c/c/fccac8d6fd6eda7c860cb0399c5548c882.png)
![$$6. \ x_B*y_C \to\left{
\begin{cases}
a_{k+1}=a_k \\
b_{k+1}=b_k-[x_C<y_B] \\
c_{k+1}=c_k-[x_C<y_B] \\
d_{k+1}=d_k+2[x_C<y_B]
\end{cases}$$ $$6. \ x_B*y_C \to\left{
\begin{cases}
a_{k+1}=a_k \\
b_{k+1}=b_k-[x_C<y_B] \\
c_{k+1}=c_k-[x_C<y_B] \\
d_{k+1}=d_k+2[x_C<y_B]
\end{cases}$$](https://dxdy-04.korotkov.co.uk/f/7/a/6/7a687f1ece8a33b3cae6c1a2b2cd43cc82.png)
Здесь
![$[x_M<y_N]=1 \Leftrightarrow x_M<y_N$ $[x_M<y_N]=1 \Leftrightarrow x_M<y_N$](https://dxdy-04.korotkov.co.uk/f/b/e/5/be5ca42ce0e45ab726dc671f1d0ed0d482.png)
, иначе
![$[x_M<y_N]=0$ $[x_M<y_N]=0$](https://dxdy-04.korotkov.co.uk/f/b/9/2/b92be5cf2ef26b3dbd731ac50edbbf5d82.png)
- нотация Айверсона.
Покажем, что имеет смысл рассматривать только случай, когда все сравнения делаются независимо. Всего 6 типов сравнений. При сравнении с элементами из
![$A$ $A$](https://dxdy-02.korotkov.co.uk/f/5/3/d/53d147e7f3fe6e47ee05b88b166bd3f682.png)
у нас нет никакой информации об элементе из
![$A$ $A$](https://dxdy-02.korotkov.co.uk/f/5/3/d/53d147e7f3fe6e47ee05b88b166bd3f682.png)
, поэтому значения
![$[x_M<y_N]$ $[x_M<y_N]$](https://dxdy-02.korotkov.co.uk/f/9/6/6/966970901bb3fee5316212ea7457439582.png)
при
![$M=A\vee N=A$ $M=A\vee N=A$](https://dxdy-02.korotkov.co.uk/f/d/6/c/d6cb82f580961f84fe698209cf7e840982.png)
произвольны. Далее, значение
![$[x_B<y_B]$ $[x_B<y_B]$](https://dxdy-04.korotkov.co.uk/f/7/b/6/7b634c44c87602d0d62d0b7e56b34b7282.png)
произвольно, поскольку об
![$x_B$ $x_B$](https://dxdy-04.korotkov.co.uk/f/3/0/d/30d1eec9236bb81cd41ed97fa187893e82.png)
мы знаем лишь то, что
![$x_B$ $x_B$](https://dxdy-04.korotkov.co.uk/f/3/0/d/30d1eec9236bb81cd41ed97fa187893e82.png)
меньше некоторого элемента, который ушел в
![$C$ $C$](https://dxdy-02.korotkov.co.uk/f/9/b/3/9b325b9e31e85137d1de765f43c0f8bc82.png)
, а из
![$C$ $C$](https://dxdy-02.korotkov.co.uk/f/9/b/3/9b325b9e31e85137d1de765f43c0f8bc82.png)
потом уйдет в
![$D$ $D$](https://dxdy-04.korotkov.co.uk/f/7/8/e/78ec2b7008296ce0561cf83393cb746d82.png)
, значит в
![$B$ $B$](https://dxdy-03.korotkov.co.uk/f/6/1/e/61e84f854bc6258d4108d08d4c4a085282.png)
никогда не попадет, кроме того, как только мы узнаем
![$[x_B<y_B]$ $[x_B<y_B]$](https://dxdy-04.korotkov.co.uk/f/7/b/6/7b634c44c87602d0d62d0b7e56b34b7282.png)
, так сразу
![$x_B$ $x_B$](https://dxdy-04.korotkov.co.uk/f/3/0/d/30d1eec9236bb81cd41ed97fa187893e82.png)
уйдет из
![$B$ $B$](https://dxdy-03.korotkov.co.uk/f/6/1/e/61e84f854bc6258d4108d08d4c4a085282.png)
в
![$D$ $D$](https://dxdy-04.korotkov.co.uk/f/7/8/e/78ec2b7008296ce0561cf83393cb746d82.png)
; аналогично для
![$y_B$ $y_B$](https://dxdy-03.korotkov.co.uk/f/6/e/d/6ed1ef41bd999ee588bbc5041bb1e9fd82.png)
; аналогично произвольно
![$[x_C<y_C]$ $[x_C<y_C]$](https://dxdy-01.korotkov.co.uk/f/4/8/1/481ef30f015d9da7280edb8d0e058b7482.png)
. Т.е. внутри каждого
![$B,C$ $B,C$](https://dxdy-04.korotkov.co.uk/f/7/5/4/754beb396e767ed79dd8b0e0176803c082.png)
нет никакой информации на каждом шаге. Наконец, при выборе
![$x_C,y_B$ $x_C,y_B$](https://dxdy-02.korotkov.co.uk/f/9/2/3/923e286467ce3a2b72200250842ab74982.png)
для вычисления
![$[x_C<y_B]$ $[x_C<y_B]$](https://dxdy-02.korotkov.co.uk/f/d/0/3/d03a8eaa30e69bbd56ee146ca75dc15782.png)
не имеет смысла брать те
![$x'_C, y'_B$ $x'_C, y'_B$](https://dxdy-01.korotkov.co.uk/f/8/0/d/80d507fb33f52fc6045b950e1a3cab4482.png)
для которых мы при преобразовании типа
![$1$ $1$](https://dxdy-01.korotkov.co.uk/f/0/3/4/034d0a6be0424bffe9a6e7ac9236c0f582.png)
узнали, что
![$x'_C<y'_B$ $x'_C<y'_B$](https://dxdy-02.korotkov.co.uk/f/9/7/9/979889725acdebb246b1aaff5b4d61d282.png)
- мы так ничего нового не узнаем, алгоритм выполнит только лишнее действие, множества
![$A,B,C,D$ $A,B,C,D$](https://dxdy-01.korotkov.co.uk/f/c/b/6/cb63236133ac227ec22a8b52d08036a782.png)
не изменятся. А исключая этот факт, значение
![$[x_C<y_B]$ $[x_C<y_B]$](https://dxdy-02.korotkov.co.uk/f/d/0/3/d03a8eaa30e69bbd56ee146ca75dc15782.png)
в остальном произвольно.
В силу независимости сравнений подберем
![$x_M,y_N$ $x_M,y_N$](https://dxdy-02.korotkov.co.uk/f/d/6/b/d6b33327f1bdb2051c4c610f631f5a1382.png)
в каждом шаге так, чтобы алгоритм работал медленнее всего и шел по самому длинному пути (в преобразованиях 4 и 5 подбираем элементы так, чтобы они не переходили сразу в
![$D$ $D$](https://dxdy-04.korotkov.co.uk/f/7/8/e/78ec2b7008296ce0561cf83393cb746d82.png)
). В результате получим следующие векторы преобразований:
![$1. \ (-2,1,1,0)$ $1. \ (-2,1,1,0)$](https://dxdy-03.korotkov.co.uk/f/e/7/2/e72496b13709ae018a21f7a7c5fac91282.png)
![$2. \ (-1,0,1,0)$ $2. \ (-1,0,1,0)$](https://dxdy-02.korotkov.co.uk/f/5/3/c/53c19a5ea86f3f8d6800ab5ac16d00b782.png)
![$3. \ (-1,1,0,0)$ $3. \ (-1,1,0,0)$](https://dxdy-03.korotkov.co.uk/f/6/5/c/65c4f0907cea45746670ae0d70f5f45682.png)
![$4. \ (0,-1,0,1)$ $4. \ (0,-1,0,1)$](https://dxdy-03.korotkov.co.uk/f/6/8/d/68dce34f0c4ed625575fea0e0181974f82.png)
![$5. \ (0,0,-1,1)$ $5. \ (0,0,-1,1)$](https://dxdy-01.korotkov.co.uk/f/4/e/4/4e48d866481274d2893027fc7811db7782.png)
![$6. \ (0,0,0,0)$ $6. \ (0,0,0,0)$](https://dxdy-03.korotkov.co.uk/f/e/1/7/e175d2bc1dfdd2d1e338f82b7b7c7ab282.png)
Суммируем еще 2-ю и 3-ю координату, выкинем линейно зависимые вектора, получим в 3-хмерном пространстве лишь
![$(-2,2,0), (-1,1,0), (0,-1,1)$ $(-2,2,0), (-1,1,0), (0,-1,1)$](https://dxdy-04.korotkov.co.uk/f/3/5/2/352ee4e952d47fe62743f4307c37505d82.png)
. Здесь оптимальный путь единственен -
![$n$ $n$](https://dxdy-02.korotkov.co.uk/f/5/5/a/55a049b8f161ae7cfeb0197d75aff96782.png)
раз 1-е преобразование и
![$2n$ $2n$](https://dxdy-01.korotkov.co.uk/f/4/7/c/47c124971e1327d1d3882a141f95face82.png)
раз 2-е. При подъеме пути обратно из 3-хмерного в 4-хмерное пространство длина пути сохранится та же. Значит для поиска максимума и минимума в массиве длиной
![$2n$ $2n$](https://dxdy-01.korotkov.co.uk/f/4/7/c/47c124971e1327d1d3882a141f95face82.png)
надо в худшем случае
![$3n$ $3n$](https://dxdy-01.korotkov.co.uk/f/c/e/0/ce0fd5ce4c3daccc9742067d69bac5aa82.png)
сравнений, отсюда получаем число сравнений
![$\frac{3}{2}n+O(1)$ $\frac{3}{2}n+O(1)$](https://dxdy-04.korotkov.co.uk/f/f/a/8/fa82271930bb1e16fb349825927f685e82.png)
.
(Оффтоп)
У меня, кстати, Кормен другой, у меня номер упражнения 10.1-2*