Проектиране и анализ на компютърни алгоритми
Преподавателски екип:
Милослав Средков
Красимир Добрев
Кристиян Хараламбиев
Цветан Богданов
Анотация:
Курсът "Проектиране и анализ на компютърни алгоритми" има за цел да запознае студентите с някои от най-използваните в практиката алгоритмични техники. Наред с представянето на широко известни методи за решаване на алгоритмични задачи (и анализ на техните свойства, приложения, предимства и недостатъци), се разглеждат и множество конкретни алгоритмични проблеми, обръща се внимание на анализа на сложността на предложените решения, прави се сравнение между различни подходи за решение. В курса се засяга широк спектър от теми, както в теоретичен, така и в чисто приложен аспект: Алгоритми от теорията на числата, структури от данни, търсене и сортиране, алгоритми от теорията на графите, динамично оптимиране, разделяй и владей, алчни и вероятностни алгоритми, компресиране. Курсът е ориентиран към приложната страна и реализацията на разглежданите алгоритми, за сметка на чисто теоретични изследвания и доказателства за коректност.
Изисквания към студентите:
Оценяване:
Крайната оценка ще се формира от курсов проект (30 точки) и два теста (всеки по 25 точки) проведени през семестъра.
Проектите ще се определят от преподавателите в средата на семестъра (след първия тест) и ще се разработват домашно, до края на семестъра.
Крайната оценка се формира по следните критерии:
от 60 до 80 точки - Отличен 6
от 50 до 59 точки - Много добър 5
от 40 до 49 точки - Добър 4
от 30 до 39 точки - Среден 3
Учебна програма:
Въведение в алгоритмите.
Структури от данни.
Списък, стек, опашка.
Двоични дървета.
Хеш-таблици.
Алгоритми за сортиране.
Алгоритми за търсене в последователности.
Теорията на графите.
Основни понятия.
Обхождане на граф.
Оптимални пътища.
Цикли.
Потоци.
Транзитивност и построяване.
Достижимост и свързаност.
Оптимални подмножества и центрове.
Оцветявания и планарност.
NP-пълни задачи.
Класификация на задачите.
Примери.
Търсене с връщане.
Метод на разклоненията и границите.
Оптимални стратегии при игри.
Техника разделяй и владей
Динамично оптимиране.
Оптимизационни задачи.
Неоптимизационни задачи.
Евристични и вероятностни алгоритми.