Изменения

Перейти к: навигация, поиск

Таблица инверсий

Нет изменений в размере, 00:50, 26 ноября 2010
Нет описания правки
Ниже описанные алгоритмы работают за время О(n^2), но их можно ускорить до О(n*log(n)) ускорив процесс поиска, например двоичными деревьями.
{| width=="150" align="right" cellpaddingАлгоритм построения ="5" border="1" style="border-collapse: collapse;"|-| <span style="font-size:smaller;">Получение Для получения таблицы инверсии инверсий из таблицы перестановки</span> [5 9 1 8 2 6 4 7 3] вводим таблицу равной по длине таблице перестановки(не умаляя общности длина равна n) и на n- т. перестановки [ ное место записываем 0] [ ; ищем число i (от n-1 0] [ 2 до 1 0]) в таблице перестановки, и смотрим: сколько чисел больше i находится слева от числа i, полученное число записываем в таблицу инверсий на i-тое место. [ 2 2 1 0] [ 0 2 2 1 0]=== Алгоритм восстановления === [ 4 0 2 2 1 0] [ 6 4 0 2 2 1 0] [ 3 6 4 0 2 2 Для восстановления таблицы перестановки из таблицы инверсий(не умаляя общности длина таблицы равна n) создаем таблицу, которую будем расширять, по мере добавления в неё чисел, добавляем в эту таблицу число i (где i от n до 1 0] [2 3 6 4 0 2 2 ) на позицию k+1 0] , где k - число в таблице инверсий на i- ттом месте. инверсии|-}{| width="150" align="right" cellpadding="5" border="1" style="border-collapse: collapse;"
|-
| <span style="font-size:smaller;">Получение таблицы перестановки из таблицы инверсии</span>
|-}
{|width="150" align="right" cellpadding= Алгоритм построения ="5" border="1" style= "border-collapse: collapse;"|-Для получения | <span style="font-size:smaller;">Получение таблицы инверсий инверсии из таблицы перестановки вводим таблицу равной по длине таблице </span> [5 9 1 8 2 6 4 7 3] - т. перестановки(не умаляя общности длина равна n) и на n-ное место записываем [ 0; ищем число i (от n-] [ 1 до 0] [ 2 1) в таблице перестановки, и смотрим: сколько чисел больше i находится слева от числа i, полученное число записываем в таблицу инверсий на i-тое место.0] [ 2 2 1 0]=== Алгоритм восстановления === [ 0 2 2 1 0] [ 4 0 2 2 1 0] [ 6 4 0 2 2 1 0]Для восстановления таблицы перестановки из таблицы инверсий(не умаляя общности длина таблицы равна n) создаем таблицу, которую будем расширять, по мере добавления в неё чисел, добавляем в эту таблицу число i (где i от n до [ 3 6 4 0 2 2 1) на позицию k+0] [2 3 6 4 0 2 2 1, где k 0] - число в таблице инверсий на iт. инверсии|-том месте.}
21
правка

Навигация