Jak mogę stworzyć wszystkie k-combinations with repetitions danego zestawu (zwany również k-multicombinations lub multisubsets) przy użyciu MATLAB?Generowanie wszystkich kombinacji z powtarzaniem MATLAB
Jest podobny do produktu kartezjańskim, a dwa rzędy, które różnią się jedynie ich sortowania powinna być rozpatrywane jako takie same (na przykład wektory [1,1,2]=~=[1,2,1]
które uważa się za ten sam), tak generujące iloczyn i następnie zastosowanie unique(sort(cartesianProduct,2),'rows')
powinien dawać te same wyniki.
przykład: Połączenie nmultichoosek(1:n,k)
powinien generować następującą macierz:
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
Ver szybkie i wydajne pamięci! Świetne pytanie i odpowiedź –
Czy naprawdę potrzebujesz "przekształcenia"? Czy "combs = values (combs)" nie jest wystarczające? –
@LuisMendo: Właśnie to zrobiłem, więc dla 'k = 1' zwróci wektor kolumnowy. W przeciwnym razie można go pominąć. – knedlsepp