AlphaBetaTreeAdapter

AlphaBetaTreeAdapter

new AlphaBetaTreeAdapter()

Description:
  • Alpha-Beta Tree Adapter - Visualisierung mit Pruning

    Extends MinimaxTreeAdapter mit Alpha-Beta Pruning Features:

    • Pruned-Node Visualisierung und Tracking
    • Alpha/Beta Threshold Anzeige
    • Performance-Verbesserungen durch Cut-Off-Highlighting
Source:
Version:
  • 2.3
Author:
  • Alexander Wolf

Extends

Methods

_buildResult(rootId) → {Object}

Description:
  • Erzeugt ein Standard-Resultat für die UI.

Source:
Inherited From:
Parameters:
Name Type Description
rootId number
Returns:
Type
Object

_countEvaluatedStoredNodes(nodeId, leafOnlyopt) → {number}

Description:
  • Zählt bereits evaluierte Knoten im aktuell materialisierten Teilbaum.

Source:
Parameters:
Name Type Attributes Default Description
nodeId number
leafOnly boolean <optional>
false
Returns:
Type
number

_createChildMetadata()

Description:
  • Override metadata creation to include Alpha/Beta from parent

Source:
Overrides:

_createChildStructure()

Description:
  • Helper to create additional tree structure data. Can be overridden.

Source:
Overrides:

_estimateNewlyPrunedCount(nodeId) → {number}

Description:
  • Ermittelt neue Pruning-Knotenanzahl auf Basis des vollständigen Potenzial-Teilbaums.

Source:
Parameters:
Name Type Description
nodeId number
Returns:
Type
number

_estimatePotentialSubtreeSize(nodeId, leafOnlyopt) → {number}

Description:
  • Schätzt die Anzahl potenziell prunbarer Knoten eines Teilbaums. Nutzt vorhandene Utility-Funktion, inkl. Option für Blattknoten-Zählung.

Source:
Parameters:
Name Type Attributes Default Description
nodeId number
leafOnly boolean <optional>
false
Returns:
Type
number

_evaluateTerminalState(state) → {Object}

Description:
  • Bewertet einen terminalen Knoten relativ zum Root-Spieler.

Source:
Inherited From:
Parameters:
Name Type Description
state GameState
Returns:
Type
Object

_expandPrunedNodeChildren(nodeId, state)

Description:
  • Expandiert Kinder eines geprunten Knotens rein zur Visualisierung. Die erzeugten Kinder bleiben PRUNED und sind nicht bewertbar.

Source:
Parameters:
Name Type Description
nodeId number
state GameState

_getEdgeColorForValue(value) → {string}

Description:
  • Liefert Kantenfarbe entsprechend Gewinnerfarbe (statt Vorzeichenfarbe).

Source:
Inherited From:
Parameters:
Name Type Description
value number
Returns:
Type
string

(protected) _getHighlightEdgeStyle(bestValue) → {Object}

Description:
  • Liefert Farbe und Breite für Best-Edge-Highlighting (wertabhängig).

Source:
Inherited From:
Parameters:
Name Type Description
bestValue number
Returns:
Type
Object

_getInitialBounds() → {Object}

Description:
  • Liefert Initialwerte für Alpha/Beta.

Source:
Returns:
Type
Object

_getNextOpenChild(parent) → {number|null}

Description:
  • Liefert den nächsten offenen Kindknoten eines Elternknotens.

Source:
Parameters:
Name Type Description
parent Object
Returns:
Type
number | null

_getValueStatuses(value) → {Array.<string>}

Description:
  • Liefert zusätzliche Visualisierungs-Status anhand des Werts.

Source:
Inherited From:
Parameters:
Name Type Description
value number
Returns:
Type
Array.<string>

_isAllowedByOrder(nodeId) → {boolean}

Description:
  • Optional: Prüft erzwungene Evaluationsreihenfolge.

Source:
Parameters:
Name Type Description
nodeId number
Returns:
Type
boolean

(protected) _isLeafTerminal(nodeId, data) → {boolean}

Description:
  • Prüft ob ein Blattknoten terminal ist (spielbasiert). Überschreibt BaseTreeAdapter._isLeafTerminal für Game-State-Prüfung.

Source:
Inherited From:
Parameters:
Name Type Description
nodeId number
data Object
Returns:
Type
boolean

_isStrictOrderEnabled() → {boolean}

Source:
Returns:
Type
boolean

_isTerminalState(state) → {boolean}

Description:
  • Prüft, ob ein Zustand terminal ist.

Source:
Inherited From:
Parameters:
Name Type Description
state GameState
Returns:
Type
boolean

_orderMoves(validMoves, state) → {Array}

Description:
  • Sortiert Züge optional in günstiger AB-Reihenfolge. Aktuell mit generischer Heuristik + TTT-3x3-Spezialfall (Center -> Ecken -> Kanten).

Source:
Overrides:
Parameters:
Name Type Description
validMoves Array
state GameState
Returns:
Type
Array

_pruneSubtree(nodeId, parentId) → {number}

Description:
  • Markiert einen gesamten Teilbaum rekursiv als PRUNED. Bereits EVALUATED Knoten behalten ihren Status (Priorität: manuell evaluiert).

Source:
Parameters:
Name Type Description
nodeId number
parentId number | null
Returns:

Anzahl neu geprunter Knoten

Type
number

_recomputeNodeBounds(nodeId, evaluatedChildIdopt)

Description:
  • Rechnet Alpha/Beta eines Nodes aus seinen ausgewerteten Kindern neu. Visualisiert den AB-Informationsfluss über farbkodierte Kanten:

    • Rot: α-Update (MAX-Knoten aktualisiert Alpha)
    • Blau: β-Update (MIN-Knoten aktualisiert Beta)
    • Propagation nach unten an offene Kinder in gleicher Farbe
Source:
Parameters:
Name Type Attributes Default Description
nodeId number
evaluatedChildId number <optional>
null

Kind das gerade evaluiert wurde

_resolveConstants() → {Object}

Description:
  • Lädt zentrale Konstanten mit robusten Fallbacks.

Source:
Inherited From:
Returns:
Type
Object

_syncStrictOrderingForParent(parentId)

Description:
  • Synchronisiert strikte Evaluationsreihenfolge pro Elternknoten.

    • Nur der nächste offene Kindknoten bleibt READY.
    • Andere offene READY-Kinder werden auf WAIT gesetzt.
    • Der nächste offene Kindknoten erhält Marker NEXT_TO_EVALUATE.
Source:
Parameters:
Name Type Description
parentId number

checkNodeStatus(nodeId)

Description:
  • Erweiterte Statusprüfung mit Debug für READY-Übergänge.

Source:
Parameters:
Name Type Description
nodeId number

checkParentPruning(parentId, evaluatedChildIdopt)

Description:
  • Checks if the parent can prune its remaining children based on the new value.

Source:
Parameters:
Name Type Attributes Default Description
parentId number
evaluatedChildId number <optional>
null

Kind das gerade evaluiert wurde (für Edge-Highlighting)

evaluateNode()

Description:
  • Führt die Bewertung eines Knotens durch.

Source:
Overrides:

expandNodeChildren(nodeId, state)

Description:
  • Erweitert Knoten; geprunte Knoten werden visualisierend erweitert.

Source:
Parameters:
Name Type Description
nodeId number
state GameState

(async) visualizeSearch()

Description:
  • Startet die Visualisierung (Aufbauphase).

Source:
Overrides:

AlphaBetaTreeAdapter

new AlphaBetaTreeAdapter(iframeElement)

Description:
  • Konstruktor mit lokalem Cache für Strict-Marker-Updates.

Source:
Parameters:
Name Type Description
iframeElement HTMLIFrameElement

Methods

_buildResult(rootId) → {Object}

Description:
  • Erzeugt ein Standard-Resultat für die UI.

Source:
Inherited From:
Parameters:
Name Type Description
rootId number
Returns:
Type
Object

_countEvaluatedStoredNodes(nodeId, leafOnlyopt) → {number}

Description:
  • Zählt bereits evaluierte Knoten im aktuell materialisierten Teilbaum.

Source:
Parameters:
Name Type Attributes Default Description
nodeId number
leafOnly boolean <optional>
false
Returns:
Type
number

_createChildMetadata()

Description:
  • Override metadata creation to include Alpha/Beta from parent

Source:
Overrides:

_createChildStructure()

Description:
  • Helper to create additional tree structure data. Can be overridden.

Source:
Overrides:

_estimateNewlyPrunedCount(nodeId) → {number}

Description:
  • Ermittelt neue Pruning-Knotenanzahl auf Basis des vollständigen Potenzial-Teilbaums.

Source:
Parameters:
Name Type Description
nodeId number
Returns:
Type
number

_estimatePotentialSubtreeSize(nodeId, leafOnlyopt) → {number}

Description:
  • Schätzt die Anzahl potenziell prunbarer Knoten eines Teilbaums. Nutzt vorhandene Utility-Funktion, inkl. Option für Blattknoten-Zählung.

Source:
Parameters:
Name Type Attributes Default Description
nodeId number
leafOnly boolean <optional>
false
Returns:
Type
number

_evaluateTerminalState(state) → {Object}

Description:
  • Bewertet einen terminalen Knoten relativ zum Root-Spieler.

Source:
Inherited From:
Parameters:
Name Type Description
state GameState
Returns:
Type
Object

_expandPrunedNodeChildren(nodeId, state)

Description:
  • Expandiert Kinder eines geprunten Knotens rein zur Visualisierung. Die erzeugten Kinder bleiben PRUNED und sind nicht bewertbar.

Source:
Parameters:
Name Type Description
nodeId number
state GameState

_getEdgeColorForValue(value) → {string}

Description:
  • Liefert Kantenfarbe entsprechend Gewinnerfarbe (statt Vorzeichenfarbe).

Source:
Inherited From:
Parameters:
Name Type Description
value number
Returns:
Type
string

(protected) _getHighlightEdgeStyle(bestValue) → {Object}

Description:
  • Liefert Farbe und Breite für Best-Edge-Highlighting (wertabhängig).

Source:
Inherited From:
Parameters:
Name Type Description
bestValue number
Returns:
Type
Object

_getInitialBounds() → {Object}

Description:
  • Liefert Initialwerte für Alpha/Beta.

Source:
Returns:
Type
Object

_getNextOpenChild(parent) → {number|null}

Description:
  • Liefert den nächsten offenen Kindknoten eines Elternknotens.

Source:
Parameters:
Name Type Description
parent Object
Returns:
Type
number | null

_getValueStatuses(value) → {Array.<string>}

Description:
  • Liefert zusätzliche Visualisierungs-Status anhand des Werts.

Source:
Inherited From:
Parameters:
Name Type Description
value number
Returns:
Type
Array.<string>

_isAllowedByOrder(nodeId) → {boolean}

Description:
  • Optional: Prüft erzwungene Evaluationsreihenfolge.

Source:
Parameters:
Name Type Description
nodeId number
Returns:
Type
boolean

(protected) _isLeafTerminal(nodeId, data) → {boolean}

Description:
  • Prüft ob ein Blattknoten terminal ist (spielbasiert). Überschreibt BaseTreeAdapter._isLeafTerminal für Game-State-Prüfung.

Source:
Inherited From:
Parameters:
Name Type Description
nodeId number
data Object
Returns:
Type
boolean

_isStrictOrderEnabled() → {boolean}

Source:
Returns:
Type
boolean

_isTerminalState(state) → {boolean}

Description:
  • Prüft, ob ein Zustand terminal ist.

Source:
Inherited From:
Parameters:
Name Type Description
state GameState
Returns:
Type
boolean

_orderMoves(validMoves, state) → {Array}

Description:
  • Sortiert Züge optional in günstiger AB-Reihenfolge. Aktuell mit generischer Heuristik + TTT-3x3-Spezialfall (Center -> Ecken -> Kanten).

Source:
Overrides:
Parameters:
Name Type Description
validMoves Array
state GameState
Returns:
Type
Array

_pruneSubtree(nodeId, parentId) → {number}

Description:
  • Markiert einen gesamten Teilbaum rekursiv als PRUNED. Bereits EVALUATED Knoten behalten ihren Status (Priorität: manuell evaluiert).

Source:
Parameters:
Name Type Description
nodeId number
parentId number | null
Returns:

Anzahl neu geprunter Knoten

Type
number

_recomputeNodeBounds(nodeId, evaluatedChildIdopt)

Description:
  • Rechnet Alpha/Beta eines Nodes aus seinen ausgewerteten Kindern neu. Visualisiert den AB-Informationsfluss über farbkodierte Kanten:

    • Rot: α-Update (MAX-Knoten aktualisiert Alpha)
    • Blau: β-Update (MIN-Knoten aktualisiert Beta)
    • Propagation nach unten an offene Kinder in gleicher Farbe
Source:
Parameters:
Name Type Attributes Default Description
nodeId number
evaluatedChildId number <optional>
null

Kind das gerade evaluiert wurde

_resolveConstants() → {Object}

Description:
  • Lädt zentrale Konstanten mit robusten Fallbacks.

Source:
Inherited From:
Returns:
Type
Object

_syncStrictOrderingForParent(parentId)

Description:
  • Synchronisiert strikte Evaluationsreihenfolge pro Elternknoten.

    • Nur der nächste offene Kindknoten bleibt READY.
    • Andere offene READY-Kinder werden auf WAIT gesetzt.
    • Der nächste offene Kindknoten erhält Marker NEXT_TO_EVALUATE.
Source:
Parameters:
Name Type Description
parentId number

checkNodeStatus(nodeId)

Description:
  • Erweiterte Statusprüfung mit Debug für READY-Übergänge.

Source:
Parameters:
Name Type Description
nodeId number

checkParentPruning(parentId, evaluatedChildIdopt)

Description:
  • Checks if the parent can prune its remaining children based on the new value.

Source:
Parameters:
Name Type Attributes Default Description
parentId number
evaluatedChildId number <optional>
null

Kind das gerade evaluiert wurde (für Edge-Highlighting)

evaluateNode()

Description:
  • Führt die Bewertung eines Knotens durch.

Source:
Overrides:

expandNodeChildren(nodeId, state)

Description:
  • Erweitert Knoten; geprunte Knoten werden visualisierend erweitert.

Source:
Parameters:
Name Type Description
nodeId number
state GameState

(async) visualizeSearch()

Description:
  • Startet die Visualisierung (Aufbauphase).

Source:
Overrides: