Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kostin_1sem_Konspekt.doc
Скачиваний:
9
Добавлен:
15.04.2015
Размер:
280.06 Кб
Скачать

Procedure u1(var f : tpe; var g : tpk);

вычисляющую f=g-1f, если f задана в естественной форме, а g – в канонической.

Наряду с канонической формой циклического разложения перестановки, в которой разметка циклов указывается с помощью левосторонних локальных минимумов, может быть рассмотрена каноническая форма, построенная на левосторонних локальных максимумах; на правосторонних локальных минимумах (максимумах).

Взаимно однозначное соответствие (биекция) между канонической формой циклических разложений и перестановками в естественном представлении позволяет получить ряд интересных фактов. Например, рассмотрим следующий алгоритм поиска индекса минимального элемента в заданном массиве различных вещественных чисел

. . .

const n =...;

type m = array [1..n] of real;

function INDEX (var a : m) : real;

Var r : real;

begin r:=a[1]; INDEX:=1;

for i:=2 to n do

if a[i]<r then

begin r:=a[i]; INDEX:=i end {1}

end;

. . .

Возникает естественный вопрос: ‘ Сколько раз в среднем в этом фрагменте программы выполняется оператор {1}, если считать распределения значений элементов в массиве a равновероятным?’.

Заметим, что оператор {1} выполняется только при таких i, когда значение a[i] является левосторонним минимумом, т. е. по теореме 2, оператор {1} выполняется Hn-1 раз.

Упражнение. Оцените среднее число выполнения оператора {1}, если в массиве a допускают равные значения элементов, причем значение индекса должно быть максимально возможным. Как и в примере, считаем, что все возможные распределения значений элементов в a равновероятны.

1.3 Представление перестановок в виде таблицы инверсий.

Определение. Таблицей инверсий перестановки f = <a1 ... an> называется последовательность чисел r1,...,rn, где ri, 1  i  n, равно числу элементов, больших i и расположенных перед ним. Таблицу инверсий будем обозначать /r1,...,rn/.

Например, f = <5 1 2 6 4 7 3> r =/1,1,4,2,0,0,0/.

По определению: 0  r1  n-1

0  r2  n-2

. . .

0  rn-1  1

rn = 0.

Упражнение. Пусть f = <a1 ... an>, ее таблица инверсий /r1,...,rn/. Как выглядит таблицей инверсий перестановки f=<an ... a1>?

Замечание. Наряду с таблицей инверсии перестановки f можно рассмотреть таблицу r,...,r антиинверсий перестановки f, где r определяется как число элементов f, меньших i и расположенных перед ним.

Теорема 3. Последовательность чисел r1+r+1, r2+r+1,..., rn+r+1 образует обратную перестановку к f.

Доказательство следует из определения обратной перестановки.

Пусть q[i] (q`[i]), 1  i  n, обозначает число элементов перестановки f, больших (меньших) i и расположенных после него. Тогда из определения также следует

q[i]+r[i] = n-i

q’[i]+r`[i] = i-1

q[i]+q`[i] = n-1-f-1[i]

Например, f = <5 1 2 6 4 7 3>

r = 1,1,4,2,0,0,0, r` = 0,1,2,2,0,3,5,

q = 5,5,0,1,2,1,0, q` = 0,0,0,1,4,2,1.

Следствие. Если определена какая-нибудь одна из четырех таблиц r, r`, q, q`, то из указанных соотношений легко вычисляются и три других.

Упражнение. Докажите, что для заданной перестановки f, соответствующая ей таблица инверсий определяется однозначно. Указание. Воспользуйтесь следующим соотношением: пусть перестановка <a1 ... an>, (n-1) порядка соответствует /r1,...,rn-1/, тогда перестановке <a1 ... ai n аi+1 ... an> соответствует таблица инверсий /r,...,r,0/, где r=rk, если k{a1 ... ai} и r= rk+1, если k{ai+1 ... an}.

На языке Паскаль тип данных, соответствующий таблице инверсий перестановки, может быть определен как

tpi= array [1..n] of 0..n;

для конкретных значений которого истинна следующая верификационная функция:

function TYPEJ (var f tpi:) : Boolean;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]