2人游戏在PSPACE

时间:2013-03-10 18:19:50

标签: time computer-science complexity-theory time-complexity computation-theory

所以我给出了一个带有2n个变量的布尔公式Q.由Q(x1 ... xn,y1 ... yn)表示,并且提到存在a1 ....属于{0,1这样,对于每个b1 ... bn属于{0,1} Q(a1 ... an,b1,... bn}现在评估为true,问题是显示这是在PSPACE和U DTIME (2 ^ kn)复杂性等级。

现在我相信这就像一个玩家A拥有获胜策略的双人玩家。 如果我能编写一个采用指数时间和多项式空间的程序,我将解决它。

现在该程序应该返回true如果玩家A存在选择,即在他从0和1选择ai的值之后,无论bi玩家B选择什么,无论价值0,1他给出的公式将始终评估为真

所以我在考虑

的条款
for ai=a1 to an
{
flag =true;
for j=0 to 1
{
set ai =j;

//check all possible combination of bi's and check the formula
//if formula evaluates to false ,set flag =false and break,
//try the next j for ai;

}

//if flag =false then ai is not a good selection ,select another ai
//if flag =true yes we have a good selection of ai ,
//player 1 will always win in this case
return true and break;

}

这种方法是正确的,我也可以使用相同的方法检查bi的所有组合

for bi=b1 to bn
{
for j=0 to 1
{
//evaluate formula here
//but the problem is i do not have all the values of ai's
// i have only one value of ai ,what will i substitute for the rest
}

}

任何有关解决此类问题的建议和新方法都将受到赞赏

1 个答案:

答案 0 :(得分:0)

它在DTIME(2 ** 2n)。蛮力算法:

//requires n bits space, 2**n iterations of check() or 2**2n time total
loop over all possibilities to choose (a1,...,an):
    if (check(Q, (a1,..., an))):
        return (a1,...,an);

return null

check(Q, (a1,...,an)):
    //requires n bits space, 2**n iterations
    loop over all possibilities to choose (b1,...,bn):
        if (! Q(a1, ..., an, b1, ..., bn)):
             return false
    return true