Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АОПИ. Старое / АОПИ. Глава 1. Вопросы и ответы (01_04_19).rtf
Скачиваний:
82
Добавлен:
10.09.2019
Размер:
3.53 Mб
Скачать

Спиральная модель

1. Формирование требований и планирование.

2. Анализ рисков (требований).

3. Конструирование:

1) Проектирование;

2) Кодирование;

3) Тестирование;

4) Интеграция (соединение в одно целое).

4. Оценка результата и при удовлетворительном качестве переход к новому витку.

——————————————————————————

3 Вопрос. Проектирование и алгоритмизация программы. Свойства алгоритма.

——————————————————————————

Алгоритм — конечный набор правил, однозначно раскрывающий содержание и последовательность выполнения операций для решения поставленной задачи.

Алгоритмический процесс — реализация алгоритма на уровне программирования и кодирования.

Свойства алгоритма:

Дискретность ("прерывность"; вся процедура отчета должна быть представлена последовательностью действий следующих друг за другом и связана причинно-следственными связями).

Понятность и однозначность (детерминированность) (последовательность и содержание операций должны в точности соответствовать алгоритмической модели).

Результативность (получение результата за конечное число шагов). Если при каких-либо входных данных алгоритм не заканчивается или не выдает результат, то он считается нерезультативным.

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

1) Численный; 2) Аналитический; 3) Экспериментальный.

Массовость (алгоритм решения задачи разрабатывается в общем виде, то есть он должен быть применим для некоторого класса задач, различающихся только исходными данными).

Конечность (каждое действие и весь алгоритм в целом обязательно должны завершаться).

Алгоритмическая модель должна иметь некоторую сложность и некоторую ресурсоемкость.

——————————————————————————

4 Вопрос. Понятие и определение сложности алгоритма.

——————————————————————————

Сложность алгоритма — порядок зависимости времени и памяти, необходимых для вычисления алгоритма, под его размерность.

Временная сложность: T(n).

Пространственная сложность: O(n) [здесь нужно уточнять, что имеется ввиду под этим выражением, так как оно может обозначать асимптотическое обозначение «О большое», что не относится к определению пространственной сложности].

Сложность сама по себе не позволяет определить ни время, ни необходимый объем памяти, а позволяет лишь оценить увеличение этих показателей по мере роста размерности задачи.

Пример.

T(n) = n: при повышении размерности, например, в 5 раз время выполнения возрастает в 5 раз.

T(n) = n²: при повышении размерности, например, в 5 раз время выполнения возрастает в 25 раз.

Оценка сложности алгоритма:

1. Подсчитать количество элементарных операций, выполняемых во время работы.

2. В этой зависимости [по результату п. 1] определить максимальный порядок зависимости от размерности.

Алгоритмы одной и той же сложности могут значительно отличаться по времени выполнения.

Если количество элементарных операций (FLOP, «флоп») постоянно и не зависит от размерности задачи, то считается, что T(n) = 1.

Время выполнения алгоритма зависит не только от размерности данных, но и от значений этих данных.

Различают три типа сложности:

1. Максимальная сложность (самая неблагоприятная ситуация, когда алгоритм работает медленнее всего; пример — пузырьковая сортировка).

2. Минимальная сложность (самая благоприятная ситуация, когда алгоритм работает быстрее всего).

3. Средняя сложность (для среднестатистического случая).

На практике чаще всего встречаются следующие сложности:

1. T (log n) — на каждом шаге выполняется постоянное количество операций C, и задача размерности n сводится к задаче размерности n/k (т. е. n –> n/k; k – целое положительное число).

Пример: двоичный (бинарный) поиск.

2. T (n) — на каждом шаге выполняется постоянное количество операций C, не зависящее от n, и задача размерности сводится к задаче размерности n-1 (т. е. n –> n-1).

Пример: линейный поиск.

3. T (n*log n) — на каждом шаге выполняется некоторое количество операций C*n (c – константа), и задача размерности n сводится к задаче размерности n/k (т. е. n –> n/k; k – целое положительное число).

Примеры: быстрая сортировка (сортировка Хоара), сортировка слиянием, пирамидальная сортировка.

4. T (n²) — на каждом шаге выполняется некоторое количество операций C*n (c – константа), и задача размерности n сводится к задаче размерности n-1.

Примеры: пузырьковая сортировка, сортировка вставками, сортировка выбором.

——————————————————————————