Hallo Hans,
Aber es ist wohl sicher so, für n = 5 oder gar 6 ist das völlig
unbrauchbar.
Jetzt folgende Fragen:
Gibt es Ideen, den Code zu verbessern?
zum Geringsten die 6 Do Schleifen funktional formulieren.
Kennt jemand etwas zu n = 5 und / oder n = 6 ? (es geht darum, die
Anzahl
ALLER wesentlich verschiedenen MQ’s zu ermitteln und sie idealerweise
auch
anzugeben, wenn das nicht jeden Speicherplatz sprengt)
Man sagt (http://en.wikipedia.org/wiki/Magic_square)
The number of different n×n magic squares for n from 1 to 5, not counting
rotations and reflections:
1, 0, 1, 880, 275305224 (sequence A006052 in OEIS).
The number for n = 6 has been estimated to 1.7745×10^19.
Die Angabe aller wesentlich verschiedenen magischen Quadrate für n = 5
wird schon sehr mühsam, ohne Algorithmus eher unmöglich, für n = 6 ist die
Anzahl anscheinend noch nicht festgestellt worden.
Bei solchen Anzahlen müsste man so vorgehen, dass man zunächst nur ein n X
n magisches Quadrat erzeugt und dann durch Generatoren versucht, möglicht
viele andere aus diesem einen zu erzeugen. Dann steht die Frage, welches
sind die Generatoren und wieviele Ausgangsquadrate sind nötig, um daraus
alle wesentlich verschiedenen n X n magischen Quadrate zu erezugen? Also
primitiv gesprochen, wenn als Generatoren nur die identische Abbildung
bekannt ist, dann benötigen Sie im Fall n = 4 klarerweise 880
Ausgangsquadrate. Es lohnt sich also, diese 880 genau anzuschauen,
vielleicht kann man wenigstens für den Fall n gerade weiterkommen.
Gruss
Udo.
Es gibt ja Methoden, EIN magische Quadrat ungerades n zu konstruieren,
das ist aber hier nicht gefragt.
Außerdem denke ich, meine Methode ist ganz weit ab von gut. Ich glaube,
es müsste eine Methode geben, die MQ’s zu konstruieren in einer Art
„depth-first“ Algorithmus, also mit einer sich selbst aufrufenden
Prozedur
(Markus van Almsick ist ein Meister in dieser Art der Programmierung),
die nacheinander die Felder des Quadrats belegt und eine oder zwei
Ebenen höher zurückspringt, wenn es nicht passt, und dann wieder neu
probiert.
Das sind Labyrinth-Algorithmen, die sich die erfolglosen Versuche merken
und dann auf vorher nicht gewählten Wegen weitersuchen. Beim magischen
Quadrat liegt die Schwierigkeit darin, eine lösbare Teilaufgabe zu
formulieren und zu lösen.