|
Autor |
* Diophants bunte Quadrate |
|
querin
Aktiv  Dabei seit: 12.01.2018 Mitteilungen: 746
 | Themenstart: 2023-02-02
|
https://matheplanet.org/matheplanet/nuke/html/uploads/c/49419_summe_quadrat_diophant3.jpg
Hallo,
noch eine Aufgabe des Diophant von Alexandria. In der Originalaufgabe ging es um drei Farben, Diophants Lösung ist im Bild dargestellt.
Ein $n\times n$-Schachbrett ist vollständig mit Spielsteinen in verschiedenen Farben belegt. Von keinen zwei Farben gibt es gleich viele Steine und es gilt:
Lässt man eine Farbe weg, so kann mit allen restlichen Farbsteinen wieder ein quadratisches Schachbrett vollständig belegt werden.
Wie viele Spielsteine benötigt man für sieben Farben?
Antworten bitte gleich hier posten. Gerne auch Lösungen für 4,5,6 oder mehr als 7 Farben. Bei mehreren Lösungen gewinnt die kleinste Gesamtsumme $n^2$.
Gute Unterhaltung 🙂
|
Profil
| Dies ist eine Knobelaufgabe!
Der Themensteller hat bestimmt, dass Du Lösungen oder Beiträge zur Lösung direkt im Forum posten darfst. Bei dieser Aufgabe kann ein öffentlicher Austausch über Lösungen, Lösungswege und Ansätze erfolgen. Hier musst Du keine private Nachricht schreiben! |
querin
Aktiv  Dabei seit: 12.01.2018 Mitteilungen: 746
 | Beitrag No.1, vom Themenstarter, eingetragen 2023-02-04
|
Für vier Farben benötigt man mindestens $120+177+232+432=961=31^2$ Farbsteine $\implies 31\times 31$-Schachbrett
https://matheplanet.org/matheplanet/nuke/html/uploads/c/49419_summe_quadrat_diophant4.jpg
Innere Quadrate mit drei Farben
$120+177+232=23^2$ (Bild oben links, rote Randleisten)
$177+232+432=29^2$ (Bild oben rechts, grüne Randleisten)
$120+232+432=28^2$ (Bild unten links, blaue Randleisten)
$120+177+432=27^2$ (Bild unten rechts, türkise Randleisten)
Die Grafik ist optional und dient nur zur Veranschaulichung.
|
Profil
|
cramilu
Aktiv  Dabei seit: 09.06.2019 Mitteilungen: 2067
Wohnort: Schwäbischer Wald, seit 1989 freiwilliges Exil in Bierfranken
 | Beitrag No.2, eingetragen 2023-02-04
|
Mir will und will nicht klar werden, welche genauen,
formalisierbaren Vorgaben es für die Gestalten der
einzelnen Farbbereiche geben soll. 😲
|
Profil
|
StrgAltEntf
Senior  Dabei seit: 19.01.2013 Mitteilungen: 8197
Wohnort: Milchstraße
 | Beitrag No.3, eingetragen 2023-02-04
|
\quoteon(2023-02-04 18:41 - cramilu in Beitrag No. 2)
Mir will und will nicht klar werden, welche genauen,
formalisierbaren Vorgaben es für die Gestalten der
einzelnen Farbbereiche geben soll. 😲
\quoteoff
Ich habe es so verstanden:
Gesucht sind k unterschiedliche Zahlen, deren Summe ein Quadrat ist. Weiterhin sollen die Summen von jeweils k-1 dieser Zahlen ebenfalls Quadrate sein.
|
Profil
|
pzktupel
Aktiv  Dabei seit: 02.09.2017 Mitteilungen: 2401
Wohnort: Thüringen
 | Beitrag No.4, eingetragen 2023-02-04
|
@StrgAltEntf
Genau so ist es
|
Profil
|
querin
Aktiv  Dabei seit: 12.01.2018 Mitteilungen: 746
 | Beitrag No.5, vom Themenstarter, eingetragen 2023-02-04
|
Hallo cramilu,
ich haba diese Aufgabe im Sinne der antiken griechischen Mathematik aufgefasst, wo der Begriff "Quadrat" immer geometrisch interpretiert wurde. Das sollten die Bilder ausdrücken. Wie die Farben im inneren Quadrat angeordnet sind ist völlig egal, wichtig ist nur, dass es sich "genau ausgeht" mit der Belegung des inneren Quadrats.
Sorry, wenn Dich die Bilder verwirrt haben.
Danke @StrgAltEntf, Du hast es auf den Punkt gebracht 🙂
|
Profil
|
StrgAltEntf
Senior  Dabei seit: 19.01.2013 Mitteilungen: 8197
Wohnort: Milchstraße
 | Beitrag No.6, eingetragen 2023-02-04
|
Hier meine Lösung 😃
\showon
153 + 304 + 453 + 600 + 1029 + 1305 + 2085 = 77²
\showoff
|
Profil
|
cramilu
Aktiv  Dabei seit: 09.06.2019 Mitteilungen: 2067
Wohnort: Schwäbischer Wald, seit 1989 freiwilliges Exil in Bierfranken
 | Beitrag No.7, eingetragen 2023-02-04
|
Ok... mal wieder rosa Elefanten gesehen, wo gar keine waren. 😄
Zahlenkombinatorisch bin ich indes noch mit der anderen
Grundaufgabe von neulich beschäftigt (p-Potenzen von k)
sowie mit insgesamt vorstellbaren Verallgemeinerungen.
@StrgAltEntf: Respekt! »KI« oder »NI«?
|
Profil
|
StrgAltEntf
Senior  Dabei seit: 19.01.2013 Mitteilungen: 8197
Wohnort: Milchstraße
 | Beitrag No.8, eingetragen 2023-02-04
|
\quoteon(2023-02-04 21:13 - cramilu in Beitrag No. 7)
@StrgAltEntf: Respekt! »KI« oder »NI«?
\quoteoff
Ertappt 🙄 Das hat mir natürlich ChatGPT geflüstert.
|
Profil
|
querin
Aktiv  Dabei seit: 12.01.2018 Mitteilungen: 746
 | Beitrag No.9, vom Themenstarter, eingetragen 2023-02-04
|
Großartig StrgAltEntf, herzlichen Glückwunsch 👍
Das wird wohl die kleinste Lösung sein (ich bin auf die gleichen Zahlen gekommen). Hast Du einen Beweis für die Minimalität?
Bei den nächst größeren k kenne ich die Minimal-Lösungen vermutlich nicht mehr, weil ich etwa für 10 Farben kleinere Zahlen als für 8 oder 9 Farben erhalte 🤔
Wenn Interesse besteht würde ich eine kleine Zusammenstellung von 5 und 6 (für Einsteiger) bis [open end] Farben in Form einer Bestenliste laufend aktualisieren.
Also, wer Lösungen findet: bitte posten 🙂
Bestenliste
$k=\text{Anzahl der Farben}$
$$\begin{array}{lcl}
\text{k=2 } & 5\times 5 & \text{StrgAltEntf } \#13 \\
\text{k=3 } & 21\times 21 & \#1 \\
\text{k=4 } & 31\times 31 & \#2 \\
\text{k=5 } & 40\times 40 & \text{StrgAltEntf } \#13 \\
\text{k=6 } & 56\times 56 & \text{StrgAltEntf } \#13 \\
\text{k=7 } & 77\times 77 & \text{StrgAltEntf } \#6 \\
\text{k=8 } & 84\times 84 & \text{StrgAltEntf } \#11 \\
\text{k=9 } & 96\times 96 & \text{DerEinfaeltige } \#17 \\
\text{k=10 } & 112\times 112 & \text{DerEinfaeltige } \#17 \\
\text{k=11 } & 145\times 145 & \text{DerEinfaeltige } \#17 \\
\text{k=12 } & 165\times 165 & \text{DerEinfaeltige } \#17 \\
\text{k=13 } & 202\times 202 & \text{DerEinfaeltige } \#17 \\
\text{k=14 } & 226\times 226 & \text{DerEinfaeltige } \#17 \\
\text{k=15 } & 254\times 254 & \text{DerEinfaeltige } \#17 \\
\text{k=16 } & 299\times 299 & \text{Kay_S } \#18 \\
\text{k=17 } & 327\times 327 & \text{Kay_S } \#18 \\
\text{k=18 } & 355\times 355 & \text{Kay_S } \#18 \\
\text{k=19 } & 412\times 412 & \text{DerEinfaeltige } \#22 \\
\text{k=20 } & 444\times 444 & \text{DerEinfaeltige } \#22 \\
\text{k=21 } & 476\times 476 & \text{DerEinfaeltige } \#22 \\
\text{k=22 } & 512\times 512 & \text{DerEinfaeltige } \#22 \\
\text{k=23 } & 577\times 577 & \text{DerEinfaeltige } \#22 \\
\text{k=24 } & 617\times 617 & \text{hyperG } \#24 \\
\text{k=25 } & 657\times 657 & \text{hyperG } \#24 \\
\text{k=26 } & 734\times 734 & \text{Kay_S } \#27 \\
\text{k=27 } & 774\times 774 & \text{Kay_S } \#27 \\
\text{k=28 } & 847\times 847 & \text{Kay_S } \#27 \\
\text{k=29 } & 899\times 899 & \text{hyperG } \#28 \\
\text{k=30 } & 951\times 951 & \text{hyperG } \#28 \\
\text{k=31 } & 999\times 999 & \text{hyperG } \#30 \\
\text{k=32 } & 1088\times 1088 & \text{hyperG } \#30 \\
\text{k=33 } & 1144\times 1144 & \text{hyperG } \#32 \\
\text{k=34 } & 1200\times 1200 & \text{hyperG } \#34 \\
\text{k=35 } & 1293\times 1293 & \text{hyperG } \#34 \\
\text{k=36 } & 1353\times 1353 & \text{hyperG } \#36 \\
\text{k=37 } & 1454\times 1454 & \text{hyperG } \#34 \\
\text{k=38 } & 1522\times 1522 & \text{hyperG } \#34 \\
\text{k=39 } & 1582\times 1582 & \text{hyperG } \#36 \\
\text{k=40 } & 1650\times 1650 & \text{hyperG } \#37 \\
\text{k=41 } & 1759\times 1759 & \text{hyperG } \#37 \\
\end{array}
$$
|
Profil
|
StrgAltEntf
Senior  Dabei seit: 19.01.2013 Mitteilungen: 8197
Wohnort: Milchstraße
 | Beitrag No.10, eingetragen 2023-02-05
|
\quoteon(2023-02-04 22:54 - querin in Beitrag No. 9)
Das wird wohl die kleinste Lösung sein (ich bin auf die gleichen Zahlen gekommen). Hast Du einen Beweis für die Minimalität?
\quoteoff
Es ist die Lösung, bei der das größte der sieben kleineren Quadrate am kleinsten ist. Nämlich 76². Demnach gibt es keine Lösung, bei der das große Quadrat kleiner als 77² ist.
Übrigens kommt die nächste Lösung dann bei 80².
|
Profil
|
StrgAltEntf
Senior  Dabei seit: 19.01.2013 Mitteilungen: 8197
Wohnort: Milchstraße
 | Beitrag No.11, eingetragen 2023-02-05
|
\quoteon(2023-02-04 22:54 - querin in Beitrag No. 9)
Bei den nächst größeren n kenne ich die Minimal-Lösungen vermutlich nicht mehr, weil ich etwa für 10 Farben kleinere Zahlen als für 8 oder 9 Farben erhalte 🤔
\quoteoff
Was hältst du von 84² mit 83², 82², 81², 80², 78², 77², 74² und 73²?
|
Profil
|
querin
Aktiv  Dabei seit: 12.01.2018 Mitteilungen: 746
 | Beitrag No.12, vom Themenstarter, eingetragen 2023-02-05
|
\quoteon(2023-02-05 12:22 - StrgAltEntf in Beitrag No. 11)
Was hältst du von 84² mit 83², 82², 81², 80², 78², 77², 74² und 73²?
\quoteoff
Davon halte ich sehr viel 😎
IHeute hatte ich zwei kleine Ideen zur Verbesserung meiner Strategie.
Mit der ersten kam ich immerhin auf
$179+356+531+704+875+1044+1211+3200=90^2$
und mit der zweiten erhalte ich noch bessere Ergebnisse für mehr als 7 Farben und kann auch Deine Lösung reproduzieren
$167+332+495+656+972+1127+1580+1727=84^2$
|
Profil
|
StrgAltEntf
Senior  Dabei seit: 19.01.2013 Mitteilungen: 8197
Wohnort: Milchstraße
 | Beitrag No.13, eingetragen 2023-02-05
|
Zunächst einmal: Man sollte die Anzahl der Farben nicht n nennen, da ja laut Themenstart das kleinste \(n\times n\)-Schachbrett gesucht ist. Ich hatte dummerweise in #3 damit angefangen, habe dort aber mittlerweile n durch k ersetzt. Um die Verwirrung gering zu halten, wäre es prima, wenn du es in deinen Beiträgen ebenfalls machst.
Um deine Bestenliste aus #9 fortzusetzen:
\showon Spoiler
\sourceon
k n
2 5
3 21
4 31
5 40
6 56
7 77
8 84
\sourceoff
Sind das auch deine Ergebnisse?
\showoff
Ich habe nun bei OEIS nach dieser Folge gesucht, bin dort aber nicht fündig geworden. Hast du eine Quelle parat, wo das Rätsel von Diophant formuliert ist? Vielleicht ist es ja für OEIS interessant genug, diese Folge aufzunehmen.
Viele Grüße
StrgAltEntf
|
Profil
|
querin
Aktiv  Dabei seit: 12.01.2018 Mitteilungen: 746
 | Beitrag No.14, vom Themenstarter, eingetragen 2023-02-06
|
\quoteon(2023-02-05 21:59 - StrgAltEntf in Beitrag No. 13)
Sind das auch deine Ergebnisse?
\quoteoff
Ja, das kann ich bestätigen
k=2: $9+16=5^2$
k=5: $79+156+231+375+759=40^2$
k=6: $111+220+327+535+832+1111=56^2$
und um das Dutzend voll zu machen, bei mir geht es so weiter
\showonSpoiler
k=9: n=96
k=10: n=112
k=11: n=145
k=12: n=165
\showoff
oder hast Du bessere Werte?
\quoteon
Hast du eine Quelle parat, wo das Rätsel von Diophant formuliert ist? \quoteoff
Es handelt sich um Problem 6 aus Buch III der Arithmetica. Als Quelle könnte man
https://proofwiki.org/wiki/Diophantus_of_Alexandria/Arithmetica/Book_3/Problem_6
angeben.
Schön, dass Du mitmachst 🙂
Viele Grüße
querin
|
Profil
|
StrgAltEntf
Senior  Dabei seit: 19.01.2013 Mitteilungen: 8197
Wohnort: Milchstraße
 | Beitrag No.15, eingetragen 2023-02-07
|
\quoteon(2023-02-06 11:16 - querin in Beitrag No. 14)
oder hast Du bessere Werte?
\quoteoff
Hallo querin,
für so große k habe ich gar keine Werte. k=9 werde ich noch durchrechnen können. Und vielleicht auch noch k=10. Danach habe ich mit meinem Programm keine Chance mehr.
Wie hast du denn die Werte gefunden?
|
Profil
|
querin
Aktiv  Dabei seit: 12.01.2018 Mitteilungen: 746
 | Beitrag No.16, vom Themenstarter, eingetragen 2023-02-07
|
\quoteon(2023-02-07 08:28 - StrgAltEntf in Beitrag No. 15)
Wie hast du denn die Werte gefunden?
\quoteoff
Ausgehend von einem $n>k^2$ suche ich zunächst k Quadratzahlen $q_j^2$ mit
$$\sum_{j=1}^k q_j^2=(k-1)\cdot n^2$$
Die Anzahl der einzelnen Farbsteine ergibt sich dann aus einem einfachen linearen Gleichungssystem. Der Haken an der Sache ist, dass man dabei auch nicht-positive und/oder mehrfach gleiche Lösungszahlen erhalten kann. Um das möglichst zu verhindern brauchte ich die angesprochenen kleinen Ideen. So wird iterativ nach einer möglichst kleinen Lösung gesucht
Verwendest Du Brute-Force Methoden?
|
Profil
|
DerEinfaeltige
Senior  Dabei seit: 11.02.2015 Mitteilungen: 3262
 | Beitrag No.17, eingetragen 2023-02-07
|
Ich biete folgende Werte:
\hideon
K: 2 N: 5
K: 3 N: 21
K: 4 N: 31
K: 5 N: 40
K: 6 N: 56
K: 7 N: 77
K: 8 N: 84
K: 9 N: 96
K: 10 N: 112
K: 11 N: 145
K: 12 N: 165
K: 13 N: 202
K: 14 N: 226
K: 15 N: 254
\hideoff
Das ist per Brute-Force gefunden. Ein paar K mehr dürften drin sein.
Vorgehen:
Bestimme alle K-Summen <= N^2 aus Quadratdifferenzen.
\sourceon C++
\numberson
#include
#include
#include
#include
bool has_k_partition(int N, int K, const std::vector &S)
{
std::vector> k_sets;
for (int k = 0; k <= K; ++k)
k_sets.push_back(std::set{});
k_sets[0].insert(0);
for (auto s : S)
for (int k = K-1; k >= 0; --k)
for (auto n : k_sets[k])
if (s + n <= N)
k_sets[k+1].insert(s + n);
return k_sets[K].count(N) == 1;
}
std::vector square_differences(int N)
{
std::vector diff;
for (int n = 1; n < N; ++n)
diff.push_back(N * N - n * n);
return diff;
}
int main()
{
for (int K = 2; K < 16; ++K)
for (int N = 1; N < 1000; ++N)
{
std::vector S = square_differences(N);
auto start = std::chrono::steady_clock::now();
if (has_k_partition(N * N, K, S))
{
auto end = std::chrono::steady_clock::now();
std::chrono::duration elapsed_seconds = end-start;
std::cout << "K: " << K << " N: " << N << " dT: " << elapsed_seconds.count() << "\n";
break;
}
}
return 0;
}
\sourceoff
|
Profil
|
Kay_S
Senior  Dabei seit: 06.03.2007 Mitteilungen: 1427
Wohnort: Koblenz (früher: Berlin)
 | Beitrag No.18, eingetragen 2023-02-07
|
Ich setze die Reihe vorsichtig fort mit
\hideon
k=16, n=299
k=17, n=327
k=18, n=355
\hideoff
Mit einer Heuristik gefunden, was natürlich nichts beweist. Diese tauscht einfach solange Quadrate aus, bis die Summe passt.
|
Profil
|
StrgAltEntf
Senior  Dabei seit: 19.01.2013 Mitteilungen: 8197
Wohnort: Milchstraße
 | Beitrag No.19, eingetragen 2023-02-07
|
k = 8, n = 96 habe ich nun nach ca 10 Std. Rechenzeit auch erhalten. Da werde ich meine Strategie wohl noch mal überdenken müssen.
8 * 96² = 95² + 94² + 93² + 92² +´91² + 90² + 89² + 86² + 84²
Das ist doch bestimmt kein Zufall, dass hier alle Quadrate von 89 bis 95 auftauchen ...
|
Profil
|
querin
Aktiv  Dabei seit: 12.01.2018 Mitteilungen: 746
 | Beitrag No.20, vom Themenstarter, eingetragen 2023-02-07
|
Großartig DerEinfaeltige und Kay_S 👍
und danke für das Programm @DerEinfaeltige (nach einer Übetragung in python würde es wahrscheinlich um den Faktor 100 langsamer laufen).
Damit sind jetzt die optimalen Werte bis $k=15$ bekannt.
\quoteon(2023-02-07 22:09 - StrgAltEntf in Beitrag No. 19)
8 * 96² = 95² + 94² + 93² + 92² +´91² + 90² + 89² + 86² + 84²
Das ist doch bestimmt kein Zufall, dass hier alle Quadrate von 89 bis 95 auftauchen ...
\quoteoff
Diese Beobachtung ist auch Teil meiner Strategie 😉
Meine Heuristik hat auch alle Lösungen gefunden, aber natürlich ohne Beweis der Minimalität:
k=9: $191+ 380+ 567+ 752+ 935+ 1116+ 1295+ 1820+ 2160=96^2$
k=10: $223+ 444+ 663+ 880+ 1095+ 1308+ 1519+ 1728+ 2140+ 2544=112^2$
k=11: $289+ 576+ 861+ 1144+ 1425+ 1704+ 1981+ 2256+ 3069+ 3336+ 4384=145^2$
k=12: $329+ 656+ 981+ 1304+ 1625+ 1944+ 2261+ 2576+ 3200+ 3509+ 3816+ 5024=165^2$
k=13: $403+ 804+ 1203+ 1600+ 1995+ 2388+ 2779+ 3168+ 3555+ 4323+ 5083+ 5460+ 8043=202^2$
k=14: $451+ 900+ 1347+ 1792+ 2235+ 2676+ 3115+ 3552+ 3987+ 4851+ 5280+ 5707+ 6132+ 9051=226^2$
k=15: $507+ 1012+ 1515+ 2016+ 2515+ 3012+ 3507+ 4000+ 4491+ 5467+ 5952+ 6435+ 7395+ 7872+ 8820=254^2$
k=16: $597+ 1192+ 1785+ 2376+ 2965+ 3552+ 4137+ 4720+ 5301+ 5880+ 7032+ 7605+ 8745+ 9312+ 9877+ 14325=299^2$
k=17: $653+ 1304+ 1953+ 2600+ 3245+ 3888+ 4529+ 5168+ 5805+ 6440+ 7073+ 7704+ 8333+ 10208+ 10829+ 13293+ 13904=327^2$
k=18: $709+ 1416+ 2121+ 2824+ 3525+ 4224+ 4921+ 5616+ 6309+ 7000+ 7689+ 8376+ 9061+ 9744+ 10425+ 13129+ 13800+ 15136=355^2$
Für k=19 erhalte ich n=412.
@DerEinfaeltige
Vielleicht kannst Du prüfen, ob die Ergebnisse für k>15 wirklich minimal sind?
Interessant wäre eine algebraische Herangehensweise, wie man für vorgegebenes k eine (zunächst nicht notwendig minimale) Lösung berechnen kann.
Viele Grüße
querin
|
Profil
|
StrgAltEntf
Senior  Dabei seit: 19.01.2013 Mitteilungen: 8197
Wohnort: Milchstraße
 | Beitrag No.21, eingetragen 2023-02-07
|
@querin: Vielleicht sieht man eher eine Regelmäßigkeit, wenn man (k-1)*n² als Summe von k Quadraten (die alle < n² sind) darstellt.
Was grundsätzlich erst einmal interessant wäre:
Gibt es für jedes k überhaupt immer ein derartiges n?
Falls ja: ist die Zuordnung von k zu einem minimalen solchen n monoton wachsend?
|
Profil
|
DerEinfaeltige
Senior  Dabei seit: 11.02.2015 Mitteilungen: 3262
 | Beitrag No.22, eingetragen 2023-02-08
|
Unter der unbewiesenen Annahme monoton wachsender Minimallösungen N kann ich die letzten geposteten Vorschläge bestätigen:
K: 2 N: 5 dT: 9.42e-05
K: 3 N: 21 dT: 0.0003514
K: 4 N: 31 dT: 0.0006086
K: 5 N: 40 dT: 0.0011336
K: 6 N: 56 dT: 0.0039375
K: 7 N: 77 dT: 0.0207681
K: 8 N: 84 dT: 0.0130707
K: 9 N: 96 dT: 0.0227038
K: 10 N: 112 dT: 0.0417786
K: 11 N: 145 dT: 0.275336
K: 12 N: 165 dT: 0.355693
K: 13 N: 202 dT: 1.85027
K: 14 N: 226 dT: 2.66947
K: 15 N: 254 dT: 6.85489
K: 16 N: 299 dT: 18.7906
K: 17 N: 327 dT: 20.0658
K: 18 N: 355 dT: 26.9067
K: 19 N: 412 dT: 147.456
K: 20 N: 444 dT: 127.965
Leicht optimiertes Programm:
\sourceon C++
\numberson
#include
#include
#include
#include
/**
* Checks if N can be represented as a sum of K
* elements in S.
* S is required to be ordered ascending.
*/
bool has_k_partition(int N, int K, const std::vector &S)
{
std::vector> k_sets;
for (int k = 0; k <= K; ++k)
k_sets.push_back(std::set{});
k_sets[0].insert(0);
for (auto s : S)
for (int k = K - 1; k >= 0; --k)
for (auto n : k_sets[k])
// the smallest k summands cannot
// be larger than k/K * N
if (s + n <= ((k + 1) * N) / K + 1)
k_sets[k + 1].insert(s + n);
return k_sets[K].count(N) == 1;
}
/**
* Calculate square differences in ascending order
*/
std::vector square_differences(int N)
{
std::vector diff;
for (int n = N - 1; n > 0; --n)
diff.push_back(N * N - n * n);
return diff;
}
int main()
{
int N = 1;
const int k_max = 20;
for (int K = 2; K <= k_max; ++K)
{
// We assume without prove that the minimal N
// is monotonically increasing.
auto start = std::chrono::steady_clock::now();
while (true)
{
std::vector S = square_differences(N);
if (has_k_partition(N * N, K, S))
{
auto end = std::chrono::steady_clock::now();
std::chrono::duration elapsed_seconds = end-start;
std::cout << "K: " << K << " N: " << N << " dT: " << elapsed_seconds.count() << "\n";
break;
}
++N;
}
}
return 0;
}
\sourceoff
Für größere K sollte man wohl etwas geschickter vorgehen, da die Laufzeiten sonst schon bald recht lang werden.
Edit: Ein paar Werte habe ich noch berechnen lassen
K: 21 N: 476 dT: 290.843
K: 22 N: 512 dT: 394.052
K: 23 N: 577 dT: 1128.36
|
Profil
|
querin
Aktiv  Dabei seit: 12.01.2018 Mitteilungen: 746
 | Beitrag No.23, vom Themenstarter, eingetragen 2023-02-08
|
\quoteon(2023-02-08 08:48 - DerEinfaeltige in Beitrag No. 22)
Unter der unbewiesenen Annahme monoton wachsender Minimallösungen N kann ich die letzten geposteten Vorschläge bestätigen:
Edit: Ein paar Werte habe ich noch berechnen lassen
K: 21 N: 476 dT: 290.843
K: 22 N: 512 dT: 394.052
K: 23 N: 577 dT: 1128.36
\quoteoff
Sehr schön 👍
Da kann ich gerade noch mithalten
k=19
$823+1644+2463+3280+4095+4908+5719+6528+7335+8140+8943+9744+10543+11340+12928+13719+17644+19200+20748=412^2$
k=20
$887+1772+2655+3536+4415+5292+6167+7040+7911+8780+9647+10512+11375+12236+13095+14807+15660+18207+19895+23247=444^2$
k=21
$951+1900+2847+3792+4735+5676+6615+7552+8487+9420+10351+11280+12207+13132+14055+14976+15895+16812+19551+21367+24975=476^2$
k=22
$1023+2044+3063+4080+5095+6108+7119+8128+9135+10140+11143+12144+13143+14140+15135+16128+17119+19095+20080+21063+22044+24975=512^2$
k=23
$1153+2304+3453+4600+5745+6888+8029+9168+10305+11440+12573+13704+14833+15960+17085+18208+19329+20448+21565+23793+26013+30429+35904=577^2$
Eine einfache Abschätzung:
zu vorgebenem $k$ und zugehörigem $n$ gilt:
$$(k-1)\cdot n\le \sum_{j=1}^k{(n-j)^2}$$ daraus folgt
$$n\ge N(k)=\lfloor{\;\frac16\;\sqrt{3\;(k-1)\;k\;(k+1)\;(3\,k+2)}+\frac12\;k\;(k+1)\;}\rfloor$$
Beispiel: $N(23)=544$
|
Profil
|
hyperG
Senior  Dabei seit: 03.02.2017 Mitteilungen: 1994
 | Beitrag No.24, eingetragen 2023-02-08
|
Hallo zusammen,
der Code von DerEinfaeltige hat mich auch motiviert:
\sourceon nameDerSprache
min= 5 k=2 N=5 in 0.253 s
min= 5 k=3 N=21 in 0.492 s
min= 21 k=4 N=31 in 0.729 s
min= 33 k=5 N=40 in 0.982 s
min= 49 k=6 N=56 in 1.220 s
min= 64 k=7 N=77 in 1.459 s
min= 80 k=8 N=84 in 1.697 s
min= 96 k=9 N=96 in 1.948 s
min=112 k=10 N=112 in 2.187 s
min=127 k=11 N=145 in 2.427 s
min=145 k=12 N=165 in 2.666 s
min=165 k=13 N=202 in 2.906 s
min=202 k=14 N=226 in 3.145 s
min=226 k=15 N=254 in 3.419 s
min=254 k=16 N=299 in 4.511 s
min=299 k=17 N=327 in 5.739 s
min=327 k=18 N=355 in 7.153 s
min=355 k=19 N=412 in 12.040 s
min=412 k=20 N=444 in 20.365 s
min=444 k=21 N=476 in 30.401 s
min=476 k=22 N=512 in 44.020 s
min=512 k=23 N=577 in 94.627 s
min=577 k=24 N=617 in 126.250 s
\sourceoff
Dabei ist min "meine Näherungsformel". Nun hat querin
für große k eine viel bessere gefunden! Werde ich noch anpassen.
Meine Zeiten sind Summenzeit & nicht wie bei Beitrag 22 die Einzelzeit.
für k=23: 1128.36/(94.627-44.02)=22.296 mal schneller durch folgenden Trick, den ich später bei mehr Zeit beschreiben kann.
Grüße
|
Profil
|
StrgAltEntf
Senior  Dabei seit: 19.01.2013 Mitteilungen: 8197
Wohnort: Milchstraße
 | Beitrag No.25, eingetragen 2023-02-08
|
\quoteon(2023-02-08 13:38 - querin in Beitrag No. 23)
k=19
$823+1644+2463+3280+4095+4908+5719+6528+7335+8140+8943+9744+10543+11340+12928+13719+17644+19200+20748=412^2$
k=20
$887+1772+2655+3536+4415+5292+6167+7040+7911+8780+9647+10512+11375+12236+13095+14807+15660+18207+19895+23247=444^2$
k=21
$951+1900+2847+3792+4735+5676+6615+7552+8487+9420+10351+11280+12207+13132+14055+14976+15895+16812+19551+21367+24975=476^2$
k=22
$1023+2044+3063+4080+5095+6108+7119+8128+9135+10140+11143+12144+13143+14140+15135+16128+17119+19095+20080+21063+22044+24975=512^2$
k=23
$1153+2304+3453+4600+5745+6888+8029+9168+10305+11440+12573+13704+14833+15960+17085+18208+19329+20448+21565+23793+26013+30429+35904=577^2$
\quoteoff
Hier fällt auf, dass die Summen stets mit 2n-1 beginnen.
[Die Antwort wurde nach Beitrag No.23 begonnen.]
|
Profil
|
hyperG
Senior  Dabei seit: 03.02.2017 Mitteilungen: 1994
 | Beitrag No.26, eingetragen 2023-02-08
|
Meine Überlegungen: Multitasking.
Statt also for(...) oder while(...)
suche ich mit 60 Threads parallel (habe zwar nur 20 virt. Kerne, aber CPU macht das locker und es kommt noch ein Abbruch-Trick).
Falls Fundstelle nicht im ersten 60er Block auftaucht, folgen weitere.
Problem1: Ihr sucht ja nach der "kleinsten Lösung".
Lösung1 : Threads verzögert starten (etwa 7 ms).
Weiterer Trick: sofortiger Abbruch (mit globeler-Thread-Variable), falls auch nur einer was findet. So muss man gegenüber dem "normalen Multi-Threading" nicht warten, bis ALLE fertig sind. (natürlich wächst dadurch das Risiko, eine Fundstelle weiter hinten zuerst zu berechnen -> so musste ich den verzögerten Start von 4 auf 19 ms vergrößern).
Weiterer Vorteil: nur 1 Fundstelle, da alle anderen nicht weitersuchen
\sourceon c++
...
#pragma omp parallel num_threads(Kerne) shared(abbruch,N,sP,bErgebnisse)
{
int tid = omp_get_thread_num();
sP[tid].N = N + tid + Kerne;
sP[tid].S = square_differences(sP[tid].N);
sP[tid].K = K;
Sleep(tid * sleepFaktor + 1);
bErgebnisse[tid] = has_k_partition(sP[tid], &abbruch);
}
if (abbruch)
{
for (int i = 0; i < Kerne; i++)
if (bErgebnisse[i]) printf("k=%ld N=%ld in %7.3f s\n", sP[i].K, Merk=sP[i].N, (double)(cputime() - begin) / 1000.0);
}
else ... weitere Such-Phasen...
\sourceoff
\sourceon nun auch mit Eingabe des Suchbereiches (statt Einzelzeiten hier Summenzeiten!)
von k=22
bis k=27
min=498 k=22 N=512 in 14.555 s
min=544 k=23 N=577 in 40.536 s
min=591 k=24 N=617 in 74.518 s
min=641 k=25 N=657 in 122.697 s
min=693 k=26 N=746 in 195.885 s
min=746 k=27 N=778 in 296.461 s
fertig in 296.461 s
\sourceoff
\sourceon und noch 2
von k=27
bis k=28
min=746 k=27 N=778 in 92.350 s
min=802 k=28 N=851 in 229.382 s
fertig in 229.382 s
\sourceoff
|
Profil
|
Kay_S
Senior  Dabei seit: 06.03.2007 Mitteilungen: 1427
Wohnort: Koblenz (früher: Berlin)
 | Beitrag No.27, eingetragen 2023-02-08
|
@hyperG: Ich habe für k=26,27,28 Lösungen mit kleineren Werten:
k = 26:
\(734^2 = 1467 + 2932 + 4395 + 5856 + 7315 + 8772 + 10227 + 11680 + 13131 + 14580 + 16027 + 17472 + 18915 + 20356 + 21795 + 23232 + 24667 + 26100 + 28960 + 30387 + 31812 + 33235 + 34656 + 37492 + 43140 + 50155\)
k = 27:
\(774^2 = 1547 + 3092 + 4635 + 6176 + 7715 + 9252 + 10787 + 12320 + 13851 + 15380 + 16907 + 18432 + 19955 + 21476 + 22995 + 24512 + 26027 + 27540 + 29051 + 30560 + 32067 + 33572 + 35075 + 36576 + 42560 + 45540 + 51476\)
k = 28:
\(847^2 = 1693 + 3384 + 5073 + 6760 + 8445 + 10128 + 11809 + 13488 + 15165 + 16840 + 18513 + 20184 + 21853 + 23520 + 25185 + 26848 + 28509 + 30168 + 31825 + 33480 + 35133 + 36784 + 38433 + 40080 + 43368 + 46648 + 48285 + 75808\)
|
Profil
|
hyperG
Senior  Dabei seit: 03.02.2017 Mitteilungen: 1994
 | Beitrag No.28, eingetragen 2023-02-08
|
Danke Kay_S, die Thread-Verzögerung war noch zu klein.
Bei nochmaliger Vergrößerung auf 25 ms stimmt es dann wieder:
\sourceon nameDerSprache
von k=26
bis k=28
min=693 k=26 N=734 in 69.073 s
min=746 k=27 N=774 in 164.700 s
min=802 k=28 N=847 in 296.988 s
fertig in 296.988 s
\sourceoff
Werde das kritisch testen, da man bei Multitasking nie weiß, welcher Kern wie stark belastet wird. Bei den neuen Intel-CPUs wird's noch komplizierter, da es 2 Arten von Kernen gibt...
Bei k=28 kamen bei zu kleiner Verzögerung 3 mögliche Werte: N=847, N=851 & manchmal 855.
Deshalb hier vorsichtig die nächsten 2 als mögliche Lösung:
\sourceon nameDerSprache
min=860 k=29 N=899 in 185.185 s Einzelzeit
min=919 k=30 N=951 in 246.430 s Einzelzeit
\sourceoff
|
Profil
|
querin
Aktiv  Dabei seit: 12.01.2018 Mitteilungen: 746
 | Beitrag No.29, vom Themenstarter, eingetragen 2023-02-08
|
Starke Ergebnisse 👍
Bestenliste aktualisiert,
der Vollständigkeit halber:
k=24
$1233+2464+3693+4920+6145+7368+8589+9808+11025+12240+13453+14664+15873+ 17080+18285+19488+20689+21888+23085+25473+26664+27853+32589+36120=617^2$
k=25
$1313+2624+3933+5240+6545+7848+9149+10448+11745+13040+14333+15624+16913+ 18200+19485+20768+22049+23328+24605+25880+28424+29693+32225+33488+34749=657^2$
k=29
$1797+3592+5385+7176+8965+10752+12537+14320+16101+17880+19657+21432+23205+ 24976+26745+28512+30277+32040+33801+35560+37317+39072+40825+42576+44325+46072+53040+56512+73752=899^2$
k=30
$1901+3800+5697+7592+9485+11376+13265+15152+17037+18920+20801+22680+24557+ 26432+28305+30176+32045+33912+35777+37640+39501+41360+43217+46925+48776+50625+52472+54317+58001+72657=951^2$
\quoteon(2023-02-08 15:18 - StrgAltEntf in Beitrag No. 25)
Hier fällt auf, dass die Summen stets mit 2n-1 beginnen.
\quoteoff
ich vermute, dass es immer eine Lösung gibt bei der die kleinste Farbanzahl gleich $2\,n-1$ ist. Die einzige Ausnahme bisher ist die Minimallösung für k=4, aber auch da gibt eine größere Lösung mit der gewünschten Eigenschaft: $65+128+248+648=33^2$.
Aus dieser Eigenschaft folgt, dass die Seitenlänge das größten inneren Quadrats gleich $n-1$ ist.
|
Profil
|
hyperG
Senior  Dabei seit: 03.02.2017 Mitteilungen: 1994
 | Beitrag No.30, eingetragen 2023-02-08
|
Noch 2
\sourceon nameDerSprache
min=987 k=31 N= 999 in 96.190 s Einzelzeit
mi=1051 k=32 N=1088 in 256.167 s Einzelzeit
\sourceoff
Habe die Näherungsformel für den Start der Suche für k>2 noch um 6 vergrößert. Bisher ist keine Drift oder Regelmäßigkeit bei der Differenz zur Fundstelle ersichtlich:
\sourceon Differenz zur Fundstelle
0, 5, 7, 6, 11, 18, 9, 4, 0, 11, 8, 19, 15, 14, 27, 21, 14, 33, 25, 16, 8, 27, 20, 10, 35, 22, 39, 33, 26, 12, 37,...
\sourceoff
Fast wie ein Zufallsgenerator...
|
Profil
|
querin
Aktiv  Dabei seit: 12.01.2018 Mitteilungen: 746
 | Beitrag No.31, vom Themenstarter, eingetragen 2023-02-09
|
Profil
|
hyperG
Senior  Dabei seit: 03.02.2017 Mitteilungen: 1994
 | Beitrag No.32, eingetragen 2023-02-10
|
Statt Threads dynamisch verzögert zu starten (war nicht sicher genug & addierte sich immer weiter auf), nun sicheres Warten von 600 ms am Ende.
Falls doch mal 2 fast zeitgleich fertig werden, erfogt die Ausgabe von beiden. Alle anderen, die ganz weit hinten liegen, fliegen spätestens 600 ms nach dem 1. Fund raus.
Zusätzlich auch noch die letzten beiden Summanden:
\sourceon Summenzeit
von k=32
bis k=33
k=32: (1085764) + 97980 = 1183744 = (N=1088)^2 in 226.158 s
k=33: (1214404) + 94332 = 1308736 = (N=1144)^2 in 516.720 s damit der kleinste
k=33: (1227664) + 90240 = 1317904 = (N=1148)^2 in 516.720 s
k=33: (1236544) + 90560 = 1327104 = (N=1152)^2 in 516.720 s
fertig in 516.720 s
\sourceoff
|
Profil
|
querin
Aktiv  Dabei seit: 12.01.2018 Mitteilungen: 746
 | Beitrag No.33, vom Themenstarter, eingetragen 2023-02-10
|
k=33
$2287+4572+6855+9136+11415+13692+15967+18240+20511+22780+25047+27312+29575+31836+34095+36352+38607+40860+43111+45360+47607+49852+52095+54336+56575+58812+61047+63280+65511+72192+74415+81072+94332=1144^2$
Wer kann folgende Werte bestätigen oder verbessern?
k=34: n=1200
k=35: n=1293
k=50: n=2537
|
Profil
|
hyperG
Senior  Dabei seit: 03.02.2017 Mitteilungen: 1994
 | Beitrag No.34, eingetragen 2023-02-10
|
Meine Ergebnisse:
\sourceon nameDerSprache
min=1184 k=34: 2399+(1347845) + 89756 = 1440000 = (N=1200)^2
min=1254 k=35: 2585+(1537496) + 131768 = 1671849 = (N=1293)^2
min=1325 k=36: 2713+(1726512) + 112224 = 1841449 = (N=1357)^2
min=1399 k=37: 2907+(1943118) + 168091 = 2114116 = (N=1454)^2 zu groß?
min=1469 k=38: 3043+(2160798) + 152643 = 2316484 = (N=1522)^2 1. Fund (neu)
min=1475 k=38: 3059+(2202166) + 135675 = 2340900 = (N=1530)^2 2. Fund
...
min=2533 k=50: 5073+(6170152) + 261144 = 6436369 = (N=2537)^2 in 443.294 s
\sourceoff
34, 35 & 50 stimmen überein.
37 & 38 könnten etwas zu groß sein.
Nachtrag: 37 & 38 nochmals weiter vorn und robuster berechnet -> bei 38 noch einen weiter vorn gefunden.
|
Profil
|
querin
Aktiv  Dabei seit: 12.01.2018 Mitteilungen: 746
 | Beitrag No.35, vom Themenstarter, eingetragen 2023-02-11
|
Für k=36 gibt es eine kleinere Lösung: n=1353
$2705+5408+8109+10808+13505+16200+18893+21584+24273+26960+29645+32328+35009+37688+40365+43040+45713+48384+51053+53720+56385+59048+61709+64368+67025+69680+72333+74984+77633+80280+82925+85568+88209+90848+106640+127584=1353^2$
Für k=37 und k=38 finde ich keine kleineren Lösungen.
|
Profil
|
hyperG
Senior  Dabei seit: 03.02.2017 Mitteilungen: 1994
 | Beitrag No.36, eingetragen 2023-02-11
|
@querin: der erste Summand für k=36 lautet 2705. Bestimmt ist die vordere 2 verloren gegangen.
Ja, das Abbrechen nach Zeit findet bei großen k immer häufiger nicht die kleinste Lösung. Selbst bei 3 Fundstellen könnte es immer noch weiter vorn viel später eine weitere gültige Lösung für N geben.
Deshalb lasse ich nun "die vorderen Threads" bis zum Ende laufen, um garantiert den KLEINSTEN Wert für N zu finden.
Bei der CPU-Last sieht das dann so aus:
https://matheplanet.com/matheplanet/nuke/html/uploads/c/47407_CPU_Last19Kerne_1.png
Das verlängert natürlich die Suchzeit enorm, da alles oft auf den "langsamsten der vorderen" warten muss :-(
\sourceon Summenzeit mit garantiert kleinste Lösung für N
min=1319 k=36: 2705+(1700320) + 127584 = 1830609 = (N=1353)^2 in 525.024 s
min=1393 k=37: 2907+(1943118) + 168091 = 2114116 = (N=1454)^2 in 1934.118 s
min=1469 k=38: 3043+(2160798) + 152643 = 2316484 = (N=1522)^2 in 3310.000 s
min=1546 k=39: 3163+(2334678) + 164883 = 2502724 = (N=1582)^2 in 4430.229 s
\sourceoff
Da die Abstände der Vielfachlösungen oft vielfache von 4 sind (Abstand 4,8,...)
hatte ich auch schon daran gedacht, die NICHT-Vielfachen vor der bisherigen kleinsten Fundstelle vorzeitig zu beenden, aber auch das deckte nicht alle Fälle ab.
Dann fällt auch auf, dass die 1. Hälfte der Summanden immer im Wechsel mal ungerade und mal gerade sind...
Mit k=50 musste ich meine Einengung des Startwertes (+6) wieder zurück nehmen, denn 2537 ist 2 kleiner als 2539. (was alles wieder langsamer macht)
Die ineinander verschachtelten For-Schleifen konnte ich noch nicht parallelisieren, da der letzte Durchlauf ja immer auf ALLE Vorgängerwerte angewiesen ist. Falls da jemand Ideen für einen anderen Algorithmus hat, bin ich für alles offen.
|
Profil
|
hyperG
Senior  Dabei seit: 03.02.2017 Mitteilungen: 1994
 | Beitrag No.37, eingetragen 2023-02-11
|
\sourceon nameDerSprache
min=1626 k=40: 3299+(2579150) + 140051 = 2722500 = (N=1650)^2
min=1708 k=41: 3517+(2876292) + 214272 = 3094081 = (N=1759)^2
\sourceoff
und die Differenzenfolge zur Näherungsformel:
\sourceon nameDerSprache
11, 13, 12, 17, 24, 15, 10, 6, 17, 14, 25, 21, 20, 33, 27, 20, 39, 31, 22, 14, 33, 26, 16, 41, 28, 45, 39, 32, 18, 43, 34, 22, 45, 34, 61, 53, 36, 24, 51,...
\sourceoff
faszinierend unvorhersehbar!
Schönes Wochenende.
|
Profil
|
querin
Aktiv  Dabei seit: 12.01.2018 Mitteilungen: 746
 | Beitrag No.38, vom Themenstarter, eingetragen 2023-02-11
|
\quoteon(2023-02-11 18:44 - hyperG in Beitrag No. 36)
@querin: der erste Summand für k=36 lautet 2705. Bestimmt ist die vordere 2 verloren gegangen.
\quoteoff
Danke für den Hinweis; ich habe die 2 ergänzt.
Eine schnelle Methode, um zu vorgegebenem k ein passendes n zu finden:
Bei der Abschätzung in #23 wurde n gegen die Summe aller aufeinander folgenden Quadrate $n^2,\;(n-1)^2,\;\dots,\;(n-k)^2$ abgeschätzt.
Bei meinen Formeln in #31 habe ich das kleinste Quadrat $(n-k)^2$ durch ein $a^2$ mit $a
|
Profil
|
hyperG
Senior  Dabei seit: 03.02.2017 Mitteilungen: 1994
 | Beitrag No.39, eingetragen 2023-02-11
|
Wow, für gerades k scheint das theoretische Maximum oft zu stimmen:
\sourceon nameDerSprache
min=1791 k=42: 3661+(3146964) + 201936 = 3352561 = (N=1831)^2
\sourceoff
\sourceon nameDerSprache
return "k=",k," N=",nmin,"...",(nmax,nmin+62)," i=",i," a=",a # max für ungerade
('k=', 20, ' N=', 413, '...', (735, 475), ' i=', 9, ' a=', 541)
('k=', 22, ' N=', 498, '...', (512, 560), ' i=', 18, ' a=', 487) soll=512
('k=', 37, ' N=', 1393, '...', (1660, 1455), ' i=', 32, ' a=', 1487)
('k=', 40, ' N=', 1626, '...', (1650, 1688), ' i=', 34, ' a=', 1604) soll=1650
('k=', 42, ' N=', 1791, '...', (1831, 1853), ' i=', 37, ' a=', 1774) soll=1831
('k=', 50, ' N=', 2533, '...', (2537, 2595), ' i=', 50, ' a=', 2485) soll=2537
\sourceoff
Ein besseres nmax ist also nmax =min(nmax,nmin+62)
Wenn nmax kleiner als nmin+62, dann scheint es zu stimmen (nur bei geraden k?)...
Die Kurve der Differenzen zum min:
https://matheplanet.com/matheplanet/nuke/html/uploads/c/47407_DifferenzenDiagramm.PNG
Da denkt man nicht, dass bei k=50 eine Differenz 4 so weit unten liegt.
|
Profil
|
Dies ist eine Knobelaufgabe!
Der Themensteller hat bestimmt, dass Du Lösungen oder Beiträge zur Lösung direkt im Forum posten darfst. Bei dieser Aufgabe kann ein öffentlicher Austausch über Lösungen, Lösungswege und Ansätze erfolgen. Hier musst Du keine private Nachricht schreiben! |
-->> Fortsetzung auf der nächsten Seite -->> | Seite 1 | Gehe zur Seite: 1 | 2 | 3 |
|
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen. Lesen Sie die
Nutzungsbedingungen,
die Distanzierung,
die Datenschutzerklärung und das Impressum.
[Seitenanfang]
|