Dein Problem hängt mit der Hamming-Distanz zusammen. In diesem Sinne kann dein Problem umformuliert werden zu:
Zitat: |
Ich möchte alle Codewörter der Länge n mit einer Hamming-Distanz von x. |
Eine Frage, auf die es leider - soweit ich das überblicke - keine schnelle Antwort gibt. (Durchiterieren und ggf. verwerfen hast du ja schon) Du kannst so Pi*Daumen abschätzen, dass es bei einer Blocklänge von n und einem Hamming-Abstand von x maximal 3^(n-x+1) Nachrichten (= verschiedene Codewörter) gibt. (
de.wikipedia.org/wiki/Singleton-Schranke )
Also für dein Beispiel n = 5; x = 2; kann es nach der Formel maximal 81 Codewörter geben. Für dein zweites Beispiel maximal 9.
Beim ersten ist das wohl nicht sonderlich hilfreich, es ist wie gesagt eine obere Schranke
Die beliebige Generierung eines passenden Codes nach den Parametern Distanz und Gesamtlänge scheint kein einfaches Unterfangen zu sein. Aber vielleicht kannst du aus dem Gebiet ein paar Ansätze mitnehmen:
de.wikipedia.org/wiki/Hamming-Abstand
de.wikipedia.org/wiki/Reed-Solomon-Code
Das meiste Zeug ist leider auf binäre Code zugeschnitten, aber hier ist noch ein toller:
en.wikipedia.org/wiki/Ternary_Golay_code
Immerhin mal ternär, geht aber eher in die Richtung "Voll cool dass wir da mal einen entdeckt haben der gut ist." und weniger "Wir können beliebige Codes nach Anforderung generieren"