2009-07-30 16 views
5

Czy istnieje klasa szablonu C++, która implementuje operacje z permutacjami i grupą permutacji? Taka klasa musi zaimplementować znajdowanie produktu i odwrotność, mnożenie itd.Czy istnieje klasa C++, która implementuje operacje z permutacjami?

+0

W nowoczesnym C++ nie używałbyś do tego klasy. Prawdopodobnie używałbyś wielu szablonów funkcji. Jeden szablon funkcji dla każdej operacji, którą chcesz obsłużyć, z faktycznymi zakresami wejściowymi templatycznymi. – MSalters

+0

Programowanie funkcji nie jest opcją. Programowanie obiektowe jest dobre. Naprawdę potrzebuję klasy szablonu. –

+2

@MSalters: Jaki jest "zakres wejściowy" dla funkcji, która wymaga dwóch permutacji, i zwraca iloczyn tych permutacji? Czy sugerujesz, że same permutacje najlepiej reprezentują klienta jako pary iteracyjne, a nie nieprzezroczyste? Myślę, że Alexey szuka czegoś o większej wiedzy na temat teorii grup niż std :: next_permutation. –

Odpowiedz

3

This to najlepszy, jaki znalazłem ... ale jest w C, więc będziesz musiał napisać opakowanie. CodeCogs oferuje również bibliotekę na temat kombinatoryki.

-3

STL zawiera funkcję permutacji w algorytmie.h. Oto przykład tego.

 
int main() { 
    int myints[] = {1,2,3}; 
    cout << "The 3! possible permutations with 3 elements:\n"; 
    sort (myints,myints+3); 
    do { 
    cout << myints[0] << " " << myints[1] <<" " << myints[2] << endl; 
    } while (next_permutation (myints,myints+3)); 
    return 0; 
} 
+2

Proszę "algorytm", a nie "algorytm.h"! – KTC

+1

Jak to na przykład pomaga mi znaleźć odwrotną permutację? –

+0

Nie ma. Ta funkcja jedynie wylicza członków grupy permutacji. Nie wie nic o strukturze grupy - opiera się tylko na elementach tablicy wejściowej o określonej kolejności. –

0

Nie znam jednego, ale powinno być łatwe do wdrożenia. Wewnętrznie możesz reprezentować permutację jako wektor, np. (1 3 4 2 7 5 6) jest perm od 1-7 wysyłania 1-> 1, 2-> 3, 3-> 4, 4-> 2 itp. Lub jako zestaw cykli np. (1) (2 3 4) (5 7 6) i realizować operacje w kategoriach tych. Przypuszczalnie argument szablonu byłby wielkością grupy permutacyjnej.

Powiązane problemy