iancaple писал(а):
Вот попытаться бы сделать, чтобы при неожиданном прерывании сортировки у Вас результат был максимально вероятный из возможных. Можно хранить и обновлять 2 числовые характеристики каждого элемента, назову их "число побед" и "число поражений". Число побед данного элемента - это число элементов, про которые мы точно знаем, что они "хуже" данного (в этом алгоритме-больше), с каждым благоприятным исходом сравнения оно нарастает не на единицу, а на вес всего поддерева, корнем которого является "проигравший" элемент. Также оно может нарастать, и когда элемент не участвует в сравнении.
А можно эти характеристики и и не обновлять, а после команды на прерывание вытащить из текущего дерева, смотря как оно упаковано (это место в маткаде я не понял). И как-то из них скомпоновать рейтинг элемента.
Если бы Вы как-то доказали Вашу идею математически, я бы взялся написать алгоритм. Без математической сути не ясно, к чему двигаться.
--------
Откатимся несколько назад. Можно рассматривать три вида оптимальных алгоритма:
1. Жадный на ожидаемую негэнтропию
2. Оптимальный по количеству сравнений в наихудшем случае
3. Оптимальный по количеству сравнений в среднем
Риторические вопросы: одинаковы ли эти алгоритмы? чем они отличаются?
Займемся жадным алгоритмом
Mihaylo писал(а):
1) Доказал, что максимум произведения

достигается при

. Подтверждаются Ваши слова: максимум 1 бит можно
ожидать от сравнения двух чисел.
Напомню,

- количество перестановок в случае, когда результат сравнения

, а

- когда результат сравнения противоположный

.
Поставим на повестку дня вопрос существования идеального жадного алгоритма, который на каждом шаге добивается 1 бита ожидаемой информации. Рассмотрим сортировку с конца. В конце сортировке граф сравнений представляет собой простую цепь из

элементов. Для простоты примем, что

является степенью двойки (32, 64, 128, 256 и т.д.). Допустим в конце сортировки реализовался первый исход сравнения, т.е.

, соответственно вариант

не реализовался. Если доказать, что не существуют варианты сравнения, при котором

, то это будет означать несуществование идеального жадного алгоритма.
Для этого в простой цепи уберем ребро между

-ой и

-ой вершиной и посчитаем

для того случая, если бы результат сравнения был противоположный. Получено выражение

, которое принимает минимальное значение

при

или

. Таким образом идеальный жадный алгоритм существует только при самом простейшем случае сортировки

. Предельная достижимая негэнтропия на последнем шаге сортировки равна

.