- •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.Қос хештеу.
28.Стек
Стек – деректер құрылымы, кейбір жағдайларда магазин, динамикалық жады деп аталады. Осындай стек алдын-ала тізбектеліп орналасқан шексіз «көршілес ұяшықтардан» тұрады, олардың ішінен «стек басы» және «түбі» ерекше ажыратылады. Процесстің кез-келген уақыт мезетінде тек стек басына ғана оқу немесе жазу мүмкіндігі болады. Осыған орай процесс барысында стек не өсіп немесе кеміп отырады. Стек реттелген ұяшықтардан құрылған жады. Осы жадты тізбек сурет 3.1. немесе тізім ретінде сурет 3.2. көрсетілгендей ұйымдастыруға болады.
Сурет 3.1 Сурет 3.2
Егер стек тізім ретінде ұйымдастырылса да, оны тізбектелген тізім ретінде көрсету жеңіл болып келеді. Ары қарай екі мысал қарастырайық. Мысалдарда стек арқылы арифметикалық өрнектерді есептеуді ұйымдастрады. Бірінші өрнек (a + b * c) / d болсын, оның ағашы келесі түрде болады.
Сурет 3.3
Постфикстік жазбасы a b c * + d / болады. онда берілген өрнекті есептеу үшін процесстің әр мезетіндегі стек тізбегі келесі суретте көрсетілгендей болады.
Келесі мысал жоғарыда қарастырылған (a + b) * c-d / f өрнекті береді. Есептеу мезетінде айнымалылардың мәндері белгілі болсын a=3, b= -1, c=2, d=6, f=3. Онда
Постфикстік жазбаны қолдану кезінде операция символы тікелей өзінің операндтары артынан жүріп отырады, және де есептеу мезетінде, операндтардың мәндері белгілі болып отырады.
Стекке қолданатын қарапайым операциялар. Мұндай операциялар (командалар) саны көп емес, бірақ олар жеткілікті көптүрлі және келесі операциялардан тұрады:
push – стекке енгізіледі. Дәл айтқанда стек басына орнатылады.
pop – стек басынан сөз алынып, белгілі бір айнымалы мәніне тағайындалады.
Стектің басындағы екі ұяшыққа қолданатын арифметикалық және логикалық операциялар да бар, олар нәтижелерді де стекке жазады.
Осыған қоса процедуралардың локальді айнымалыларымен және процедуралардың өзімен жұмыс жасау командалары, константалармен жұмыс жасау командалары және шартты немесе шартсыз алмасу командалары және шартты немесе шартсыз алмасу командалары, т.б. командалар.
29.Сызықты хештеу.
Элементті кірістірген кезде кестені жол бойынша қатарлап көру жинақталып қалуға әкеліп соқтырады,т.с.элемент мәліметтерінің жинақталуы уақыт өте келе ұзын кластерлердің жиналуына әкеледі.Кластер үлкен болған сайын ол уақыт өте келе одан да үлкен болуы мүмкін.Мұндай бұрыс эффект кірістіруі бар сызықтық хештеу процедурасына тән және бұл кестені практика жүзінде қолдануды шектейді.
Сызықтық шектеу жағдайында барлығы онша күрделі болып көрінбейді. Мұнда бұрынғыдай m хеш кестенің ұзындығы болсын, онда хеш функция ретінде мынадай функцияны алуға болады.
h(p)=pmod m;
мұнда p белгінің мәні a mod операцияның белгіленуі бүтін p санын m бүтін оң санына бөлгендегі қалдықты қайтаратын операция.
Егер белгінің кез келген екі p’ p” мәндері үшін p’≠p” болғанда h(p’)≠h(p”) болса онда барлығы жақсы.Белгіленгендей бұл жағдайда біз мінсіз немесе идеалды хеш функциямен жұмыс істейміз, шекті өлшемді жағдайда екі p,h(p) бағанды кесте түрінде берсек те болар еді.Егер әрине белгілер мәндері натуралды қатардың бөлігін құрамайтын болса мысалы,[1,2,…,n] (3.1a сурет) онда мүмкін көп жағдайда бұл кестеде “ақ дақтар” табылады(3.1в сурет).Соңғы ретте кестеде бар белгіге сәйкес элементті тезірек іздеуді мүмкін етуге болады.
_p |
h(p) |
1 2 3 . . . N |
h(1) h(2) h(3) . . . h(n) |
Сурет 3.1а
Сурет 3.1б
_p |
h(p) |
1 2 3 . . . N |
h(1) h(2) h(3) . . . h(n) |
P |
h(p) |
P1=i2 . . . P2=i2 . . . Pn=in |
A1 . . . A2 . . . an
|
Сурет 3.1в
Қарапайым нұсқада белгілі бір массив үшін жолында екінші бағандағы мәні тең болуы мүмкін.Егер де кестенің өзі кестесімен салымтырғанда жинақы түрде жазылса,ал оның бірінші бағаны реттелген болса,онда бүкіл кестені тегіс іздегенге қарағанда осы кесте бойынша іздеу реттелген массивте іздеудегідей болуына басымдық беріледі. Сонымен жай кесте салыстырмалы жалпы жағдайдың өзінде бізге берілген есептің эффективті шешімін табуда кейбір арнайы жағдайлардан басқа жағдайларда бөгет болады. Әрине хеш кестеде де бос жолдар болуы тиіс бірақ олар көп мөлшерде болмауы керек,тек коллизияны шешуге керекті мөлшері ғана керек болады.
Нақты жағдайда әр түрлі p’ p”(p’≠p’’) мәндері үшін h(p’)=h(p”) орын алатын жағдайлар туып отырады.Егер де бұл ретте h(p’) нөмірлі кесте жол ұяшығы p’ мәнін алған болса,онда p” мәнін орналастыратын бос ұяшықтарды айқындайтын хеш кесте жолдарын тексеретін процедура ұйымдастыру керек.
Сызықтық хеширлеу жағдайында мынандай хеш функция түрін қолдану ұсынылады:
(*) h(p,i)=(h(p)+i)mod m, h(p,0)=h(p)mod m;
Iиндексі бұл тексеру нөмірі i:=0,1,…,m-1.
Сызықтық хештеу схемасын жеңіл жасауға болады,алайда жоғарыда айтылып кеткендей оны қолдану жинақталып қалуға әкеліп соқтырады,мәліметтердің жинақталуы өсіп келе жатқан кластерлерге айналады.
Мынандай мысал қарастырайық:сызықтық хештеу страрегиясы кезінде хеш кестеге 119,78,49,59,11,31,29,1000,39 массиві кірістірілсін.Кестенің астында қара шрифтімен кірістірілетін элементтер жазылған.
-
59
59
59
59
59
59
59
11
11
11
11
11
11
11
31
31
31
31
31
31
29
29
29
29
29
1000
1000
1000
39
39
…
78
78
78
78
78
78
78
78
78
119
119
119
119
119
119
119
119
119
119
119 78 49 59 11 31 29 1000 39
3.1-кесте
Осы кішкентай мысалдың өзінде жоғарыдан төмен қарай өсетін үлкен кластердің пайда болу және өсу мүмкіндігі көрсетіліп тұр.
Сызықтық хештеудің негізінде жасалған хештеудің эффективтілігі: Хеш кестеде жоқ элемент жағдайында тексерудің орташа саны мынаны көрсетеді:1/2(1+1/(1-a)2)
Бұл баға хеш кестеге элемент қою операциясын орындаған кезде де сақталады.Хеш кестеде бар элемент жағдайында тексерудің орташа саны мынандай болады:1/2(1+1/(1-a)2)
