Tach.
Ich suche einen Algorithmus für eine Art Symbolpuzzle. Falls die folgende Beschreibung "zu mathematisch" ist, versuch ich es auch gerne nochmal anders ...
Aus einem Vorrat von N verschiedenen Symbolen
z. B. {a, b, c, d, e, f, g, h} für N = 8
läß sich eine Abfolge bilden, in der jedes Symbol jeweils genau einem Index von 0 bis N-1 zugeordnet ist:
Index: 0 1 2 3 4 5 6 7
Symbol: b d a f g c e h
Sei in einer solchen Abfolge nun S(X,Y) der Abstand zwischen zwei Symbolen X und Y, der die Anzahl der Schritte angibt, die man von X aus vorwärts gehen muß, um zu Y zu gelangen. Für die obige Beispielabfolge:
S(b,a) = 2
S(f,h) = 4
S(e,d) = 3
...
Gezählt wird der Abstand S(X,Y) dabei modulo N, wodurch immer
0 <= S(X,Y) < N
gilt. Mehrere dieser Abstandsangaben lassen sich nun als Sequenzen der Form
[bage], [ah], [bfe], ...
schreiben, wobei z. B. [bage] ausgeschrieben
S(b,a) = S(a,g) = S(g,e)
bedeutet. Mehrere dieser Sequenzen (auch unterschiedlicher Länge) sollen in einer Menge zusammengefaßt werden. Der Symbolabstand aller Sequenzen einer Menge soll dabei jeweils gleich sein, also beispielsweise
Menge M_1 = {[bage], [df], [hd]}
-> S(b,a) = S(a,g) = S(g,e) = S(d,f) = S(h,d) = 2
für die obige Beispielabfolge. In den anderen Mengen kann der Abstand natürlich einen anderen Wert als 2 annehmen.
Nach dem formellen Vorgeplänkel hier meine Problemstellung:
Gegeben ist ein bekannter Symbolvorrat mit N Symbolen, außerdem eine Handvoll Sequenzmengen M_1, M_2, ...
Gesucht ist nun eine Abfolge der Symbole (Zuordnung zu den Indizes 0 bis N-1), die die Bedingungen aller gegebenen Sequenzen erfüllt. Die Symbolabstände in den Sequenzen einer Menge sind zwar jeweils gleich, aber nicht bekannt -- sonst wäre das Finden der Abfolge ja nicht so schwer.
Einige Spezialfälle helfen beim "Lösen durch Ausprobieren". Aus der zyklischen Symbolfolge [bgb] folgt beispielsweise für gerades N, daß S(b,g) = S(g,b) = N/2 ist, und somit auch die Abstände der anderen Symbole in den Sequenzen der gleichen Menge N/2 betragen.
Einen rechnertauglichen Algorithmus zur Lösung dieses Problems konnte ich bisher nicht entwickeln. Hat jemand von euch eine Idee oder kennt ein ähnliches Problem aus der Mathematik/Informatik, das als Ansatz dienen könnte?
Once is a mistake, twice is jazz.