ПРОГРАММА экзамена по дисциплине «Структуры и алгоритмы обработки данных» осенний семестр для студентов 2 курса специальности 1-400101 «Программное обеспечение информационных технологий» № Вопросы программы п/п 1. Структурное программирование. 2. Сложность алгоритма. 3. Динамическое программирование. 4. Типы данных языков программирования. 5. Простые типы данных. 6. Структурные типы данных. 7. Динамические структуры данных. 8. Линейные односвязные динамические структуры данных. Линейные двусвязные динамические структуры данных. Иерархические динамические структуры данных. 9. 10. Основные понятия, теоремы, факты Умения и навыки Понятие структурного программирования. Методы разработки алгоритмов. Метод функциональной декомпозиции. Структурное проектирование алгоритмов. Понятие и классификация сложности алгоритма. Оценка сложности алгоритма. Примеры задач, решаемых алгоритмами различной сложности. Понятие динамического программирования. Нисходящий и восходящий принципы. Примеры задач, решаемых с использованием принципов динамического программирования. Концепция типов данных. Стандартные и пользовательские типы данных. Классификация типов. Понятие переменной, ссылки и указателя. Простые примитивные типы данных языков программирования и их классификация. Представление примитивных типов в памяти. Понятие переменной. Структурные линейные типы данных языков программирования и их классификация. Представление структурных типов в памяти. Понятие ссылки и указателя, операции с ними. Классификация динамических структур данных. Представление динамических структур в памяти. Понятие указателя. Операции с указателем. Односвязные списки. Представление односвязных динамических списков в памяти. Операции добавления, удаления, поиска элементов. Двусвязные списки. Представление двусвязных динамических списков в памяти. Операции добавления, удаления, поиска элементов. Двоичные и B-деревья. Представление древовидных структур в памяти. Операции добавления, удаления, поиска элементов. Написание программы при помощи конструкций структурного программирования. Разработка эффективных алгоритмов Оценка сложности алгоритма и его реализации. Владение приёмами понижения сложности. Применение принципов динамического программирования при решении задач Выбор типа данных для реализации алгоритмов. Создание пользовательских типов. Использование целочисленных переменных и констант в программах. Использование структурных переменных и констант в программах. Описание и использование динамических структур данных в программах. Описание и использование линейных односвязных динамических структур данных в программах. Описание и использование линейных двусвязных динамических структур данных в программах. Описание и использование древовидных структур данных в программах. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. Сбалансированные АВЛ-деревья. Определение сбалансированного АВЛ-дерева. Операции добавления, удаления, поиска элемента. Операции балансировки АВЛдерева. Сбалансированные Определение В-дерева. Операции добавления, В-деревья. удаления, поиска элемента. Операции балансировки В-дерева. Структура данных Операции работы со стеком. Реализация стека. стек. в программе. Обратная польская запись. Структура данных Операции работы с очередью. Реализация очередь. очереди. в программе. Замещение рекурсии очередью. Структура данных Операции работы с очередью с приоритетом. очередь с Реализация очереди с приоритетом в приоритетом. программе. Структура данных Основные понятия и определения теории граф. графов. Элементы и связность графов. Реализация структур данных типа граф на языках программирования. Применение их различных представлений. Структуры данных Файловые системы. Концепция форматов и во внешней памяти. типов файлов. Последовательные и файлы прямого доступа. Средства языков программирования для обработки данных типизированных и текстовых файлов. Классификация Основные широко известные алгоритмы алгоритмов сортировки и их классификация. Алгоритмы сортировки сложности O(N*N), O(N*logN), O(N). Сравнение эффективности алгоритмов (их достоинства и недостатки). Алгоритмы обхода Рекурсивные алгоритмы обхода древовидных деревьев. структур данных и его варианты. Основные решаемые задачи. Обработка Алгоритм Кнута-Морриса-Пратта. Примеры текстовых данных решения задач. Обход графа в Алгоритм обхода графа в ширину. ширину. Двунаправленный волновой алгоритм. Примеры решения задач. Обход графа в Алгоритм обхода графа в глубину, его глубину. рекурсивный и нерекурсивный варианты реализации. Исчерпывающий поиск с возвратом. Примеры решения задач. Построение Алгоритмы Прима и Краскала построения минимального минимального остовного дерева. Примеры остовного дерева. решения задач. Эйлеров путь и Определения эйлерового пути и цикла. цикл. Теорема о существовании эйлерового цикла. Алгоритмы нахождения эйлерового пути и цикла. Примеры решения задач. Алгоритмы поиска Алгоритм Дейкстры или Форда-Белламана. кратчайших путей Примеры решения задач. во взвешенном графе. Использование АВЛ-деревьев в программах для решения задач. Использование B-деревьев в программах для решения задач. Использование стека при решении задач. Использование очереди при решении задач. Использованием очереди с приоритетом при решении задач. Описание и использование структур данных для хранения графов. Описание структуры данных и обработка графических и файлов других типов. Выбор алгоритма сортировки для конкретной задачи. Оценка эффективности выбранного метода. Использование рекурсии для обхода древовидных структур. Реализация функции быстрого поиска подстроки в тексте. Реализация алгоритма обхода графа в ширину. Реализация алгоритма исчерпывающего поиска в графе с возвратом. Реализация алгоритмов построения минимального остовного дерева. Реализация алгоритмов нахождения эйлерового пути и цикла. Реализация алгоритма поиска кратчайших путей. 26. Максимальное паросочетание 27. Двоичный поиск 28. Хеш-функции 29. Хеш-таблицы 30. Алгоритмы разрешения коллизий в хештаблицах. 31. Поиск решения генетическим алгоритмом 32. 33. 34. 35. 36. 37. 38. 39. Венгерский или алгоритм чередующихся цепочек построения максимального паросочетания. Примеры решения задач. Задача поиска. Линейный и двоичный поиск элементов в массивах. Понятие, назначение и требования к криптографическим функциям. Классы задач, решаемых с использованием хеш-функций. Алгоритм вычисления MD5. Примеры решения задач. Понятие и назначение хеш-таблиц. Классы задач, решаемых с использованием хештаблиц. Структуры данных для хеш-таблиц (таблицы значений, ссылок и указателей). Операция добавления элемента. Операция поиска элемента. Операция удаления элемента. Примеры решения задач. Понятие коллизий и методы их разрешения. Метод открытой адресации. Метод использования внешней памяти. Алгоритмы линейных и квадратичных проб. Вторичное хеширование. Гибридные методы (замещения, списки ячеек). Примеры решения задач. Генетический алгоритм для решения NPзадач. Примеры решения задач. Реализация алгоритма построения максимального паросочетания. Реализация двоичного поиска в массиве. Описание и реализация хешфункции. Описание структуры хеш-таблиц при помощи языка программирования, реализация основных операций. Реализация функций разрешения коллизии по принципу открытой адресации и во внешнюю память. Описание методов построения и обработки выборок, описание оценочных функций Поиск решения Муравьиный алгоритм для решения NP-задач. Описание внутренней и внешней муравьиным Примеры решения задач. памяти, функций выбора и оценки алгоритмом результата Поиск решения Алгоритмы полного и неполного перебора, их Реализация алгоритма перебора. перебором рекурсивная и нерекурсивная реализации. Примеры решения задач. Поиск решения Метод остовного дерева. Метод ветвей и Применение жадных алгоритмов жадными границ. Точность, достоинства и недостатки при решении задач. алгоритмами жадных алгоритмов. Примеры решения задач. Алгоритмы Алгоритм прямого выбора. Алгоритм прямой Реализация алгоритма сортировки сортировки выбором вставки. Примеры решения задач. данных методом прямой вставки и вставкой или выбора Алгоритмы Алгоритм сортировки обменом. Алгоритм Реализация алгоритма сортировки сортировки обменом сортировки Шелла. Примеры решения задач. данных методом Шелла Алгоритм быстрой Алгоритм быстрой сортировки (QuickSort). Реализация алгоритма быстрой сортировки Примеры решения задач. сортировки данных Алгоритм Алгоритм пирамидальной сортировки Реализация алгоритма пирамидальной (HeapSort). Примеры решения задач. пирамидальной сортировки данных сортировки Алгоритмы Алгоритм индексной сортировки. Алгоритм Реализация алгоритмов индексной сортировки слияния. Примеры решения задач. сортировки и слияния. линейной сложности