Pathya's blog

By Pathya, history, 15 months ago, In English

I was thinking of creating this problem (it feels like a fundamental one, but I haven’t found it on any website). Can anyone help me figure out the optimal solution, or point me to a known reference if it already exists?

Problem Statement:

You are given a directed graph with n nodes labeled 0 to n-1. A token starts at node 0. Two players play a game on this graph, taking turns alternately:

On each turn, the current player must move the token along one outgoing edge of the current node.

Player A wants the token to reach node n-1 in as few moves as possible.

Player B wants to delay this as much as possible, or prevent the token from ever reaching node n-1.

If both players play optimally, output the number of moves required for the token to reach node n-1. If Player A cannot guarantee reaching node n-1, output -1.

Note: As a variation, edge weights can be introduced but I feel the essence of this problem is that it is closer to chess than Dijkstra.

Here's why this problem seems so complicated to me:

The core difficulty is mutual anticipation; Every move A makes affects B’s control, which B can anticipate and counter, which A must then anticipate, and so on. This makes it fundamentally different from variations of shortest path algorithms, like sometimes Player A may deliberately avoid the “shortest path” if it would later hand control to Player B at a significant node. Similarly, Player B may allow a slightly faster move early if it leads into a region where A is forced into a dead end or an unavoidable delay. Player A must think several moves ahead, anticipating not just B’s immediate sabotage but also B’s longer-term counter-strategies.

Also consider Cycles and their Parity can act as a tool for the player in turn to decide in future who will get in charge later. Like If the token enters a cycle, whether it benefits Player A or B depends on the parity of the cycle length and whose turn it will be when leaving the cycle. For example, an odd-length cycle could let Player B regain control at a crucial node, while an even-length cycle might let Player A maintain control. Also, A path that looks promising might actually funnel the token into a dead end where Player B can stall indefinitely.

If edge weights are introduced, Not only cases such as Player A accepting a costlier short-term edge to avoid traps will come, but also player may prioritize parity of number of edges over weights to decide control, For example: One path may have 1 node with 6 weight while another may have 2 nodes with 3 weights each. Player might prefer second path to control the turn order again. Also sometimes, not being in control immediately may still be optimal when considering longer-term anticipation.

Due to all this the only solution I can think of is brute-forcing through all possibilities via DP. Thanks for reading! I’d really welcome any feedback, references to similar problems, or ideas toward an optimal solution.

  • Vote: I like it
  • +3
  • Vote: I do not like it