powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Более точное определение сложности алгоритма
13 сообщений из 13, страница 1 из 1
Более точное определение сложности алгоритма
    #38640235
aybek_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для всех алгоритмом пишут их асимптотическую оценку.
Например:
heap_sort:
O(n log n)
bin_search:
O(log n)
... и т. д. и т. п.

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

Как этого можно добиться.
Конечно можно тестировать, программу, учитывая что время которая она
потратит пропорционально количеству действий.

Посоветуйте документацию по этой теме.
...
Рейтинг: 0 / 0
Более точное определение сложности алгоритма
    #38640440
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дональд Кнут описывал методику определения сложности алгоритма.
...
Рейтинг: 0 / 0
Более точное определение сложности алгоритма
    #38640481
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если пишут O(log n), то log n и есть количество операций
например для двоичного поиска в 1000 элементов надо выполнить максимум log(1000) = 10 операций, где log() логарифм по основанию два.
...
Рейтинг: 0 / 0
Более точное определение сложности алгоритма
    #38640549
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
А это зависит от кучи параметров - особенностей реализации, опций компилятора, железа. Например на одних и тех же данных на процессоре от intel будет быстрее одна версия алгоритма, а на amd другая. Или на процессорах с разным размером кеша. Не говоря уже о компиляции под разные архитектуры.
...
Рейтинг: 0 / 0
Более точное определение сложности алгоритма
    #38640915
Grunch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Видимо, ТС хочет видеть формулу О(n Log n) в виде, например 10*n*Log(n) + 1500. То есть конкретную оценку сложности, до выделения асимптотики.
Проблема в том, что один и тот же алгоритм, с одной и той же асимптотической сложностью, на разных входных данных (даже одного размера) может работать по-разному, соответственно и константы будут разные. Поэтому получение такой оценки задача неблагодарная и, в общем случае, бессмысленная.
Для оценки скорости работы разных вариантов алгоритма лучше использовать прогоны на одинаковых данных и засекать время их выполнения. Такая оценка и то будет точнее.
...
Рейтинг: 0 / 0
Более точное определение сложности алгоритма
    #38641052
aybek_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrunchВидимо, ТС хочет видеть формулу О(n Log n) в виде, например 10*n*Log(n) + 1500. То есть конкретную оценку сложности, до выделения асимптотики.
Проблема в том, что один и тот же алгоритм, с одной и той же асимптотической сложностью, на разных входных данных (даже одного размера) может работать по-разному, соответственно и константы будут разные. Поэтому получение такой оценки задача неблагодарная и, в общем случае, бессмысленная.
Для оценки скорости работы разных вариантов алгоритма лучше использовать прогоны на одинаковых данных и засекать время их выполнения. Такая оценка и то будет точнее.

Полность согласен с вашим мнением. Но иногда случается так что значения констант очень велики и это сильно влияет на время работы. Например, сортировка за время O(n^2) предпочтитеьнее чем сортировка за O(500000*log n), для малых значений n.
Вопрос в том как заметить эти константы, которые иногда играют значительную роль.
...
Рейтинг: 0 / 0
Более точное определение сложности алгоритма
    #38641077
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aybek_, экспериментально. Чистый алгоритм существует только в воспалённом мозгу
у теоретиков. В реальности на его скорость еще и влияет гауссовый шум который
обусловлен мультизадачностью, текущей загрузкой диска и сети или в общем -
конкурирующими сессиями которые работают с тобой параллельно и создают
активность.

Поэтому лучше проведи эксперимент на 2-х или трёх конфигурациях
с разными наборами n=10,100,1000,10000 и запиши в табличку для анализа.
...
Рейтинг: 0 / 0
Более точное определение сложности алгоритма
    #38641082
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
aybek_, для маленьких значений n обычно неважно, выполнится сортировка за одну тысячную секунды или за одну десятитысячную.
...
Рейтинг: 0 / 0
Более точное определение сложности алгоритма
    #38641250
Grunch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оценки среднего времени работы детерминированных алгоритмов
сортировки и хэширования.
(PDF)
В приведенной работе показаны методы расчета сложности алгоритмов, в том числе, и быстрой сортировки.
...
Рейтинг: 0 / 0
Более точное определение сложности алгоритма
    #38641286
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 13.05.2014 20:39, aybek_ wrote:

> но на практике бывает нужно более точно определить функцию,

O() -- Это не совсем функция.

> Точнее допустим мы хотим модифицированные версии быстрой
> сортировки, и определить которая работает быстрее на большинстве
> входных данных.

Это как бы немного не O, а другое.

> Как этого можно добиться.

Определение сложности алгоритма -- аналитическое, доказательство в виде
мат.выкладок.

> Посоветуйте документацию по этой теме.

Очень хорошо описано в этой книге:


http://www.books.ru/books/algoritmy-postroenie-i-analiz-355110/?show=1

Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн
Алгоритмы. Построение и анализ
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Более точное определение сложности алгоритма
    #38641392
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 14.05.2014 15:41, aybek_ wrote:

> Видимо, ТС хочет видеть формулу О(n Log n) в виде, например 10*n*Log(n)
> + 1500. То есть конкретную оценку сложности, до выделения асимптотики.

> Полность согласен с вашим мнением.

Если так, то ты совсем неправ. Читай определение O.
Получать конкретные константы бессмысленно с точки зрения O.

Если же ты будешь настаивать, то тебе видимо нужна другая оценка
алгоритма, не O. Например, просто точная формула кол-ва операций в
определённом случае.


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Более точное определение сложности алгоритма
    #38641739
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
MasterZivOn 14.05.2014 15:41, aybek_ wrote:

> Видимо, ТС хочет видеть формулу О(n Log n) в виде, например 10*n*Log(n)
> + 1500. То есть конкретную оценку сложности, до выделения асимптотики.

> Полность согласен с вашим мнением.

Если так, то ты совсем неправ. Читай определение O.
Получать конкретные константы бессмысленно с точки зрения O.

Если же ты будешь настаивать, то тебе видимо нужна другая оценка
алгоритма, не O. Например, просто точная формула кол-ва операций в
определённом случае.


Так точное количество операций тоже может быть не связанным с временем выполнения - миллион чтений из памяти по разным случайным адресам будет выполняться дольше, чем два миллиона чтений в пределах размера процессорного кеша.
...
Рейтинг: 0 / 0
Более точное определение сложности алгоритма
    #38641790
Grunch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aybek_ Так точное количество операций тоже может быть не связанным с временем выполнения
Именно поэтому я и говорю, что лучше замерять быстродействие прогонами разных алгоритмов на одинаковых данных.
Тогда можно будет более менее точно сказать - алгоритм А1 на массиве из миллиона случайных чисел тысячу раз отработал за 1,5 сек, а алгоритм А2 - за 1 сек. Алгоритм А2 быстрее.
А количество операций вообще может плавать даже в случае одного алгоритма. Например, пузырьковая сортировка на уже отсортированном массиве не сделает ни одного перемещения, а при обратной сортировке (n*(n-1))/2.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Более точное определение сложности алгоритма
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]