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