Я пишу простой AI Connect-K (без обрезки, только 4 слоя). Мне было интересно, что такое эффективная эвристика , что быстро вычислить.Хорошая эвристика для Connect-K AI
Что-то лучше, чем то, что у меня есть:
def eval(board, player)
connections = 0
magnitude = 0
for x in range(0, self.boardW(board)):
for y in range(0, self.boardH(board)):
if(self.get_player(board, x, y) == player): #assuming x and y are in bounds
temp = 1
# keep checking in this direction to find the max temp can be
if (magnitude < temp):
magnitude = temp
if(self.get_player(board, x, y) == player):
connection += 1
........
return connection**2 + magnitude**2
В основном это, как предполагается вернуть максимальное число соединений любое место на борту имеет с прилегающими к нему пятнами, а также сколько раз подряд элементы в любом из 8 направлений (вверх, вниз, влево, вправо, влево сверху, вниз-влево, ...)
Мои к будет больше, чем 4; таким образом, я не могу выполнить исчерпывающий поиск дерева.