Атомный алгоритм на основе массива Gomoku?

Возвращение назад (думаю, 20+ лет) Я столкнулся с исходным кодом игры Gomoku в журнале, который я набрал для своего компьютера, и мне было очень весело.

Игра была трудно победить, но основной алгоритм для компьютерного ИИ был действительно простым и не учитывал много кода. Интересно, знает ли кто-нибудь этот алгоритм и имеет некоторые ссылки на какой-то источник или теорию об этом.

То, что я помню, было то, что в основном он выделял массив, который охватывал всю доску. Затем, всякий раз, когда я или он помещал кусок, он добавлял бы несколько весов во все местоположения на доске, которые могли бы повлиять на кусок.

Например (обратите внимание, что веса определенно неправильны, поскольку я их не помню):

1   1   1
 2  2  2
  3 3 3
   444
1234X4321
  3 3 3
 2  2  2
1   1   1

Затем он просто сканировал массив для открытого местоположения с самым низким или самым высоким значением.

Вещи, на которых я неясен:

  • Возможно, у него было два массива: один для меня и один для себя и был минимальный/максимальный вес?
  • Возможно, алгоритм был больше, но по своей сути он был в основном массивом и взвешенными числами.

Это звонит с кем-нибудь вообще? Кто-нибудь получил что-нибудь, что помогло бы?

Ответ 1

Прочитав ваше описание и немного подумав об этом, я думаю, что он, вероятно, работает с одним массивом, точно так, как вы описали.

Чтобы достичь цели получить пять в ряд, вы должны (а) предотвратить оппонента от успеха и (б) добиться успеха.

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

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

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

Однако это очень простой подход и будет превосходить алгоритм поиска деревьев. Поиск в Google, там документ об угрозе поиска, который, по-видимому, хорошо работает для Гомоку. Бумага стоит за платной стеной:/

Ответ 3

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

Но это, конечно, очень тривиальный алгоритм. Стратегия победы уже найдена. См. Эту статью: L. Виктор Аллис, Х. Дж. Ван ден Херик, М. П. Хунтженс. Go-Moku и поиск угроз в космосе. Это очень помогло мне, когда я писал свою собственную программу. Таким образом, вы сможете написать программу, которая очень хороша в атаке противника и поиске выигрышных комбинаций.

Ответ 4

Это древняя игра - я нашел код на Source Source Source. Я играл в эту игру во время колледжа, и в 286 дней была версия BASIC.

Ответ 6

Работа с версией с открытым исходным кодом для iPhone.

Ударьте меня, если вы заинтересованы в присоединении!

https://github.com/kigster/kigomoku