КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
У у V V ' ' ' V
Рис. 14. Три последовательных шага сортировки фон Неймана, удлиняющих упорядоченные участки (сегменты): а) переход от семи сегментов к четырем; б) переход от четырех сегментов к двум; в) переход от двух сегментов к одному (массив полностью упорядочен). то при к > 1 на следующем шаге мы будем иметь дело с к' таким, что к' <2т-1. В случае же сортировки фон Неймана ситуация такова, что если на каком-то шаге имеем к > 1 уже построенных сегментов и 2т-1 < к ^ 2т (это соответствует тому, что [log2 к] = т), то на следующем шаге сегментов будет к' <к и 2т-2 <к' ^ 2т-1 (это соответствует тому, что [log2 к']=т- 1). Поэтому функция L{k) = [log2 к], где к — текущее число построенных сегментов, убывает с каждым шагом ровно на единицу. Таким образом, число этапов слияния, или число перебросок сортируемых элементов из массива в массив, равно [log2 n ]. Это позволяет утверждать следующее: Сложность сортировки фон Неймана по числу сравнений меньше, чем n\log2 п]; сложность по числу присваиваний равна n\log2 п]. В самом деле, каждый этап слияния, сопровождаемый переброской элементов из массива в массив, требует п присваиваний. Число сравнений при каждом слиянии по крайней мере на единицу меньше, чем длина получаемого упорядоченного сегмента: известно, что число тех сравнений, которые априори могут потребоваться для слияния двух упорядоченных массивов, содержащих соответственно кит элементов, к^т, лежит в диапазоне от к до к + т - 1 (обе указанные границы достижимы). Вновь обращаясь к примеру 3.1, мы видим, что, основываясь на сортировке фон Неймана, можно получить алгоритм построения выпуклой оболочки данных п точек координатной плоскости, имеющий сложность O (n log n) в худшем случае по общему числу операций. Некоторое различие между примером 9.1 и примерами 9.2, 9.3 состоит в том, что в примере 9.1 мы определяли L как функцию самого входа алгоритма и из полученной оценки для затрат выводили оценку для сложности (переходили от входа как такового к его размеру), а в 9.2, 9.3 мы изначально рассматривали L как функцию размера. 82 Глава 3. Оценивание числа шагов (итераций) алгоритма В этих двух последних примерах значения функции L возникали из сравнений размера n с элементами некоторой последовательности sk, k = 0,1,... (в обоих случаях было sk = 2k). В примере 9.2 удобно было считать, что L{n) = k, если sk-1^n<sk, а в примере 9.3 — если sk-1 <n^sk. Типичный итерационный алгоритм содержит цикл, в котором набор v начальных величин преобразуется в набор v ', затем v преобразуется в v " и т. д. Функция L, которую мы подбираем, должна принимать неотрицательные значения и быть определенной либо на самих наборах величин, либо на их размерах; в обоих случаях функция должна убывать по ходу выполнения алгоритма: L{v)>L{v')>L{v")>... в первом случае, или L (|| v ||) >L (|| v /||) >L (|| v //||) >... во втором. Значение L (v) или соответственно L (|| v ||) дает верхнюю границу для числа шагов цикла. г Заметим попутно, что, исходя из установленной в примере 9.2 сложности бинарного поиска, мы сразу можем получить верхнюю оценку T B(n)^(n -l)riog2 n l (9.14) для сложности по числу сравнений сортировки бинарными вставками; мы используем для обозначения этой сортировки букву B, от английского слова binary—бинарный. По числу перемещений сложность этой сортировки квадратична, здесь эта сортировка уступает сортировке фон Неймана. Пространственную сложность сортировки бинарными вставками можно считать равной нулю (все делается на том же месте), а для сортировки фон Неймана эта сложность есть n. Пример 9.4. Число итераций численных алгоритмов тоже часто оценивают сравнением размеров данных, соответствующих текущим итерациям, с элементами последовательности, которая может иметь, например, вид qn или q 2 n (q < 1), n = 0,1,..., и т.д. Этим способом 1 Такую функцию можно назвать функцией Ляпунова цикла, подразумевая аналогию с функцией, убывающей вдоль решения обыкновенного дифференциального уравнения (аналогия принадлежит С.С.Лаврову, см. [24, разд. 3.1.3]). Это не единственная аналогия между дифференциальными уравнениями и циклическими алгоритмами и программами. Например, понятие первого интеграла, или закона сохранения, сопоставимо с понятием инварианта цикла и т.д. § 10. Качество оценок получаются оценки числа итераций для классических методов (алгоритмов) приближенного решения уравнений. Вспомним две такие оценки. Пусть корень уравнения /(х) = 0 разыскивается на отрезке [а,Ъ], на котором функция /(х) непрерывна, /(а)/(Ь) «SO. Ошибка не должна превышать данного е > 0. При е^О и фиксированных f(x),a,b число итераций метода делений пополам есть log,- + 0(1). (9.15) Метод же Ньютона (касательных) требует О flog log -) (9.16) s итераций при соблюдении ограничений на функцию /(х), обеспечивающих сходимость метода.
Дата добавления: 2014-01-11; Просмотров: 313; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |