![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 19 Dołączył: 25.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Poszukuję algorytmu, który będzie porównywał dwie permutacje (czyli ciągi zawierające te same znaki, tyle że ułożone w innej kolejności). Przykładowo mogą to być dwa ciągi KACZKA i AACKKZ.
Kryterium porównania jest liczba mutacji potrzebnych do przekształcenia ciągu 1 w ciąg 2. Przy czym mutacja polega na zamianie dwóch sąsiednich znaków miejscami. Na przykład w ciągu KACZKA po zamianie C i Z otrzymamy KAZCKA. Zamieniane litery muszą zawsze ze sobą sąsiadować z jednym wyjątkiem: pierwszą literę można zamienić miejscami z ostatnią. Interesuje mnie minimalna liczba takich mutacji potrzebnych do przekształcenia ciągu 1 (np. AACKKZ) w ciąg 2 (np. KACZKA). W przykładzie mamy: Wejście: AACKKZ, KACZKA Mutacja 1: AACKZK (Z w lewo) Mutacja 2: AACZKK (Z w lewo) Mutacja 3: KACZKA (zamiana pierwszej litery z ostatnią) Wyjście: 3 Zależy mi też na tym, żeby kod był w miarę optymalny. Będę wdzięczny za wszelkie uwagi i wskazówki. Próbowałem wykorzystać odległości Hamminga i Levenshteina, ale te algorytmy działają trochę inaczej niż bym chciał. -------------------- Znalazłeś sam rozwiązanie swojego problemu? Nie pisz "już wiem, do zamknięcia". Podziel się rozwiązaniem - inni będą mieli łatwiej.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 07:52 |