Nested Monte Carlo Search (NMCS)[1] ist ein rekursiver Suchalgorithmus, der primär zur Lösung von Optimierungsproblemen und Einpersonenspielen (Puzzles) eingesetzt wird.

Abb. 1 Überblick über die verschachtelte Suche bei NMCS
Die Grundidee von NMCS ist die Rekursion. Anstatt in einer Simulation nur völlig zufällige Züge zu machen, oder eine Heuristik zu nutzen die auf Domänenwissen basiert, nutzt NMCS eine Suche auf niedrigerer Ebene, um die Suche auf der aktuellen Ebene zu leiten.
Ein NMCS-Algorithmus wird durch ein Level definiert:
Durch diese Verschachtelung „lernt“ der Algorithmus bereits während eines einzelnen Durchgangs, welche Pfade vielversprechend sind, da jede Ebene die Ergebnisse der darunterliegenden Ebene zur Entscheidungsfindung nutzt.
Im Gegensatz zu Monte Carlo Tree Search baut NMCS keinen expliziten, persistenten Suchbaum im Speicher auf, der über viele Iterationen wächst. Stattdessen konzentriert sich NMCS darauf, die beste Sequenz von Zügen zu finden.
Der NMCS-Algorithmus weist spezifische Merkmale auf, die ihn für bestimmte Problemstellungen ideal machen:
NMCS wird primär dort eingesetzt, wo eine optimale Pfadsuche in großen Zustandsräumen erforderlich ist. Dazu gehören kombinatorische Optimierungen wie beim Scheduling und Einpersonenspiele (Puzzles) wie Sudoku, Morpion Solitaire und Kakuro.
Die wichtigste Weiterentwicklung von NMCS ist Nested Rollout Policy Adaption (NRPA)[2]. Während NMCS die Züge auf Level 0 rein zufällig wählt, lernt NRPA während der Suche eine Policy (eine Strategie), um die Rollouts zu steuern.
NRPA kombiniert die verschachtelte Suche von NMCS mit dem Lernen einer Aktionsbewertung. Auf jedem Level der Rekursion passt der Algorithmus eine Gewichtstabelle für Züge an. Wenn eine Sequenz von Zügen zu einem neuen Rekordergebnis führt, werden die Gewichte dieser Züge erhöht (Reinforcement Learning Prinzip).
Dadurch werden „gute“ Züge in zukünftigen Simulationen auf derselben Ebene mit höherer Wahrscheinlichkeit gewählt.