АСП2/К1 2009

Извор: SI Wiki
< АСП2
Датум измене: 25. фебруар 2023. у 21:36; аутор: DjoleRkc (разговор | доприноси) (Нова страница: {{tocright}} [https://rti.etf.bg.ac.rs/rti/ri3sp/rokovi/SI2AS2_K1_0910.pdf Zadaci na stranici predmeta.] '''Prvi kolokvijum 2009. godine''' održan je 29. oktobra 2009. == 1. zadatak == === Postavka === '''(20p)''' <div class="abc-list"> # Objasniti strategiju binarnog pretraživanja. Koji su preduslovi primene binarne pretrage? Koje uslove mora da zadovolji struktura podataka nad kojom se primenjuje binarno pretraživanje da bi primena bila efikasna? # Nad ta…)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу

Задаци на страници предмета.

Први колоквијум 2009. године одржан је 29. октобра 2009.

1. задатак

Поставка

(20п)

  1. Објаснити стратегију бинарног претраживања. Који су предуслови примене бинарне претраге? Које услове мора да задовољи структура података над којом се примењује бинарно претраживање да би примена била ефикасна?
  2. Над табелом у коју су уметнути кључеви 2, 18, 33, 14, 25, 5, 7, 12, 11, 16, 20, 22, 26 се врши претрага на кључеве 14, 7 и 18 применом стратегије бинарног претраживања. Одредити просечан број поређења вредности кључева.
  3. Написати на језику C (или C++) функцију која у задатом низу целих бројева задате дужине тражи задати целобројни кључ. Функција враћа индекс под којим је кључ нађен у низу или -1 у случају неуспешне претраге.

Решење

  1. Стратегија бинарног претраживања се заснива на налажењу медијане, а затим половљењу интервала претраживања. Поступак се понавла све док се не нађе тражени кључ или се закључи да се он не налази у низу. Предуслови су да је низ уређен и да је могућ линеаран приступ. Структура мора бити линеарна.
  2. При претрази на кључ 14 врше се 4 поређења, као и при претрази на кључ 18. При претрази на кључ 7 врше се 2 поређења, што нам у просеку даје поређења.
  3. BIN(arr, key, n)
    high = n;
    low = 1;
    while(high>=low)
        mid = (low+high)/2;
        if(arr[mid]=key) return mid;
        if(arr[mid]<key) low = mid+1;
        else high = mid-1;
    end_while
    return -1;

2. задатак

Поставка

(30п) У АВЛ стабло приказано на слици се редом умећу следећи кључеви: 20, 21, 19, 7, 10, 12, 14. Након уметања се редом бришу кључеви: 22, 15, 18. Приказати изглед стабла након сваке од наведених измена. Израчунати просечан број приступа стаблу приликом успешне претраге након свих уметања и у коначном стању. Напомена: приликом брисања кључева, користити следбенике.

Стабло из поставке задатка

Решење

Стабло након свих уметања
Стабло након свих брисања

Након свих уметања: , па је

Након свих брисања: , па је .

3. задатак

Поставка

(20п) Дати псеудокод и објаснити алгоритам за истовремено секвенцијално претраживање уређеног низа на више кључева. Колика је сложеност алгоритма?

Решење

Претраживање иде од почетка низа К са првим кључем из С док се не пронађе (и његова позиција запамти у П) или до прве веће вредности. Претраживање на следећи кључ из С почиње тамо где се са претраживањем на претходни кључ стало, па се зато низ К пролази само једном. Низ К је растуће уређени низ са н кључева који се претражује на појаву м кључева задатих у низу С. Излаз представља вектор П где се на позицији која одговара кључу у низу С налази позиција кључа у низу К, ако се он тамо пронађе, или вредност 0 ако се не пронађе. Сложеност овог алгоритма је О(н) за случај када је м << н.

SEQ-SEARCH-MUL(K,S)
for(int i=0;i<m;i++) P[i] = 0;
i=j=1;
while(i<=n) and (j<=m)
    while(i<n) and (S[j] > K[i]) i++;
    if(S[j] = K[i]) P[j] = i;
    j++;
end_while
return P;

4. задатак

Поставка

(30п) Питања:

  1. Колике су перформансе претраживања у стаблу бинарног претраживања у најбољем, средњем и најгорем случају и дискутовати импликације.
  2. Дефинисати Фибонацци-јева стабла и навести њихове главне особине.
  3. Зашто се уводе 2-3 стабла? Објаснити њихову организацију и главне особине.

Решење

  1. Сложеност је у функцији висине - О(х). У најбољем случају х = лог(н), а у најгорем х = н.
  2. Фибоначијево стабло је најгори случај АВЛ стабла, тј. стабло највеће висине за одређен број чворова. Број чворова у Фибоначијевом стаблу висине х је . Сви чворови имају баланс 1. Брисање било ког чвора смањује висину стабла. Сваки корен ће бити Фибоначијев број.
  3. 2-3 стабла се уводе да би се осигурала балансираност, па су све операције О(лог(н)). Главно својство је постојање 3-чворова, који имају лево, десно и средње подстабло, и тиме се омогућава да сви листови буду на истом нивоу. 3-чворови имају два кључа, К1 и К2 и у зависности од интервала припадања одређујемо подстабло.