Добрый день, друзья!
Благодаря
iancaple удалось получить формулы для расчета числа перестановок для ряда алгоритмов сортировки. Я полностью удовлетворен полученным результатом.
Теперь у меня возникла новая задача по поводу перестановок. Нужно разработать оптимальный алгоритм сортировки. Не секрет, что в основе алгоритмов сортировки лежит операция сравнения двух элементов массива, при этом минимальное число таких сравнений для массива из

чисел равно

.
В каждой итерации алгоритм должен сравнить два таких элемента массива и получить такое дерево сортировки, чтобы число перестановок

на данной итерации было минимальным. То есть алгоритм должен быть жадным по этому критерию.
Учитывая, что в зависимости от значений сравниваемых чисел может получиться либо

(

), либо

(

), то число перестановок

будет случайной величиной. Следовательно минимизировать придется математическое ожидание величины

. Считать, что в каждой итерации

и

равновероятны.
Изначально граф представляет собой лес из

вершин, не связанных с дугами (

компонент связности). Число перестановок равно

.
Итерация 1. Из соображений симметрии можно взять любые два числа и сравнить. В результате получим однозначно

перестановок.
Дальнейшие итерации усложняются.
Итерация 2. У меня получилось, что все варианты сравнения дают абсолютно одинаковый результат по величине

, но получаются графы сравнения различной структуры. Наверное алгоритм должен сделать прогноз на одну итерацию вперед...
Итерация 3. Я рассмотрел несколько вариантов выбора в итерации 2 и пришел к выводу, что многие варианты дают одинаковый результат

, но не все. Есть исключения: например, сравниваем

и

в первой итерации, затем

и

- во второй итерации и, наконец, в третьей итерации сравниваются наибольшее число в паре

с наименьшим числом в паре

. При таком алгоритме получается

, что меньше чем

.
Итерация 4. Так как рассмотрел не все варианты в итерации 3, поэтому испытываю сложность в дальнейшем продвижении.
Нужно научиться вычислять число перестановок при произвольном графе сортировки (не только вида "дерево").
Допустим дана матрица смежности ориентированного графа. Как вычислять число перестановок?