
- •Предмет изучения дисциплины "Структуры и алгоритмы обработки данных на эвм". Абстрактные типы данных. Классификация структур данных.
- •Хеширование. Хеш-функции. Коллизии и методы их устранения. Сферы применения хеширования, достоинства метода.
- •Деревья: поисковое дерево, идеально - сбалансированное дерево, сбалансированное поисковое дерево, в-дерево. Рекурсивные методы прохождения деревьев. Алгоритмы построения деревьев.
- •Сферы применения графов. Способы машинного представления графов, их достоинства и недостатки.
- •Алгоритмы поиска в графе: поиск в ширину, поиск в глубину.
- •Эйлеров путь, эйлеров цикл, эйлеров граф. Алгоритм нахождения эйлерова цикла.
- •Нахождение кратчайших расстояний. Алгоритм Дейкстры.
- •Алгоритмы с возвратом.
- •Алгоритм нахождения гамильтоновых циклов в графе.
- •Метод ветвей и границ.
- •Остовные деревья графа. Алгоритмы нахождения дерева минимального веса: алгоритм Прима, алгоритм Крускала.
- •Эффективность алгоритмов и её составляющие. Алгоритмы и их сложность. Доминирование. О-функции и их особенности.
- •Правила для определения сложности. Функции, часто используемые для оценки сложности алгоритмов (список функционального доминирования). Сравнение алгоритмов с различными порядками сложности.
- •Анализ алгоритмов и определение их сложности по управляющим структурам. Контрольные замеры. Критический взгляд на о-анализ. (ограниченность о-анализа).
- •Полиномиальные алгоритмы и труднорешаемые задачи. Два аспекта труднорешаемости задач. Недетерминированное вычисление и класс np.
- •Теория np-полных задач. Структура класса np.
- •Методы решения np-полных задач. Применение теории np-полноты для анализа задач.
Предмет изучения дисциплины "Структуры и алгоритмы обработки данных на эвм". Абстрактные типы данных. Классификация структур данных.
Ответ:
Информация поступающая, в ЭВМ состоит из определенных множеств данных, относящихся к какой-то проблеме. Решая любую задачу, необходимо выбрать уровень абстрагирования, т.е. выбрать множество данных, представляющих реальную ситуацию. Т.е. абстрагирование – упрощение данных. Абстракция, называемая абстрактным типом данных создает определяемый пользователем тип данных, чьи операции указывают, как клиент может манипулировать этими данными. Пример: множество целых чисел с их операциями. Абстрактный тип данных – это математическая модель + различные операторы, определенные в рамках этой модели. Абстрактный тип данных (АТД) является независимым от реализации и позволяет программисту сосредоточиться на идеализированных моделях данных и операциях над ними.
Для реализации алгоритма на конкретном языке программирования необходимо найти способ представления абстрактных типов данных в терминах типов данных и операторов, поддерживаемых данным языком программирования. В языках программирования тип данных переменной обозначает множество значений, которое может принимать эта переменная.
Термин реализация абстрактного типа данных подразумевает перевод в операторы языка программирования объявлений, определяющих переменные этого абстрактного типа данных + процедуры для каждого оператора, выполняемого над объектами абстрактного типа данных.
Для представления абстрактных типов данных используют структуры данных, который представляет собой набор переменных, возможно различных типов данных, объединенных определенным образом. Каждая структура данных строится на основе базовых типов данных, применяемых в языках программирования, используя доступные в этом языке средства структурирования данных.
К Стандартным простейшим типам относятся типы, встроенные на большинстве ЭВМ. Они являются естественными для большинства языков программирования, и объекты этих типов не могут быть разделены на меньшие части. Набор базовых типов данных отличается в различных языках: в языке паскале - это числа, символы и булевский тип. В СИ - это числа, символы, указатели и определенные пользователем типы перечисления.
Структурированные типы данных имеют компоненты, построенные из простых типов по правилам, определяющим связи между компонентами. Правила конструирования составных типов данных на основе базовых также различаются в языках программирования. Различают фундаментальные и усложненные структуры.
Фундаментальные структуры(молекулы) из которых строятся составные структуры. Такими структурами являются запись, массив (фикс. размера), и множества. К ним с некоторыми ограничениями можно отнести последовательные файлы. Переменные фундаментальных структур могут изменять только свое значение, а их структура и множество допустимых значений остаются неизменными. В результате, размер памяти, занимаемый такими переменными, остается постоянным. Для переменных усложненной структуры характерна способность, изменять в процессе выполнения программы и значения, и структуры. В такой классификации последовательности занимают промежуточное место, длина их меняется, но это изменение структуры носит тривиальный характер.
Структуры данных можно разделить на статические и динамические.
Статическая структура данных – это совокупность фиксированного количества переменных постоянной размерности с неизменным характером связи между ними.
Динамическая структура – это совокупность переменных количество, размерность и характер связи между которыми меняется во время работы программы. В зависимости от способа хранения элементов0 различают структуры данных, хранящие сами элементы данных, структуры данных хранящие указатель на элементы данных.