- •5В011100 - «Информатика» мамандығына арналған
- •1. Глоссарий
- •2. Дәрістер
- •Программалар анализінің ережелері:
- •Сұрыпталған тізбектерді біріктіру
- •Сұрыпталған тізбектерді біріктіру алгоритмі
- •Бинарлық іздеу.
- •Бір байланысты сызықтық тізім.
- •Табиғи бірігу арқылы сұрыптау
- •Байланған сызықтық тізімдер
- •Тізімдермен жүргізілетін операциялар
- •Реттелген тізімді жасау
- •Екі байланысты сызықтық тізім
- •Стек операциялары
- •Стектер қолданылады:
- •Шірет объектісімен жүргізілетін операциялар
- •Шіреттер қолданылады:
- •Приоритеттер шіреті
- •Тармақ тәрізді құрылымды беру әдістері
- •2. Кірістірілген жақшалар:
- •Кірістірілген жиындар.
- •4. Кесінді тізбек.
- •Екілік тармақтың құрылымы.
- •Өрнектердің екілік тармақтары
- •Екілік тармаќтармен ж‰ргізілетін амалдар
- •Тармаќты толыѓымен ќарап µту алгоритмі
- •Екілік іздеу тармаѓынан элементті алып тастау.
- •Турнирлік с±рыптау
- •Массивті пирамидаѓа т‰рлендіру
- •Пирамидаға элемент қосу
- •Элементтерді пирамидадан өшіру
- •Пирамидалық сұрыптау
- •Балансталған тармаққа қосу
- •3 Зертханалық сабақтар Зертханалық жұмыс №1
- •Жалпы мәлімет
- •Зертханалық жұмыс №2
- •Жалпы мәлімет
- •Тармақ тәрізді құрылымды беру әдістері
- •2. Кірістірілген жақшалар:
- •Кірістірілген жиындар.
- •4. Кесінді тізбек.
- •Зертханалық жұмыс №3
- •Жалпы мәлімет
- •Зертханалық жұмыс №4
- •Жалпы мәлімет
- •Ортасынан бөлу алгоритмі
- •Зертханалық жұмыс №5
- •Жалпы мәлімет
- •Ортасынан бөлу алгоритмі
- •Зертханалық жұмыс №6
- •Жалпы мәлімет
- •Екілік тармақтармен жүргізілетін амалдар
- •Зертханалық жұмыс №7
- •Жалпы мәлімет
- •Бинарлық іздеу.
- •Зертханалық жұмыс №8
- •Жалпы мәлімет
- •Зертханалық жұмыс №9
- •Жалпы мәлімет
- •Зертханалық жұмыс №10
- •Жалпы мәлімет
- •Зертханалық жұмыс №11
- •Жалпы мәлімет
- •Сұрыпталған тізбектерді біріктіру
- •Сұрыпталған тізбектерді біріктіру алгоритмі
- •4.Студенттердің өздік жұмыстар жоспары
- •Бақылаушы - өлшемдік құралдар
Екілік тармаќтармен ж‰ргізілетін амалдар
Тармаќты толыѓымен ќарап µту алгоритмі
Тармаќтыњ тµбелерін с±рыптау алгоритмі – тармаќты толыѓымен ќарап µту алгоритмі деп аталады. М±ндай алгоритмдер т‰йінде ‰ш т‰рлі єрекет жасайды: т‰йінге кіреді, сол жаќ б±таќпен рекурсивті т‰рде тµмендейді, рекурсивті т‰рде оњ жаќ б±таќпен тµмендейді.
Тармаќты ќарап шыѓудыњ 3 т‰рлі негізгі єдісі бар:
Тура єдіс;
Симметриялы єдіс;
Кері єдіс;
Тармаќты толыѓымен ќарап шыѓу алгоритмі олардыњ түйініндегі µздерініњ єрекеттерімен байланысты реттерімен ажыратылады.
Тура єдіс (жоѓарыдан тµмен ќарай):
- т‰йінге кіру;
- сол жаќ б±таќтан µту;
- оњ жаќ б±таќтан µту;
(1)
7
5 8
0 6 9
2
Екілік тармаќ берілген. Б±л тармаќтаѓы т‰йінге кіру реті келесідей болады:
7 5 0 2 6 8 9
Симметриялыќ єдіс (солдан оњѓа ќарай):
- сол жаќ б±таќтан ж‰ріп µту;
- т‰йінге кіру;
- оњ жаќ б±таќтан ж‰ріп µту;
Берілген (1) тармаќ ‰шін симметриялыќ ќарап шыѓу келесі т‰рде болады:
0 2 5 6 7 8 9
Екілік тармаќты симметриялыќ ќарап шыѓу єдісі элементтерді µсу ретімен орналастырды. Осылайша, с±рыптаудыњ таѓы бір алгоритмін ±сынуѓа болады:
А) массив негізінде с±рыптау;
В) тармаќты симметриялыќ ќарап шыѓу єдісі ж‰зеге асады;
М±ндаѓы ењ жаќсы жаѓдайда алгоритмніњ тиімділігі O(n log2n) болады.
Тармаќты кері ќарай ќарап шыѓу єдісі (тµменнен жоѓарыѓа ќарай):
- сол жаќ тармаќтан ж‰ріп µту;
- оњ жаќ тармаќтан ж‰ріп µту;
- т‰йінге кіру;
Осы єдіс ‰шін тармаќты ж‰ріп µтудіњ жолы:
2 0 6 5 9 8 7
¤рнектіњ екілік тармаќтарын ќарап µтуде жоѓарыда берілген ‰ш єдіспен мынаны аламыз:
Ќарап шыѓудыњ тура єдісі. ¤рнектерді жазудыњ префиксті форматына (жоѓарыдан тµменге ќарай) сєйкес келеді.
Ќарап шыѓудыњ симметриялыќ єдісі µрнектерді жазудыњ инфиксті форматина сєйкес келеді.
ќарап шыѓудыњ кері єдісі µрнектерді жазудыњ постфиксті форматына сєйкес келеді.
Екілік іздеу тармаѓынан элементті алып тастау.
Тармаќтан элементті алып тастау алгоритмі тармаќтаѓы осы элементтіњ орналасќан орнына тєуелді болады жєне келесі тµрт жаѓдайды ќамтиды:
Мєні х-ке тењ болатын элемент жоќ.
Мєні х-ке тењ болатын элемент терминальды т‰йін болып табылады.
Мєні х-ке тењ болатын элемент бір ѓана ±рпаќты болады.
Мєні х-ке тењ болатын элемент екі ±рпаќты болады.
Бір ѓана ±рпаѓы болатын элементті алып тастауда ешќандай к‰рделілік жоќ. М±ндай єрекеттер сызыќтыќ тізімдегі элементті алып тастауѓа ±ќсас болады.
Егер элемент екі ±рпаќты болса, онда екі баѓытта бір ѓана сілтемемен кµрсетуге келмейді. Б±л жаѓдайда µшірілетін элементті ауыстыруѓа тура келеді. Ауыстыратын элемент ‰шін оныњ сол жаќтаѓы ењ оњ жаќќы элемент, ал оњ жаќтаѓы ењ сол жаќќы элемент тањдап алынады (6 жєне 8 µшірілетін элементке мєндері жаѓынан жаќын элементтер).
Элементі µшіру алгоритмі. Алгоритм жоѓалѓанда ќарастырылатын 4 жаѓдайды ќамтиды:
1-жаѓдай: µшірілетін т‰йін табылѓан жоќ. Яѓни µшірук алгоритмі µз ж±мысын тоќтатады.
2-жаѓдай: т‰йінніњ ±рпаќтары жоќ. Яѓни жапыраќ болып табылады. Б±л жаѓдайда ата-аналыќ т‰йінді оныњ б±таѓы бос болатындай етіп жањарту керек.
3-жаѓдай:
1. Т‰йінніњ сол жаќ ±рпаѓы бар, оњ жаќ ±рпаѓы жоќ. Яѓни сол жаќ б±таќты оныњ ата-анасына жалѓастыру керек.
2. Т‰йінніњ оњ жаќ ±рпаѓы бар, сол жаќ ±рпаѓы жоќ. Яѓни т‰йінніњ оњ жаќ б±таѓын оныњ ата-анасына жалѓастыру керек.
4-жаѓдай: екі ±рпаѓы бар т‰йінді алып тастау немесе µшіру. М±нда µшірілетін т‰йінді ауыстыру ќажет. Ауыстыру ‰шін сол жаќ б±таѓы ењ оњ жаќтаѓы т‰йінді тањдаймыз.
Келесілерді аныќтаймыз:
D – µшірілетін т‰йін
P – µшірілетін элементтіњ ата-анасы
R – ауыстыратын т‰йін
PR – R т‰йінніњ ата-анасы.
D т‰йінініњ сол жаќ б±таѓына кµшеміз. Себебі, R ауыстыратын т‰йін µшірілетін D т‰йінінен кіші болады.
R ауыстыратын т‰йін D т‰йінініњ сол жаќ б±таѓындаѓы максимальды т‰йін болып табылады. Оњ жаќ б±таќ бойынша тµмен жылжып, P ауыстыратын т‰йінді іздейміз. Жылжу барысында RR ата-аналыќ т‰йінді баќылап отырамыз. М±нда екі м‰мкін жаѓдай бар:
Оњ жаќ б±таќ бос. R ауыстытылатын т‰йін µшірілетін т‰йінніњ сол жаќ баласы болып табылады. Ал PR сєйкесінше D т‰йініне кµрсетіледі. М±ндай жаѓдайда келесі єрекеттерді орындаймыз:
А) D т‰йінініњ оњ жаќ б±таѓын R т‰йініне ќосамыз.
Б) ¤шірілетін т‰йінніњ P ата-анасын R т‰йініне ќосамыз.
P P
D R
R PR=D
Оњ жаќ б±таќ оњ жаќ б±таќ
Оњ жаќ б±таќ бос емес. М±ндай жаѓдайда ауыстыратын т‰йін жапыраќтыќ т‰йін болады немесе тек ќана сол жаќ б±таѓы бар т‰йін болады. Келесі єрекеттерді орындаймыз:
А) R т‰йінін тармаќтан бµліп аламыз.
Б) R т‰йінініњ ±рпаќтарын оныњ ата-аналыќ РR т‰йініне жалѓаймыз. (R-діњ сол жаќ б±таѓы РR-ѓа оњ жаќ б±таќ болып жалѓанады).
С) ¤шірілетін D т‰йіні R т‰йінімен ауыстырылады. Яѓни D т‰йінініњ ±рпаќтары R т‰йінініњ ±рпаќтары болып жалѓанады, ал R т‰йіні ата-аналыќ P т‰йініне жалѓанады.
Дәріс 13.
Массивтермен берілген бинарлыќ тармаќтар
Мақсаты: Массивтермен берілетін бинарлық тармақтар ұғымын енгізу. Турнирлік сұрыптау, пирамидалар түсініктерін енгізу.
Массивтермен берілген бинарлыќ тармаќтар екіге бµлінеді:
Турнирлік с±рыптау.
Пирамидалар.
Егер бинарлыќ мєліметтер элементтерде саќталса, онда мєліметтерге тура кіруді ж‰зеге асыруѓа болады. Массивтіњ 0-элементі б±л тармаќтыњ тамыры немесе т‰бірі. n элемент массиві ‰шін ai т‰йінніњ ±рпаќтарын келесі формуламен есептеуге болады. Сол жаќтаѓы индекс - 2i+1, ал оњ жаќтаѓы индекс - 2i+2-ге тењ, ал ата-анасыныњ индексін - (i-1)/2 формуласымен аныќтаймыз. Тармаќталѓан массивті пайдалану беруді аяќтаѓалѓан бинарлыќ тармаќ ‰шін ќолдану ќолайлы. Біраќ тыѓыздыѓы аз болатын тармаќты саќтаѓанда массивте пайдаланылмайтын элементтер болады да массивпен ж±мыс істеуде бірќатар ќиындыќтар туѓызуы м‰мкін. Мысалы:
A[]=(5,1,3,9,6,2,4,7,0,8)
