Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[131]

depth = глубина

Рис. 20.2 (а) Рекурсивное определение биномиального дерева Bk (треугольники - поддеревья с выделенным корнем), (б) Деревья Во-В$. Цифры указывают глубину вершин в дереве В4. (в) Другое представление дерева Bk

Лемма 20.1 (Свойства биномиальных деревьев). Дерево Bk

1.содержит 2к вершин;

2.имеет высоту к;

3.имеет Снк вершин глубины г;

4- имеет корень, являющийся вершиной степени к; все остальные вершины имеют меньшую степень; дети корня являются корнями поддеревьев Bk-i, Bk-2, • • •, В\, Во (слева направо).

Доказательство, проводится индукцией по к. Для Во всё очевидно. Пусть утверждение верно для Bk-i- Тогда:

1.Дерево Bk состоит из двух копий Bk-i и потому содержит 2k-i + 2k-i = 2к вершин

2.При соединении двух копий описанным способом высота увеличивается на 1.

3.Пусть D(k,i) - число вершин глубины г в дереве Bk- По построению дерева Bk (см. рис. 20.2а) имеет место равенство

D(k, г) = D(k -1,г) + D(k - 1, г - 1) = CJU + С[~ \ = С\.


(Мы воспользовались индуктивным предположением и упр. 6.1-7.)

4. По предположению индукции все вершины в -B-i имеют степень не больше к - 1, так что корень дерева Bj~ будет в нём единственной вершиной степени к. В правом из склеиваемых деревьев дети корня были вершинами деревьев 5fc 2, -Bfc-3j • • •, В\, Во, теперь к ним добавилось слева еще дерево Вк-\.□

Следствие 20.2. Максимальная степень вершины в биномиальном дереве с га вершинами равна lg га.

Доказательство. Используем утверждения 1 и 4 леммы 20.1. □

Название «биномиальное дерево» связано с утверждением 3 леммы 20.1 (число Снк называют биномиальным коэффициентом). См.

также упр. 20.1-3.

20.1.2. Биномиальные кучи

Биномиальная куча (binomial heap) - это набор Н биномиальных деревьев, в вершинах которых записаны ключи (числа) и, возможно, дополнительная информация. При этом должны быть выполнены такие свойства биномиальной кучи (binomial-heap properties):

1.Каждое дерево в Н упорядочено в смысле куч (is heap-ordered), т.е. ключ каждой вершины не меньше, чем ключ её родителя.

2.В Н нет двух биномиальных деревьев одного размера (с одинаковой степенью корня).

Первое свойство гарантирует, что корень каждого из деревьев имеет наименьший ключ среди его вершин.

Из второго свойства следует, что суммарное количество вершин в биномиальной куче Н однозначно определяет размеры входящих в неё деревьев. В самом деле, общее число вершин, равное га, есть сумма размеров отдельных деревьев, которые суть различные степени двойки, а такое представление единственно (двоичная система счисления). Отсюда вытекает также, что куча с га элементами состоит из не более чем [lg raj + 1 биномиальных деревьев.

На рис. 20.3а показана биномиальная куча if с 13 вершинами. В двоичной системе 13 записывается как 1101 (13 = 8 + 4+1), и Н состоит из биномиальных деревьев В3, В2 и Во (с количеством вершин 8, 4 и 1).

Представление биномиальных куч в программе

Как показано на рис. 20.36, каждое биномиальное дерево в биномиальной куче хранится в представлении «левый ребёнок, правый сосед» (см. разд. 11.4). Каждая вершина имеет поле key (ключ), а


Рис. 20.3 Биномиальная куча Н с п = 13 вершинами, (а) Куча состоит из биномиальных деревьев Во, Е>2 и Вз, имеющих соответственно 1, 4 и 8 вершин (всего 13 вершин). Ключ каждой вершины не меньше, чем ключ её родителя. Корни деревьев связаны в корневой список в порядке возрастания степени, (б) Представление кучи в программе. Каждое биномиальное дерево хранится в представлении «левый ребёнок, правый сосед», и в каждой вершине хранится её степень (degree).

также хранит дополнительную информацию. Кроме того, каждая вершина х хранит указатели р[х] (родитель), child[x] (самый левый из детей) и sibling[x] («следующий по старшинству брат»). Если х - корень, то р[х] = NIL; если х не имеет детей, то child[x] = NIL, а если х является самым правым ребёнком своего родителя, то sibling[x] = NIL. Каждая вершина х содержит также поле degree[x] в котором хранится степень (число детей) вершины х.

На рис. 20.3 показано также, что корни биномиальных деревьев, составляющих биномиальную кучу, связаны в список, называемый корневым списком (root list) в порядке возрастания степеней. Как мы видели, в куче с п вершинами степени корневых вершин образуют подмножество множества {0,1,..., lgra }.

Для построения корневого списка используется поле sibling: для корневой вершины оно указывает на следующий элемент корневого списка (и содержит NIL для последнего корня в корневом списке).



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53] [стр.54] [стр.55] [стр.56] [стр.57] [стр.58] [стр.59] [стр.60] [стр.61] [стр.62] [стр.63] [стр.64] [стр.65] [стр.66] [стр.67] [стр.68] [стр.69] [стр.70] [стр.71] [стр.72] [стр.73] [стр.74] [стр.75] [стр.76] [стр.77] [стр.78] [стр.79] [стр.80] [стр.81] [стр.82] [стр.83] [стр.84] [стр.85] [стр.86] [стр.87] [стр.88] [стр.89] [стр.90] [стр.91] [стр.92] [стр.93] [стр.94] [стр.95] [стр.96] [стр.97] [стр.98] [стр.99] [стр.100] [стр.101] [стр.102] [стр.103] [стр.104] [стр.105] [стр.106] [стр.107] [стр.108] [стр.109] [стр.110] [стр.111] [стр.112] [стр.113] [стр.114] [стр.115] [стр.116] [стр.117] [стр.118] [стр.119] [стр.120] [стр.121] [стр.122] [стр.123] [стр.124] [стр.125] [стр.126] [стр.127] [стр.128] [стр.129] [стр.130] [стр.131] [стр.132] [стр.133] [стр.134] [стр.135] [стр.136] [стр.137] [стр.138] [стр.139] [стр.140] [стр.141] [стр.142] [стр.143] [стр.144] [стр.145] [стр.146] [стр.147] [стр.148] [стр.149] [стр.150] [стр.151] [стр.152] [стр.153] [стр.154] [стр.155] [стр.156] [стр.157] [стр.158] [стр.159] [стр.160] [стр.161] [стр.162] [стр.163] [стр.164] [стр.165] [стр.166] [стр.167] [стр.168] [стр.169] [стр.170] [стр.171] [стр.172] [стр.173] [стр.174] [стр.175] [стр.176] [стр.177] [стр.178] [стр.179] [стр.180] [стр.181] [стр.182] [стр.183] [стр.184] [стр.185] [стр.186] [стр.187] [стр.188] [стр.189] [стр.190] [стр.191] [стр.192] [стр.193] [стр.194] [стр.195] [стр.196] [стр.197] [стр.198] [стр.199] [стр.200] [стр.201] [стр.202] [стр.203] [стр.204] [стр.205] [стр.206] [стр.207] [стр.208] [стр.209] [стр.210] [стр.211] [стр.212] [стр.213] [стр.214] [стр.215] [стр.216] [стр.217] [стр.218] [стр.219] [стр.220] [стр.221] [стр.222] [стр.223] [стр.224] [стр.225] [стр.226] [стр.227] [стр.228] [стр.229] [стр.230] [стр.231] [стр.232] [стр.233] [стр.234] [стр.235] [стр.236] [стр.237] [стр.238] [стр.239] [стр.240] [стр.241] [стр.242] [стр.243] [стр.244] [стр.245] [стр.246] [стр.247] [стр.248] [стр.249] [стр.250] [стр.251] [стр.252] [стр.253] [стр.254] [стр.255] [стр.256] [стр.257] [стр.258] [стр.259] [стр.260] [стр.261] [стр.262] [стр.263] [стр.264] [стр.265] [стр.266] [стр.267] [стр.268] [стр.269] [стр.270] [стр.271] [стр.272] [стр.273] [стр.274] [стр.275] [стр.276] [стр.277] [стр.278] [стр.279] [стр.280] [стр.281] [стр.282] [стр.283] [стр.284] [стр.285] [стр.286] [стр.287] [стр.288] [стр.289] [стр.290] [стр.291] [стр.292] [стр.293] [стр.294]