VB, MS Access, VC++, Delphi, Builder C++ принципы(технология), алгоритмы программирования
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: презентация дипломной работы, отчет по производственной практике
| Добавил(а) на сайт: Памфил.
Предыдущая страница реферата | 7 8 9 10 11 12 13 14 15 16 17 | Следующая страница реферата
В этом алгоритме переменная цикла I последовательно принимает значения от 1
до N. Для каждого приращения I переменная J в свою очередь также принимает
значения от 1 до N. Таким образом, в каждом внешнем цикле выполняется еще N
внутренних циклов. В итоге внутренний цикл выполняется N*N или N2 раз и, следовательно, сложность алгоритма порядка O(N2).
При оценке порядка сложности алгоритмов используется только наиболее быстро
растущая часть уравнения алгоритма. Допустим, время выполнения алгоритма
пропорционально N3+N. Тогда сложность алгоритма будет равна O(N3).
Отбрасывание медленно растущих частей уравнения позволяет оценить поведение
алгоритма при увеличении размерности данных задачи N.
При больших N вклад второй части в уравнение N3+N становится все менее
заметным. При N=100, разность N3+N=1.000.100 и N3 равна всего 100, или
менее чем 0,01 процента. Но это верно только для больших N. При N=2, разность между N3+N =10 и N3=8 равна 2, а это уже 20 процентов.
Постоянные множители в соотношении также игнорируются. Это позволяет легко
оценить изменения в вычислительной сложности задачи. Алгоритм, время
выполнения которого пропорционально 3*N2, будет иметь порядок O(N2). Если
увеличить N в 2 раза, то время выполнения задачи возрастет примерно в 22, то есть в 4 раза.
Игнорирование постоянных множителей позволяет также упростить подсчет числа
шагов алгоритма. В предыдущем примере внутренний цикл выполняется N2 раз, при этом внутри цикла выполняется несколько инструкций. Можно просто
подсчитать число инструкций If, можно подсчитать также инструкции, выполняемые внутри цикла или, кроме того, еще и инструкции во внешнем
цикле, например операторы Print.
Вычислительная сложность алгоритма при этом будет пропорциональна N2, 3*N2
или 3*N2+N. Оценка сложности алгоритма по порядку величины даст одно и то
же значение O(N3) и отпадет необходимость в точном подсчете количества
операторов.
Поиск сложных частей алгоритма
Обычно наиболее сложным является выполнение циклов и вызовов процедур. В предыдущем примере, весь алгоритм заключен в двух циклах.
============4
Если процедура вызывает другую процедуру, необходимо учитывать сложность
вызываемой процедуры. Если в ней выполняется фиксированное число
инструкций, например, осуществляется вывод на печать, то при оценке порядка
сложности ее можно не учитывать. С другой стороны, если в вызываемой
процедуре выполняется O(N) шагов, она может вносить значительный вклад в
сложность алгоритма. Если вызов процедуры осуществляется внутри цикла, этот
вклад может быть еще больше.
Приведем в качестве примера программу, содержащую медленную процедуру Slow
со сложностью порядка O(N3) и быструю процедуру Fast со сложностью порядка
O(N2). Сложность всей программы будет зависеть от соотношения между этими
двумя процедурами.
Если процедура Slow вызывается в каждом цикле процедуры Fast, порядки
сложности процедур перемножаются. В этом случае сложность алгоритма равна
произведению O(N2) и O(N3) или O(N3*N2)=O(N5). Приведем иллюстрирующий этот
случай фрагмент кода:
Sub Slow()
Dim I As Integer
Dim J As Integer
Dim K As Integer
For I = 1 To N
For J = 1 To N
For K = 1 To N
' Выполнить какие-либо действия.
Next K
Next J
Next I
End Sub
Sub Fast()
Dim I As Integer
Dim J As Integer
Dim K As Integer
For I = 1 To N
For J = 1 To N
Slow ' Вызов процедуры Slow.
Next J
Next I
End Sub
Sub MainProgram()
Fast
End Sub
С другой стороны, если процедуры независимо вызываются из основной программы, их вычислительная сложность суммируется. В этом случае полная сложность будет равна O(N3)+O(N2)=O(N3). Такую сложность, например, будет иметь следующий фрагмент кода:
Sub Slow()
Dim I As Integer
Dim J As Integer
Dim K As Integer
For I = 1 To N
For J = 1 To N
Рекомендуем скачать другие рефераты по теме: доклад по химии, конспект зима.
Категории:
Предыдущая страница реферата | 7 8 9 10 11 12 13 14 15 16 17 | Следующая страница реферата