В настоящее время я пытаюсь понять динамическое программирование, и у меня возникла интересная проблема: «Учитывая шахматную доску из квадратов nxn и начальную позицию (xs, ys), найдите кратчайший (как и в случае движений) путь a рыцарь может перейти в конечное положение (xe, ye) ». Это как мое решение будет звучать как:Что такое обозначение big-O для этого алгоритма?
Initialize the matrix representing the chess board (except the "square" xs,ys) with infinity.
The first value in a queue is the square xs,ys.
while(the queue is not empty){
all the squares available from the first square of the queue (respecting the rules of chess) get "refreshed"
if (i modified the distance value for a "square")
add the recently modified square to the queue
}
Может кто-то пожалуйста, помогите мне узнать, что значение вычисления времени O для этой функции? Я (вроде) понимаю big-O, но я просто не могу поместить значение для этой конкретной функции.
Я не вижу, как это работает. «все квадраты, доступные с первого квадрата», применимы только к первой итерации. Что вы делаете на второй итерации - произвольно выбираете 1 квадрат из своей очереди, из которого следует пересчитывать расстояния, или использовать структуру ветвящихся данных для раздельного разветвления и измерения расстояний от каждого квадрата в очереди? – mbeckish
Прошу прощения, я не очень хорошо себя проявил, я имел в виду первый квадрат очереди (как в обычной очереди). – Patrunjel
Вам не хватает логики о не «освежающих» квадратах с более низким значением, чем текущее значение? – mbeckish