Генерация всех комбинаций с повторением с использованием MATLAB
Как мне создать всеk-комбинации с повторениями данного набора (также называетсяк-multicombinations или жеmultisubsets) используя MATLAB?
Это похоже на декартово произведение, но две строки, отличающиеся только сортировкой, следует считать одинаковыми (например, векторы[1,1,2]=~=[1,2,1]
считаются одинаковыми), поэтому генерирует декартово произведение и затем применяетunique(sort(cartesianProduct,2),'rows')
должен дать такие же результаты.
Пример: Вызовnmultichoosek(1:n,k)
должен сгенерировать следующую матрицу:
nmultichoosek(1:3,3)
ans =
1 1 1
1 1 2
1 1 3
1 2 2
1 2 3
1 3 3
2 2 2
2 2 3
2 3 3
3 3 3