Potrzebuję algorytmu do obliczenia wszystkich permutacji o stałej wielkości liczby binarnej o danej wadze hammingowej. Na przykład, jeśli masa jest Hamminga 2 i wielkość binarnego 4 I są te wyjścia:Jaki jest najszybszy algorytm komputerowy dla wszystkich permutacji liczby binarnej o tej samej wadze hammingowej?
0011
0110
0101
1100
1010
1001
Liczba takich kombinacjach oblicza się jako C(n,r)
w tym przykładzie C(4,2)
która 6.
Uwaga możesz to rozwiązać, zwiększając liczbę od 0 do 2^n i sprawdzając, czy liczba jest poprawna. Jednak nie jest to szybkie rozwiązanie. Rozważam rozwiązanie problemu za pomocą klasy bitset w C++, i muszę zwiększyć N.
Chcę dodać, że istnieje oczywisty algorytm rekursywny dla tego problemu. Ze względu na przepełnienie stosu, nie jest to dobra odpowiedź. Otrzymałem dobrą odpowiedź od włamań Gospera. Chociaż muszę skalować dane wejściowe i może później użyć do tego implementacji MPI, potrzebuję skalowalnej biblioteki. Niepodpisany int nie jest wystarczająco duży i wolałbym skalowalną i szybką bibliotekę jak bitset. Rozwiązanie nie ma tutaj zastosowania, gdy nie ma żadnych dodatków w bibliotece bitsetów. jakiekolwiek inne rozwiązanie?