|
|
|
Алгоритм объединения массивов в группы по числу общих элементов
|
|||
|---|---|---|---|
|
#18+
Пусть имеется несколько именованных массивов с числами (ИД каких-либо объектов, не суть важно) в них: Код: javascript 1. 2. 3. 4. Размер массива не фиксирован, элементы внутри 1го массива не повторяются. Нужно получить все комбинации имен массивов, имеющих как минимум N общих элементов. Пример, если N = 1, то результатом будет {a, b, c, d}, так как все 4 массива имеют общее число 3 в них. Все другие комбинации здесь не нужны (типа пар {a, b}, {c, d} и тд.) ибо они уже входят в комбинацию из 4х. Если N = 2, то получатся комбинации {a, b, d} (общие числа 2 и 3), {a, c, d} (общие числа 1 и 3) и {b, c} (общие числа 3 и 5). Снова все другие комбинации здесь не нужны (типа {a, b}, {a, c}), потому что они уже присутствуют в триплетах. Если N = 3, получится {a, d}, так как только 2 этих массива имеют по 3 общих элемента. Если N = 4, результатов не будет. Посоветуйте хотя бы в какую сторону копать, ничего в голову не приходит из алгоритмов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2016, 15:23 |
|
||
|
Алгоритм объединения массивов в группы по числу общих элементов
|
|||
|---|---|---|---|
|
#18+
Если можно это засунуть в БД, то select`ами с группировкой вроде должно нормально выбираться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2016, 15:38 |
|
||
|
Алгоритм объединения массивов в группы по числу общих элементов
|
|||
|---|---|---|---|
|
#18+
Если массивов немного, то просто написать функцию сравнения двух массивов и тупо сравнить все со всеми. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2016, 15:42 |
|
||
|
Алгоритм объединения массивов в группы по числу общих элементов
|
|||
|---|---|---|---|
|
#18+
Мне кажется что если отформатировать под матрицу то можно придумать оптимизации. Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2016, 15:47 |
|
||
|
Алгоритм объединения массивов в группы по числу общих элементов
|
|||
|---|---|---|---|
|
#18+
Не совсем тупо. При сравнении сохранять совпавшие части массивов, например для 2х Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2016, 15:53 |
|
||
|
Алгоритм объединения массивов в группы по числу общих элементов
|
|||
|---|---|---|---|
|
#18+
Напутал немного пока копипастил, такой результат Код: plaintext 1. 2. 3. 4. 5. 6. 7. т.е. получили {a, c, d} и {a, b, d} Ну и третьим шагом надо выкинуть повторы если такие окажутся в результате. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2016, 15:57 |
|
||
|
Алгоритм объединения массивов в группы по числу общих элементов
|
|||
|---|---|---|---|
|
#18+
maytonМне кажется что если отформатировать под матрицу то можно придумать оптимизации. ИМХУ в матрице из 2-х строк легко сравнивать 2 массива, выкинул ненужное (один из столбцов пуст), а из остального нагенерил результатов. Например Код: plaintext 1. Код: plaintext Код: plaintext 1. Код: plaintext 1. 2. 3. А большей пользы от матрицы я не вижу, т.е. 3 и более массивов никак там не обработать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2016, 16:12 |
|
||
|
Алгоритм объединения массивов в группы по числу общих элементов
|
|||
|---|---|---|---|
|
#18+
Dima Tполучили Код: plaintext Код: plaintext 1. Немного недописал, пар побольше будет Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2016, 16:17 |
|
||
|
Алгоритм объединения массивов в группы по числу общих элементов
|
|||
|---|---|---|---|
|
#18+
Недочитал ТЗ Downer123Пример, если N = 1, то результатом будет {a, b, c, d}, так как все 4 массива имеют общее число 3 в них. Все другие комбинации здесь не нужны (типа пар {a, b}, {c, d} и тд.) ибо они уже входят в комбинацию из 4х. Тогда четвертым шагом проверить вхождение одного результата в другой, тут сравнивать каждый со всеми бОльшими по размеру, если входит - удалять. Принцип сравнения тот же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2016, 16:21 |
|
||
|
Алгоритм объединения массивов в группы по числу общих элементов
|
|||
|---|---|---|---|
|
#18+
Если сравнивать каждый массив с каждым, и перед этим упорядочить все массивы, то мы получим O(n^4lgn), где n - количество элементов самого большого массива. Можно ли сделать это быстрее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2016, 06:31 |
|
||
|
Алгоритм объединения массивов в группы по числу общих элементов
|
|||
|---|---|---|---|
|
#18+
SashaMercury, Задачка NP ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2016, 08:16 |
|
||
|
Алгоритм объединения массивов в группы по числу общих элементов
|
|||
|---|---|---|---|
|
#18+
Перебором, без оптимизации, которой, скорее всего, не существует. C# Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2016, 08:27 |
|
||
|
Алгоритм объединения массивов в группы по числу общих элементов
|
|||
|---|---|---|---|
|
#18+
Массивы в этой задаче не более чем представления множеств Имеется семейство множеств, найти все подсемейства с мощностью пересечения не менее N ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2016, 08:39 |
|
||
|
Алгоритм объединения массивов в группы по числу общих элементов
|
|||
|---|---|---|---|
|
#18+
ИзопропилSashaMercury, Задачка NP Да, спасибо, так и есть. Выше я рассуждал об алгоритме поиска только всех пар множеств содержащих заданное количество элементов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2016, 09:05 |
|
||
|
Алгоритм объединения массивов в группы по числу общих элементов
|
|||
|---|---|---|---|
|
#18+
Алексей КПеребором, без оптимизации, которой, скорее всего, не существует. C# Код: 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. Я вот щас задумался насколько удобно нам оценивать P/NP в условиях когда программа записана в виде конвейера lambda-fuctions. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2016, 11:17 |
|
||
|
Алгоритм объединения массивов в группы по числу общих элементов
|
|||
|---|---|---|---|
|
#18+
Downer123, Не совсем то что автор хотел, но все же Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 04:42 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=28&tid=1340662]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 254ms |
| total: | 425ms |

| 0 / 0 |
