所以我给出了一个带有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
}
}
任何有关解决此类问题的建议和新方法都将受到赞赏
答案 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