The basic Monte-Carlo Tree Search algorithm uses the tree policy:
while v is nonterminal:
if v is not fully expanded:
expand v
else:
v = v.best_child
By always expanding a node as long as it is expandable a lot of time is consumed to explore the direct next move. When there are a large number of possible moves it can be time (and space) consuming to create nodes for all move candidates and if many of them may have similar outcome it would be preferable to descend in existing subtrees even when the node is not fully expanded yet.
The closest related method that I found is first-play urgency, but as far as I see it also creates the nodes for the actions and also only modifies the algorithm which children are selected to use more exploitation than exploration, but doesn't reduce the amount of move candidates that are created when inserting a node.
I thought about removing the check if the node is expandable and treating it like its children, but I think the UCT of a parent node doesn't get larger than the UCT of its best child because the values of the children are propagated to the parent and the visit count of the parent is always larger than the visit counts of the children, so the parent node would not be selected again later.
Should I try to find a modification for the UCT or are there other methods to allow for exploring subtrees of not fully expanded nodes while still allowing to further expand the parent node from time to time?
Another alternative would be to stochastically only generate a subset of all possible moves at the risk of missing out on a good move, so I would prefer to find a modification of UCT or the descend / expansion algorithms to revisit inner nodes that are still expandable.