2014 dxdy logo

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

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




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


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

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

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

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


16/07/14
9416
Цюрих
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
12274
mihaild в сообщении #1405647 писал(а):
Вот что бывает при попытках думать в 2 часа ночи

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

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


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

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


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

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


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

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


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

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


16/07/14
9416
Цюрих
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
11966
Россия, Москва
mihaild
Ок, согласен с Вами, на бесконечности, $O(n \sqrt n)$ битов.

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

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



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

Сейчас этот форум просматривают: Dmitriy40


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

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