|
|
|
Получить все комбинации строк
|
|||
|---|---|---|---|
|
#18+
Добрый день! Есть такая задачка: Дано: таблица из одной колонки: SABC Требуется получить все комбинации: NS1A2B3C4A4B5A5C6B6C7A7B7C На чистом SQL 10-12 версий Oracle На SQL + PL/SQL Поделитесь, пожалуйста, если есть опыт решения подобных задачек на других инструментах. Есть подозрение, что для большого количества строк,исходных значений (50 и более) ни SQL ни SQL+PL/SQL не будут эффективны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 16:20 |
|
||
|
Получить все комбинации строк
|
|||
|---|---|---|---|
|
#18+
Est_voprosЕсть подозрение, что для большого количества строк,исходных значений (50 и более)Ты можешь себе представить мощность 2 50 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 16:52 |
|
||
|
Получить все комбинации строк
|
|||
|---|---|---|---|
|
#18+
ElicEst_voprosЕсть подозрение, что для большого количества строк,исходных значений (50 и более)мощность 2 50 ? Мелко мыслишь (c) Elic. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 18:21 |
|
||
|
Получить все комбинации строк
|
|||
|---|---|---|---|
|
#18+
Elic представить мощность 2 50 ? Нет ничего невозможного. Будет усложнение задачи, когда надо будет построить очередную комбинацию, проверить её по некоторым условиям, и только в случае невыполнения условий перейти к следующей комбинации. Согласен, что зря написал сразу про степень 50 не уточнив подход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 19:28 |
|
||
|
Получить все комбинации строк
|
|||
|---|---|---|---|
|
#18+
Число сочетаний из n-элементов по m-мест: A=n!/(n-m)! Вот и подсчитайте: K(3)=A(n=3; m=1)+A(n=3; m=2)+A(n=3; m=3) Для n=50 будет много, но не 2 в степени 50... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 19:41 |
|
||
|
Получить все комбинации строк
|
|||
|---|---|---|---|
|
#18+
Est_voprosзря написал сразу про степень 50 не уточнив подход. Дык уточняйте. А то какбэ Elic против обыкновения немножко оптимистичен (не учел желаемую форму представления) Код: plsql 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. И это... оно точно для СУБД задача? Сделать-то не проблема, но процессоры под СУБД денег стоят... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 19:44 |
|
||
|
Получить все комбинации строк
|
|||
|---|---|---|---|
|
#18+
d7iЧисло сочетаний из n-элементов по m-мест: A=n!/(n-m)! Код: plaintext Далее, судя по примеру ТС, требуется сгенерировать число групп, составляющих сумму ряда, а она равна именно power(2,N), Elic в этом прав. Но ТС дополнительно хочет каждое сочетание оформить группой строк , что дает общий множитель (n/2), или *25 при 50 элементах алфавита. Как-то так... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 19:51 |
|
||
|
Получить все комбинации строк
|
|||
|---|---|---|---|
|
#18+
d7iДля n=50 будет много, но не 2 в степени 50... А что комбинаторику в школах уже не изучaют? И про факториалы тоже не слышал? n!/(n - k)! когда k = n очень упрощается. Ну и сравни 2**50 c 50! SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 19:58 |
|
||
|
Получить все комбинации строк
|
|||
|---|---|---|---|
|
#18+
Даны натуральные числа N и K. Рассмотрим множество чисел от 1 до N. Требуется вывести все различные его подмножества мощности K, причём в лексикографическом порядке. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Замените числа 1...N на буквы A...Z и получите нужную функцию. Как её впихнуть в СУБД - это уже второй вопрос... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 20:07 |
|
||
|
Получить все комбинации строк
|
|||
|---|---|---|---|
|
#18+
d7iКак её впихнуть в СУБД - это уже второй вопрос... Впихнуть не проблема Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Проблема в числе комбинаций. Число комбинаций от 1 до 7 из 7 и время: Код: plsql 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. А вот окончания от 1 до 8 из 8 я не дождался. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 22:27 |
|
||
|
Получить все комбинации строк
|
|||
|---|---|---|---|
|
#18+
SYА вот окончания от 1 до 8 из 8 я не дождался.Во-первых неправильно. Во-вторых долго. В-третьих вы сами были в теме, где быстро. 21529870 По крайней мере комбинации для всего алвафита от A до Z на моем ноуте генерирует за секунды. С русским, где на 7 букв больше будет уже проблематичнее, но тоже меньше часа ждать. А вот с 50 элементами туго, да. Est_voprosElic представить мощность 2 50 ? Нет ничего невозможного. Будет усложнение задачи, когда надо будет построить очередную комбинацию, проверить её по некоторым условиям, и только в случае невыполнения условий перейти к следующей комбинации. Согласен, что зря написал сразу про степень 50 не уточнив подход.Есть дохрена чего невозможного. Только и практического смысла в невозможных хотелках [как правило] мало. Для примера, и заодно, чтоб лучше осознавать скорость роста экспоненциальных последовательностей почитай притчу про шахматную доску и зерно . Странная цель захламлять память огромным числом комбинаций вместо того, чтоб пре-генерировать их на лету (возможно пачками) по мере проверки. Ну и главное, выбор SQL как инструмента наводит на мысли, чтоб все это баловство. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 00:53 |
|
||
|
Получить все комбинации строк
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopв теме, где быстро 6849388 Ссылки разучился давать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 00:55 |
|
||
|
Получить все комбинации строк
|
|||
|---|---|---|---|
|
#18+
SYd7iДля n=50 будет много, но не 2 в степени 50... А что комбинаторику в школах уже не изучaют? И про факториалы тоже не слышал? n!/(n - k)! когда k = n очень упрощается. Ну и сравни 2**50 c 50! SY.да тут даже комбинаторику вспоминать не надо... Достаточно представить комбинацию в двоичном виде: 1 - элемент выбран, 0 - не выбран, и итого - 50 бит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 02:26 |
|
||
|
Получить все комбинации строк
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 08:06 |
|
||
|
Получить все комбинации строк
|
|||
|---|---|---|---|
|
#18+
xtenderДостаточно представить комбинацию в двоичном виде: 1 - элемент выбран, 0 - не выбран, и итого - 50 бит. ...и размножить каждую комбинацию в "количество единиц в векторе" раз, что также приводит к ранее представленной формуле (N/2)*power(2,N). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 10:24 |
|
||
|
Получить все комбинации строк
|
|||
|---|---|---|---|
|
#18+
Утёнок, кстати, прекрасен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 12:13 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39667266&tid=1883781]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 246ms |
| total: | 441ms |

| 0 / 0 |
