Основни понятия. Варианти на алгоритми. Влияние върху производителността. Въведение в анализа.
Примерна задача – свързаност на обекти. Дефиниране на абстрактни операции в задачата. Начален алгоритъм. Алгоритъм за бързо намиране. Програмна реализация. Представяне на дърво.
Свързаност на обекти – алгоритъм с бързо обединение. Програмна реализация. Анализ и сравнение с алгоритъма за бързо намиране. Представяне в дърво.
Свързаност на обекти – алгоритъм с претеглено бързо обединение. Реализация. Анализ. Представяне в дърво.
Математически основи в анализа на алгоритми. Използвани формули с експоненти, логаритми, редици. Доказателства.
Въведение в рекурсията. Основни свойства на рекурсията. Типове рекурсии, анализ на производителността и доказателства.
Опасности при рекурсивни алгоритми. Формални техники за преобразуване на рекурсивни в нерекурсивни алгоритми:опашна рекурсия; множествена рекурсия; рекурсия в средата; алгоритмични решения с взаимна рекурсия.
Анализ на алгоритми. Математически обозначения и дефиниции в анализа . Базови правила в анализа на алгоритми.
Конкретизация на анализа при рекурсия и множествена рекурсия. Математически извод.
Четири варианта на решение на задачата за максимум на подниз. Алгоритмично и програмно решение. Математически извод, определящ производителността. Анализ на получените значими разлики.
Логаритми в анализа на алгоритми. Основни алгоритми в тази група: двоично търсене, Евклидов алгоритъм за ХОД, повдигане на степен. Програмна реализация на алгоритмите. Анализ и изработване оценъчна формула.
Рекурсия и дървета. Рекурсивни алгоритми.
Подходът: разделяй и владей. Свойства, известни алгоритми, реализация и оценъчна формула.
Техники за подобрения в рекурсията: Динамично програмиране. Известни алгоритми в тази реализация. Анализ.
Дървета. Основни понятия и класификации. Дефиниции и свойства.
Математически свойства на двоичните дървета.
Обхождане на дърво и граф.
Рекурсивни алгоритме в двоични дървета.
Елементарни сортировки. Селективна сортировка. Сортиране чрез вмъкване.
Сортиране по метод на мехурчето. Характеристики на елементарни те сортировки. Дефиниции Свойства.
Сортировка на Шел. Примери и свойства.
Сортиране на свързани списъци. Индексно и указателно сортиране.
Философия на алгаритмизирането (design techniques): постъпателни алгоритми (greedy алгоритми). Проблемът:Simple scheduling.
Кодове на Huffman ( компресия на файл ).
Проблемът “пакетиране” Метод First Fit.
Проблемът “пакетиране”. Методи: Best Fit и Off-line алгоритми. Оценки.
Разделяй и владей – алгоритми. Анализ на времето на изпълнение.
Проблемът: “най – близкостоящи точки”
Теоретични подобрения с аритметични задачи.
Динамично програмиране: таблици вместо рекурсия.
Динамично програмиране: оптимално бинарно търсене в дърво.
Алгоритми с backtracking: проблемът реконструиране.
Алгоритми с backtracking: игри.
Теория на графите. Общи понятия. Представяне на граф. Топологично сортиране.
Намиране на най-къс път. Алгоритъм на Дейкстра.
Алгоритъм на Дейкстра при ациклични графи.
Пропускателна способност на мрежа.
Минимално обхващащо дърво. Алгоритъм на Прим. Алгоритъм на Крускал.