Mit welchen Techniken kann man Schachbrett spielen?

8

Mit welchen Techniken kann man alle Teile auf einem Brett halten? Es ist wie ein N-Queen-Problem

Ist es eine Kombination von n-Königin

user1387
quelle
2
Ich würde definitiv vorschlagen, dass Sie diese Frage in der Mathematik oder im Programmierforum stellen, da Sie wahrscheinlich die genauesten Antworten von ihnen erhalten würden.
Chubbycantorset
-1 Nach der Bearbeitung am 25. August ist diese Frage überhaupt nicht verständlich. "Mit welchen Techniken kann man Schachbrett spielen?" Was um alles in der Welt bedeutet das?
Halvard

Antworten:

5

So bearbeiten Sie die Frage: Wenn Sie die Teile in zufälliger Reihenfolge erhalten und keine Informationen über zukünftige Teile haben, können Sie die Teile so anordnen, dass sie den geringsten Umfang haben. Wenn ich zum Beispiel in der ersten Runde eine Königin erhalten würde, würde ich sie in eine der vier Ecken legen. Einige weitere Regeln wären, Ritter nahe beieinander zu halten und Bauern übereinander zu stapeln. Alle diese Strategien sind ein bisschen offensichtlich, aber es ist schwierig, eine konsistente Strategie zu verwenden, da es so viele mögliche Kombinationen von Teilen gibt.


Dies scheint mir eher eine Programmierfrage als eine Schachfrage zu sein, aber es ist trotzdem interessant! Nachdem ich ein wenig nachgedacht habe, würde ich hypthesisieren, dass der beste Weg, um dieses Problem anzugehen, darin besteht, die Ritter als Basis zu verwenden. Es ist bekannt, dass die maximale Anzahl von Rittern, die auf ein Brett passen, 32 beträgt (einfach auf alle Felder derselben Farbe legen). Daher ist es logisch, dies als Ausgangsposition zu haben, da dies die maximale Belegung ist, die Sie mit einem haben können Einzelstück. Diese Strategie erstreckt sich auf eine N x N-Karte.

Danach würde ich Bauern verwenden, da ihre Angriffsstärke auf Vorwärtsdiagonalen von einem Quadrat beschränkt ist. Sie können jede zweite Spalte belegen (keine Zeilen, da dies nach herkömmlichen Regeln auf 2, 4 und 6 beschränkt wäre), und dies fügt N / 4 mehr belegte Quadrate für eine NxN-Karte hinzu. Dies verallgemeinert sich auf eine Gesamtzahl der besetzten Quadrate auf N / 2 + N / 4 oder einfach auf 3N / 4 insgesamt besetzte Quadrate.

Dies ist das Ergebnis von ca. 5 Minuten Überlegung, sodass mein Algorithmus möglicherweise fehlerhaft ist. Ich hoffe das hilft bei der Beantwortung Ihrer Frage!

Andrew Ng
quelle
4

Ich würde denken, dass bei einer zufälligen Auswahl von Stücken die grundlegende Strategie darin besteht, sie so auf das Brett zu legen, dass sie so wenig Felder wie möglich angreifen und keine Rangliste oder Datei blockieren, die nicht bereits blockiert wurde, wann immer dies möglich ist. dh Ritter in den Ecken, sich über kurze Strecken bewegende Teile wie der König und der Ritter auf demselben Rang oder derselben Akte und Bischöfe auf demselben Rang oder derselben Akte wie andere Teile. Im Allgemeinen ähnelt die Auswahl eines Quadrats für das neue Stück einer Königsjagd. Wenn Sie versuchen, den König festzunageln, möchten Sie die Anzahl der Felder, die er sicher besetzen kann, so weit wie möglich reduzieren (ohne sie um eins zu reduzieren). Hier möchten Sie, dass jedes platzierte Stück die Anzahl der Felder, die noch von keinem Stück angegriffen werden, so gering wie möglich hält.

Edward Goodson
quelle
2

Da die Problemdefinition kürzlich aktualisiert wurde, gehe ich davon aus, dass Sie mit einer leeren NxN-Karte beginnen und ein zufälliges Stück erhalten und gebeten werden, es zu platzieren. Wenn Sie fertig sind, erhalten Sie ein weiteres zufälliges Stück, bis kein Stück mehr platziert werden kann.

Für eine menschliche Strategie wäre es eine gute Faustregel, eine (gültige) Position zu wählen, die die Anzahl der noch offenen Quadrate minimiert, die durch das neue Stück verweigert werden. Auf hoher Ebene gibt es zwei Hauptkomponenten:

  • Das Platzieren einiger Arten von Stücken in der Nähe der Kante des Bretts kann von Vorteil sein (ich sage einige , da Sie beim Platzieren eines Turms 2N-1-Quadrate verweigern, unabhängig davon, wo Sie ihn platzieren, aber die Logik gilt gut für Ritter).
  • Jedes angegriffene Feld (doppelt oder dreifach usw.) repräsentiert ein potenzielles freies Feld an einer anderen Stelle auf dem Brett. Denken Sie daran, um wirklich offene Quadrate zu maximieren.

Für eine Programmierstrategie müssen wir uns das Problem noch einmal ansehen. Wie oben angegeben, handelt es sich nicht wirklich um ein Programmierproblem, da unser Erfolg davon abhängt, die bestmögliche Strategie zu finden (was wir offensichtlich nicht getan haben). Traditionelle Programmierung wird in diesem Sinne nicht wirklich helfen, da die Regeln des Problems dem Computer die perfekte Kenntnis darüber verweigern, welche Teile kommen. Dies macht es unmöglich, die traditionellen Ansätze des Brute-Forcing oder Backtracking (die normalerweise zur Lösung von 8 / N-Queens- Problemen verwendet werden) anzuwenden.

Man könnte jedoch verschiedene KI-Techniken einsetzen, um eine optimale Strategie zu finden. Im Wesentlichen würde dies darauf hinauslaufen, einen Weg zu finden, eine Strategie in einer Art Datenstruktur darzustellen. Dies ist eigentlich der schwierige Teil und könnte extrem schwierig werden. Sie müssten wahrscheinlich eine domänenspezifische Sprache erstellen, die Regeln wie "Wählen Sie die Spalte ganz rechts aus, in der sich noch kein Ritter befindet" oder was auch immer zulässt. Dann würden Sie im Wesentlichen eine Art Optimierungsalgorithmus auswählen (Zufallssuche, genetische Algorithmen, Partikelschwärme usw.), um ein besonders gutes Regelwerk zu finden, das den Rest, den Sie bisher gefunden haben, zu übertreffen scheint. Es besteht eine gute Chance, dass es so schrecklich verwickelt wird, dass wir nie verstehen könnten, wie und warum es so gut funktioniert, aber es könnte die schlagen, die wir haben.

Daniel B.
quelle
1

Die zwei Hauptpunkte sind:

  1. Haben Sie immer die geringere Anzahl an angegriffenen Feldern , die umformuliert werden können, um " immer zu versuchen, dieselben Felder mehrmals anzugreifen ". Die Logik dahinter ist, dass sich die Gesamtzahl der angegriffenen Felder zwangsläufig verringert, wenn Sie es schaffen, die Angriffe zu stapeln angegriffene Quadrate (was wir wollen), wodurch mehr Platz für andere Teile geschaffen wird.
  2. Bewegen Sie Gruppen von Teilen in die Nähe der Ecken und Kanten des Bretts . Dadurch wird wiederum die Anzahl der angegriffenen Felder verringert. Manchmal müssen wir bestimmte Gruppen von Teilen umdrehen und spiegeln , um zu wissen, in welcher Ecke wir die maximale Anzahl von Quadraten sparen (Bildbeispiel unten).

Als Beispiel werde ich eine kurze Studie veröffentlichen, die ich über Ritter gemacht habe. Es ist ein bisschen albern, da wir bereits wissen, dass wir 32 Ritter in ein 8x8-Brett legen können, indem wir sie alle auf die gleiche Farbe bringen, aber ich habe es trotzdem getan sehen, wie wenige Ritter angeordnet werden sollten:

(Beachten Sie, wie Punkt 2 bestimmt, welche Anordnung besser ist, wenn wir ein Unentschieden haben.)

Geben Sie hier die Bildbeschreibung ein

Außerdem habe ich zwei nützliche Links gefunden:

ajax333221
quelle
-2

Halten Sie die Teile an den Seiten außerhalb der Mitte.

Tyler Langan
quelle