2 Игра игрока находится в PSPACE

77
11

Поэтому я дал булевую формулу Q с 2n переменными. Обозначим Q (x1... xn, y1... yn) и упомянем, что существует a1.... принадлежащее {0,1} такое, что для каждого b1... bn, принадлежащего {0,1} Q (a1... an, b1,.... bn}, теперь имеет значение true, вопрос заключается в том, чтобы показать, что это в PSPACE и U DTIME (2 ^ kn) класс сложности.

Теперь я считаю, что это похоже на двух игроков, в которых игрок А имеет выигрышную стратегию. и если я могу написать программу, которая занимает экспоненциальное время и полиномиальное пространство, я ее разрешу.

теперь, когда программа должна возвращать true, если для игрока A существует выбор, т.е. после того, как он выберет значение для ai из 0 и 1, независимо от того, какой би бит B выбирает и какое значение 0,1, он дает формулу, всегда будет оцениваться как истина.

Поэтому я думаю об условиях

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

//check all possible combination of bi 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;

}

этот подход правильный, также я могу проверить всю комбинацию би, используя тот же подход

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
}

}

Любое предложение и новый подход к решению этой проблемы будут оценены

спросил(а) 2020-03-27T19:26:36+03:00 2 месяца назад
1
Решение
76

Это в 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

ответил(а) 2020-03-27T19:40:55.567670+03:00 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема