Cäsar Chiffre AI schreiben

Guten Tag zsm,

also es gibt die Cäsar Chiffre, schon ein sehr altes Verfahren, und es gibt, als Ausgangsdaten: Buchstabenhäufigkeit – Wikipedia .

Bisher Folgendes:

class Caesar {
	// Ausgangsdaten...
        {'E', 16040, 16.11f},
        {'N', 10288, 10.33f},
        {'I', 9011, 9.05f},
        {'R', 6693, 6.72f},
        {'T', 6312, 6.34f},
        {'S', 6203, 6.23f},
        {'A', 5577, 5.6f},
        {'H', 5177, 5.2f},
        {'D', 4156, 4.17f},
        {'U', 3680, 3.7f},
        {'C', 3384, 3.4f},
        {'L', 3226, 3.24f},
        {'G', 2924, 2.94f},
        {'M', 2784, 2.8f},
        {'O', 2312, 2.32f},
        {'B', 2176, 2.19f},
        {'F', 1701, 1.71f},
        {'W', 1383, 1.39f},
        {'Z', 1351, 1.36f},
        {'K', 1329, 1.33f},
        {'V', 912, 0.92f},
        {'P', 841, 0.84f},
        {'Ü', 636, 0.64f},
        {'Ä', 511, 0.51f},
        {'Ö', 363, 0.36f},
        {'ß', 189, 0.19f},
        {'J', 186, 0.19f},
        {'X', 112, 0.11f},
        {'Q', 73, 0.07f},
        {'Y', 56, 0.06f}
    };

    public static void main(String[] args) throws IOException {
        String datei1 = "zuEntschluesseln.txt";
        String datei2 = "entschluesselt.txt";
		// kompliziert...
    }

    public static String ma(String string, int number) {
        int a = 32, b = 122;
        // kompliziert...
        return string2;
    }

    public static String mb(String string, int number) {
        int a = 32, b = 122;
        // kompliziert...
        return string2;
    }
}

Z. B. kann dieser Text verschlüsselt werden, und alle Buchstaben:

"Weit hinten, hinter den Wortbergen, fern der Lnder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen Sie in Buchstabhausen an der Kste des Semantik, eines groen Sprachozeans. Ein kleines Bchlein namens Duden fliet durch ihren Ort und versorgt sie mit den ntigen Regelialien."

Die Häufigkeit der Buchstaben stimmt ungefähr mit der Häufigkeit (relativ) der Buchstaben überein.

Gesucht ist jetzt eine AI, welche zu einem verschlüsselten Text die Verschiebungsspanne (number) zurück gibt, ohne, dass dafür ein kompliziertes Verfahren angegeben werden muss.

D. h., man gibt z. B. ein Neuronales Netz, und das „Verfahren“ wird „selbständig“ berechnet. (Wusste jetzt nicht, wie ich das jetzt besser formulieren sollte…)

Konkret z. B. „Überwachtes Lernen“:

Überwachtes Lernen (engl. supervised learning)
Der Algorithmus lernt eine Funktion aus gegebenen Paaren von Ein- und Ausgaben. Dabei stellt während des Lernens ein „Lehrer“ den korrekten Funktionswert zu einer Eingabe bereit. Ziel beim überwachten Lernen ist, dass dem Netz nach mehreren Rechengängen mit unterschiedlichen Ein- und Ausgaben die Fähigkeit antrainiert wird, Assoziationen herzustellen. Ein Teilgebiet des überwachten Lernens ist die automatische Klassifizierung. Ein Anwendungsbeispiel wäre die Handschrifterkennung.

Jetzt zur Frage: Gibt es ein solches Verfahren? Und wie kann ich es mit obigen Werten einstellen?

Du willst dem ANN beibringen die Verschiebung Delta der Buchstaben im Alphabet selbstständig zu berechnen?

Ja, ich bin da unsicher, was gelernt wird, und was gelernt werden soll. Auch der Aufbau des Netzes ist mir nicht verständlich.

Muss oder soll das mit einem NN gelöst werden? Eigentlich würde man vermuten, dass man einfach durchprobiert, und schaut, wo die Abweichung der Häufigkeitsverteilung der Buchstaben die geringste ist…

Wie könnte es denn durch NNs gelöst werden? :thinking:
Hat jemand vielleicht ein SSCCE?