Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
15
Добавлен:
10.12.2013
Размер:
31.46 Кб
Скачать
ѓ« ў  12. Њ­®¦Ґбвў  Ё ¤ҐаҐўмп.

12.1. ЏаҐ¤бв ў«Ґ­ЁҐ ¬­®¦Ґбвў б Ї®¬®ймо ¤ҐаҐўмҐў.

Џ®«­®Ґ ¤ў®Ёз­®Ґ ¤ҐаҐў®. T-¤ҐаҐўмп.

Ќ аЁб㥬 в®зЄг. €§ ­ҐҐ Їа®ўҐ¤Ґ¬ ¤ўҐ бв५ЄЁ (ў«Ґў® ўўҐае Ё
ўЇа ў® ўўҐае) ў ¤ўҐ ¤агЈЁҐ в®зЄЁ. €§ Є ¦¤®© Ё§ нвЁе в®зҐЄ Їа®ўҐ-
¤Ґ¬ Ї® ¤ўҐ бв५ЄЁ Ё в Є ¤ «ҐҐ. Џ®«г祭­го Є авЁ­Єг (ў n-®¬ б«®Ґ
Ўг¤Ґв (2 ў б⥯Ґ­Ё (n - 1)) в®зҐЄ) ­ §лў ов Ї®«­л¬ ¤ў®Ёз­л¬ ¤Ґ-
ॢ®¬. ЌЁ¦­оо в®зЄг ­ §лў ов Є®а­Ґ¬. “ Є ¦¤®© ўҐаиЁ­л Ґбвм ¤ў 
бл­  (¤ўҐ ўҐаиЁ­л, ў Є®в®алҐ Ё¤гв бв५ЄЁ) - «Ґўл© Ё Їа ўл©. “
ўбпЄ®© ўҐаиЁ­л, Єа®¬Ґ Є®а­п, Ґбвм Ґ¤Ё­б⢥­­л© ®вҐж.
Џгбвм ўлЎа ­® ­ҐЄ®в®а®Ґ Є®­Ґз­®Ґ ¬­®¦Ґбвў® ўҐаиЁ­ Ї®«­®Ј®
¤ў®Ёз­®Ј® ¤ҐаҐў , ᮤҐа¦ йҐҐ ў¬ҐбвҐ б Є ¦¤®© ўҐаиЁ­®© Ё ўбҐе ҐҐ
ЇаҐ¤Є®ў. Џгбвм ­  Є ¦¤®© ўҐаиЁ­Ґ нв®Ј® ¬­®¦Ґбвў  ­ ЇЁб ­® §­ зҐ-
­ЁҐ дЁЄбЁа®ў ­­®Ј® вЁЇ  T (в® Ґбвм § ¤ ­® ®в®Ўа ¦Ґ­ЁҐ ¬­®¦Ґбвў 
ўҐаиЁ­ ў ¬­®¦Ґбвў® §­ зҐ­Ё© вЁЇ  T). ’®, зв® Ї®«гзЁвбп, Ўг¤Ґ¬
­ §лў вм T-¤ҐаҐў®¬. Њ­®¦Ґбвў® ўбҐе T-¤ҐаҐўмҐў ®Ў®§­ зЁ¬ Tree(T).
ђҐЄгабЁў­®Ґ ®ЇаҐ¤Ґ«Ґ­ЁҐ. ‚бпЄ®Ґ ­ҐЇгб⮥ T-¤ҐаҐў® а §ЎЁў -
Ґвбп ­  ваЁ з бвЁ: Є®аҐ­м (­ҐбгйЁ© Ї®¬ҐвЄг Ё§ T), «Ґў®Ґ Ё Їа ў®Ґ
Ї®¤¤ҐаҐўмп (Є®в®алҐ ¬®Јгв Ўлвм Ё Їгбвл¬Ё). ќв® а §ЎЁҐ­ЁҐ гбв -
­ ў«Ёў Ґв ў§ Ё¬­® ®¤­®§­ з­®Ґ ᮮ⢥вбвўЁҐ ¬Ґ¦¤г ¬­®¦Ґбвў®¬ ­Ґ-
Їгбвле T-¤ҐаҐўмҐў Ё Їа®Ё§ўҐ¤Ґ­ЁҐ¬ T * Tree (T) * Tree (T). ЋЎ®§-
­ зЁў зҐаҐ§ empty Їгб⮥ ¤ҐаҐў®, ¬®¦­® ­ ЇЁб вм

Tree (T) = {empty} + T * Tree (T) * Tree (T).








Џ®¤¤ҐаҐўмп. ‚лб®в .

”ЁЄбЁа㥬 ­ҐЄ®в®а®Ґ T-¤ҐаҐў®. „«п Є ¦¤®© ҐЈ® ўҐаиЁ­л x ®Ї-
।Ґ«Ґ­® ҐҐ «Ґў®Ґ Ї®¤¤ҐаҐў® («Ґўл© бл­ ўҐаиЁ­л x Ё ўбҐ ҐЈ® Ї®-
⮬ЄЁ), Їа ў®Ґ Ї®¤¤ҐаҐў® (Їа ўл© бл­ ўҐаиЁ­л x Ё ўбҐ ҐЈ® Ї®в®¬-
ЄЁ) Ё Ї®¤¤ҐаҐў® б Є®а­Ґ¬ ў x (ўҐаиЁ­  x Ё ўбҐ ҐҐ Ї®в®¬ЄЁ). ‹Ґў®Ґ
Ё Їа ў®Ґ Ї®¤¤ҐаҐўмп ўҐаиЁ­л x ¬®Јгв Ўлвм Їгбвл¬Ё,   Ї®¤¤ҐаҐў® б
Є®а­Ґ¬ ў x ўбҐЈ¤  ­ҐЇгбв® (ᮤҐа¦Ёв Ї® Єа ©­Ґ© ¬ҐаҐ x). ‚лб®в®©
Ї®¤¤ҐаҐў  Ўг¤Ґ¬ бзЁв вм ¬ ЄбЁ¬ «м­го ¤«Ё­г 楯Ё y[1]..y[n] ҐЈ®
ўҐаиЁ­, ў Є®в®а®© y [i+1] - бл­ y [i] ¤«п ўбҐе i. (‚лб®в  Їгбв®-
Ј® ¤ҐаҐў  а ў­  ­г«о, ўлб®в  ¤ҐаҐў  Ё§ ®¤­®Ј® Є®а­п - Ґ¤Ё­ЁжҐ.)

“Ї®а冷祭­лҐ T-¤ҐаҐўмп.

Џгбвм ­  ¬­®¦Ґб⢥ §­ зҐ­Ё© вЁЇ  T дЁЄбЁа®ў ­ Ї®а冷Є. Ќ -
§®ўҐ¬ T-¤ҐаҐў® гЇ®а冷祭­л¬, Ґб«Ё ўлЇ®«­Ґ­® в Є®Ґ бў®©бвў®: ¤«п
«оЎ®© ўҐаиЁ­л x ўбҐ Ї®¬ҐвЄЁ ў ҐҐ «Ґў®¬ Ї®¤¤ҐаҐўҐ ¬Ґ­миҐ Ї®¬ҐвЄЁ
ў x,   ўбҐ Ї®¬ҐвЄЁ ў ҐҐ Їа ў®¬ Ї®¤¤ҐаҐўҐ Ў®«миҐ Ї®¬ҐвЄЁ ў x.




12.1.1. „®Є § вм, зв® ў гЇ®а冷祭­®¬ ¤ҐаҐўҐ ўбҐ Ї®¬ҐвЄЁ
а §«Ёз­л.
“Є § ­ЁҐ. €­¤гЄжЁп Ї® ўлб®вҐ ¤ҐаҐў .

ЏаҐ¤бв ў«Ґ­ЁҐ ¬­®¦Ґбвў б Ї®¬®ймо ¤ҐаҐўмҐў.

Љ ¦¤®Ґ ¤ҐаҐў® Ўг¤Ґ¬ бзЁв вм ЇаҐ¤бв ў«Ґ­ЁҐ¬ ¬­®¦Ґбвў  ўбҐе
Ї®¬Ґв®Є ­  ҐЈ® ўҐаиЁ­ е. ЏаЁ н⮬ ®¤­® Ё в® ¦Ґ ¬­®¦Ґбвў® ¬®¦Ґв
Ё¬Ґвм а §«Ёз­лҐ ЇаҐ¤бв ў«Ґ­Ёп.
Ѓ« Ј®¤ ап гЇ®а冷祭­®бвЁ Є ¦¤л© н«Ґ¬Ґ­в «ҐЈЄ® ¬®¦Ґв "­ ©вЁ
бў®Ґ ¬Ґбв®" ў ¤ҐаҐўҐ: ЇаЁ¤п ў Є Єго-в® ўҐаиЁ­г Ё ба ў­Ёў ᥡп б
⥬, Єв® в ¬ ­ е®¤Ёвбп, н«Ґ¬Ґ­в аҐи Ґв, Ё¤вЁ Ґ¬г ­ «Ґў® Ё«Ё ­ Ї-
а ў®. Ќ з ў б Є®а­п Ё ¤ўЁЈ пбм Ї® н⮬㠯ࠢЁ«г, ®­ «ЁЎ® ®Ў­ аг-
¦Ёв, зв® в Є®© н«Ґ¬Ґ­в 㦥 Ґбвм, «ЁЎ® ­ ©¤Ґв ¬Ґбв®, ў Є®в®а®¬ ®­
¤®«¦Ґ­ Ўлвм. ‚бо¤г ¤ «ҐҐ ¬л ЇаҐ¤Ї®« Ј Ґ¬, зв® ­  §­ зҐ­Ёпе вЁЇ 
T § ¤ ­ Ї®а冷Є, Ё а бб¬ ваЁў Ґ¬ в®«мЄ® гЇ®а冷祭­лҐ ¤ҐаҐўмп.







•а ­Ґ­ЁҐ ¤ҐаҐўмҐў ў Їа®Ја ¬¬Ґ.

Њ®¦­® Ўл«® Ўл б®Ї®бв ўЁвм ўҐаиЁ­л Ї®«­®Ј® ¤ў®Ёз­®Ј® ¤ҐаҐў 
б зЁб« ¬Ё 1, 2, 3,... (бзЁв п, зв® «Ґўл© бл­ (n) = 2n, Їа ўл©
бл­ (n) = 2n + 1) Ё еа ­Ёвм Ї®¬ҐвЄЁ ў ¬ ббЁўҐ val [1...]. Ћ¤­ Є®
нв®в бЇ®б®Ў ­ҐнЄ®­®¬Ґ­, Ї®бЄ®«мЄг ва вЁвбп ¬Ґбв® ­  еа ­Ґ­ЁҐ
Їгбвле ў Є ­бЁ© ў Ї®«­®¬ ¤ў®Ёз­®¬ ¤ҐаҐўҐ.

Ѓ®«ҐҐ нЄ®­®¬Ґ­ в Є®© бЇ®б®Ў. ‚ўҐ¤Ґ¬ ваЁ ¬ ббЁў 

val: array [1..n] of T;
left, right: array [1..n] of 0..n;

(n - ¬ ЄбЁ¬ «м­®Ґ ў®§¬®¦­®Ґ зЁб«® ўҐаиЁ­ ¤ҐаҐў ) Ё ЇҐаҐ¬Ґ­­го
root: 0..n. Љ ¦¤ п ўҐаиЁ­  еа ­Ё¬®Ј® T-¤ҐаҐў  Ўг¤Ґв Ё¬Ґвм ­®¬Ґа
- зЁб«® ®в 1 ¤® n. ђ §­лҐ ўҐаиЁ­л Ўг¤гв Ё¬Ґвм а §­лҐ ­®¬Ґа . Џ®-
¬ҐвЄ  ў ўҐаиЁ­Ґ б ­®¬Ґа®¬ x а ў­  val [x]. Љ®аҐ­м Ё¬ҐҐв ­®¬Ґа
root. …б«Ё ўҐаиЁ­  б ­®¬Ґа®¬ i Ё¬ҐҐв бл­®ўҐ©, в® Ёе ­®¬Ґа  а ў­л
left [i] Ё right [i]. ЋвбгвбвўгойЁ¬ бл­®ўмп¬ б®®вўҐвбвўгҐв зЁб«®
0. Ђ­ «®ЈЁз­л¬ ®Ўа §®¬ §­ зҐ­ЁҐ root = 0 ᮮ⢥вбвўгҐв Їгб⮬г
¤ҐаҐўг.
„«п еа ­Ґ­Ёп ¤ҐаҐў  ЁбЇ®«м§гҐвбп «Ёим з бвм ¬ ббЁў ; ¤«п
вҐе i, Є®в®алҐ бў®Ў®¤­л - в.Ґ. ­Ґ пў«повбп ­®¬Ґа ¬Ё ўҐаиЁ­ -
§­ зҐ­Ёп val [i] ЎҐ§а §«Ёз­л. Ќ ¬ Ўг¤Ґв 㤮Ў­®, зв®Ўл ўбҐ бў®-
Ў®¤­лҐ зЁб«  Ўл«Ё "бўп§ ­л ў бЇЁб®Є": ЇҐаў®Ґ еа ­Ёвбп ў бЇҐжЁ-
 «м­®Ґ ЇҐаҐ¬Ґ­­®© free: 0..n,   б«Ґ¤го饥 §  i бў®Ў®¤­®Ґ зЁб«®
еа ­Ёвбп ў left [i], в Є зв® бў®Ў®¤­л зЁб« 

free, left [free], left [left[free]],...

„«п Ї®б«Ґ¤­ҐЈ® бў®Ў®¤­®Ј® зЁб«  i §­ зҐ­ЁҐ left [i] = 0. ђ -
ўҐ­бвў® free = 0 ®§­ з Ґв, зв® бў®Ў®¤­ле зЁбҐ« Ў®«миҐ ­Ґв. (‡ -
¬Ґз ­ЁҐ. Њл ЁбЇ®«м§®ў «Ё ¤«п бўп§лў ­Ёп бў®Ў®¤­ле ўҐаиЁ­ ¬ ббЁў
left, ­®, Є®­Ґз­®, б ⥬ ¦Ґ гᯥ宬 ¬®¦­® Ўл«® ЁбЇ®«м§®ў вм ¬ б-
бЁў right.)
‚¬Ґбв® §­ зҐ­Ёп 0 (®Ў®§­ з о饣® ®вбгвбвўЁҐ ўҐаиЁ­л) ¬®¦­®
Ўл«® Ўл ў®бЇ®«м§®ў вмбп «оЎл¬ ¤агЈЁ¬ зЁб«®¬ ў­Ґ 1..n. —в®Ўл Ї®¤-
зҐаЄ­гвм нв®, Ўг¤Ґ¬ ў¬Ґбв® 0 ЁбЇ®«м§®ў вм Є®­бв ­вг null = 0.

12.1.2. ‘®бв ўЁвм Їа®Ја ¬¬г, ®ЇаҐ¤Ґ«пойго, ᮤҐа¦Ёвбп «Ё
н«Ґ¬Ґ­в t: T ў гЇ®а冷祭­®¬ ¤ҐаҐўҐ (еа ­Ё¬®¬ в Є, Є Є в®«мЄ®
зв® ®ЇЁб ­®).

ђҐиҐ­ЁҐ.

if root = null then begin
| ..­Ґ ЇаЁ­ ¤«Ґ¦Ёв
end else begin
| x := root;
| {Ё­ў аЁ ­в: ®бв Ґвбп Їа®ўҐаЁвм ­ «ЁзЁҐ t ў ­ҐЇгб⮬ Ї®¤¤Ґ-
| ॢҐ б Є®а­Ґ¬ x}
| while ((t < val [x]) and (left [x] <> null)) or
| | ((t > val [x]) and (right [x] <> null)) do begin
| | if t < val [x] then begin {left [x] <> null}
| | | x := left [x];
| | end else begin {t > val [x], right [x] <> null}
| | | x := right [x];
| | end;
| end;
| {«ЁЎ® t = val [x], «ЁЎ® t ®вбгвбвўгҐв ў ¤ҐаҐўҐ}
| ..®вўҐв = (t = val [x])
end;

12.1.3. “Їа®бвЁвм аҐиҐ­ЁҐ, ЁбЇ®«м§гп б«Ґ¤гойЁ© ваоЄ. ђ биЁ-
аЁ¬ ®Ў« бвм ®ЇаҐ¤Ґ«Ґ­Ёп ¬ ббЁў  val, ¤®Ў ўЁў п祩Єг б ­®¬Ґа®¬
null Ё Ї®«®¦Ё¬ val [null] = t.

ђҐиҐ­ЁҐ.

val [null] := t;
x := root;
while t <> val [x] do begin
| if t < val [x] then begin
| | x := left [x];
| end else begin
| | x := right [x];
| end;
end;
..®вўҐв: (x <> null).

12.1.4. ‘®бв ўЁвм Їа®Ја ¬¬г ¤®Ў ў«Ґ­Ёп н«Ґ¬Ґ­в  t ў ¬­®-
¦Ґбвў®, ЇаҐ¤бв ў«Ґ­­®Ґ гЇ®а冷祭­л¬ ¤ҐаҐў®¬ (Ґб«Ё н«Ґ¬Ґ­в t 㦥
Ґбвм, ­ЁзҐЈ® ¤Ґ« вм ­Ґ ­ ¤®).

ђҐиҐ­ЁҐ. ЋЇаҐ¤Ґ«Ё¬ Їа®жҐ¤гаг get_free (var i: integer), ¤ -
ойго бў®Ў®¤­®Ґ (­Ґ пў«по饥бп ­®¬Ґа®¬) зЁб«® i Ё ᮮ⢥вбвўгойЁ¬
®Ўа §®¬ Є®а४вЁагойго бЇЁб®Є бў®Ў®¤­ле зЁбҐ«.

procedure get_free (var i: integer);
begin
| {free <> null}
| i := free;
| free := left [free];
end;

‘ ҐҐ ЁбЇ®«м§®ў ­ЁҐ¬ Їа®Ја ¬¬  ЇаЁ®ЎаҐв Ґв ўЁ¤:

if root = null then begin
| get_free (root);
| left [root] := null; right [root] := null;
| val [root] := t;
end else begin
| x := root;
| {Ё­ў аЁ ­в: ®бв «®бм ¤®Ў ўЁвм t Є ­ҐЇгб⮬㠯®¤¤ҐаҐўг б
| Є®а­Ґ¬ ў x}
| while ((t < val [x]) and (left [x] <> null)) or
| | ((t > val [x]) and (right [x] <> null)) do begin
| | if t < val [x] then begin
| | | x := left [x];
| | end else begin {t > val [x]}
| | | x := right [x];
| | end;
| end;
| if t <> val [x] then begin {t ­Ґв ў ¤ҐаҐўҐ}
| | get_free (i);
| | left [i] := null; right [i] := null;
| | val [i] := t;
| | if t < val [x] then begin
| | | left [x] := i;
| | end else begin {t > val [x]}
| | | right [x] := i;
| | end;
| end;
end;

12.1.5. ‘®бв ўЁвм Їа®Ја ¬¬г г¤ «Ґ­Ёп н«Ґ¬Ґ­в  t Ё§ ¬­®-
¦Ґбвў , ЇаҐ¤бв ў«Ґ­­®Ј® гЇ®а冷祭­л¬ ¤ҐаҐў®¬ (Ґб«Ё ҐЈ® в ¬ ­Ґв,
­ЁзҐЈ® ¤Ґ« вм ­Ґ ­ ¤®).

ђҐиҐ­ЁҐ.

if root = null then begin
| {¤ҐаҐў® Їгбв®, ­ЁзҐЈ® ¤Ґ« вм ­Ґ ­ ¤®}
end else begin
| x := root;
| {®бв «®бм г¤ «Ёвм t Ё§ Ї®¤¤ҐаҐў  б Є®а­Ґ¬ ў x; Ї®бЄ®«мЄг
| нв® ¬®¦Ґв Ї®вॡ®ў вм Ё§¬Ґ­Ґ­Ё© ў ®вжҐ x, ўўҐ¤Ґ¬
| ЇҐаҐ¬Ґ­­лҐ father: 1..n Ё direction: (l, r);
| Ї®¤¤Ґа¦Ёў Ґ¬ в Є®© Ё­ў аЁ ­в: Ґб«Ё x ­Ґ Є®аҐ­м, в® father
| - ҐЈ® ®вҐж,   direction а ў­® l Ё«Ё r ў § ўЁбЁ¬®бвЁ ®в
| в®Ј®, «Ґўл¬ Ё«Ё Їа ўл¬ бл­®¬ пў«пҐвбп x}
| while ((t < val [x]) and (left [x] <> null)) or
| | ((t > val [x]) and (right [x] <> null)) do begin
| | if t < val [x] then begin
| | | father := x; direction := l;
| | | x := left [x];
| | end else begin {t > val [x]}
| | | father := x; direction := r;
| | | x := right [x];
| | end;
| end;
| {t = val [x] Ё«Ё t ­Ґв ў ¤ҐаҐўҐ}
| if t = val [x] then begin
| | ..г¤ «Ґ­ЁҐ ўҐаиЁ­л x б ®в殬 father Ё ­ Їа ў«Ґ­ЁҐ¬
| | direction
| end;
end;

“¤ «Ґ­ЁҐ ўҐаиЁ­л x Їа®Ёб室Ёв Ї®-а §­®¬г ў а §­ле б«гз пе. ЏаЁ
н⮬ ЁбЇ®«м§гҐвбп Їа®жҐ¤га 

procedure make_free (i: integer);
begin
| left [i] := free;
| free := i;
end;

®­  ўЄ«оз Ґв зЁб«® i ў бЇЁб®Є бў®Ў®¤­ле. ђ §«Ёз овбп 4 б«гз п ў
§ ўЁбЁ¬®бвЁ ®в ­ «ЁзЁп Ё«Ё ®вбгвбвўЁп бл­®ўҐ© г г¤ «пҐ¬®© ўҐаиЁ-
­л.

if (left [x] = null) and (right [x] = null) then begin
| {x - «Ёбв, в.Ґ. ­Ґ Ё¬ҐҐв бл­®ўҐ©}
| make_free (x);
| if x = root then begin
| | root := null;
| end else if direction = l then begin
| | left [father] := null;
| end else begin {direction = r}
| | right [father] := null;
| end;
end else if (left[x]=null) and (right[x] <> null) then begin
| {x г¤ «пҐвбп,   right [x] § ­Ё¬ Ґв ¬Ґбв® x}
| make_free (x);
| if x = root then begin
| | root := right [x];
| end else if direction = l then begin
| | left [father] := right [x];
| end else begin {direction = r}
| | right [father] := right [x];
| end;
end else if (left[x] <> null) and (right[x]=null) then begin
| ..бЁ¬¬ҐваЁз­®
end else begin {left [x] <> null, right [x] <> null}
| ..г¤ «Ёвм ўҐаиЁ­г б ¤ўг¬п бл­®ўмп¬Ё
end;

“¤ «Ґ­ЁҐ ўҐаиЁ­л б ¤ўг¬п бл­®ўмп¬Ё ­Ґ«м§п ᤥ« вм Їа®бв® в Є, ­®
ҐҐ ¬®¦­® ЇаҐ¤ў аЁвҐ«м­® Ї®¬Ґ­пвм б ўҐаиЁ­®©, Ї®¬ҐвЄ  ­  Є®в®а®©
пў«пҐвбп ­ҐЇ®б।б⢥­­® б«Ґ¤гойЁ¬ (ў Ї®ап¤ЄҐ ў®§а бв ­Ёп) н«Ґ-
¬Ґ­в®¬ §  Ї®¬ҐвЄ®© ­  x.

y := right [x];
father := x; direction := r;
{⥯Ґам father Ё direction ®в­®бпвбп Є ўҐаиЁ­Ґ y}
while left [y] <> null do begin
| father := y; direction := r;
| y := left [y];
end;
{val [y] - ¬Ё­Ё¬ «м­ п Ё§ Ї®¬Ґв®Є, Ў®«миЁе val [x],
y ­Ґ Ё¬ҐҐв «Ґў®Ј® бл­ }
val [x] := val [y];
..г¤ «Ёвм ўҐаиЁ­г y (Є Є г¤ «пвм ўҐаиЁ­г, г Є®в®а®© ­Ґв «Ґ-
ў®Ј® бл­ , ¬л 㦥 §­ Ґ¬)

12.1.6. “Їа®бвЁвм Їа®Ја ¬¬г г¤ «Ґ­Ёп, § ¬ҐвЁў, зв® ­ҐЄ®в®-
алҐ б«гз Ё (­ ЇаЁ¬Ґа, ЇҐаўлҐ ¤ў  Ё§ зҐвлаҐе) ¬®¦­® ®ЎкҐ¤Ё­Ёвм.

12.1.7. €бЇ®«м§®ў вм гЇ®а冷祭­лҐ ¤ҐаҐўмп ¤«п ЇаҐ¤бв ў«Ґ-
­Ёп дг­ЄжЁ©, ®Ў« бвм ®ЇаҐ¤Ґ«Ґ­Ёп Є®в®але - Є®­Ґз­лҐ ¬­®¦Ґбвў 
§­ зҐ­Ё© вЁЇ  T,   §­ зҐ­Ёп Ё¬Ґов ­ҐЄ®в®ал© вЁЇ U. ЋЇҐа жЁЁ: ўл-
зЁб«Ґ­ЁҐ §­ зҐ­Ёп ­  ¤ ­­®¬  аЈг¬Ґ­вҐ, Ё§¬Ґ­Ґ­ЁҐ §­ зҐ­Ёп ­ 
¤ ­­®¬  аЈг¬Ґ­вҐ, ¤®®ЇаҐ¤Ґ«Ґ­ЁҐ дг­ЄжЁЁ ­  ¤ ­­®¬  аЈг¬Ґ­вҐ,
ЁбЄ«о祭ЁҐ н«Ґ¬Ґ­в  Ё§ ®Ў« бвЁ ®ЇаҐ¤Ґ«Ґ­Ёп дг­ЄжЁЁ.

ђҐиҐ­ЁҐ. „Ґ« Ґ¬ Є Є а ­миҐ, ¤®Ў ўЁў ҐйҐ ®¤Ё­ ¬ ббЁў

func_val: array [1..n] of U;

Ґб«Ё val [x] = t, func_val [x] = u, в® §­ зҐ­ЁҐ еа ­Ё¬®© дг­ЄжЁЁ
­  t а ў­® u.

ЋжҐ­Є  Є®«ЁзҐбвў  ¤Ґ©бвўЁ©.

„«п Є ¦¤®© Ё§ ®ЇҐа жЁ© (Їа®ўҐаЄЁ, ¤®Ў ў«Ґ­Ёп Ё ЁбЄ«о祭Ёп)
Є®«ЁзҐбвў® ¤Ґ©бвўЁ© ­Ґ ЇаҐў®б室Ёв C * (ўлб®в  ¤ҐаҐў ). „«п
"а®ў­® Ї®¤бваЁ¦Ґ­­®Ј®" ¤ҐаҐў  (Є®Ј¤  ўбҐ «Ёбвмп ­  ®¤­®© ўлб®вҐ)
ўлб®в  Ї® Ї®ап¤Єг ўҐ«ЁзЁ­л а ў­  «®Ј аЁд¬г зЁб«  ўҐаиЁ­. Ћ¤­ Є®
¤«п ЄаЁў®Ў®Є®Ј® ¤ҐаҐў  ўбҐ ¬®¦Ґв Ўлвм Ј®а §¤® е㦥: ў ­ Ёег¤иҐ¬
б«гз Ґ ўбҐ ўҐаиЁ­л ®Ўа §гов жҐЇм Ё ўлб®в  а ў­  зЁб«г ўҐаиЁ­.
’ Є б«гзЁвбп, Ґб«Ё н«Ґ¬Ґ­вл ¬­®¦Ґбвў  ¤®Ў ў«повбп ў ў®§а бв о饬
Ё«Ё гЎлў о饬 Ї®ап¤ЄҐ. Њ®¦­® ¤®Є § вм, ®¤­ Є®, зв® ЇаЁ ¤®Ў ў«Ґ-
­ЁЁ н«Ґ¬Ґ­в®ў "ў б«гз ©­®¬ Ї®ап¤ЄҐ" б।­пп ўлб®в  ¤ҐаҐў  Ўг¤Ґв
­Ґ Ў®«миҐ C * («®Ј аЁд¬ зЁб«  ўҐаиЁ­). …б«Ё нв®© ®жҐ­ЄЁ "ў б।-
­Ґ¬" ¬ «®, ­Ґ®Ўе®¤Ё¬л ¤®Ї®«­ЁвҐ«м­лҐ ¤Ґ©бвўЁп Ї® Ї®¤¤Ґа¦ ­Ёо
"бЎ « ­бЁа®ў ­­®бвЁ" ¤ҐаҐў . ЋЎ н⮬ б¬. ў б«Ґ¤го饬 Їг­ЄвҐ.

12.1.8. ЏаҐ¤Ї®«®¦Ё¬, зв® ­Ґ®Ўе®¤Ё¬® 㬥вм в Є¦Ґ ®влбЄЁў вм
k-л© н«Ґ¬Ґ­в ¬­®¦Ґбвў  (ў Ї®ап¤ЄҐ ў®§а бв ­Ёп), ЇаЁзҐ¬ Є®«Ё-
зҐбвў® ¤Ґ©бвўЁ© ¤®«¦­® Ўлвм ­Ґ Ў®«ҐҐ C*(ўлб®в  ¤ҐаҐў ). Љ Єго
¤®Ї®«­ЁвҐ«м­го Ё­д®а¬ жЁо ­ ¤® еа ­Ёвм ў ўҐаиЁ­ е ¤ҐаҐў ?

ђҐиҐ­ЁҐ. ‚ Є ¦¤®© ўҐаиЁ­Ґ Ўг¤Ґ¬ еа ­Ёвм зЁб«® ўбҐе ҐҐ Ї®-
⮬Є®ў. „®Ў ў«Ґ­ЁҐ Ё ЁбЄ«о祭ЁҐ ўҐаиЁ­л вॡгҐв Є®а४樨 «Ёим
­  ЇгвЁ ®в Є®а­п Є нв®© ўҐаиЁ­Ґ. ‚ Їа®жҐбᥠЇ®ЁбЄ  k-®© ўҐаиЁ­л
Ї®¤¤Ґа¦Ёў Ґвбп в Є®© Ё­ў аЁ ­в: ЁбЄ®¬ п ўҐаиЁ­  пў«пҐвбп s-®©
ўҐаиЁ­®© Ї®¤¤ҐаҐў  б Є®а­Ґ¬ ў x (§¤Ґбм s Ё x - ЇҐаҐ¬Ґ­­лҐ).)

12.2. ‘Ў « ­бЁа®ў ­­лҐ ¤ҐаҐўмп.

„ҐаҐў® ­ §лў Ґвбп бЎ « ­бЁа®ў ­­л¬ (Ё«Ё Ђ‚‹-¤ҐаҐў®¬ ў зҐбвм
Ё§®ЎаҐв вҐ«Ґ© нв®Ј® ¬Ґв®¤  ѓ.Њ.Ђ¤Ґ«мб®­ -‚Ґ«мбЄ®Ј® Ё ….Њ.‹ ­¤Ё-
б ), Ґб«Ё ¤«п «оЎ®© ҐЈ® ўҐаиЁ­л ўлб®вл «Ґў®Ј® Ё Їа ў®Ј® Ї®¤¤Ґ-
ॢ쥢 нв®© ўҐаиЁ­л ®в«Ёз овбп ­Ґ Ў®«ҐҐ 祬 ­  1. (‚ з бв­®бвЁ,
Є®Ј¤  ®¤­®Ј® Ё§ бл­®ўҐ© ­Ґв, ¤агЈ®© - Ґб«Ё ®­ Ґбвм - ®Ўп§ ­ Ўлвм
«Ёб⮬.)

12.2.1. Ќ ©вЁ ¬Ё­Ё¬ «м­®Ґ Ё ¬ ЄбЁ¬ «м­®Ґ ў®§¬®¦­®Ґ Є®«Ё-
зҐбвў® ўҐаиЁ­ ў бЎ « ­бЁа®ў ­­®¬ ¤ҐаҐўҐ ўлб®вл n.

ђҐиҐ­ЁҐ. Њ ЄбЁ¬ «м­®Ґ зЁб«® ўҐаиЁ­ а ў­® (2 ў б⥯Ґ­Ё n) -
1. …б«Ё m (n) - ¬Ё­Ё¬ «м­®Ґ зЁб«® ўҐаиЁ­, в®, Є Є «ҐЈЄ® ўЁ¤Ґвм,
m (n + 2) = 1 + m (n) + m (n+1),
®вЄг¤ 
m (n) = fib (n+1) - 1
(fib(n) - n-®Ґ зЁб«® ”ЁЎ®­ ззЁ, fib(0)=1, fib(1)=1, fib(n+2) =
fib(n) + fib(n+1)).

12.2.2. „®Є § вм, зв® бЎ « ­бЁа®ў ­­®Ґ ¤ҐаҐў® б n ўҐаиЁ­ ¬Ё
Ё¬ҐҐв ўлб®вг ­Ґ Ў®«миҐ C * (log n) ¤«п ­ҐЄ®в®а®© Є®­бв ­вл C, ­Ґ
§ ўЁбп饩 ®в n.

ђҐиҐ­ЁҐ. €­¤гЄжЁҐ© Ї® n «ҐЈЄ® ¤®Є § вм, зв® fib [n+1] >= (a
ў б⥯Ґ­Ё n), Ј¤Ґ a - Ў®«миЁ© Є®аҐ­м Єў ¤а в­®Ј® га ў­Ґ­Ёп a*a =
1 + a, в® Ґбвм a = (sqrt(5) + 1)/2. Ћбв Ґвбп ў®бЇ®«м§®ў вмбп
ЇаҐ¤л¤г饩 § ¤ зҐ©.

‚а йҐ­Ёп.

Њл е®вЁ¬ ў®ббв ­ ў«Ёў вм бЎ « ­бЁа®ў ­­®бвм ¤ҐаҐў  Ї®б«Ґ
ўЄ«о祭Ёп Ё г¤ «Ґ­Ёп н«Ґ¬Ґ­в®ў. „«п нв®Ј® ­Ґ®Ўе®¤Ё¬л Є ЄЁҐ-в®
ЇаҐ®Ўа §®ў ­Ёп ¤ҐаҐў , ­Ґ ¬Ґ­пойЁҐ ¬­®¦Ґбвў  Ї®¬Ґв®Є ­  ҐЈ® ўҐа-
иЁ­ е Ё ­Ґ ­ аги ойЁҐ гЇ®а冷祭­®бвЁ, ­® бЇ®б®ЎбвўгойЁҐ «гз襩
бЎ « ­бЁа®ў ­­®бвЁ. ЋЇЁиҐ¬ ­ҐбЄ®«мЄ® в ЄЁе ЇаҐ®Ўа §®ў ­Ё©.

Џгбвм ўҐаиЁ­  a Ё¬ҐҐв Їа ў®Ј® бл­  b. ЋЎ®§­ зЁ¬ зҐаҐ§ P «Ґ-
ў®Ґ Ї®¤¤ҐаҐў® ўҐаиЁ­л a, зҐаҐ§ Q Ё R - «Ґў®Ґ Ё Їа ў®Ґ Ї®¤¤ҐаҐўмп
ўҐаиЁ­л b.







“Ї®а冷祭­®бвм ¤ҐаҐў  вॡгҐв, зв®Ўл P < a < Q < b < R
(в®з­ҐҐ б«Ґ¤®ў «® Ўл бЄ § вм "«оЎ п Ї®¬ҐвЄ  ­  P ¬Ґ­миҐ Ї®¬ҐвЄЁ
­  a", "Ї®¬ҐвЄ  ­  a ¬Ґ­миҐ «оЎ®© Ї®¬ҐвЄЁ ­  Q" Ё в.¤., ­® ¬л
Ї®§ў®«Ё¬ ᥡҐ нв®Ј® ­Ґ ¤Ґ« вм). ’®з­® в®Ј® ¦Ґ вॡгҐв гЇ®а冷-
祭­®бвм ¤ҐаҐў  б Є®а­Ґ¬ b, ҐЈ® «Ґўл¬ бл­®¬ a, ў Є®в®а®¬ P Ё Q -
«Ґў®Ґ Ё Їа ў®Ґ Ї®¤¤ҐаҐўмп a, R - Їа ў®Ґ Ї®¤¤ҐаҐў® b. Џ®н⮬г
ЇҐаў®Ґ ¤ҐаҐў® ¬®¦­® ЇаҐ®Ўа §®ў вм ў® ўв®а®Ґ, ­Ґ ­ аги п гЇ®а冷-
祭­®бвЁ. ’ Є®Ґ ЇаҐ®Ўа §®ў ­ЁҐ ­ §®ўҐ¬ ¬ «л¬ Їа ўл¬ ўа йҐ­ЁҐ¬
(Їа ўл¬ - Ї®бЄ®«мЄг бгйҐбвўгҐв бЁ¬¬ҐваЁз­®Ґ, «Ґў®Ґ, ¬ «л¬ - Ї®б-
Є®«мЄг Ґбвм Ё Ў®«м讥, Є®в®а®Ґ ¬л ᥩз б ®ЇЁиҐ¬).

Џгбвм b - Їа ўл© бл­ a, c - «Ґўл© бл­ b, P -«Ґў®Ґ Ї®¤¤ҐаҐў®
a, Q Ё R -«Ґў®Ґ Ё Їа ў®Ґ Ї®¤¤ҐаҐўмп c, S - Їа ў®Ґ Ї®¤¤ҐаҐў® b.
’®Ј¤  P < a < Q < c < R < b < S.








’ Є®© ¦Ґ Ї®а冷Є ᮮ⢥вбвўгҐв ¤ҐаҐўг б Є®а­Ґ¬ c, Ё¬ҐойЁ¬ «Ґў®Ј®
бл­  a Ё Їа ў®Ј® бл­  b, ¤«п Є®в®а®Ј® P Ё Q - Ї®¤¤ҐаҐўмп ўҐаиЁ­л
a,   R Ё S - Ї®¤¤ҐаҐўмп ўҐаиЁ­л b. ‘®®вўҐвбвўго饥 ЇаҐ®Ўа §®ў -
­ЁҐ Ўг¤Ґ¬ ­ §лў вм Ў®«миЁ¬ Їа ўл¬ ўа йҐ­ЁҐ¬. (Ђ­ «®ЈЁз­® ®ЇаҐ¤Ґ-
«пҐвбп бЁ¬¬ҐваЁз­®Ґ Ґ¬г Ў®«м讥 «Ґў®Ґ ўа йҐ­ЁҐ.)

12.2.3. „ ­® ¤ҐаҐў®, бЎ « ­бЁа®ў ­­®Ґ ўбо¤г, Єа®¬Ґ Є®а­п, ў
Є®в®а®¬ а §­Ёж  ўлб®в а ў­  2 (в.Ґ. «Ґў®Ґ Ё Їа ў®Ґ Ї®¤¤ҐаҐўмп
Є®а­п бЎ « ­бЁа®ў ­л Ё Ёе ўлб®вл ®в«Ёз овбп ­  2). „®Є § вм, зв®
®­® ¬®¦Ґв Ўлвм ЇаҐўа йҐ­® ў бЎ « ­бЁа®ў ­­®Ґ ®¤­Ё¬ Ё§ зҐвлаҐе
®ЇЁб ­­ле ЇаҐ®Ўа §®ў ­Ё©, ЇаЁзҐ¬ ўлб®в  ҐЈ® ®бв ­Ґвбп ЇаҐ¦­Ґ©
Ё«Ё 㬥­миЁвбп ­  1.

ђҐиҐ­ЁҐ. Џгбвм Ў®«ҐҐ ­Ё§ЄЁ¬ пў«пҐвбп, ­ ЇаЁ¬Ґа, «Ґў®Ґ Ї®¤-
¤ҐаҐў®, Ё ҐЈ® ўлб®в  а ў­  k. ’®Ј¤  ўлб®в  Їа ў®Ј® Ї®¤¤ҐаҐў 
а ў­  k+2. ЋЎ®§­ зЁ¬ Є®аҐ­м зҐаҐ§ a,   ҐЈ® Їа ў®Ј® бл­  (®­ ®Ўп-
§ вҐ«м­® Ґбвм) зҐаҐ§ b. ђ бᬮваЁ¬ «Ґў®Ґ Ё Їа ў®Ґ Ї®¤¤ҐаҐўмп
ўҐаиЁ­л b. Ћ¤­® Ё§ ­Ёе ®Ўп§ вҐ«м­® Ё¬ҐҐв ўлб®вг k+1,   ¤агЈ®Ґ
¬®¦Ґв Ё¬Ґвм ўлб®вг k Ё«Ё k+1 (¬Ґ­миҐ k Ўлвм ­Ґ ¬®¦Ґв, в Є Є Є
Ї®¤¤ҐаҐўмп бЎ « ­бЁа®ў ­л). …б«Ё ўлб®в  «Ґў®Ј® Ї®¤¤ҐаҐў  а ў­ 
k+1,   Їа ў®Ј® - k, ¤® Ї®вॡгҐвбп Ў®«м讥 Їа ў®Ґ ўа йҐ­ЁҐ; ў
®бв «м­ле б«гз пе Ї®¬®Ј Ґв ¬ «®Ґ.

------------------------------------
------------------------------------
------------------------------------

ўлб®в  㬥­миЁ« бм ­  1



------------------------------------
------------------------------------
------------------------------------

ўлб®в  ­Ґ Ё§¬Ґ­Ё« бм



k-1 Ё«Ё k (ў ®¤­®¬ Ё§ б«гз Ґў k)

------------------------------------
------------------------------------
------------------------------------
ўлб®в  㬥­миЁ« бм ­  1


’аЁ б«гз п Ў « ­бЁа®ўЄЁ ¤ҐаҐў .

12.2.4. ‚ бЎ « ­бЁа®ў ­­®Ґ ¤ҐаҐў® ¤®Ў ўЁ«Ё Ё«Ё Ё§ ­ҐЈ® г¤ -
«Ё«Ё «Ёбв. „®Є § вм, зв® ¬®¦­® ў®ббв ­®ўЁвм бЎ « ­бЁа®ў ­­®бвм б
Ї®¬®ймо ­ҐбЄ®«мЄЁе ўа йҐ­Ё©, ЇаЁзҐ¬ Ёе зЁб«® ­Ґ Ў®«миҐ ўлб®вл
¤ҐаҐў .

ђҐиҐ­ЁҐ. Ѓг¤Ґ¬ ¤®Є §лў вм Ў®«ҐҐ ®ЎйЁ© д Єв:

‹Ґ¬¬ . …б«Ё ў бЎ « ­бЁа®ў ­­®¬ ¤ҐаҐўҐ X ®¤­® Ё§ ҐЈ® Ї®¤¤Ґ-
ॢ쥢 Y § ¬Ґ­Ё«Ё ­  бЎ « ­бЁа®ў ­­®Ґ ¤ҐаҐў® Z, ЇаЁзҐ¬ ўлб®в  Z
®в«Ёз Ґвбп ®в ўлб®вл Y ­Ґ Ў®«ҐҐ 祬 ­  1, в® Ї®«г祭­®Ґ в Є®©
"ЇаЁўЁўЄ®©" ¤ҐаҐў® ¬®¦­® ЇаҐўа вЁвм ў бЎ « ­бЁа®ў ­­®Ґ ўа йҐ­Ё-
п¬Ё (ЇаЁзҐ¬ Є®«ЁзҐбвў® ўа йҐ­Ё© ­Ґ ЇаҐў®б室Ёв ўлб®вл, ­  Є®в®-
а®© ¤Ґ« Ґвбп ЇаЁўЁўЄ ).
— бв­л¬ б«гз Ґ¬ ЇаЁўЁўЄЁ пў«пҐвбп § ¬Ґ­  Їгбв®Ј® Ї®¤¤ҐаҐў 
­  «Ёбв Ё«Ё ­ ®Ў®а®в, в Є зв® ¤®бв в®з­® ¤®Є § вм нвг «Ґ¬¬г.
„®Є § вҐ«мбвў® «Ґ¬¬л. €­¤гЄжЁп Ї® ўлб®вҐ, ­  Є®в®а®© ¤Ґ« -
Ґвбп ЇаЁўЁўЄ . …б«Ё ®­  Їа®Ёб室Ёв ў Є®а­Ґ (§ ¬Ґ­пҐвбп ўбҐ ¤ҐаҐ-
ў® 楫ЁЄ®¬), в® ўбҐ ®зҐўЁ¤­® ("ЇаЁў®©" бЎ « ­бЁа®ў ­ Ї® гб«®-
ўЁо). Џгбвм § ¬Ґ­пҐвбп ­ҐЄ®в®а®Ґ Ї®¤¤ҐаҐў®, ­ ЇаЁ¬Ґа, «Ґў®Ґ Ї®¤-
¤ҐаҐў® ­ҐЄ®в®а®© ўҐаиЁ­л x. ‚®§¬®¦­л ¤ў  б«гз п.
(1) Џ®б«Ґ ЇаЁўЁўЄЁ бЎ « ­бЁа®ў ­­®бвм ў ўҐаиЁ­Ґ x ­Ґ ­ аг-
иЁ« бм (е®вп, ў®§¬®¦­®, ­ агиЁ« бм бЎ « ­бЁа®ў ­­®бвм ў ЇаҐ¤Є е
x: ўлб®в  Ї®¤¤ҐаҐў  б Є®а­Ґ¬ ў x ¬®Ј«  Ё§¬Ґ­Ёвмбп). ’®Ј¤  ¬®¦­®
б®б« вмбп ­  ЇаҐ¤Ї®«®¦Ґ­ЁҐ Ё­¤гЄжЁЁ, бзЁв п, зв® ¬л ЇаЁўЁў «Ё
楫ЁЄ®¬ Ї®¤¤ҐаҐў® б Є®а­Ґ¬ ў x.
(2) ‘Ў « ­бЁа®ў ­­®бвм ў x ­ агиЁ« бм. ЏаЁ н⮬ а §­Ёж  ўл-
б®в а ў­  2 (Ў®«миҐ ®­  Ўлвм ­Ґ ¬®¦Ґв, в Є Є Є ўлб®в  Z ®в«Ёз -
Ґвбп ®в ўлб®вл Y ­Ґ Ў®«ҐҐ 祬 ­  1). ђ §ЎҐаҐ¬ ¤ў  ў аЁ ­в .
(2 ) ‚лиҐ Їа ў®Ґ (­Ґ § ¬Ґ­пўиҐҐбп) Ї®¤¤ҐаҐў® ўҐаиЁ­л x.
Џгбвм ўлб®в  «Ґў®Ј® (в.Ґ. Z) а ў­  k, Їа ў®Ј® - k+2. ‚лб®в  бв -
а®Ј® «Ґў®Ј® Ї®¤¤ҐаҐў  ўҐаиЁ­л x (в.Ґ. Y) Ўл«  а ў­  k+1. Џ®¤¤Ґ-
ॢ® б Є®а­Ґ¬ x Ё¬Ґ«® ў Ёб室­®¬ ¤ҐаҐўҐ ўлб®вг k+3, Ё нв  ўлб®в 
­Ґ Ё§¬Ґ­Ё« бм Ї®б«Ґ ЇаЁўЁўЄЁ.
Џ® ЇаҐ¤л¤г饩 § ¤ зҐ ўа йҐ­ЁҐ ЇаҐ®Ўа §гҐв Ї®¤¤ҐаҐў® б Є®а-
­Ґ¬ ў x ў бЎ « ­бЁа®ў ­­®Ґ Ї®¤¤ҐаҐў® ўлб®вл k+2 Ё«Ё k+3. ’® Ґбвм
ўлб®в  Ї®¤¤ҐаҐў  б Є®а­Ґ¬ x - ў ба ў­Ґ­ЁЁ б ҐЈ® ЇаҐ¦­Ґ© ўлб®в®©
- ­Ґ Ё§¬Ґ­Ё« бм Ё«Ё 㬥­миЁ« бм ­  1, Ё ¬л ¬®¦Ґ¬ ў®бЇ®«м§®ў вмбп
ЇаҐ¤Ї®«®¦Ґ­ЁҐ¬ Ё­¤гЄжЁЁ.

------------- ----------------
------------- ----------------
-------------k ----------------k
2  2Ў



(2Ў) ‚лиҐ «Ґў®Ґ Ї®¤¤ҐаҐў® ўҐаиЁ­л x. Џгбвм ўлб®в  «Ґў®Ј®
(в.Ґ. Z) а ў­  k+2, Їа ў®Ј® - k. ‚лб®в  бв а®Ј® «Ґў®Ј® Ї®¤¤ҐаҐў 
(в.Ґ. Y) Ўл«  а ў­  k+1. Џ®¤¤ҐаҐў® б Є®а­Ґ¬ x ў Ёб室­®¬ ¤ҐаҐўҐ
X Ё¬Ґ«® ўлб®вг k+2, Ї®б«Ґ ЇаЁўЁўЄЁ ®­  бв «  а ў­  k+3. Џ®б«Ґ
Ї®¤е®¤п饣® ўа йҐ­Ёп (б¬. ЇаҐ¤л¤гйго § ¤ зг) Ї®¤¤ҐаҐў® б Є®а­Ґ¬
ў x бв ­Ґв бЎ « ­бЁа®ў ­­л¬, ҐЈ® ўлб®в  Ўг¤Ґв а ў­  k+2 Ё«Ё k+3,
в Є зв® Ё§¬Ґ­Ґ­ЁҐ ўлб®вл Ї® ба ў­Ґ­Ёо б ўлб®в®© Ї®¤¤ҐаҐў  б Є®а-
­Ґ¬ x ў ¤ҐаҐўҐ X ­Ґ ЇаҐў®б室Ёв 1 Ё ¬®¦­® б®б« вмбп ­  ЇаҐ¤Ї®«®-
¦Ґ­ЁҐ Ё­¤гЄжЁЁ.

12.2.5. ‘®бв ўЁвм Їа®Ја ¬¬л ¤®Ў ў«Ґ­Ёп Ё г¤ «Ґ­Ёп н«Ґ¬Ґ­-
в®ў, б®еа ­пойЁҐ бЎ « ­бЁа®ў ­­®бвм. —Ёб«® ¤Ґ©бвўЁ© ­Ґ ¤®«¦­®
ЇаҐў®б室Ёвм C*(ўлб®в  ¤ҐаҐў ). ђ §аҐи Ґвбп еа ­Ёвм ў ўҐаиЁ­ е
¤ҐаҐў  ¤®Ї®«­ЁвҐ«м­го Ё­д®а¬ жЁо, ­Ґ®Ўе®¤Ё¬го ЇаЁ Ў « ­бЁа®ўЄҐ.

ђҐиҐ­ЁҐ. Ѓг¤Ґ¬ еа ­Ёвм ¤«п Є ¦¤®© ўҐаиЁ­л а §­Ёжг ¬Ґ¦¤г
ўлб®в®© ҐҐ Їа ў®Ј® Ё «Ґў®Ј® Ї®¤¤ҐаҐўмҐў:

diff [i] = (ўлб®в  Їа ў®Ј® Ї®¤¤ҐаҐў  ўҐаиЁ­л б ­®¬Ґа®¬ i) -
(ўлб®в  «Ґў®Ј® Ї®¤¤ҐаҐў  ўҐаиЁ­л б ­®¬Ґа®¬ i).

Ќ ¬ Ї®вॡговбп зҐвлॠЇа®жҐ¤гал, ᮮ⢥вбвўгойЁҐ Ў®«миЁ¬ Ё ¬ -
«л¬ Їа ўл¬ Ё «Ґўл¬ ўа йҐ­Ёп¬Ё. Ќ® ў­ з «Ґ ¤ў  § ¬Ґз ­Ёп.
(1) Ќ ¬ ­г¦­®, зв®Ўл ЇаЁ ўа йҐ­ЁЁ Ї®¤¤ҐаҐў  ­®¬Ґа ҐЈ® Є®а­п
­Ґ ¬Ґ­п«бп. (‚ Їа®вЁў­®¬ б«гз Ґ Ї®вॡ®ў «®бм Ўл Є®а४вЁа®ў вм
Ё­д®а¬ жЁо ў ®вжҐ Є®а­п, зв® ­Ґ¦Ґ« вҐ«м­®.) ќв®Ј® ¬®¦­® ¤®бвЁзм,
в Є Є Є ­®¬Ґа  ўҐаиЁ­ ¤ҐаҐў  ¬®¦­® ўлЎЁа вм ­Ґ§ ўЁбЁ¬® ®в Ёе
§­ зҐ­Ё©. (Ќ  Є авЁ­Є е ­®¬Ґа гЄ § ­ бЎ®Єг ®в ўҐаиЁ­л,   §­ зҐ-
­ЁҐ - ў­гваЁ.)








Њ «®Ґ Їа ў®Ґ ўа йҐ­ЁҐ









Ѓ®«м讥 Їа ў®Ґ ўа йҐ­ЁҐ

(2) Џ®б«Ґ ЇаҐ®Ўа §®ў ­Ё© ¬л ¤®«¦­л в Є¦Ґ Ё§¬Ґ­Ёвм б®®в-
ўҐвб⢥­­® §­ зҐ­Ёп ў ¬ ббЁўҐ diff. „«п нв®Ј® ¤®бв в®з­® §­ вм
ўлб®вл ¤ҐаҐўмҐў P, Q, ... б в®з­®бвмо ¤® Є®­бв ­вл, Ї®н⮬㠬®¦-
­® ЇаҐ¤Ї®« Ј вм, зв® ®¤­  Ё§ ўлб®в а ў­  ­г«о.

‚®в Їа®жҐ¤гал ўа йҐ­Ё©:

procedure SR (a:integer); {¬ «®Ґ Їа ў®Ґ ўа йҐ­ЁҐ б Є®а­Ґ¬ a}
| var b: 1..n; val_a,val_b: T; h_P,h_Q,h_R: integer;
begin
| b := right [a]; {b <> null}
| val_a := val [a]; val_b := val [b];
| h_Q := 0; h_R := diff[b]; h_P := (max(h_Q,h_R)+1)-diff[a];
| val [a] := val_b; val [b] := val_a;
| right [a] := right [b] {Ї®¤¤ҐаҐў® R}
| right [b] := left [b] {Ї®¤¤ҐаҐў® Q}
| left [b] := left [a] {Ї®¤¤ҐаҐў® P}
| left [a] := b;
| diff [b] := h_Q - h_P;
| diff [a] := h_R - (max (h_P, h_Q) + 1);
end;

procedure BR (a:integer);{Ў®«м讥 Їа ў®Ґ ўа йҐ­ЁҐ б Є®а­Ґ¬ a}
| var b,c: 1..n; val_a,val_b,val_c: T;
| h_P,h_Q,h_R,h_S: integer;
begin
| b := right [a]; c := left [b]; {b,c <> null}
| val_a := val [a]; val_b := val [b]; val_c := val [c];
| h_Q := 0; h_R := diff[c]; h_S := (max(h_Q,h_R)+1)+diff[b];
| h_P := 1 + max (h_S, h_S-diff[b]) - diff [a];
| val [a] := val_c; val [c] := val_a;
| left [b] := right [c] {Ї®¤¤ҐаҐў® R}
| right [c] := left [c] {Ї®¤¤ҐаҐў® Q}
| left [c] := left [a] {Ї®¤¤ҐаҐў® P}
| left [a] := c;
| diff [b] := h_S - h_R;
| diff [c] := h_Q - h_P;
| diff [a] := max (h_S, h_R) - max (h_P, h_Q);
end;

‹ҐўлҐ ўа йҐ­Ёп (Ў®«м讥 Ё ¬ «®Ґ) § ЇЁблў овбп бЁ¬¬ҐваЁз­®.

Џа®жҐ¤гал ¤®Ў ў«Ґ­Ёп Ё г¤ «Ґ­Ёп н«Ґ¬Ґ­в®ў ЇЁигвбп Є Є
а ­миҐ, ­® в®«мЄ® ¤®Ў ў«Ґ­ЁҐ Ё г¤ «Ґ­ЁҐ ¤®«¦­® б®Їа®ў®¦¤ вмбп
Є®а४樥© ¬ ббЁў  diff Ё ў®ббв ­®ў«Ґ­ЁҐ¬ бЎ « ­бЁа®ў ­­®бвЁ.
ЏаЁ н⮬ ЁбЇ®«м§гҐвбп Їа®жҐ¤га  б в ЄЁ¬Ё бў®©бвў ¬Ё:

¤ ­®: «Ґў®Ґ Ё Їа ў®Ґ Ї®¤¤ҐаҐўмп ўҐаиЁ­л б ­®¬Ґа®¬ a бЎ « ­-
бЁа®ў ­л, ў б ¬®© ўҐаиЁ­Ґ а §­Ёж  ўлб®в ­Ґ Ў®«миҐ 2, ў
Ї®¤¤ҐаҐўҐ б Є®а­Ґ¬ a ¬ ббЁў diff § Ї®«­Ґ­ Їа ўЁ«м­®;
­ ¤®: Ї®¤¤ҐаҐў® б Є®а­Ґ¬ a бЎ « ­бЁа®ў ­® Ё ¬ ббЁў diff б®-
®вўҐвб⢥­­® Ё§¬Ґ­Ґ­, d - Ё§¬Ґ­Ґ­ЁҐ ҐЈ® ўлб®вл (а ў­® 0
Ё«Ё -1); ў ®бв «м­®© з бвЁ ўбҐ ®бв «®бм Є Є Ўл«®}

procedure balance (a: integer; var d: integer);
begin {-2 <= diff[a] <= 2}
| if diff [a] = 2 then begin
| | b := right [a];
| | if diff [b] = -1 then begin
| | | BR (a); d := -1;
| | end else if diff [b] = 0 then begin
| | | SR (a); d := 0;
| | end else begin {diff [b] = 1}
| | | SR (a); d := - 1;
| | end;
| end else if diff [a] = -2 then begin
| | b := left [a];
| | if diff [b] = 1 then begin
| | | BL (a); d := -1;
| | end else if diff [b] = 0 then begin
| | | SL (a); d := 0;
| | end else begin {diff [b] = -1}
| | | SL (a); d := - 1;
| | end;
| end else begin {-2 < diff [a] < 2, ­ЁзҐЈ® ¤Ґ« вм ­Ґ ­ ¤®}
| | d := 0;
| end;
end;

‚®ббв ­®ў«Ґ­ЁҐ бЎ « ­бЁа®ў ­­®бвЁ вॡгҐв ¤ўЁ¦Ґ­Ёп ®в
«Ёбв쥢 Є Є®а­о, Ї®н⮬㠡㤥¬ еа ­Ёвм ў б⥪Ґ Їгвм ®в Є®а­п Є
а бб¬ ваЁў Ґ¬®© ў ¤ ­­л© ¬®¬Ґ­в ўҐаиЁ­Ґ. ќ«Ґ¬Ґ­в ¬Ё б⥪  Ўг¤гв
Ї ал (ўҐаиЁ­ , ­ Їа ў«Ґ­ЁҐ ¤ўЁ¦Ґ­Ёп Ё§ ­ҐҐ), в.Ґ. §­ зҐ­Ёп вЁЇ 

record
| vert: 1..n; {ўҐаиЁ­ }
| direction : (l, r); {l - «Ґў®Ґ, r- Їа ў®Ґ}
end;

Џа®Ја ¬¬  ¤®Ў ў«Ґ­Ёп н«Ґ¬Ґ­в  t ⥯Ґам ўлЈ«п¤Ёв в Є:

if root = null then begin
| get_free (root);
| left [root] := null; right [root] := null; diff[root] := 0;
| val [root] := t;
end else begin
| x := root; ..ᤥ« вм б⥪ Їгбвл¬
| {Ё­ў аЁ ­в: ®бв «®бм ¤®Ў ўЁвм t Є ­ҐЇгб⮬㠯®¤¤ҐаҐўг б
| Є®а­Ґ¬ ў x; б⥪ ᮤҐа¦Ёв Їгвм Є x}
| while ((t < val [x]) and (left [x] <> null)) or
| | ((t > val [x]) and (right [x] <> null)) do begin
| | if t < val [x] then begin
| | | ..¤®Ў ўЁвм ў б⥪ Ї аг <x, l>
| | | x := left [x];
| | end else begin {t > val [x]}
| | | ..¤®Ў ўЁвм ў б⥪ Ї аг <x, r>
| | | x := right [x];
| | end;
| end;
| if t <> val [x] then begin {t ­Ґв ў ¤ҐаҐўҐ}
| | get_free (i); val [i] := t;
| | left [i] := null; right [i] := null; diff [i] := 0;
| | if t < val [x] then begin
| | | ..¤®Ў ўЁвм ў б⥪ Ї аг <x, l>
| | | left [x] := i;
| | end else begin {t > val [x]}
| | | ..¤®Ў ўЁвм ў б⥪ Ї аг <x, r>
| | | right [x] := i;
| | end;
| | d := 1;
| | {Ё­ў аЁ ­в: б⥪ ᮤҐа¦Ёв Їгвм Є Ё§¬Ґ­ЁўиҐ¬гбп Ї®¤¤ҐаҐўг,
| | ўлб®в  Є®в®а®Ј® 㢥«ЁзЁ« бм Ї® ба ў­Ґ­Ёо б ўлб®в®© ў
| | Ёб室­®¬ ¤ҐаҐўҐ ­  d (=0 Ё«Ё 1); нв® Ї®¤¤ҐаҐў® бЎ « ­-
| | бЁа®ў ­®; §­ зҐ­Ёп diff ¤«п ҐЈ® ўҐаиЁ­ Їа ўЁ«м­л; ў ®б-
| | в «м­®¬ ¤ҐаҐўҐ ўбҐ ®бв «®бм Є Є Ўл«® - ў з бв­®бвЁ,
| | §­ зҐ­Ёп diff}
| | while (d <> 0) and ..б⥪ ­ҐЇгбв do begin {d = 1}
| | | ..ў§пвм Ё§ б⥪  Ї аг ў <v, direct>
| | | if direct = l then begin
| | | | if diff [v] = 1 then begin
| | | | | c := 0;
| | | | end else begin
| | | | | c := 1;
| | | | end;
| | | | diff [v] := diff [v] - 1;
| | | end else begin {direct = r}
| | | | if diff [v] = -1 then begin
| | | | | c := 0;
| | | | end else begin
| | | | | c := 1;
| | | | end;
| | | | diff [v] := diff [v] + 1;
| | | end;
| | | {c = Ё§¬Ґ­Ґ­ЁҐ ўлб®вл Ї®¤¤ҐаҐў  б Є®а­Ґ¬ ў v Ї® ба ў­Ґ-
| | | ­Ёо б Ёб室­л¬ ¤ҐаҐў®¬; ¬ ббЁў diff ᮤҐа¦Ёв Їа ўЁ«м-
| | | ­лҐ §­ зҐ­Ёп ¤«п нв®Ј® Ї®¤¤ҐаҐў ; ў®§¬®¦­® ­ аг襭ЁҐ
| | | бЎ « ­бЁа®ў ­­®бвЁ ў v}
| | | balance (v, d1); d := c + d1;
| | end;
| end;
end;

‹ҐЈЄ® Їа®ўҐаЁвм, зв® §­ зҐ­ЁҐ d ¬®¦Ґв Ўлвм а ў­® в®«мЄ® 0 Ё«Ё 1
(­® ­Ґ -1): Ґб«Ё c = 0, в® diff [v] = 0 Ё Ў « ­бЁа®ўЄ  ­Ґ Їа®Ё§-
ў®¤Ёвбп.

Џа®Ја ¬¬  г¤ «Ґ­Ёп бва®Ёвбп  ­ «®ЈЁз­®. …Ґ ®б­®ў­®© да Ј-
¬Ґ­в в Є®ў:

{Ё­ў аЁ ­в: б⥪ ᮤҐа¦Ёв Їгвм Є Ё§¬Ґ­ЁўиҐ¬гбп Ї®¤¤ҐаҐўг,
ўлб®в  Є®в®а®Ј® Ё§¬Ґ­Ё« бм Ї® ба ў­Ґ­Ёо б ўлб®в®© ў
Ёб室­®¬ ¤ҐаҐўҐ ­  d (=0 Ё«Ё -1); нв® Ї®¤¤ҐаҐў®
бЎ « ­бЁа®ў ­®; §­ зҐ­Ёп diff ¤«п ҐЈ® ўҐаиЁ­ Їа ўЁ«м­л;
ў ®бв «м­®¬ ¤ҐаҐўҐ ўбҐ ®бв «®бм Є Є Ўл«® -
ў з бв­®бвЁ, §­ зҐ­Ёп diff}
while (d <> 0) and ..б⥪ ­ҐЇгбв do begin
| {d = -1}
| ..ў§пвм Ё§ б⥪  Ї аг ў <v, direct>
| if direct = l then begin
| | if diff [v] = -1 then begin
| | | c := -1;
| | end else begin
| | | c := 0;
| | end;
| | diff [v] := diff [v] + 1;
| end else begin {direct = r}
| | if diff [v] = 1 then begin
| | | c := -1;
| | end else begin
| | | c := 0;
| | end;
| | diff [v] := diff [v] - 1;
| end;
| {c = Ё§¬Ґ­Ґ­ЁҐ ўлб®вл Ї®¤¤ҐаҐў  б Є®а­Ґ¬ ў v Ї® ба ў-
| ­Ґ­Ёо б Ёб室­л¬ ¤ҐаҐў®¬; ¬ ббЁў diff ᮤҐа¦Ёв
| Їа ўЁ«м­лҐ §­ зҐ­Ёп ¤«п нв®Ј® Ї®¤¤ҐаҐў ;
| ў®§¬®¦­® ­ аг襭ЁҐ бЎ « ­бЁа®ў ­­®бвЁ ў v}
| balance (v, d1);
| d := c + d1;
end;

‹ҐЈЄ® Їа®ўҐаЁвм, зв® §­ зҐ­ЁҐ d ¬®¦Ґв Ўлвм а ў­® в®«мЄ® 0 Ё«Ё -1
(­® ­Ґ -2): Ґб«Ё c = -1, в® diff [v] = 0 Ё Ў « ­бЁа®ўЄ  ­Ґ Їа®-
Ё§ў®¤Ёвбп.
Ћв¬ҐвЁ¬ в Є¦Ґ, зв® ­ «ЁзЁҐ б⥪  ¤Ґ« Ґв Ё§«Ёи­Ё¬Ё ЇҐаҐ¬Ґ­-
­лҐ father Ё direction (Ёе а®«м ⥯Ґам ЁЈа Ґв ўҐаиЁ­  б⥪ ).

12.2.6. „®Є § вм, зв® ЇаЁ ¤®Ў ў«Ґ­ЁЁ н«Ґ¬Ґ­в 
( ) ўв®а®© Ё§ ваҐе б«гз Ґў Ў « ­бЁа®ўЄЁ (б¬. аЁбг­®Є ўлиҐ)
­Ґў®§¬®¦Ґ­;
(Ў) Ї®«­ п Ў « ­бЁа®ўЄ  вॡгҐв ­Ґ Ў®«ҐҐ ®¤­®Ј® ўа йҐ­Ёп
(Ї®б«Ґ 祣® ўбҐ ¤ҐаҐў® бв ­®ўЁвбп бЎ « ­бЁа®ў ­­л¬),
ў в® ўаҐ¬п Є Є ЇаЁ г¤ «Ґ­ЁЁ н«Ґ¬Ґ­в  ¬®¦Ґв Ї®­ ¤®ЎЁвмбп
¬­®Ј® ўа йҐ­Ё©.

‡ ¬Ґз ­ЁҐ. Њл бв а «Ёбм § ЇЁб вм Їа®Ја ¬¬л ¤®Ў ў«Ґ­Ёп Ё
г¤ «Ґ­Ёп в Є, зв®Ўл ®­Ё Ўл«Ё Є Є ¬®¦­® Ў®«ҐҐ Ї®е®¦Ё¬Ё ¤агЈ ­ 
¤агЈ . €бЇ®«м§гп бЇҐжЁдЁЄг Є ¦¤®© Ё§ ­Ёе, ¬®¦­® ¬­®Ј®Ґ гЇа®б-
вЁвм.

‘гйҐбвўгов Ё ¤агЈЁҐ бЇ®б®Ўл ЇаҐ¤бв ў«Ґ­Ёп ¬­®¦Ґбвў, Ј а ­-
вЁагойЁҐ зЁб«® ¤Ґ©бвўЁ© Ї®ап¤Є  log n ­  Є ¦¤го ®ЇҐа жЁо. ЋЇЁиҐ¬
®¤Ё­ Ё§ ­Ёе (­ §лў Ґ¬л© Ѓ-¤ҐаҐўмп¬Ё).
„® бЁе Ї®а Є ¦¤ п ўҐаиЁ­  ᮤҐа¦ «  ®¤Ё­ н«Ґ¬Ґ­в еа ­Ё¬®Ј®
¬­®¦Ґбвў . ќв®в н«Ґ¬Ґ­в б«г¦Ё« Ја ­ЁжҐ© ¬Ґ¦¤г «Ґўл¬ Ё Їа ўл¬
Ї®¤¤ҐаҐў®¬. Ѓг¤Ґ¬ ⥯Ґам еа ­Ёвм ў ўҐаиЁ­Ґ k >= 1 н«Ґ¬Ґ­в®ў ¬­®-
¦Ґбвў  (зЁб«® k ¬®¦Ґв ¬Ґ­пвмбп ®в ўҐаиЁ­л Є ўҐаиЁ­Ґ,   в Є¦Ґ ЇаЁ
¤®Ў ў«Ґ­ЁЁ Ё г¤ «Ґ­ЁЁ ­®ўле н«Ґ¬Ґ­в®ў, б¬. ¤ «ҐҐ). ќвЁ k н«Ґ¬Ґ­-
в®ў б«г¦ в а §¤Ґ«ЁвҐ«п¬Ё ¤«п k+1 Ї®¤¤ҐаҐў . Џгбвм дЁЄбЁа®ў ­®
­ҐЄ®в®а®Ґ зЁб«® n >= 1. Ѓг¤Ґ¬ а бб¬ ваЁў вм ¤ҐаҐўмп, ®Ў« ¤ ойЁҐ
в ЄЁ¬Ё бў®©бвў ¬Ё:
(1) Љ ¦¤ п ўҐаиЁ­  ᮤҐа¦Ёв ®в n ¤® 2n н«Ґ¬Ґ­в®ў (§  ЁбЄ«о-
祭ЁҐ¬ Є®а­п, Є®в®ал© ¬®¦Ґв ᮤҐа¦ вм «оЎ®Ґ зЁб«® н«Ґ¬Ґ­в®ў ®в 0
¤® 2n).
(2) ‚ҐаиЁ­  б k н«Ґ¬Ґ­в ¬Ё «ЁЎ® Ё¬ҐҐв k+1 бл­ , «ЁЎ® ­Ґ
Ё¬ҐҐв бл­®ўҐ© ў®®ЎйҐ (в ЄЁҐ ўҐаиЁ­л ­ §лў овбп «Ёбвмп¬Ё).
(3) ‚ᥠ«Ёбвмп ­ е®¤пвбп ­  ®¤­®© Ё в®© ¦Ґ ўлб®вҐ.
„®Ў ў«Ґ­ЁҐ н«Ґ¬Ґ­в  Їа®Ёб室Ёв в Є. …б«Ё «Ёбв, ў Є®в®ал© ®­
Ї®Ї ¤ Ґв, ­ҐЇ®«®­ (в.Ґ. ᮤҐа¦Ёв ¬Ґ­ҐҐ 2n н«Ґ¬Ґ­в®ў), в® ­Ґв
Їа®Ў«Ґ¬. …б«Ё ®­ Ї®«®­, в® 2n+1 н«Ґ¬Ґ­в (ўбҐ н«Ґ¬Ґ­вл «Ёбв  Ё
­®ўл© н«Ґ¬Ґ­в) а §ЎЁў Ґ¬ ­  ¤ў  «Ёбв  Ї® n н«Ґ¬Ґ­в®ў Ё а §¤Ґ«п-
ойЁ© Ёе бҐаҐ¤Ё­­л© н«Ґ¬Ґ­в. ќв®в бҐаҐ¤Ё­­л© н«Ґ¬Ґ­в ­ ¤® ¤®Ў -
ўЁвм ў ўҐа設㠯।л¤г饣® га®ў­п. ќв® ў®§¬®¦­®, Ґб«Ё ў ­Ґ© ¬Ґ-
­ҐҐ 2n н«Ґ¬Ґ­в®ў. …б«Ё Ё ®­  Ї®«­ , в® ҐҐ а §ЎЁў ов ­  ¤ўҐ, ўл-
¤Ґ«пов бҐаҐ¤Ё­­л© н«Ґ¬Ґ­в Ё в.¤. …б«Ё ў Є®­жҐ Є®­ж®ў ¬л § е®вЁ¬
¤®Ў ўЁвм н«Ґ¬Ґ­в ў Є®аҐ­м,   ®­ ®Є ¦Ґвбп Ї®«­л¬, в® Є®аҐ­м а б-
饯«пҐвбп ­  ¤ўҐ ўҐаиЁ­л,   ўлб®в  ¤ҐаҐў  㢥«ЁзЁў Ґвбп ­  1.
“¤ «Ґ­ЁҐ н«Ґ¬Ґ­в . “¤ «Ґ­ЁҐ н«Ґ¬Ґ­в , ­ е®¤п饬бп ­Ґ ў «Ёб-
вҐ, бў®¤Ёвбп Є г¤ «Ґ­Ёо ­ҐЇ®б।б⢥­­® б«Ґ¤го饣® §  ­Ё¬, Є®в®-
ал© ­ е®¤Ёвбп ў «ЁбвҐ. Џ®н⮬㠤®бв в®з­® ­ гзЁвмбп г¤ «пвм н«Ґ-
¬Ґ­в Ё§ «Ёбв . …б«Ё «Ёбв ЇаЁ н⮬ бв ­®ўЁвбп ­ҐЇ®«­л¬, в® ҐЈ®
¬®¦­® Ї®Ї®«­Ёвм §  бзҐв б®бҐ¤­ҐЈ® «Ёбв  - Ґб«Ё в®«мЄ® Ё ®­ ­Ґ
Ё¬ҐҐв ¬Ё­Ё¬ «м­® ў®§¬®¦­л© а §¬Ґа n. …б«Ё ¦Ґ ®Ў  «Ёбв  Ё¬Ґов
а §¬Ґа n, в® ­  ­Ёе ў¬Ґб⥠2n н«Ґ¬Ґ­в®ў, ў¬Ґб⥠б а §¤Ґ«ЁвҐ«Ґ¬ -
2n+1. Џ®б«Ґ г¤ «Ґ­Ёп ®¤­®Ј® н«Ґ¬Ґ­в  ®бв Ґвбп 2n н«Ґ¬Ґ­в®ў - Є Є
а § ­  ®¤Ё­ «Ёбв. …б«Ё ЇаЁ н⮬ ўҐаиЁ­  ЇаҐ¤л¤г饣® га®ў­п бв -
­®ўЁвбп ¬Ґ­миҐ ­®а¬л, Їа®жҐбб Ї®ўв®апҐвбп Ё в.¤.

12.2.7. ђҐ «Ё§®ў вм ®ЇЁб ­­го б奬г еа ­Ґ­Ёп ¬­®¦Ґбвў, гЎҐ-
¤ЁўиЁбм, зв® ®­  в Є¦Ґ Ї®§ў®«пҐв ®Ў®©вЁбм C*log(n) ¤Ґ©бвўЁ© ¤«п
®ЇҐа жЁ© ўЄ«о祭Ёп, ЁбЄ«о祭Ёп Ё Їа®ўҐаЄЁ ЇаЁ­ ¤«Ґ¦­®бвЁ.

12.2.8. Њ®¦­® ®ЇаҐ¤Ґ«пвм бЎ « ­бЁа®ў ­­®бвм ¤ҐаҐў  Ё­ зҐ:
вॡ®ў вм, зв®Ўл ¤«п Є ¦¤®© ўҐаиЁ­л ҐҐ «Ґў®Ґ Ё Їа ў®Ґ Ї®¤¤ҐаҐўмп
Ё¬Ґ«Ё ­Ґ б«ЁиЄ®¬ бЁ«м­® ®в«Ёз ойЁҐбп Є®«ЁзҐбвў  ўҐаиЁ­. (ЏаҐЁ¬г-
йҐбвў® в Є®Ј® ®ЇаҐ¤Ґ«Ґ­Ёп б®бв®Ёв ў ⮬, зв® ЇаЁ ўа йҐ­Ёпе Ё§¬Ґ-
­пҐвбп бЎ « ­бЁа®ў ­­®бвм в®«мЄ® ў ®¤­®© ўҐаиЁ­Ґ.) ђҐ «Ё§®ў вм
­  ®б­®ўҐ нв®© Ё¤ҐЁ бЇ®б®Ў еа ­Ґ­Ёп ¬­®¦Ґбвў, Ј а ­вЁагойЁ©
®жҐ­Єг ў C*log(n) ¤Ґ©бвўЁ© ¤«п ўЄ«о祭Ёп, г¤ «Ґ­Ёп Ё Їа®ўҐаЄЁ
ЇаЁ­ ¤«Ґ¦­®бвЁ. (“Є § ­ЁҐ. Ћ­ в Є¦Ґ ЁбЇ®«м§гҐв Ў®«миЁҐ Ё ¬ «лҐ
ўа йҐ­Ёп. Џ®¤а®Ў­®бвЁ б¬. ў Є­ЁЈҐ ђҐ©­Ј®«м¤ , ЌЁўҐаЈҐ«мв  Ё „Ґ®
"Љ®¬ЎЁ­ в®а­лҐ  «Ј®аЁв¬л".)
Соседние файлы в папке Шень