2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Разбиения с ограничениями: кто быстрее?
Сообщение18.07.2019, 13:20 


05/09/16
12108
wrest в сообщении #1405640 писал(а):
Кстати алгоритм очень хорош тем, что он эффективен как для малых $k$, так и для больших.

Вернее, он замедляется только до $k=n/2$ а потом время остается постоянным.

Но вот мне представляется, что если не подниматься снизу вверх, а спускаться сверху вниз, то для $k/n \approx 1$ должен быть свой быстрый алгоритм (который, по слухам зашифрован во второй шифрограмме на J под кодовым названием pnkd).

 Профиль  
                  
 
 Re: Разбиения с ограничениями: кто быстрее?
Сообщение18.07.2019, 13:25 
Заслуженный участник
Аватара пользователя


16/07/14
9202
Цюрих
wrest в сообщении #1405593 писал(а):
Эти числа равны 8-)
Вот что бывает при попытках думать в 2 часа ночи :facepalm:
Dmitriy40 в сообщении #1405578 писал(а):
Памяти очевидно всего $O(n)$

Памяти $O(n \sqrt n)$ - само по себе число разбиений требует порядка $O(\sqrt n)$ бит на хранение.

 Профиль  
                  
 
 Re: Разбиения с ограничениями: кто быстрее?
Сообщение18.07.2019, 14:14 


05/09/16
12108
mihaild в сообщении #1405647 писал(а):
Вот что бывает при попытках думать в 2 часа ночи

Ваш ночной алгоритм очень крут! Можете подумать теперь днём? :mrgreen: Вдруг еще на порядок ускорите? :idea:

 Профиль  
                  
 
 Re: Разбиения с ограничениями: кто быстрее?
Сообщение18.07.2019, 21:08 
Заслуженный участник


20/08/14
11867
Россия, Москва
mihaild в сообщении #1405647 писал(а):
Dmitriy40 в сообщении #1405578 писал(а):
Памяти очевидно всего $O(n)$
Памяти $O(n \sqrt n)$ - само по себе число разбиений требует порядка $O(\sqrt n)$ бит на хранение.
Ну не знаю, вижу вектор размера N+1 и всё, а уж сколько битов надо - дело чуть другое.

 Профиль  
                  
 
 Re: Разбиения с ограничениями: кто быстрее?
Сообщение18.07.2019, 22:00 
Заслуженный участник
Аватара пользователя


16/07/14
9202
Цюрих
Dmitriy40 в сообщении #1405750 писал(а):
вижу вектор размера N+1 и всё
Так там внутри структуры, которые занимают не константный размер. Так-то и в первом решении внешний вектор имеет $O(n)$ элементов.

 Профиль  
                  
 
 Re: Разбиения с ограничениями: кто быстрее?
Сообщение19.07.2019, 00:47 
Заслуженный участник


20/08/14
11867
Россия, Москва
mihaild в сообщении #1405783 писал(а):
Dmitriy40 в сообщении #1405750 писал(а):
вижу вектор размера N+1 и всё
Так там внутри структуры, которые занимают не константный размер.
Как минимум зависит от реализации, я вполне могу сделать и константный размер элементов вектора, скажем $2^{12}=4096$ битов, такого размера хватит для $k \le n \le 10^6$, благо что оперировать одинаковым размером больших чисел немного проще.

 Профиль  
                  
 
 Re: Разбиения с ограничениями: кто быстрее?
Сообщение19.07.2019, 09:34 


05/09/16
12108
mihaild
Расскажите пож-ста, почему ваш алгоритм работает?

 Профиль  
                  
 
 Re: Разбиения с ограничениями: кто быстрее?
Сообщение19.07.2019, 12:40 
Заслуженный участник
Аватара пользователя


16/07/14
9202
Цюрих
Dmitriy40 в сообщении #1405815 писал(а):
я вполне могу сделать и константный размер элементов вектора, скажем $2^{12}=4096$ битов, такого размера хватит для $k \le n \le 10^6$,
Тогда можно сделать и константный размер вектора $10^6$, этого тоже хватит для $k \leqslant n \leqslant 10^6$. И получим что алгоритм требует $O(1)$ памяти.
В массовых задачах асимптотику времени и памяти нужно считать на бесконечности.
wrest в сообщении #1405851 писал(а):
почему ваш алгоритм работает?
Да собственно он считает по той же формуле, только немного в другом порядке. Перед выполнением очередного внутреннего шага, в cache[j] лежит $p(j, k)$ при $j < i + k$ и $p(j, k - 1)$ при $j \geqslant i + k$. После этого шага, соответственно, в cache[i + k] появляется $p(i + k, k - 1) + p(i, k) = p(i + k, k)$.
Ну и цикл идет не до $N - k$, а до $N - 2k$, т.к. остальные значения нам не нужны - добавление очередного слагаемого, не меньше $k$, уже даст число, большее $N$, которое нас не интересует.

 Профиль  
                  
 
 Re: Разбиения с ограничениями: кто быстрее?
Сообщение19.07.2019, 15:29 
Заслуженный участник


20/08/14
11867
Россия, Москва
mihaild
Ок, согласен с Вами, на бесконечности, $O(n \sqrt n)$ битов.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group