Я не проверял в Интернете, чтобы найти какой-либо эвристики для этого, но я могу дать вам несколько советов внутри об этом:
Каждый квадрат по диагонали фактической площади рыцаря можно достичь только в двух ходов , при условии, что рыцарь не находится в углу. Квадрат (x, y) на квадраты (x-1, y + 1), (x + 1, y + 1), (x + 1, y-1) и (x-1, y-1) принимает 2 движется;
Квадраты, сверху, справа и слева от фактического квадрата, занимают 3 хода; Каждый квадрат на диагонали фактического квадрата с одним квадратом между ними (например, фактический квадрат = c4, целевой квадрат a6), занимает 4 хода.
Каждый квадрат на диагонали фактического квадрата с двумя квадратами между ними (например, фактический квадрат = c4, целевой квадрат f7) занимает всего 2 хода.
Наконец, если вы находитесь в заданном цветовом квадрате, вы получите нечетное число ходов, чтобы достичь противоположного квадрата цвета. Если целевой квадрат имеет тот же цвет, что и квадрат, в котором вы сейчас находитесь, это займет четное количество ходов.
Количество шагов, которые берет коня из данного положения в другое в 8x8 плате при макс 6.
Я думаю, что вы можете сделать алгоритм, который сочетает в себе вышеуказанные эвристики и адаптированы с алгоритм поиска по ширине, о котором упоминает Г. Слипен.
Этот answer от http://math.stackexchange.com также может помочь вам. Вы также можете найти множество хороших ответов here, с решениями O (1).
Это английский сайт, поэтому не используйте другие языки. См. Ответы на этот вопрос: http://stackoverflow.com/questions/2339101/knights-shortest-path-chess-question – Pavel