Re[3]: Как запоминать время работы алгоритмов O?
От: Sabrian  
Дата: 28.01.13 07:41
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Константин, Вы писали:


К>>Первично — понять алгоритм (хотя бы основную идею), тогда и сказать сложность не проблема.


А>Да ладно, вот есть random sort. Идея тривиальна: на каждом шаге мы сравниваем два случайных элемента и при необходимости меняем их местами. Скажи, пожалуйста, какая у него трудоемкость?


А>А ведь это тривиальный алгоритм, а если взять что-нибудь типа обхода дерева по алгоритму пьяной макаки или поиск пути по B* c эвристиками.


Я что-то упускаю или это правда тривиально? Разумеется задачу надо "додумать", условие то неполно. Пусть элементарная операция — генерация двух индексов, сравнение и обмен. А условие остановки — массив отсортирован. Вероятность совершить последний обмен в массиве длины k: 1/k * 1/k = 1 / (k^2). Т.е. в среднем понадобится O(k^2) операций. Затем рассмотрим отсортированный массив длины N как последовательность отсортированных массивов длины k.
Проинтегрируем по k от 0 до N. Получим O(N^3). Какие тут трудности могут быть с этим алгоритмом?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.