Код: Выделить всё
u
< /p>
-example of n (u), которые были затенены-< /p>
u (обозначенный n (u) ):
Это не классический район, который вы найдете в Википедии. Вместо этого это зависит от текущего состояния доски и динамически изменяется. Соседство состоит из:
- Непосредственные соседи u .
- Если u связан с оккупированными ячейками на доске, также включите их соседи. />
Функция c_k (u, v) Возвращает количество ячеек в окрестностях u , чье расстояние до v меньше k :
Вот мой код из функции расстояния:
def distancemetric(u, v, player, board, visited=None, memo=None):
if visited is None:
visited = set()
if memo is None:
memo = {}
if u == v:
distance = 0
return distance
neighbors = neighborhood(u, player, board)
if v in neighbors:
distance = 1
return distance
else:
visited.add(u)
min_distance = float('inf')
for k in range (2, 1000):
for w in neighbors:
# print(w)
if w not in visited:
# print("not ", w)
d = distancemetric(w, v, player, board, visited, memo)
print(w, v, d)
if d is not None:
min_distance = min(min_distance, d + 1)
if min_distance != float('inf'):
if min_distance < k:
return min_distance
else:
return None # v not reachable from u
< /code>
Любая справка, интерпретирующая определение или руководство этой функции по реализации этой функции рекурсивного расстояния, будет очень оценена. Спасибо < /p>
Я пробовал каждую технику, которую я знаю, но они привели к превышению глубины рекурсии. Я также попробовал итеративный подход и ожидал исправленной версии функции, но я попал в тупик. И это мой новый код с все еще неправильным расстоянием
Подробнее здесь: https://stackoverflow.com/questions/796 ... evaluation