Tùy chọn 0: Cho phép tại chỗ (1995) bởi Faith E. Fich, J. Ian Munro, Patricio V. Poblete time O ( log 2 n ) space.O(nlogn)O(log2n)
Tùy chọn 1: Gian lận bằng cách nén hoán vị của bạn vào cấu trúc dữ liệu cô đọng, xem Munro http://www.itu.dk/people/ssrao/icalp03-a.pdf .
Tùy chọn 2: Sử dụng phân tách chu kỳ chính để lưu trữ perm một cách ngắn gọn và sử dụng khoảng trống thừa đó để gian lận http://oeis.org/A186202
Tùy chọn 3: Theo dõi chỉ số lớn nhất của mỗi chu kỳ thao tác. Đối với mỗi lần lặp, sử dụng chỉ số vô hình lớn nhất để di chuyển mọi thứ trong chu kỳ của nó theo một. Nếu nó chạm vào một chỉ mục đã thấy thì hoàn tác tất cả công việc đó vì chu trình đã bị thao túng. , không gian O ( # chu kỳ ∗ log n ) .O(n2)O(#cycles∗logn)
Tùy chọn 4: Theo dõi chỉ số lớn nhất của mỗi chu kỳ được thao tác, nhưng chỉ thực hiện chúng theo lô có độ dài chu kỳ riêng biệt. Đối với mỗi lần lặp, sử dụng chỉ số vô hình lớn nhất để di chuyển mọi thứ trong chu kỳ của nó. Nếu nó đạt một chỉ số nhìn thấy hoàn tác tất cả các công việc đó vì chu trình thae đã bị thao túng. thời gian, O ( ( # chu kỳ _ với _ cùng _ kích thước ) * log n ) không gian.O(n2∗distinct_cycle_lengths)O((#cycles_with_same_size)∗logn)
Tùy chọn 5: Từ cùng một tờ giấy của Munro là Tùy chọn 0, Với xoay chu kỳ của p ( i ) nếu i là chỉ số lớn nhất trong chu kỳ đó. Thời gian O ( n 2 ) và không gian O ( log n ) .i=1..np(i)iO(n2)O(logn)