Кіріспе

Басымдық кезегі бинарлық үйіндінің бір түрімен іске асырылған. Компьютер ғылымында, сол жақты ағаш немесе сол жақты үйінді – бинарлық үйіндінің бір түрімен іске асырылған басымдық кезегі. Кез келген x түйіні s мәніне ие, ол x түйінінен басталатын кіші ағаштың ең жақын жапырағына дейінгі қашықтықты көрсетеді. Бинарлық үйіндіге қарағанда, сол жақты ағаштар өте теңгерімсіз болуға тырысады. Үйінді қасиетінен басқа, сол жақты ағаштар оң жақ ұрпағының s мәні төмен болуын қамтамасыз етеді. Биіктікке бағытталған сол жақты ағашты Кларк Аллан Крейн ойлап тапқан. Атауының себебі – сол жақ ағаш әдетте оң жақ ағаштан биік болады. Сол жақты ағаштар біріктірілетін үйінділер болып табылады. Ағашқа жаңа түйін қосылғанда, жаңа бір түйіннен тұратын ағаш құрылып, қазіргі ағашпен біріктіріледі. Элементті жою үшін, ол сол және оң кіші ағаштарының бірігуімен алмастырылады. Бұл екі операция да O(log n) уақытты қажет етеді. Жаңадан қосылу операциясы Фибоначчи үйінділерінен баяу, себебі олар O(1) (тұрақты) амортизацияланған уақытта және O(log n) нашар жағдайда жаңадан қосылуды қолдайды. Сол жақты ағаштардың артықшылығы – олардың бинарлық үйінділерге қарағанда жылдам бірігу қабілетінде, себебі бинарлық үйінділерге Θ(n) уақыт керек. Көбінесе, қисық үйінділерді біріктіру тиімділігі жоғарырақ болады. Дегенмен, сол жақты үйінділерді біріктірудің нашар жағдайдағы күрделігі O(log n) болса, қисық үйінділерді біріктірудің күрделігі тек амортизацияланған O(log n) болады.

Бәсекелестік

Көбінесе солшыл ағаш - биіктікке бағытталған солшыл ағаш болып табылады.

S-құны

S мәні (немесе рангі) — бұл түйінден сол түйінге тамырланған кіші ағаштың ең жақын бос орнына дейінгі қашықтық. Басқаша айтқанда, бос баланың s мәні жасырын түрде нөлге тең. Басқа түйіндердің s мәні балаларының s мәндерінің ең кішісінен бірге көп. Осылайша, оң жақтағы мысалда, кем дегенде бір баласы жоқ барлық түйіндердің s мәні 1-ге тең, ал 4-ші түйіннің s мәні 2-ге тең, себебі оның оң баласының (8) s мәні 1-ге тең. (Кейбір сипаттамаларда бос балалардың s мәні -1 деп есептеледі.) x түйініне тамырланған кіші ағаштағы ең жақын жоқ жапыраққа дейінгі ең қысқа жолдың ұзындығы дәл s(x) тең, сондықтан s(x)-1 немесе одан аз тереңдіктегі әрбір түйінде дәл 2 бала болады, әйтпесе s(x) одан кіші болар еді. Бұл x түйініне тамырланған ағаштың мөлшері кем дегенде, сондықтан s(x) ең көп дегенде , m — x түйініне тамырланған кіші ағаштың түйіндерінің саны.== Сол жақты ағаштар да салмақ бойынша бейімделуі мүмкін. Бұл жағдайда түйін x-те s мәндерін сақтаудың орнына, біз w(x) атрибутын сақтаймыз, ол: w(x) = w(x.оң) + w(x.сол) + 1. WBLT барлық ішкі түйіндер үшін w(x.сол) ≥ w(x.оң) шартын қамтамасыз етеді. WBLT операциялары осы инвариантты сақтап қалады, яғни оң тармақ сол тармақтан артық болғанда түйіннің балаларын ауыстырады, дәл сол сияқты HBLT операцияларында да.

Екі Min WBLT біріктіру

WBLT-де біріктіру операциясы жоғарыдан төменге бір рет тікелей өту арқылы жүзеге асырылуы мүмкін, себебі рекурсивті шақыру алдында кіші ағаштардағы түйіндердің саны белгілі болады. Осылайша, егер оң тармақтағы түйіндердің жалпы саны және біріктірілетін ағаш сол тармақтағы түйіндер санынан артық болса, сол және оң тармақтарды ауыстыруға болады. Бұл операцияларды бір жолмен аяқтауға және операциялардың уақыттық күрделілігін тұрақты шамамен жақсартуға мүмкіндік береді. Біріктіру операциясы төмендегі суретте көрсетілген.

WBLT-те басқа операциялар

min элементін қосу және жою HBLT-лердегідей біріктіру операциясы арқылы жүзеге асырылуы мүмкін. WBLT-лер Min кілтін біріктіру, қосу және жою кезінде HBLT-лерден тұрақты фактормен озып кетеді, бірақ WBLT-лерден кез келген элементті жою кезінде O(log n) шегі кепілденбесе, себебі θ(n) түйіндерді қарап шығу қажет. Егер бұл HBLT болса, онда 60 кілті бар жапырақ түйінін жою O(1) уақыт алады және s мәндерін жаңартудың қажеті жоқ, өйткені барлық түйіндер үшін оң жақтан ең ұзын жолдың ұзындығы өзгермейді. Бірақ WBLT ағашында біз әрбір түйіннің салмағын тамырға дейін жаңартуымыз керек, бұл ең жаман жағдайда O(n) уақытты алады.