如果我告诉你国际象棋的动作并宣告谁赢了,为什么不能在多项式时间内检查获胜者是否真的赢了?根据我的理解,这会使它成为NP问题。
答案 0 :(得分:2)
首先:在8x8字段上可以设置32个位置的位置数有限。我们需要考虑任何被转换为任何其他棋子的棋子,并包括任何这样的可用位置。当然,在所有这些中,有一些根据国际象棋规则无法达到的立场,但这并不重要。重要的是:我们有限制。让我们简单地将此限制命名为MaxPositions。
现在对于任何给定的位置,让我们按如下方式构建一个树:
我现在太累了,无法想到我们是否需要一个额外的深度或不符合这个想法(证明?),但是,哎呀,让我们添加它。重要的是:这样构造的树是有限的。
下一步:在此树中,通过合法的国际象棋移动删除无法从根目录访问的任何子树。对剩余的孩子,孙子女......重复此步骤,直到整棵树中没有剩余的无法到达的位置。步骤数必须限制,因为树是有限的。
现在进行广度优先搜索并使任何节点成为叶子(如果之前已找到)。它必须标记为(!;绘制候选人?)。任何配偶位置都一样。
如何确定是否有强制伴侣?在任何子树中,如果轮到您,则必须在至少一个子项中导致强制交配。如果是对手的移动,那么每个孩子必须有一个大孩子才能成为一个配偶。当然,这适用于递归。但是,由于树是有限的,整个算法是有限的。
[感知] ,整个算法有限! 是一些限制整个东西的常数。所以:虽然限制非常高(远远超出最新硬件可以处理的限制),但它是一个限制(请不要让我计算它......)。所以:我们的问题实际上是 O(1)!!!
对于跳棋来说,去吧......
到目前为止,这适用于强制配偶。什么是最好的举动?首先,检查我们是否能找到强制配偶。如果是这样,很好,我们找到了最好的举动。如果有多个,请选择需要移动最少的那个(仍然可能有多个......)。
如果没有这样的强制配偶,那么我们需要通过某种方式测量“最佳”配对。可能会计算可用的继承数量。其他测量命题?只要从上到下在这棵树上操作,我们仍然有限。所以,我们再次 O(1)。
现在我们错过了什么?再次查看评论中的link。他们正在谈论NxN跳棋!作者的字段大小不一!
回顾一下我们如何构建树。我认为树很明显随着场的大小呈指数增长(试着自己证明......)。
我非常清楚这个答案是不是证明,因为问题是EXP(TIME)。实际上,我承认,这根本不是一个答案。但我认为我所说明的内容仍能给出问题复杂性的良好形象/印象。只要没有人能提供更好的答案,我敢说这比没有人好......
附录,考虑您的评论:
我允许引用wikipedia。实际上,应足以转换指数时间中的其他问题,而不是链接中的多项式,因为应用转换+求解结果问题仍然是指数的。但我不确定确切的定义......
对于你已经知道它已经完成EXP的问题就足够了(将任何其他问题转换为此问题,然后再转向象棋问题,如果两个转换都是指数的话,那么它仍然是指数的。)
显然,J.M。Robson为NxN跳棋找到了一种方法。 generalized chess也必须是可能的,可能只是简单地修改Robsons算法。我不认为古典8x8国际象棋是可能的,但是......
O(1)仅适用于经典国际象棋,不适用于广义国际象棋。但是我们假设不在NP中的是后者!实际上,在我对这个附录的回答中,有一个证据缺乏:有限树的大小(如果N是固定的)增长速度不会快于指数增长N(所以答案实际上是不完整的!)。
为了证明广义国际象棋不在NP中,我们必须证明在非确定性图灵机上没有多项式算法来解决这个问题。我再次开放,我的答案仍然不那么完整......
答案 1 :(得分:0)
如果我告诉您棋牌的动作并宣布谁获胜,为什么 如果获胜者确实获胜,是否可以在多项式时间内检查? 根据我的理解,这将使其成为一个NP问题。
因为要检查获胜者(白色)是否确实获胜,您还必须评估较宽松的(黑色)本来可以获胜的所有可能动作。这使得检查也呈指数级。