Скажем, у нас есть шахматная доска размера n x n (или, другими словами, матрица), и у каждого квадрата есть свой вес. Фигура может двигаться по горизонтали или вертикали, но не по диагонали. Стоимость каждого хода будет равна разнице двух клеток на шахматной доске. Используя алгоритм, я хочу найти минимальную стоимость перемещения одной шахматной фигуры с квадрата (1,1) на квадрат (n,n), который имеет временную сложность в наихудшем случае за полиномиальное время.
Можно ли использовать алгоритм дикстры для решения этой проблемы? Сможет ли мой алгоритм, приведенный ниже, решить эту проблему? Diijkstras уже можно запускать за полиномиальное время, но что делает его сложным на этот раз?
Псевдокод:
У нас есть некоторое пустое множество S, некоторое целое число V и входной невзвешенный граф. После этого мы заполняем матрицу смежности, показывающую стоимость ребра без вершин, взвешенных по бесконечности, и, пока матрица не выбрала все вершины, мы находим вершину, и если значение квадрата меньше квадрата, на котором мы сейчас находимся, двигаемся к этому квадрату и обновите V с разницей между двумя квадратами и обновите S, отмечая каждую посещенную вершину. Мы делаем этот процесс до тех пор, пока не останется вершин.
Спасибо.