Professional Documents
Culture Documents
SBP 02 Strukturi NoRestriction
SBP 02 Strukturi NoRestriction
SBP 02 Strukturi NoRestriction
Структури и бази на
податоци
2 Структури на податоци
доц. д-р Митко Костов
2010/11
Структури на податоци
2010/11
2 М. Костов
Структури на податоци
Name Position
Aaron Manager
Charles VP
George Employee
Jack Employee
Janet VP
John President два дијаграми за различни видови структури на
Kim Manager податоци:
Larry Manager Во едната структура, податоците се
Martha Employee организирани во листа.
Patricia Employee Ова е многу корисно за чување на
Rick Secretary имињата на вработените по азбучен ред,
Sarah VP така што може да се најде записот за некој
Susan Manager вработен многу брзо.
Thomas Employee Но, оваа структура не е многу корисна за
Zack Employee прикажување на релациите помеѓу
вработените.
Структурата на стебло е многу попогодна за
2010/11
3 оваа цел. М. Костов
Структури на податоци
Типови на податоци (според сложеност)
2010/11
4 М. Костов
Структури на податоци
Линеарни структури
Секвенцијални, верижни, кружни, површински,
ортогонални
Нелинеарни структури
Стебла, нелинеарни листи
Специјални нелинеарни структури
Бинарни пребарувачки стебла
B-стебла, B*-стебла, радикс-стебла,
R и R+-стебла
2010/11
5 М. Костов
Линеарни структури
Линеарна уреденост
Секвенца на елементите
Еден претходник, еден следбеник
Множество од n≥0 јазли (X(1), X(2),....., X(n))
чии структурни особини подразбираат само
линеарни (еднодимензионални) релативни
позиции на јазлите
ако n>0, тогаш X(1) е прв јазол;
ако 1<k<n, тогаш на k-тиот јазол X(k) му претходи
јазолот X(k – 1), а по него следува јазолот X(k+1);
X(n) е последен јазол
2010/11
6 М. Костов
Линеарни структури
Операции:
1. пристап до k-тиот јазол за да се испита или
измени содржината на неговите полиња;
2. вметнување нов јазол точно пред k-тиот јазол;
3. бришење на k-ти јазол;
4. комбинирање на две или повеќе листи во
единствена листа;
5. делење на една листа на две или повеќе
листи;
6. правење копија на дадена листа;
7. одредување на бројот на јазлите во една
листа;
8. сортирање на јазлите од листата;
9. пребарување на листата 2010/11
7 М. Костов
Линеарни структури
Видови линеарни структури
Се разликуваат по местото (локацијата) каде се
врши внесување и исфрлање на елементите
Магацин (стек)
Се внесува и исфрла (бриши) од истиот крај (врв
на магацинот)
Ред
Се внесува на еден, се исфрла на другиот
Листа
Внеси/исфрли било каде
2010/11
8 М. Костов
Магацин (stack)
LIFO структура (Last In First Out)
Функционира по принципот на стек
Пример: Кутија за Пез бонбони
2010/11
9 М. Костов
Магацин (stack)
Внесување
или исфрлање
Врв
Излез Влез во магацинот
(локомотива која се Следен од врвот
приклучува на возот,
па потоа излегува со
целата композиција) Трет од врвот
Четврт од врвот
Дно
2010/11
10 М. Костов
Магацин (stack)
Основни операции
Вметнување (Push)
и за иницијализација и
за проверка дали е полн
Исфрлање (бришење, Pop)
и за проверка дали е празен
Останати операции
Врати врв (Peek)
Креирање празен магацин
Број на елементи
Проверка дали магацинот е празен
Примери 2010/11
11 М. Костов
Ред (queue)
FIFO листа (First In First Out)
2010/11
12 М. Костов
Ред (queue)
внесување
бришење
2010/11
13 М. Костов
Ред (queue)
Основни операции
Вметнување (Enqueue)
Исфрлање (Dequeue)
Останати операции
Број на елементи
Креирање празен ред
Проверка дали редот е празен
2010/11
14 М. Костов
Ред со два краја
2010/11
15 М. Костов
Ред со два краја
внесување
или бришење
втор од втор од
најлев најдесен
лево десно
внесување
или бришење
2010/11
16 М. Костов
Ознаки
2010/11
17 М. Костов
Листа (list)
2010/11
18 М. Костов
Секвенцијални структури
Адреса Содржина
Adr1 12
Adr1 + c 99
Adr1 + 2c 37
2010/11
19 М. Костов
Поврзана листа (linked list)
верижна
Поврзаната листа е една од основните динамички
структури на податоци
Претставува низа од елементи, од кои секој
елемент има 2 полиња
Во едното е вредноста на елементот (она што би
било на тоа место во обична низа), а во другото
покажувач на следниот елемент во низата.
Последниот елемент покажува на NULL.
Типови на поврзани листи: еднострано
поврзани, двострано поврзани и кружни листи
2010/11
20 М. Костов
Поврзана листа (linked list)
верижна
Λ - нулта врска
2010/11
21 М. Костов
Поврзана листа (linked list)
верижна
2010/11
22 М. Костов
Поврзана листа (linked list)
Кружно поврзана (циклична) листа
(Circularly-linked list)
листа во која нејзиниот последен јазол е поврзан со
првиот можен е пристап до било кое место во
листата
12 45 2 37
12 45 37
2010/11
23 М. Костов
Имплементација
24
Магацин (stack)
Пример:
12 37 45 2
top
2010/11
25 М. Костов
Магацин (stack)
Вметнување
пред
12 37 45 2
после
top
12 37 45 2 17
top
2010/11
26 М. Костов
Магацин (stack)
Исфрлање
пред
12 37 45 2
после
top
12 37 45 2
top
2010/11
27 М. Костов
Како динамичка структура
top
45 2 37
2010/11
28 М. Костов
Вметнување
пред
top
2 37
после
45
top
45 2 37
2010/11
29 М. Костов
Исфрлање
пред
top
45 2 37
после
top
2 37
2010/11
30 М. Костов
Исфрлање на јазол од листата
Се менува само покажувачот
Вметнување на јазол во средината на листата
Со промена на покажувачите
2010/11
31 М. Костов
Површински листи
Генерализација
дводимензионална или
повеќедимензионална површинска листа од
информации
A(1,1) L A(1, m)
M
A(m, m) A(m, m)
33
Основни термини
Нелинеарност на структурата
Разгранета хиерархиска структура
Стеблата овозможуваат побрзо минување и
манипулација
Корен
Родител – дете
Потстебла
2010/11
34 М. Костов
2010/11
35 М. Костов
Основни термини
2010/11
36 М. Костов
2010/11
37 М. Костов
Основни термини
Уреденост на стеблото
Децата се уредени по некој редослед така што се
знае кое е прво дете, кое е второ, ...
Потстебло
Јазол заедно со неговите потомци, за кои тој јазол е
корен
Гранка (раб) G
Линиски сегмент кој поврзува два јазли
D E
Лист F
Јазол кој нема деца
B C
А
2010/11
38 М. Костов
Основни термини
Пат, должина на патот
Пат – низа од една или повеќе гранки кои поврзуваат
два јазли
Должина на пат е бројот на гранки што ги содржи
патот
Ниво на јазел ниво 3 G
Должината на патот од
коренот до тој јазол ниво 2 D E
F
Висина на стеблото
Висина на стеблото е ниво 1 B C
највисокото ниво на
стеблото зголемено за
еден ниво 0 А
2010/11
39 М. Костов
Основни термини
Потполно стебло
Сите листови се на исто ниво
Комплетно стебло
Сите внатрешни јазли
ниво 3 G
имаат n деца (содржи
максимален број јазли за ниво 2 D E
неговата висина) F
Балансирано стебло
ниво 1 B C
ниво 0 А
2010/11
40 М. Костов
Видови стебла
Бинарно стебло
Секој јазол има најмногу две деца
Комплетно бинарно стебло
Вкупен број на јазли
(20+21+22+...+2n)
Лево дете, десно дете
Лево потстебло, десно потстебло
25
13 17
5 8 3
2010/11
41 М. Костов
Видови стебла
Heap
Вид на бинарно стебло, за кое е задоволен условот
децата на секој јазол да се секогаш поголеми или
еднакви од/на самиот јазол
Голема примена: често е потребно да се знае во секој
момент кој е најмал елемент на некоја низа (тоа е
првиот елемент во heap-от)
10
5 16
2 8 26
6 9 20
2010/11
43 М. Костов
Видови стебла
AVL стебло бинарно пребарувачко стебло
балансирано по висина
За секој внатрешен јазол разликата во висината на
левото и десното потстебло е најмногу 1
При секое додавање или исфрлање на елемент, се
внимава стеблото да остане избалансирано
2010/11
44 М. Костов
Видови стебла
Бинарно пребарувачко стебло (Binary search tree)
Основни операции:
Пребарување јазол
Вметнување јазол
Бришење јазол
Ако јазолот не е лист, треба да се зачуваат
потстеблата на избришаниот јазол
2010/11
45 М. Костов
Минување низ стебло
Префиксно (preorder)
корен-лево-десно A
Инфиксно (inorder)
B G
лево-корен-десно
Постфиксно (postorder) C D H
лево-десно-корен
E F I
2010/11
46 М. Костов
((((3 + 1) × 3)/((9 − 5) + 2)) − ((3 × (7 − 4)) + 6))
2010/11
47 М. Костов
Видови стебла
B стебло
Чува сортирани податоци
Дозволува пребарувања, додавања, бришења
и секвенцијален пристап
Генерализација на бинарно пребарувачко дрво
Постојат повеќе од две патеки од еден јазол
2010/11
48 М. Костов
Видови стебла
B стебло
За разлика од бинарното дрво, секој јазол може да има
различен број на клучеви и деца
Клуч на јазол - вредностите на едно или повеќе полиња од
јазолот
Клучевите се сместени во неопаѓачки редослед
На секој клуч му е придружено дете кое е корен на
потстебло кое ги содржи сите јазли со клучеви помали
или еднакви на клучот, но поголеми од претходниот
клуч
Најдесно дете
2010/11
49 М. Костов
Видови стебла
B стебло
Деф. B стебло од ред m (максимален број на деца за
секој јазол)
Секој јазол има најмногу m деца
Секој јазол (освен коренот) има најмалку m⁄2 деца
Коренот има најмалку две деца освен ако не е лист
Сите листови се на исто ниво
Јазол со k деца содржи k-1 клучеви
2010/11
50 М. Костов
Видови стебла
B* стебло
B-стебло во кое секој јазол е најмалку две
третини исполнет (наместо половина)
2010/11
51 М. Костов
Граф
Стеблото е специјален случај на граф
Графовите се слични на стеблата само што имаат
помалку ограничувања
Стеблото има почетен јазол - корен и сите други јазли
во стеблото се деца на овој јазол
Сите јазли кај стеблото имаат многу деца, но само
еден родител
Со ослободување од овие ограничувања, добиваме
структура на податоци - граф
2010/11
52 М. Костов
Граф
Графот нема корен како стеблото
Наместо тоа, секој јазол може да биде поврзан со
било кој друг јазол
Јазлите немаат родител/дете врска
Јазлите се нарекуваат соседи ако се поврзани со
гранка (раб)
Пример, јазелот A има три соседи: B, C и D
Примена на графот за претставување податоци
Секој од јазлите може да претставува град и
рабовите кои ги поврзуваат претставуваат патишта
Со граф може да се претстави компјутерска мрежа
каде јазлите се работните станици, а рабовите -
мрежните конекции 2010/11
53 М. Костов
Граф
- дефиниции -
Деф: Граф е Множество од линиски сегменти
(наречени гранки или рабови) и јазли
(темиња) како крајни точки на гранките
2010/11
54 М. Костов
Граф
- дефиниции -
Бројот на јазли се нарекува степен на графот
Нулти граф е граф со степен нула
Јамки се рабови кои поврзуваат едно теме само
со себе
Графот G се нарекува прост граф ако
не содржи јамки и
не постои повеќе од еден раб кој поврзува еден
пар темиња
2010/11
55 М. Костов
Граф
- дефиниции -
Патека (пат) во граф е уредена низа од јазли и
гранки во која секоја гранка има заеднички јазол
со претходната и во која секој јазол може да се
јави само едаш
Должина на патека е бројот на гранки што тој
ги содржи
Поврзан граф е графот во кој има најмалку една
патека помеѓу било кои два јазли
Циклус (контура) дел од граф во кој на секој
јазол припаѓаат две и само две гранки
Ацикличен граф е граф без циклуси
2010/11
56 М. Костов
Граф
- дефиниции -
Влезен степен на теме (ознака INDEG(v)) во
насочен граф е бројот на рабови што завршуваат
(влегуваат) во тоа теме
Излезен степен на теме (ознака OUTDEG(v)) во
насочен граф е бројот на рабови што излегуваат
од тоа теме
Степен на теме е збир на влезниот и излезниот
степен.
2010/11
57 М. Костов
Граф
2010/11
58 М. Костов
Граф
Матрица на инциденција А
Го опишува графот алгебарски
2010/11
59 М. Костов
Hash табела
Hash табела е структура на податоци која
користи hash функција за ефикасно мапирање на
одредени идентификатори или клучеви (пр.
имиња на лица) во придружни вредности (пр.
нивните телефонски броеви).
Hash функција е секоја добро дефинирана
процедура или математичка функција која
конвертира голема количина на податоци со
променлива големина во мал број, обично integer
кој може да служи како индекс на поле.
Најчесто се користи за забрзување на пристапот до
податоците во табела, споредување, криптографија
Вредностите вратени од hash функцијата се
наречени hash вредности, hash кодови или
само hash. 2010/11
60 М. Костов
Hash табела
Секој елемент кој сакаме да го сместиме во оваа
структура на податоци го “хашираме“, т.е.
пресметуваме вредност која некоја hash функција
ја дава за него, и го сместуваме на тоа место во
табелата.
Пример.
Имаме низа од 1000 елементи
Ако ја знаеме позицијата на конкретен елемент сместен
во низата, можеме брзо да пристапеме до него
Знаеме дека даден елемент е на позиција 3
x=arr[3] 2010/11
61 М. Костов
Hash табела
Корисно за брзо пребарување
Предност
Брзината
Недостаток
Потешко за имплементација
Избор на ефикасна hash функција за конкретна
апликација
2010/11
62 М. Костов
Hash табела
2010/11
63 М. Костов
Hash табела
Пример: Треба да се зачуваат имињата на учениците
од некое одделение и уште еден податок за секој
ученик, на пример телефонскиот број.
Пример за hash функција може да се земе збирот од
ASCII вредностите на сите букви во името по модулот на
големината на табелата (најпожелно е да е некој прост
број).
Ако тоа место е заземено, се додава уште еден внес во
истото поле.
Кога треба да се најде телефонскиот број на Мирко, ги
собираме ASCII вредностите на буквите во зборот
“Мирко", ја земаме таа вредност по модулот на
големината на таблицата, и бараме на тоа место во hash
табелата.
2010/11
64 М. Костов
Hash табела
0 Ана
1
2
3 Марија
4 Мирко 12345
5
...
2010/11
65 М. Костов
Hash табела
Примена
Структури добри за ситуации за брзо пребарување на
енормна количина податоци:
Возачки дозволи. Со hash табела, брзо може да се
добие информација за возачот (име, адреса, возраст)
преку бројот на возачката дозвола.
Компајлирање. Компајлерот користи табела со
симболи за зачувување на симболите дефинирани од
корисникот во еден C++ програм.
Интернет пребарувачите.
Тел. база на податоци. Брзо пребарување на тел.
број.
Електронски библиот. каталози. Брзо пребарување
статија.
Лозинки кај повеќекориснички системи. Брзо
пребарување на лозинката за дадено корисничко М.име.
2010/11
66 Костов