Настольная игра, “Идут” завершенный NP?

stdout и stderr - это не строки, а потоки. Один из способов думать о них, как о резервуаре для воды: процесс сбрасывает воду в верхнюю часть, и у вас есть кран внизу, к которому вы можете получить доступ. stdout.read() говорит: «откройте кран и дайте ему поработать, пока в баке больше не останется воды» - если вы не поставили ведро под кран (назначая переменную в этой аналогии), вода исчезнет, ​​и открытие крана из пустого резервуара снова не вернет его.

Если вам нужно обращаться к одному и тому же выходу из потока несколько раз, вам нужно сохранить его в переменной, а затем ссылаться на эту переменную каждый раз. В вашем случае вы можете сделать что-то вроде:

output = proc.stdout.read()
if not output:
    # your error handling here
for line in output.split("\n"):
    # do stuff with line here
17
задан Olivier Dulac 14 February 2013 в 11:08
поделиться

3 ответа

Chess and Go оба EXPTIME завершены . IIRC, Го имеет больше возможных ходов, поэтому я думаю, что он выше, чем в шахматах.

16
ответ дан 30 November 2019 в 13:27
поделиться

Даже если Го находится просто в P, оно все равно может быть чем-то ужасным, например O(n^m), где n - это число пробелов, а m - некоторое (большое) фиксированное число. Даже в P нет ничего разумного для вычисления.

4
ответ дан 30 November 2019 в 13:27
поделиться

Ни шахматы, ни ИИ не полностью оценивают все возможности, прежде чем принять решение о движении.

Шахматные ИИ используют различные эвристические методы, чтобы сузить область поиска и количественно оценить, насколько «хорошей» является данная позиция на доске. Это может быть сделано рекурсивно, оценивая возможные позиции доски 14-15, продвигаясь вперед и выбирая путь, который ведет к хорошей позиции.

Есть немного «волшебства» в том, как количественно определяется позиция на доске, так что на верхнем уровне ИИ может просто перейти на Движение A> Движение B, поэтому позволяет выполнить Движение A. Но так как количество фигур ограничено, все они имеют поддающееся количественному измерению значение, и может быть реализован «достаточно хороший» алгоритм.

Но оказывается, что для программы гораздо сложнее оценить две возможные позиции на доске в Go и выполнить расчет A> B. Без этой важной части немного сложнее заставить остальную часть ИИ работать.

3
ответ дан 30 November 2019 в 13:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: