public void ExpandTree(Game g, ref int nodeCount, ref int collisionCount, Hashtable transposition) { if(children != null) return; children = new List<Node>(); var plies = g.children(position, c); foreach (var ply in plies) { var s = new Node(ply.Apply(position, g), (byte)(c ^ 1)); s.Evaluate(g); nodeCount++; if (transposition.ContainsKey(s)) collisionCount++; else transposition.Add(s, s); s.parents.Add(this); children.Add(s); } }
public void Expand(Game g, Hashtable transposition) { if(children != null) return; children = new List<Node>(); var plies = g.children(position, c); foreach (var ply in plies) { var s = new Node(ply.Apply(position, g), (byte)(c ^ 1)); if (transposition.ContainsKey(s)) s = (Node)transposition[s]; else { s.Evaluate(g); transposition[s] = s; } s.parents.Add(this); children.Add(s); } }