Algorithm 两人硬币博弈的最优策略

Algorithm 两人硬币博弈的最优策略,algorithm,recursion,dynamic-programming,greedy,Algorithm,Recursion,Dynamic Programming,Greedy,两名玩家轮流选择一枚外围硬币。最后,我们计算差异 在两名球员的得分之间,考虑到他们发挥的最佳状态。 在我的例子中,贪心的获取硬币最大价值的策略通常不会带来最好的结果 现在我开发了一个算法: 样本:{9,1,15,22,4,8} 我们计算偶数指数和奇数指数硬币的总和 比较两个和(9+15+4)如果数组长度为偶数,则您的算法将尝试产生一个有保证的赢。你可以很容易地证明这一点。但这并不一定能带来最佳的胜利。特别是,它不会找到你想要一些硬币在偶数索引上,而另一些硬币在奇数索引上的策略 下面的简短示例说明

两名玩家轮流选择一枚外围硬币。最后,我们计算差异 在两名球员的得分之间,考虑到他们发挥的最佳状态。 在我的例子中,贪心的获取硬币最大价值的策略通常不会带来最好的结果

现在我开发了一个算法:

样本:{9,1,15,22,4,8}

  • 我们计算偶数指数和奇数指数硬币的总和


  • 比较两个和(9+15+4)如果数组长度为偶数,则您的算法将尝试产生一个有保证的赢。你可以很容易地证明这一点。但这并不一定能带来最佳的胜利。特别是,它不会找到你想要一些硬币在偶数索引上,而另一些硬币在奇数索引上的策略

    下面的简短示例说明了这一点

    [10, 1, 1, 20, 1, 1]
    
    您的算法将查看均衡与赔率,认识到
    10+1+1<1+20+1
    并首先获取最后一个元素。通过
    10
    确保胜利


    但是您同时需要
    10
    20
    。因此,最佳策略是选择
    10
    离开
    1,1,20,1,1
    ,无论对方选择哪一方,你都会选择另一方到达
    1,20,1
    ,然后,无论对方选择哪一方,你都会选择中间。结果是你得到
    10,1,20
    ,而另一个人得到
    1,1,1
    。通过
    28

    确保胜利如果允许一名球员决定谁先走,我假设奇数和/偶数和策略仍然有效?注意,如果奇数和更高,那么请另一名玩家先走?@user3882729否。给定的策略将始终获胜或平局。但是如果奇数和偶数之和相等,给定的策略将平局,并且可能会错过一场胜利。好的,如果奇数和偶数之和不相等,一个能够决定谁先走的玩家总是会赢,如果他们通过哪个和更高。如果总和相等,他们所能达到的最佳结果就是用这一策略平局。