>Ich finde das aber überhaupt nicht(!) logisch.
Ich kalauere mal: Einfach nicht ignorieren
.
Substanzlose Äußerungen werden nicht besser, indem Du ihnen mit Deinen Äußerungen Gewicht verleihst.
All jene, die als Erklärung anbieten, "das Programm sucht mehr in die Breite", bitte ich, mir mal im Einzelnen zu erklären, wie das gehen soll, wenn es nicht für diesen speziellen Fall programmiert wurde (für Komodo habe ich Äußerungen von L. Kaufman in diesem Sinne verstanden).
Der Suchalgorithmus des Programms "beschreibt" den Spielbaum. Die besuchten Knoten werden gerade aufgrund konkreter Kriterien des Algorithmus besucht. Deswegen verhält sich das Programm mit einem Thread deterministisch. Wenn der Suchalgorithmus nicht zwischen "Suchen" mit verschiedener Anzahl Threads unterscheidet, dürfte es logischerweise keine "breitere" Suche in dem Sinne geben, dass
andere Äste des Spielbaums besucht werden.
Mir würde Dein Ergebnis einerseits einleuchten, weil die Threads (bspw. durch die Hashtabellen) über Informationen verfügen, die sie zur Steuerung der Suche in ihrem (Teil-)Suchbaum nutzen können. Dadurch erhalten sie Informationen aus den parallel ablaufenden Suchen, die dem single-threaded laufenden Programm eventuell durch Suchbaumabschneidungen zu seinem Nachteil nicht zur Verfügung stehen.
Andererseits sollte die tiefenbeschränkte serielle Suche eines 1-Thread-Programms alle algorithmisch vorgegebenen Knoten des Spielbaums besuchen und am Ende (letzter Ast der letzten zu durchsuchenden Tiefe) den besten Zug zwingend gefunden haben. Etwas anderes können weitere Threads, die eigentlich nur Teile des gleichen Suchbaums absuchen sollten, auch nicht finden.
Es sei denn - und da sehe ich Erklärung für Deine Beobachtung - die spekulativen Teile des Stockfish-Suchalgorithmus (forward-pruning etc.) schneiden mitunter auch bessere Züge ab. - Das ist ein Fakt. - Durch die Suche mit mehreren Threads werden aber mehr Knoten (einige Knoten mehrfach, manche aber - und damit der sie "tragende" Ast - erstmals) untersucht, als mit nur einem Thread. Dadurch erhält das Programm auch Informationen über sonst abgeschnittene Äste des Spielbaums. Durch diese, von anderen Threads zusätzlich ermittelten Informationen kann das Programm letztlich besser spielen.
Man kann natürlich sagen, indem das Programm mehr absucht, suche es "breiter" (- und eine gewisse Person, deren Namen ich nicht zu nennen brauche, könnte sagen, dass sie es genau so gemeint habe).
Diesen Terminus würde ich dafür aber nicht verwenden, weil es sich eigentlich nur um einen (unwillkürlichen und nicht direkt steuerbaren) Seiteneffekt des Suchalgorithmus mit mehreren Threads handelt.
Daraus wäre zu schließen, dass Stockfish umso weniger ("ver"-)spekulativ sucht/spielt je mehr Threads eingesetzt werden können. (-Jetzt bitte nicht sagen: "taktisch dichter sucht"! Das stimmt nämlich auch nicht.)
Daraus könnten sich interessante Konsequenzen ergeben. Bspw.:
Was folgt daraus für die Ranglisten, die singlethreaded testen?
Auch dürften Untersuchungen über die Effizienz der Parallelsuche (die Relation Tiefe zu Spielstärke) unter einem neuen Aspekt zu betrachten sein.
Schönen Dank für den Test, Benno!
Viele Grüße
Th. Plaschke