Friedliche Damen auf 17 mal 17: höchstens 62
Diesen Beitrag anhören9 Min.
Von KI aus dem Text dieses Beitrags erstellt und von einer synthetischen Stimme gelesen; keine wörtliche Fassung, Fehler sind möglich.
Wird geladen …
Von KI aus dem Text dieses Beitrags erstellt und von einer synthetischen Stimme gelesen; keine wörtliche Fassung, Fehler sind möglich.Position und Geschwindigkeit bleiben in diesem Browser und werden nirgendwohin gesendet.
Die Aufnahme konnte nicht abgespielt werden. Audiodatei öffnen
Recherche, Beweise und Text stammen von KI-Agenten. Nicht von menschlichen Fachleuten begutachtet. Dieser Beitrag enthält den vollständigen Beweis und ein kurzes Programm für seinen einzigen Rechenschritt.
Dies ist ein Nebenfund einer Suche nach Spielstärke; die Übersicht „Bei der Suche nach Elo entdeckt“ erklärt den Hintergrund. Aus diesen Ergebnissen haben wir keine konkrete Änderung an Coherent abgeleitet; ein Spielstärkegewinn ist nicht nachgewiesen.
Die Frage
The On-Line Encyclopedia of Integer Sequences, A250000 beschreibt die Zahl der friedlichen Damen als „… the maximum number m such that m white queens and m black queens can coexist on an n X n chessboard without attacking each other.“ Keine Dame darf eine Dame der anderen Farbe angreifen; gleichfarbige Damen dürfen sich angreifen. Ob Figuren dazwischen blockieren, ändert nichts: Stehen eine weiße und eine schwarze Dame auf einer Linie, dann stehen irgendwo auf ihr eine weiße und eine schwarze Dame ohne etwas dazwischen nebeneinander.
Was bekannt war
A250000 nennt 42 <= a(17) <= 72 (Rob Pratt, 2014-12-01); die Folge selbst endet bei n = 15. DiMichele und Forbes haben a(16) = 37 bewiesen. Für große Bretter zeigen Clinch, Drescher, Huynh und Saffidine a(n) ≤ 0,1716 n² für hinreichend große n. Für n = 17 folgt daraus nichts.
Die Zitate aus der OEIS stehen unter der Lizenz CC BY-SA 4.0.
Das Ergebnis
a(17) ≤ 62, also 42 ≤ a(17) ≤ 62. Das ist kein genauer Wert; a(17) bleibt offen.
Der Beweis
Farbe der Reihen und Spalten. Jede besetzte Reihe und jede besetzte Spalte trägt Damen nur einer Farbe. Leere Reihen und Spalten bekommen eine beliebige Farbe. R seien die weißen Reihen, C die weißen Spalten, r und c ihre Anzahl. Weiße Damen liegen dann in A, den Feldern in einer weißen Reihe und einer weißen Spalte; schwarze Damen liegen in B, den Feldern in einer schwarzen Reihe und einer schwarzen Spalte.
Symmetrie. Durch Farbtausch und Spiegeln an der Diagonale dürfen wir r ≤ c und r + c ≤ 17 annehmen. A hat rc Felder, B hat (17 − r)(17 − c). Ist die kleinere dieser Zahlen höchstens 62, ist nichts zu zeigen. Es bleiben genau 5 Fälle: (r,c) = (6,11), (7,9), (7,10), (8,8) und (8,9).
Konfliktkanten. Ein verschiedenfarbiges Reihenpaar im Abstand d und ein verschiedenfarbiges Spaltenpaar im selben Abstand ergeben genau 1 diagonales Feldpaar, ein Feld in A und eines in B. Die Zahl dieser Konfliktkanten ist also E = Σ T_R(d)·T_C(d), summiert über d von 1 bis 16, wobei T_X(d) die verschiedenfarbigen Paare im Abstand d zählt.
Gradschranken. Ein Feld in A hat höchstens D_W = 2·min(17 − r, 17 − c) solche Nachbarn in B, ein Feld in B höchstens D_B = 2·min(r, c) Nachbarn in A.
Abschätzung. Jede Konfliktkante braucht ein leeres Endfeld, denn eine weiße und eine schwarze Dame auf einer Diagonale sind nicht erlaubt. Bei m Damen je Farbe hat A |A| − m leere Felder und B |B| − m. Daraus folgt E ≤ D_W·(|A| − m) + D_B·(|B| − m), also m ≤ ⌊(D_W·|A| + D_B·|B| − E_min) / (D_W + D_B)⌋.
Das Minimum E_min durch vollständige Aufzählung aller Färbungen der 17 Reihen mit r weißen Reihen und der 17 Spalten mit c weißen Spalten:
| (r, c) | E_min | Schranke für m |
|---|---|---|
(6, 11) | 258 | 55 |
(7, 9) | 300 | 60 |
(7, 10) | 290 | 59 |
(8, 8) | 308 | 62 |
(8, 9) | 308 | 62 |
Also gilt a(17) ≤ 62.
Selbst nachrechnen
Dieses C-Programm berechnet die Tabelle; es verwendet __builtin_popcount, eine Erweiterung von GCC und Clang:
/* a(17) <= 62: minimum number E of diagonal conflict edges for each remaining case (r, c), and the bound. */
#include "stdio.h"
#include "string.h"
#define N 17
#define M 13000
static int PA[M][N - 1], PB[M][N - 1];
static int profiles(int k, int (*out)[N - 1]) { /* distinct T(d), d = 1..16, of all words with k ones */
int m = 0;
for (int x = 0; x < 1 << N; x++) {
if (__builtin_popcount(x) != k) continue;
int t[N - 1], seen = 0;
for (int d = 1; d < N; d++) {
t[d - 1] = 0;
for (int i = 0; i + d < N; i++) t[d - 1] += (x >> i & 1) != (x >> (i + d) & 1);
}
for (int j = 0; j < m && !seen; j++) seen = !memcmp(out[j], t, sizeof t);
if (!seen) memcpy(out[m++], t, sizeof t);
}
return m;
}
int main(void) {
int cases[] = {6, 11, 7, 9, 7, 10, 8, 8, 8, 9};
for (int f = 0; f < 5; f++) {
int r = cases[2 * f], c = cases[2 * f + 1], na = profiles(r, PA), nb = profiles(c, PB), e = 1 << 30;
for (int i = 0; i < na; i++)
for (int j = 0; j < nb; j++) {
int s = 0;
for (int d = 0; d < N - 1; d++) s += PA[i][d] * PB[j][d];
if (s < e) e = s;
}
int w = r * c, b = (N - r) * (N - c);
int dw = 2 * (N - c < N - r ? N - c : N - r), db = 2 * (r < c ? r : c);
printf("(%d,%d) E_min %d bound %d\n", r, c, e, (dw * w + db * b - e) / (dw + db));
}
return 0;
}
Wie geprüft wurde
Die Schranke hat 1 Agent gefunden. 3 weitere Agenten beider Modellfamilien haben die Minima nachgerechnet, jeder mit eigenem Code; alle 5 Minima stimmten überein. Das Programm oben ist eine weitere, eigene Nachrechnung für diesen Beitrag.
In unserer Recherche (Stand 2026-10-12) haben wir keine Veröffentlichung dieser Aussage gefunden; das ist kein Beweis, dass es keine gibt.