我是靠谱客的博主 爱撒娇音响,最近开发中收集的这篇文章主要介绍博弈论策略,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

       规则:有N个棋子,有两个玩家。每个玩家可以从剩下的棋子中取走1-3个。最后取走剩下所有的棋子着为赢家。

       例:(引用原文)有21个棋子,有A,B两个玩家。A先开始,请问A要怎么做才能确保自己一定赢?

       
       解答:首先分析问题,要确保自己最后能取走剩下的所有棋子,则必须要确保最后剩下的棋子数为:1~3。所以B最后一次取的时候,一定要为4,(B取1==剩下3,取2==剩下2,取3==剩下1)。
       怎么才能剩下4个给B取呢?那只有当A取时,要确保棋子数为:5~7。
       有点像分析程序递归问题:先找出口,然后从最后面开始往前面分析。
       再上层,要确保B能剩下5~7个棋子,则必须B取时要为8,(B取1==剩下7,B取2==剩下6,B取3==剩下5);
       以此类推,总结:要确保B在取时棋子数为4的倍数。
       所以开始A要取1个,B则从20个中取。可能取走1,2,3个===》剩下17,18,19个
      A再取走1~3个,只要确保剩下为16个就可以。=======》类推,则最后B只能从4个中取了,所以A一定获胜。
 

      
      扩展:
      1.假设是最后取走剩下所有的棋子为输,还是A先取,那A该怎么做才能赢?分析方法雷同,只是最后给B留下的棋子数一定要是1,然后再一层一层的往上推。
       2.假设有三个人参加博弈,其他规则一样:最后取走剩下所有的棋子为赢(输),还是A先取,那A该怎么做才能赢?这个有点困难,至少我现在还没解决。后期解决了再贴上来。


注:原文在《 妙趣横生博弈论》





最后

以上就是爱撒娇音响为你收集整理的博弈论策略的全部内容,希望文章能够帮你解决博弈论策略所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部