Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Gennadiy UsovAleksandr SharahovGennadiy Usov, допустим, у меня есть магическая функция, которая может найти все нужные вам сочетания. У вас есть алгоритм, который будет ее использовать?Конечно есть: 21690219 или 21693196 . Для доски 997х997 имеется 2^249 сочетаний.Возьмите доску поменьше, убедитесь в том, что вы никогда не сможете дождаться перебора даже 2^64 сочетаний. Зачем вам алгоритм, который требует триллионы лет для завершения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2018, 20:24 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
BarloneGennadiy UsovКонечно есть: 21690219 или 21693196 . Для доски 997х997 имеется 2^249 сочетаний.Возьмите доску поменьше, убедитесь в том, что вы никогда не сможете дождаться перебора даже 2^64 сочетаний. Зачем вам алгоритм, который требует триллионы лет для завершения?Есть формула, а есть реализация этой формулы на компьютере. Это две разные вещи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2018, 21:21 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Ранее рассматривались "линейные" сочетания для одномерного массива чисел. А если рассмотреть сочетания на плоскости для двумерного массива чисел. То есть, необходимо найти сочетания для чисел из массива N на М. Каждое число из массива чисел может принимать значение либо 1, либо 2. Конечно, можно составить ещё один массив из NxM чисел, а затем провести соответствие между этим массивом и масcивом P[N][M]. Однако интереснее иметь сочетания для двумерного массива. Тогда имеем код для варианта сочетаний двумерного массива чисел: Код: javascript 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. 27. 28. Аналогично можно будет определять сочетания для R-мерного массива чисел. И аналогично можно будет в этих массивах чисел искать сочетания не для всех чисел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2018, 07:06 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Есть ещё интересная задача. Необходимо найти сочетания N чисел, которые принимают значения либо 1, либо 2. При этом, количество "двоек" в сочетаниях не должно превышать некоторого предельного значения PR. Попробуем составить код для данной задачи: Код: javascript 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. 27. 28. 29. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 06:38 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
В другом форуме ту же проблему обсуждают. Дали ссылку на алгоритм https://habr.com/post/248493/ Дублирую сюда. Может чем поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 13:49 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Dima TВ другом форуме ту же проблему обсуждают. Дали ссылку на алгоритм https://habr.com/post/248493/ Дублирую сюда. Может чем поможет.Спасибо за информацию! Но, по-моему, несколько сложно. Ведь у нас очень неплохо получилось: 21699386 или 21690515 . Меня сейчас больше интересуют усложнения сочетаний: сочетания с ограничениями, сочетания чисел, принимающих М значений, сочетания на плоскости. Может быть ещё что-то появится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 16:56 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Dima TВ другом форуме ту же проблему обсуждают. Дали ссылку на алгоритм https://habr.com/post/248493/ Дублирую сюда. Может чем поможет. Нерекурсивный алгоритм по той ссылке, скорее всего, по всем параметрам проиграет рекурсивному )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 18:26 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovDima TВ другом форуме ту же проблему обсуждают. Дали ссылку на алгоритм https://habr.com/post/248493/ Дублирую сюда. Может чем поможет. Нерекурсивный алгоритм по той ссылке, скорее всего, по всем параметрам проиграет рекурсивному )) Возможно. Алгоритм интересный, но упирается в изъятие элементов массива, что тормоз. Может я его не допонял, читаю исходник, пытаюсь в синтаксисе VB разобраться. Наверно лучше там упомянутую книгу качнуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 19:05 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovНерекурсивный алгоритм по той ссылке, скорее всего, по всем параметрам проиграет рекурсивному )) У меня еще есть идея нерекурсивного алгоритма с деревом. Основано на идее что все комбинации по N элементов можно получить имея все комбинации по K и M, где K+M=N. Например для N=15 берем 7+8, где 7 = 3+4, 8 = 4+4, 3 = 2+1, 4 = 2+2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 19:13 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Dima TAleksandr SharahovНерекурсивный алгоритм по той ссылке, скорее всего, по всем параметрам проиграет рекурсивному )) У меня еще есть идея нерекурсивного алгоритма с деревом. Основано на идее что все комбинации по N элементов можно получить имея все комбинации по K и M, где K+M=N. Например для N=15 берем 7+8, где 7 = 3+4, 8 = 4+4, 3 = 2+1, 4 = 2+2.Что-то похожее на разделение в 21702893 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 19:32 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Dima TAleksandr SharahovНерекурсивный алгоритм по той ссылке, скорее всего, по всем параметрам проиграет рекурсивному )) У меня еще есть идея нерекурсивного алгоритма с деревом. Основано на идее что все комбинации по N элементов можно получить имея все комбинации по K и M, где K+M=N. Например для N=15 берем 7+8, где 7 = 3+4, 8 = 4+4, 3 = 2+1, 4 = 2+2. тогда будет проблемой, как подменять элементы в сгенерированных раскладах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 20:35 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovDima Tпропущено... У меня еще есть идея нерекурсивного алгоритма с деревом. Основано на идее что все комбинации по N элементов можно получить имея все комбинации по K и M, где K+M=N. Например для N=15 берем 7+8, где 7 = 3+4, 8 = 4+4, 3 = 2+1, 4 = 2+2. тогда будет проблемой, как подменять элементы в сгенерированных раскладах Сделал заготовку, лучше ее показать чтобы понятнее было, а то потом после тюнинга код тяжело читать будет. Пример кода слияния двух последовательностей комбинаций для N = 2: 01 10 Код: c# 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. 27. 28. 29. 30. 31. 32. код классов Код: c# 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. Результат Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Оптимизации пока никакой не делал, чтоб читаемость не рушить. Как минимум просится предварительный перегон в массивы second и union. Единственный минус что массив с очередным результатом каждый раз полностью заполняется, но это относительно небольшой тормоз. Суть задумки что внутри каждого объекта PermutationBy2 может быть два других объекта, т.е. дерево. В итоге будет класс Permutation(int N) с генератором последовательности комбинаций N по N. Примерно так Код: c# 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 10:32 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Dima T, вопрос в том, будет ли процедура Union.Next достаточно быстрой, т.к. все упирается в ее скорость ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 11:55 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovDima T, вопрос в том, будет ли процедура Union.Next достаточно быстрой, т.к. все упирается в ее скорость Если внутри Union все загнать в массив, то будет быстро. В общем случае для Union(K, M) потребуется (K+M)! / (K!*M!) массивов bool[K+M] Например для Union(10,10) потребуется массив 184756 массивов bool[20]. Union(K, M) это все варианты разместить K единиц в K+M элементах. Для случая (2,2) получается 6: Код: plaintext И самое главное что я тут вижу - этот алгоритм параллелится. Просто разбить Union на части. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 13:54 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Dima T, Ну значит будет с чем сравнить: в лучших алгоритмах генерации перестановок на переход к следующей тоже требуется не слишком много тактов процессора. Проблемы запараллелить генерацию перестановок, в принципе, нет. Это можно провернуть почти с любым алгоритмом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 14:50 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Dima TДля случая (2,2) получается 6: Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 17:17 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Dima TAleksandr SharahovНерекурсивный алгоритм по той ссылке, скорее всего, по всем параметрам проиграет рекурсивному )) У меня еще есть идея нерекурсивного алгоритма с деревом. Основано на идее что все комбинации по N элементов можно получить имея все комбинации по K и M, где K+M=N. Например для N=15 берем 7+8, где 7 = 3+4, 8 = 4+4, 3 = 2+1, 4 = 2+2.В сообщении 21704344 рассматривался вопрос "Сочетания из 200 чисел можно "собрать" из "суммы" сочетаний: 20 чисел + 30 чисел + 23 числа + 27 чисел + 17 чисел + 33 числа + 19 чисел + 31 число." Далее можно ещё делить, пока не придем к наименьшим составляющим: Например: 33= 2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+1, или формируется дерево, где элементы расположены попарно и постепенно уменьшаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 17:34 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Gennadiy UsovDima TДля случая (2,2) получается 6: Код: plaintext Код: plaintext Это не все решение, а его часть. Надо склеить два массива в данном примере по два элемента. На место 0 подставляем из первого, на место 1 - из второго. Если будет три 0 или 1, то получим ошибку выхода за пределы массива, т.к. в каждом по два элемента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 18:40 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Gennadiy UsovDima Tпропущено... У меня еще есть идея нерекурсивного алгоритма с деревом. Основано на идее что все комбинации по N элементов можно получить имея все комбинации по K и M, где K+M=N. Например для N=15 берем 7+8, где 7 = 3+4, 8 = 4+4, 3 = 2+1, 4 = 2+2.В сообщении 21704344 рассматривался вопрос "Сочетания из 200 чисел можно "собрать" из "суммы" сочетаний: 20 чисел + 30 чисел + 23 числа + 27 чисел + 17 чисел + 33 числа + 19 чисел + 31 число." Далее можно ещё делить, пока не придем к наименьшим составляющим: Например: 33= 2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+1, или формируется дерево, где элементы расположены попарно и постепенно уменьшаются. Извини, но тут я просто тебя не понимаю, я не понимаю как работает твой алгоритм. Мой пост был по теме топика "сочетания из К чисел". Я под этим понимаю что например так выглядит сочетание из 4-х по 4 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. У тебя же как-то по-другому, и я не смог понять как и почему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 18:47 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Dima TGennadiy UsovА как же следующие перестановки: Код: plaintext Это не все решение, а его часть. Надо склеить два массива в данном примере по два элемента. На место 0 подставляем из первого, на место 1 - из второго. Если будет три 0 или 1, то получим ошибку выхода за пределы массива, т.к. в каждом по два элемента.Так и у меня склейка: склеиваю несколько массивов, которые в сумме дают длину N. При этом существует правило: - к каждому сочетанию первого массива "приклеиваются" все сочетания второго массива; - к каждому сочетанию первого и второго массивов "приклеиваются" все сочетания третьего массива; - к каждому сочетанию первого, второго и треьего массивов "приклеиваются" все сочетания четвертого массива; и т.д. Dima TGennadiy UsovВ сообщении 21704344 рассматривался вопрос "Сочетания из 200 чисел можно "собрать" из "суммы" сочетаний: 20 чисел + 30 чисел + 23 числа + 27 чисел + 17 чисел + 33 числа + 19 чисел + 31 число." Далее можно ещё делить, пока не придем к наименьшим составляющим: Например: 33= 2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+1, или формируется дерево, где элементы расположены попарно и постепенно уменьшаются.Извини, но тут я просто тебя не понимаю, я не понимаю как работает твой алгоритм. Мой пост был по теме топика "сочетания из К чисел". Я под этим понимаю что например так выглядит сочетание из 4-х по 4 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 21690391 или 21699386 . Я так понимаю сочетания из 4-х по 4 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 19:11 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Gennadiy UsovЭто не мой алгоритм, а наш совместный: 21690391 или 21699386 . Нет. Там я не вникал в алгоритм. Я просто указал как правильнее делать его части. Gennadiy Usov Я так понимаю сочетания из 4-х по 4 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Поздравляю, ты изобрел двоичную систему счисления. Проблема только в том что ее 100 лет назад изобрели. Умножь первое число на 8, второе на 4, третье на 2, четвертое как есть. Сложи что получилось и получишь 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15. Это типа перевод из двоичной в десятичную. Я не понимаю зачем тебе надо изобретать этот древний велосипед? Нет, сам велосипед я прекрасно понимаю, но не понимаю что дальше ты хочешь с ним делать? PS Можно на "ты" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 20:27 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Если ты не можешь описать задачу, которую решаешь - то ты ее не решишь, ни сам, ни с чужой помощью, т.к. не помогут потому что банально не поймут в чем помочь надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 20:36 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Dima TGennadiy Usov Я так понимаю сочетания из 4-х по 4 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Поздравляю, ты изобрел двоичную систему счисления. Проблема только в том что ее 100 лет назад изобрели. Умножь первое число на 8, второе на 4, третье на 2, четвертое как есть. Сложи что получилось и получишь 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15. Это типа перевод из двоичной в десятичную. Я не понимаю зачем тебе надо изобретать этот древний велосипед? Нет, сам велосипед я прекрасно понимаю, но не понимаю что дальше ты хочешь с ним делать?Это ты увидел двоичную систему, а я увидел номера чисел, которые участвуют в сочетаниях: 1 в третьей колонке - значит третье число участвует в сочетании. Кстати, это описано в 21281836 . А ты так и не ответил на вопрос: И чем отличается у тебя первое и последнее сочетания в твоих сочетаниях по смыслу ? Мне кажется, что ты рассматриваешь не сочетания, а перестановки чисел. А эта задача уже не по теме топика. Из вики: "сочетанием из n по k называется набор k элементов, выбранных из данного множества, содержащего n различных элементов". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 20:47 |
|
||
|
Поиск любых сочетаний из К чисел
|
|||
|---|---|---|---|
|
#18+
Gennadiy UsovА ты так и не ответил на вопрос: И чем отличается у тебя первое и последнее сочетания в твоих сочетаниях по смыслу ? Я не могу ответить на этот вопрос, не вижу в нем смысла! Мои сочетания просты и понятны. Если применительно к ферзям, то число означает позицию в строке, а его положение - номер строки. Т.е. 3,2,0,1 это такая доска 0123ФФФФ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 21:03 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39738765&tid=1340024]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
170ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 291ms |
| total: | 564ms |

| 0 / 0 |
