powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Верификация сложности алгоритма
25 сообщений из 118, страница 1 из 5
Верификация сложности алгоритма
    #39827176
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предположим, у нас есть программно реализованный алгоритм, решающий некую задачу. Предполагается, что этот алгоритм имеет определенную сложность, выраженную нотацией "О большое", например, O(n*logn). Мы можем вызывать алгоритм на разных входных данных и замерять время его выполнения.
Как программно проверить, верно ли предположение о сложности?
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827179
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
плавно увеличивать N и замерять время работы алгоритма в различных попугаях ?

100-120-144-172-207...-1000000000000
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827207
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aklinплавно увеличивать N и замерять время работы алгоритма в различных попугаях ?

100-120-144-172-207...-1000000000000

И как понять, что получившаяся последовательность замеров действительно соответствует предполагаемой сложности?
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827208
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperИ как понять, что получившаяся последовательность замеров действительно соответствует предполагаемой сложности?Постройте два графика: получившийся и предполагаемый. Сделайте сравнение в пределах погрешности.
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827209
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
График, построенные по результатам эксперимента, должен совпасть с графиком, построенным на теоретических данных, с заданной точностью.
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827211
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AklinInterloperИ как понять, что получившаяся последовательность замеров действительно соответствует предполагаемой сложности?Постройте два графика: получившийся и предполагаемый. Сделайте сравнение в пределах погрешности.

Насколько большое N нужно брать для графика?
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827214
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperНасколько большое N нужно брать для графика?Зависит от того, под какие данные рассчитан алгоритм.

Если речь идет про простую сферическую в вакууме сортировку уровня студенческих лабораторных, то я бы сказал, что достаточно взять до миллиона элементов.

Просто бывают алгоритмы, к примеру тех же сортировок, рассчитанных на сортировку малых массивов, скажем, до 20 элементов. И гонять такой алгоритм даже на 100 элементах уже кощунство.
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827215
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AklinInterloperНасколько большое N нужно брать для графика?Зависит от того, под какие данные рассчитан алгоритм.

Если речь идет про простую сферическую в вакууме сортировку уровня студенческих лабораторных, то я бы сказал, что достаточно взять до миллиона элементов.

Просто бывают алгоритмы, к примеру тех же сортировок, рассчитанных на сортировку малых массивов, скажем, до 20 элементов. И гонять такой алгоритм даже на 100 элементах уже кощунство.

В том то и дело, что мы не знаем как устроен алгоритм внутри.
Для N<1000000 он может вести себя как линейный, затем начинает вести себя как квадратичный.
Так что такой принцип решения не годится.
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827219
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperИ как понять, что получившаяся последовательность замеров действительно соответствует предполагаемой сложности?

Делить время на сложность - должно асимптотически приближать к некоторой константе, т.е. Время/(n*log(n)), для Вашего примера.
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827220
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperВ том то и дело, что мы не знаем как устроен алгоритм внутри.
Если у алгоритма нет генератора случайных чисел в виде одного из параметров "работы", то пройдитесь от 1 до 2^K, каждый раз увеличивая размер чисел вдвое. Делая несколько замеров на каждом N, с разными входными данными. Верхний предел - простое любопытство, время, при котором компьютер будет гонять алгоритм достаточно продолжительное для вашего ожидания время. В некоторых случаях это могут и быть и сутки, но для простых замеров достаточно, чтобы алгоритм работал одну-две минуты.

Если есть генератор случайных чисел и он определяет сложность, и погрешность при этом велика, то никак вы не определите, что там внутри. Для одних и тех же данных время может различаться, либо различаться не на одних и тех же, а скажем на соседних данных (с точки зрения алгоритма). Например, 2+2 будет складываться одну минуту, а 2+3 уже пятнадцать минут.
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827232
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aklin,

Генератор случайных чисел не обязателен. Это может быть банальное ветвление логики в зависимости от входных данных. Природа алгоритма неизвестна. Мы должны придумать универсальное решение или показать, что его не существует.
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827233
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064InterloperИ как понять, что получившаяся последовательность замеров действительно соответствует предполагаемой сложности?

Делить время на сложность - должно асимптотически приближать к некоторой константе, т.е. Время/(n*log(n)), для Вашего примера.

Каков алгоритм проверки на асимптотическое приближение?
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827255
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperAklin,

Генератор случайных чисел не обязателен. Это может быть банальное ветвление логики в зависимости от входных данных. Природа алгоритма неизвестна. Мы должны придумать универсальное решение или показать, что его не существует.Кому мы должны? Понятно, что если неизвестно, что там внутри, то мы не можем даже быть уверенны, что алгоритм, дважды запущенный на одних и тех же данных, выполнится за одинаковое время. Или что из ста запусков на одних данных 99 раз выполнится за секунду, а сотый раз за час.
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827256
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper
Каков алгоритм проверки на асимптотическое приближение?

Я бы попробовал метод наименьших квадратов для линейного приближения: если угол наклона стремится к 0, значит приближаемся к асимптоте.
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827261
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BarloneInterloperAklin,

Генератор случайных чисел не обязателен. Это может быть банальное ветвление логики в зависимости от входных данных. Природа алгоритма неизвестна. Мы должны придумать универсальное решение или показать, что его не существует.Кому мы должны? Понятно, что если неизвестно, что там внутри, то мы не можем даже быть уверенны, что алгоритм, дважды запущенный на одних и тех же данных, выполнится за одинаковое время. Или что из ста запусков на одних данных 99 раз выполнится за секунду, а сотый раз за час.

Внесу уточнение: алгоритм является детерминированным и завершается за конечное время на любых входных данных.
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827262
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064InterloperКаков алгоритм проверки на асимптотическое приближение?

Я бы попробовал метод наименьших квадратов для линейного приближения: если угол наклона стремится к 0, значит приближаемся к асимптоте.

Наклона чего по отношению к чему? Как будем оценивать стремление к нулю?
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827267
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper
Наклона чего по отношению к чему? Как будем оценивать стремление к нулю?

У Вас есть набор точек Y=(Время)/(Сложность) от X=(Сложность), после МНК получим:
Y=a*X+b, если a мало (внешний задаваемый параметр, означет точность нашего диагноза), значит (Время)=O(Сложность)
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827269
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperBarloneпропущено...
Кому мы должны? Понятно, что если неизвестно, что там внутри, то мы не можем даже быть уверенны, что алгоритм, дважды запущенный на одних и тех же данных, выполнится за одинаковое время. Или что из ста запусков на одних данных 99 раз выполнится за секунду, а сотый раз за час.

Внесу уточнение: алгоритм является детерминированным и завершается за конечное время на любых входных данных.А вам с какой целью? Успешная проверка на некотором наборе вариантов не будет являться доказательством вашего предположения. Если конечно это не полный перебор всех возможных вариантов входных данных.
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827271
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BarloneInterloperпропущено...


Внесу уточнение: алгоритм является детерминированным и завершается за конечное время на любых входных данных.А вам с какой целью? Успешная проверка на некотором наборе вариантов не будет являться доказательством вашего предположения. Если конечно это не полный перебор всех возможных вариантов входных данных.

Мне чисто из интереса.
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827276
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064InterloperНаклона чего по отношению к чему? Как будем оценивать стремление к нулю?

У Вас есть набор точек Y=(Время)/(Сложность) от X=(Сложность), после МНК получим:
Y=a*X+b, если a мало (внешний задаваемый параметр, означет точность нашего диагноза), значит (Время)=O(Сложность)

МНК даст нам оценку отклонения нашей функции от некоторой эталонной. Какую считать эталонной для O(N*N)? Нам то неизвестны коэффициенты, "спрятанные" внутри О большое.
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827278
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если чисто из интереса, то непонятна претензия:
InterloperДля N<1000000 он может вести себя как линейный, затем начинает вести себя как квадратичный.
Так что такой принцип решения не годится.
В любом случае, у программной реализации есть ограничения на входные данные: какое количество данных помещается в память, помещаются ли сами значения в используемый тип...
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827286
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если алгоритм работает с каким-то массивом, то константа про О большом будет меняться в момент, когда массив перестанет помещаться в кеш.
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827287
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BarloneЕсли чисто из интереса, то непонятна претензия:
InterloperДля N<1000000 он может вести себя как линейный, затем начинает вести себя как квадратичный.
Так что такой принцип решения не годится.
В любом случае, у программной реализации есть ограничения на входные данные: какое количество данных помещается в память, помещаются ли сами значения в используемый тип...
Чисто из интереса не означает ограничение общности. Предложенное решение "строить график от 1 до какого-то конкретного N" неверно в общем случае, о чем я и написал.
Считаем, что у нас бесконечно много памяти, чтобы вместить любые входные данные.
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827291
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperЧисто из интереса не означает ограничение общности. Предложенное решение "строить график от 1 до какого-то конкретного N" неверно в общем случае, о чем я и написал.
Считаем, что у нас бесконечно много памяти, чтобы вместить любые входные данные.Для практического применения вполне нормально. А для теоретических рассуждений о бесконечной памяти и бесконечном времени - нужно и перебор вести до бесконечности.
...
Рейтинг: 0 / 0
Верификация сложности алгоритма
    #39827300
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BarloneInterloperЧисто из интереса не означает ограничение общности. Предложенное решение "строить график от 1 до какого-то конкретного N" неверно в общем случае, о чем я и написал.
Считаем, что у нас бесконечно много памяти, чтобы вместить любые входные данные.Для практического применения вполне нормально. А для теоретических рассуждений о бесконечной памяти и бесконечном времени - нужно и перебор вести до бесконечности.

То есть такой проверяющий алгоритм не существует?
...
Рейтинг: 0 / 0
25 сообщений из 118, страница 1 из 5
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Верификация сложности алгоритма
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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