Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмы экзамен.docx
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
53.95 Кб
Скачать

2 Данные. Типы данных. Структуры хранения данных.

Данные – информация предоставленная в формализованном виде для ЭВМ.

Структуры данных – множество элементов и множество связей между ними. Структуры данных подразделяются на абстрактные и физические.

Абстрактные (логические) – структуры данных рассматриваемые без учета их представления в машинной памяти.

Физические – структуры данных отображающие способ физического представления данных в машинной памяти.

Простые– структуры данных, которые не подразделяются на части больше чем БИТы.

Интегрированные – структуры данных составленные из других структур данных.

Связные структуры данных – имеются явно связанные элементы (деревья).

Не связные – структуры данных у которых нет явной связи между элементами (вектор, массив, стеки, очереди).

4. Сложность алгоритма. Функции сложности. Оценка эффективности

Сложность алгоритма - это функция, определяющая зависимость объёма работы от размера входных данных.

O(n!) означает, что с увеличением параметра n, время работы алгоритма растёт не быстрее, чем пропорционально n!.

f(x) = O(g(x)), если существует такое c > 0, что f(x) <= c∙g(x).

Классы сложности алгоритма:

Факториальная

N!

Экспоненциальная

KN

Полиномиальная

NK

Линейный логарифм

N * log(N)

Линейная

K * N

Логарифмическая

K * log(N)

Константная

K

P задачи: задача называется полиномиальной, если существует константа К и алгоритм имеющий сложность О(NK).

NP полные задачи: задача относится к классу NP, если ее решение некоторым алгоритмом может быть быстро (полиномиально) проверено.

P = NP: можно ли все задачи, решение которых проверяется с полиномиальной сложностью, решить за полиномиальное время ? Очевидно, что любая задача, принадлежащая классу P, принадлежит и классу NP, т.к. она может быть полиномиально проверена – задача проверки решения может состоять просто в повторном решении задачи.

5,6,7. Линейные структуры данных

Линейный список - это структура данных, состоящая из элементов связанных между собой.

  • Однонаправленный – 1 указатель.

  • Двунаправленный – 2 указателя.

  • Мультисписок – состоит из нескольких списков

  • Циклический – последний элемент указывает на первый.

Стек – структура данных, в которой доступ к элементам организован по принципу LIFO (последний зашел – первый вышел). Добавляются и удаляются элементы из головы стека. Стеки широко применяются в вычислительной технике. Например, для отслеживания точек возврата из подпрограмм используется стек вызовов.

Очередь – структура данных, в которой доступ к элементам организован по принципу FIFO (первый пришёл — первый вышел). Добавляются элементы в конец очереди, а удаляются из начала. Клавиатура работает по принципу очереди.

8. Нелинейные структуры данных. Деревья.

Дерево — это связный ациклический (отсутствие циклов, между парами вершин имеется только один путь) граф.

Бинарное дерево – это дерево имеющее не более 2-ух потомков.

Идеально сбалансированное бинарное дерево – это дерево, если для каждой его вершины количество вершин в левом и правом поддереве различаются не более чем на 1.

Бинарное дерево поиска – это бинарное дерево, для которого справедливо:

ключ левого потомка < ключ родителя < ключ правого потомка.

Обходы дерева:

  1. Левый-Родитель-Правый 2) Родитель-Левый-Правый 3) Левый-Правый-Родитель

B-дерево - структура данных, сбалансированное, сильно ветвистое дерево во внешней памяти. Каждый узел B-дерева, кроме листьев, можно рассматривать как упорядоченный список, в котором чередуются ключи и указатели на сыновей.

Добавление ключа:

  • Определяем интервал, где должен находиться K. Пусть Y - соответствующий сын.

  • Рекурсивно добавляем K к дереву потомков Y.

  • Если узел Y полон, то расщепляем его на два. Узел Y1 получает первые T-1 из ключей Y и первые T его потомков, а узел Y2 - последние T из ключей Y и последние T-1 его потомков.

B+ дерево — структура данных, представляет собой сбалансированное дерево поиска. Является модификацией B-дерева, истинные значения ключей которого содержатся только в листьях, а во внутренних узлах — ключи-разделители, содержащие диапазон изменения ключей для поддеревьев.