Циљ предмета
Стицање општег знања из структура података и алгоритама.
Исход предмета
Студент је у стању да решава алгоритамске проблеме. Зна да користи основне структуре података и алгоритме. Познаје алгоритамске парадигме и препознаје класе проблема које оне решавају. Разуме време извршавања алгоритама и познаје начине за њихово одређивање.
Садржај предмета
Теоријска настава
Линеарне структуре. Нелинеарне структуре. Стабла. Графови. Претраживање. Основни метод и побољшања. Стабло бинарног претраживања, AVL стабла, оптимално стабло. Стабло m-арног претраживања. B, B* и B+ стабла, стабла дигиталног претраживања. Сортирање. Временска и просторна сложеност. Израчунавање коначних сума, рекурентне релације, мастер теорема. Динамичко програмирање. Алгоритми грубе силе. Похлепни алгоритми. Рекурзивна стратегија заснована на разлагању. Претрага са враћањем, гранање са одсецањем, хеуристике. Тражење узорка у тексту. Проточне мреже и одређивање максималног протока у мрежи. Примери нумеричких алгоритама. Имплементација рекурзије. Свођење репне рекурзије на итерацију. Дистрибуирани и паралелни алгоритми. Алгоритми (протоколи) комуникације, синхрони и асинхрони алгоритми. Алгоритми синхронзације
Практична настава
Имплементација структура које су приказане на предавањима: повезане листе, стек, ред, бинарно стабло, приоритетни ред, бинарно претраживачко стабло, AVL стабло, B стабло, хеш табеле. Имплементација неких од алгоритама који су приказани на предавањима. Препознавање алгоритамске парадигме (динамичко програмирање, похлепни алгоритми, подели па владај, бектрек, итд.) која може бити примењена при решавању алгоритамских проблема. Развој разних алгоритама за решавање једног истог алгоритамског проблема, уз поређење сложености. Неки алгоритми за решавање NP тешких проблема.