Я хотел бы иметь алгоритм (в r), который предоставляет мне ВСЕ возможные комбинации целых чисел, которые в сумме дают определенную сумму. Желательно в data.frame.
Например:
subsets(4,3) должен дать мне все комбинации из 3 элементов, которые в сумме дают 4:
0,0,4
0,4,0
4,0,0
1,0,3
1,3,0
3,0,1
3,1,0
0,1,3
0,3,1
1,1,2
1,2,1
2,1,1
2,2,0
0,2,2
2,0,2
Моя сумма будет не более 50, а мои группы зафиксированы на 6 (где разрешено 0).
subsetsum() не является ответом на мою проблему, к сожалению. Может кто-нибудь мне помочь?
partitions
предоставит вам все (неупорядоченные) наборы неотрицательных целых чисел, которые в сумме составляют указанную сумму. Оттуда вы можете выбрать те, у которых максимальное количество ненулевых элементов, и вычислить нужные вам перестановки. Однако для 50/6 у вас будет много элементов;pp <- part(50)
дает вам матрицу разделов,sum(colSums(pp>0)<=6)
говорит вам, что 9192 из них имеют ‹=6 ненулевых компонентов; умножьте это наfactorial(6)
(все перестановки), и вы получите 6618240 наборов. - person Ben Bolker   schedule 29.06.2017