Szybka permutacja -> liczba -> algorytmy mapowania permutacji

Mam n elementów. Dla przykładu, powiedzmy, 7 elementów, 1234567. Wiem, że jest 7! = 5040 możliwych kombinacji tych 7 elementów.

Chcę szybkiego algorytmu zawierającego dwie funkcje:

f (liczba) odwzorowuje liczbę z zakresu od 0 do 5039 na unikalną permutację i

f '(permutacja) odwzorowuje permutację z powrotem do liczby, z której została wygenerowana.

Nie obchodzi mnie zgodność między liczbą a permutacją, pod warunkiem, że każda permutacja ma swój unikalny numer.

Na przykład mogę mieć funkcje gdzie

f(0) = '1234567'
f'('1234567') = 0

Najszybszym algorytmem, jaki przychodzi do głowy, jest wyliczenie wszystkich permutacji i utworzenie tabeli odnośników w obu kierunkach, tak że po utworzeniu tabel f ​​(0) będzie O (1), a f („1234567”) będzie wyszukiwanie na łańcuchu. Jest to jednak głód pamięci, zwłaszcza gdy n staje się duże.

Czy ktoś może zaproponować inny algorytm, który działałby szybko i bez wad pamięci?

questionAnswers(12)

yourAnswerToTheQuestion