- •1. Ақпараттық іздеудің қарапайым есебі
- •3.Бинарлы ағашты симметриялы ретпен айналу.
- •4.Бинарлы ағашты тура ретпен айналу.
- •5.Бинарлы ағашты кері ретпен айналу.
- •6.Avl ағашта сол жақ және оң жақ бұрылыс операциялары.
- •7. Ықтималды іздеу ағашы.
- •8.Бинарлы іздеу ағашының элементтерін жою.
- •9.Қызыл-қара ағаш және оның ерекшеліктері.
- •Қызыл-қара ағаштың биіктігі
- •Операциялар.
- •Қызыл-қара ағаштың артықшылығы..
- •10.Бинарлы ағаш тұрғызу алгоритмі және олардың арнайы ерекшеліктері.
- •11.Толықтау бинарлы ағаш.
- •12.Бинарлы ағаштың көрсетілуі.
- •13.Іздеу бинарлы ағашынан элементті жою
- •14.O(n log2n) күрделілігімен сұрыптау.
- •15.O(n2) күрделілігімен сұрыптау.
- •16.Бинарлы ағаштармен жасалатын стандарты операциялар.
- •17.Бинарлы ағаштар және оның қолдануы.
- •18.Бинарлы ағашта кесте құру және оның ерекшеліктері.
- •20.Шелл сұрыптауы (Shell_sort) және оның ерекшеліктері.
- •21.Quick_sort сұрыптауы оның ерекшеліктері.
- •22.Пирамидалы сұрыптау алгоритмі (Heap_sort) ж/е оның ерекшелік/і.
- •23.Newman_sort және оның ерекшеліктері.
- •24.Экстремальды қасиет/і бар бинарлы ағаштың арнайы ішкі класс/ы.
- •25.Бинарлы ағаштар қолданыстары және жалпылаулары.
- •26.Квадраттық xештеу.
- •27.Avl ағаштары.
- •28.Стек
- •29.Сызықты хештеу.
- •30.Қос хештеу.
27.Avl ағаштары.
Бинарлы ағаштардың бұл класы алдыңғы жағдайдағымен салыстырғандағы тұрғызу алгоритмі күрделі болғанымен маңызды позитивті қасиеттерге ие болады. Бұл тип ағаштар көзге бейсимметриялы көрінуі мүмкін, бірақ оларда ұзын бұтақтар жоқ, оны төменде келтірілген анықтаманы мұқият оқып шыққанда түсінуге болады. Мұндай ағаштың түбірінен шыққан бұтақтың максималды ұзындығы с*log2n, мұнда c=1.44 аспауы тиіс.
Екіншіден, элемент қосу немесе алудан кейін ағашты түгелдей қайта құру қажет емес, сонымен мұндай ағашты құру алгоритмі белгілі бір күрделіліктерге қарамай көп еңбекті талап етпейді.
AVL ағаштарды көбіне баланстандырылған ағаштар деп атайды. Анықтама. V төбесінен басталатын ағаш бұтағының ұзындығы депосы бұтаққа тиісті төбелер деңгейінің максималь деңгейі мен V төбесі деңгейі арасындағы айырма аталады.
Сонымен, бұтақ ұзындығы деп осы бұтаққа тиісті ең ұзын жолдың ұзындығы алынады.
Көбіне ұзындық атауының орнына қосымша ат биіктік қолданылады.
Ағаш төбесі балансы деп берілген төбелерден шығатын оң және сол бұтақтар ұзындықтарының айырмасын айтады.
Анықтама. Егер ағаштың әрбір төбесі үшін баланстың абсолют мәні 1-ден артық болмаса, онда ағашты баланстандырылған (AVL) ағаш деп атайды.
N элементтен тұратын массив бойынша тұрғызылған AVL ағаштағы ең ұзын бұтақтың ұзындығын бағалайық. Бұл үшін L≥1 санын белгілейміз, алдымен максималь ұзындығы L- ға тең бұтақтары бар AVL ағаштар жиынын қарастырамыз. Осы ағаштардың ішінде төбелер саны минимум болатындары да бар. Ары қарай бұл AVL ағаштарын минимальды деп атаймыз.
Енді біз мына функцияны қарастырайық.
n(l)-AVL ағашындағы төбелердің минималь саны, бұтақтарының максималь ұзындығы L≥1 тең. Бұл жерде Шеннон функциясын еске түсіруге болады, бірақ аналогиясы тура болмайды, себебі Шеннон функциясы maxmin функциясы, ал біздің жағдайда maxmin.
AVL ағашқа жаңа төбе қосу кезінде бинарлы ағашты тұрғызудың қарапайым алгоритмі қолданылады. Осылайша, бар болған AVL ағашқа қайта қосылған төбе, оны N арқылы белгілейік, ағаш түбірі мен жаңа төбені қосатын ерекшеленген деп аталатын жол үшін ақырғы төбе болып табылады. Жаңа төбелерді қосу ағаш балансын бұзатын жағдайда ағаштан N төбесі алған позиция ақырғы болмауы мүмкін. Жаңа төбе қосу кезінде тек ерекшеленген жол бойындағы төбелер балансы өзгеретінін ескерсек, онда қосқаннан кейін осы жол бойындағы төбелер балансын ғана қайта есептеу керек. Сонда егер олардың ең болмағанда біреуіндегі баланс мәні ± 2 тең болса, онда жартылай және онша қиын емес ағашты қайта тұрғызу жүргізу керек.
AVL ағашқа жаңа төбелер қосу есебі шешімін корректі түрде жүргізетін жалпы талаптарға тоқталып кетейік:
Осы түрлендіру нәтижесінде алынған бинарлы ағаш іздеудің бинарлы ағашы болуы керек;
Нәтижелік ағаш AVL ағашы болуы керек;
Түрлендіру жеткілікті түрде тиімді болуы керек.
Осыған байланысты, жаңа төбе қосқанға дейін AVL ағашы болған, бірақ балансы жаңа төбе қосу нәтижесінде бұзылған ағаштың ішкі ағаштарымен орындалатын екі операцияны қарастырайық. Қажет болған жағдайда бұл операциялар кез-келген бинарлы іздеу ағашымен жүргізіле алады.
А
лғашқы
операция сол жақ бұрылыс, мағынасын
келесі сурет ұғындырады.
Сол жақ бұрылыс
Сонымен
бинарлы іздеу ағашымен сол жақ немесе
оң жақ бұрылыс операциясын орындау
нәтижесінде алынған ағаш бинарлы іздеу
ағашы болып қалады. Ескерте кетсек, сол
жақ немесе оң жақ бұрылыс операциясын
орындау онша қиын шаруа емес, себебі
олардың әрбірін орындағанда тек үш
сілтемені ғана баптау керек және ең
маңыздысы бұл
,
,
ішкі ағаштарынан тәуелсіз жүргізіледі.
AVL ағашының балансын сақтау алгоритмінің негіздемесі үлкен болғанымен, алгоритмнің псевдокоды өзінің негіздемесінен кішірек екені айқын. Осыған орай псевдокодтың мысалы келесідей жазылуы мүмкін:
Procedure Balance_tree(A,N);
B
left_des(A);
C
right_des(A);
if
Bal(A)=-2 and N
begin RR(
);
LR(
);
exit; end;
if
Bal(A)=+2 and N
branch(B)
then begin RR(
);
exit; end
else
if Bal(A)=+2 and N
Branch(B) then
begin
LR(
);
RR(
);
exit; end;
N
R.
Branch(C) бұл
қатынас. C-ның оң жақ бұтаққа N төбесі
кіруін тексереді, ал мына N
branch(C) қатынас сол жақ бұтағына N төбесі
кіруін тексереді. Әр қатынас бір
теңсіздікпен тексеріледі. Бұл процедураның
параметрлері N жаңа бапталған төбенің
мәні және A критикалық төбеге сілтеме
болады.
