Асимптотический анализ
Этот термин относится к анализу производительности алгоритма в предположении, что данные, с которыми работает алгоритм (вход), с точки зрения непрофессионала, «достаточно велики, чтобы их увеличение не повлияло на вывод». Хотя точный размер входных данных указывать не нужно (нам нужна только верхняя граница), сам набор данных должен быть указан.
Обратите внимание, что до сих пор мы говорили только о методе анализа; мы не указали точно, какое количество мы анализируем (временная сложность? пространственная сложность?), и мы также не указали, какая метрика нас интересует (худший случай? лучший случай ? средний?).
На практике термин асимптотический анализ обычно относится к временной сложности верхней границы алгоритма, т. Е. К производительности наихудшего случая, измеренной общим временем выполнения, которое представлено обозначением большого О (например, алгоритм сортировки может быть O(nlogn)
).
Амортизированный анализ
Этот термин относится к анализу производительности алгоритма на основе определенной последовательности операций, нацеленной на наихудший сценарий, то есть амортизированный анализ подразумевает, что метрикой является производительность наихудшего случая (хотя он по-прежнему не сказать, какое количество измеряется). Чтобы выполнить этот анализ, нам нужно указать размер ввода, но нам не нужно делать никаких предположений относительно его формы.
С точки зрения непрофессионала, амортизированный анализ выбирает произвольный размер для входных данных, а затем «проигрывает» алгоритм. Всякий раз, когда необходимо принять решение, зависящее от входных данных, выбирается худший путь ». После завершения работы алгоритма мы делим вычисленную сложность на размер входных данных, чтобы получить окончательный результат.
¹Примечание: если быть точным, наихудший путь теоретически возможный. Если у вас есть вектор, размер которого динамически удваивается каждый раз, когда его емкость исчерпывается, "худший случай" не означает, что ему нужно будет удваиваться при каждой вставке, потому что вставки обрабатываются как последовательность . Нам разрешено (и мы действительно должны) использовать известное состояние, чтобы математически исключить как можно больше «даже худших» случаев, даже если входные данные остаются неизвестными.
Самое главное отличие
Критическое различие между асимптотическим и амортизированным анализом состоит в том, что первый зависит от самих входных данных, а второй - от последовательности операций, которые алгоритм будет выполнять.
Следовательно:
- асимптотический анализ позволяет нам утверждать, что сложность алгоритма , когда ему задан лучший / худший / средний входные данные размером, приближающимся к N, ограничена некоторой функцией F (N), где N - это Переменная
- Амортизированный анализ позволяет нам утверждать, что сложность алгоритма , когда ему на входе неизвестны характеристики, но известен размер N, не хуже, чем значение функции F (N) - где N равно известное значение
person
Jon
schedule
19.06.2012