|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
mayton, на практике наиболее удобным вариантом оказывается использование исходников, в которых предусмотрены обратные вызовы функций обработки. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 16:59 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
На сях с бустом есть такое https://www.boost.org/doc/libs/1_70_0/libs/coroutine/doc/html/coroutine/intro.html А есть в Delphi? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 17:15 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
mayton, с бустом )) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 17:27 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
Интересно, что если генерировать сочетания в нисходящем порядке, то минимальное значение элемента в каждой позиции совпадет с номером позиции. По идее, это упрощает алгоритм и позволяет обойтись минимумом вычислений. Например, сочетания по 4 из 6 для множества {0,1,2,3,4,5} выводятся в таком порядке: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Алгоритм получился довольно быстрым Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 17:42 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, так а в исходном варианте разве не тоже самое? Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 18:16 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov mayton, с бустом )) Ну я не против. Есть ли в Делфях свой буст? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 18:17 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
mayton Aleksandr Sharahov, так а в исходном варианте разве не тоже самое? Код: sql 1. 2. 3. 4. 5. 6.
Не совсем то же самое. Когда мы наращиваем значения элементов, то закончим при достижении значения, которое отличается на дельту (n-k) от индекса элемента. т е минимальное не является финальным ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 18:26 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
mayton Aleksandr Sharahov mayton, с бустом )) Ну я не против. Есть ли в Делфях свой буст? Есть несколько библиотек для параллельной работы, я не знаю, насколько они сопоставимы с бустом. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 18:28 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov mayton пропущено... Ну я не против. Есть ли в Делфях свой буст? Есть несколько библиотек для параллельной работы, я не знаю, насколько они сопоставимы с бустом. Чорт с ним. Корутитны? Континуэйшены есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 18:29 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
mayton Aleksandr Sharahov пропущено... Есть несколько библиотек для параллельной работы, я не знаю, насколько они сопоставимы с бустом. Чорт с ним. Корутитны? Континуэйшены есть? 1. Если потребуется, всегда можно эмулировать. 2. Но если кто-то скажет, что у него интерфейс заточен таким образом, то нафига оно надо, если можно без него. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 18:46 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov mayton пропущено... Чорт с ним. Корутитны? Континуэйшены есть? 1. Если потребуется, всегда можно эмулировать. 2. Но если кто-то скажет, что у него интерфейс заточен таким образом, то нафига оно надо, если можно без него. Твоя реализация - в конечном варианте не-рекурсивная. Поэтому тебе это не надо. Можно сказать что ты избежал этой участи Но в топике я также поставил сверх-задачу - обобщить подходы к рекурренным алгоритмам. В частности к итераторам. Я не буду настаивать. Ведь рекурсия - это сугубо мой интерес. В частности технологические штуки такие как
рекурсии в дек или в очередь может быть нетривиальной задачей или просто очень хлопотной в количестве кода. Поэтому я хочу оставить рекурсивное решение Анатолия. Оно мне нравится. Но сделать его более технологичным. Тоесть пригодным к интеграции и использованию извне. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 19:01 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
mayton Твоя реализация - в конечном варианте не-рекурсивная. Поэтому тебе это не надо. Можно сказать что ты избежал этой участи Их есть у меня ) Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 19:10 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
Dima T Еле нагуглил как привести reverse_iterator к iterator Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
ОК. Ну я скоро запутаюсь в исходниках. Ты еще не создавал репку? У каждого автора уже более чем 1 вариант кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 20:09 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
mayton Давайте уже подумаем над API использования этого софта. Как по мне - процесс consumer не сможет заглотить ни STDOT ни vector<vector<int>>. Неудобно это в одном случае. И не хватит памяти в другом. Надо думать над умной коммуникацией. Подумайте вот если-бы вы использовали бинарник этого генератора то каким образом-бы вы забирали результаты этой генерации. ИМХО Правильнее получать следующее значение, т.е. есть массив с текущим значением, вызываешь функцию, она внутри превращает массив в следующее, обрабатываешь, получаешь следующее и т.д. Реализации когда генератор внутри себя выдает значения куда-то там - нечитабельны, т.к. код получается корявый. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 20:18 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
mayton ОК. Ну я скоро запутаюсь в исходниках. Ты еще не создавал репку? У каждого автора уже более чем 1 вариант кода. Нормальный этот 22268624 остальные можешь не смотреть. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 20:20 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
Давайте зайдем в "области тьмы". В временую сложность. Что такое сочетания из 2 по 10 тыщ? Фигня. Щас дам калькулятор. Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Это 49 миллионов унылых пар чисел наподобие Код: sql 1. 2. 3. 4.
и так далее. Как в морском бое. Когда мы заполняем пол-поля треугольником по диагонали. В топиках простых чисел мы и поболее считывали. Вот мой concern в чем заключается. Внешний вид алгоритма имеющего квадратичные накладные расходы. Код: sql 1. 2. 3. 4. 5. 6.
Надо поисследовать как ведет себя итеративный алгоритм на малых значениях k при очень больших значениях n. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 21:11 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
mayton Давайте зайдем в "области тьмы". В временую сложность. Что такое сочетания из 2 по 10 тыщ? Фигня. Щас дам калькулятор. Это в уме считается, без калькулятора: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 21:27 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
Да. Этот калькулятор - уродский. Я писал его на коленке. Код: sql 1.
Слишком большой числитель и знаменатель при мизерном частном. Соотв надо сократить еще до вычислений факториалы. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 21:30 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
А лямбда похожа на ж0пу Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 21:33 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
Правильнее этот 22268468 , он быстр и уродлив одновременно, он быстрее, но непонятней. Запихать его в либу можно, попытаться объяснить кому-то как он работает - сложно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 21:42 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
Dima T Правильнее этот 22268468 , он быстр и уродлив одновременно, он быстрее, но непонятней. Запихать его в либу можно, попытаться объяснить кому-то как он работает - сложно. Это-же и есть самый важный скилл. Объяснить ребёнку как оно работает Пускай внутри коробочки будет Ад и Израиль. А снаружи - розовые единороги. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 21:46 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
mayton Это-же и есть самый важный скилл. Объяснить ребёнку как оно работает ага, поэтому сначала я родил первый вариант думая от лица процессора, потом переделал в пользу читаемости, потом понял почему второй вариант тормознее, там лишних действий больше, но все-равно я за него. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2021, 22:03 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
Dima T 0.6c ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2021, 00:13 |
|
Генерация сочетаний из N по K
|
|||
---|---|---|---|
#18+
думаю, аналог 22269637 на c не сильно отстанет ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2021, 01:11 |
|
|
start [/forum/topic.php?fid=16&msg=40039117&tid=1339689]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
others: | 251ms |
total: | 433ms |
0 / 0 |