현재 동적 프로그래밍을 이해하려고합니다. 흥미로운 문제를 발견했습니다. "nxn 사각형과 시작 위치 (xs, ys)의 체스 보드를 사용하면 가장 짧은 (이동 횟수와 마찬가지로) 경로를 찾을 수 있습니다. 기사는 끝 위치 (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
}
이 기능의 컴퓨팅 시간 값은 무엇입니까? 나는 (일종의) big-O를 이해하지만이 함수에 대한 가치를 부여 할 수는 없습니다.
어떻게 작동하는지 알 수 없습니다. "첫 번째 사각형에서 사용할 수있는 모든 사각형"은 첫 번째 반복에만 적용됩니다. 두 번째 반복에서 무엇을합니까? 거리를 다시 계산할 대기열에서 임의로 1 제곱을 선택하거나 분기 데이터 구조를 사용하여 별도로 분기하여 각 대기열에서 거리를 측정합니다. – mbeckish
죄송합니다. 자신을 잘 표현하지 못했습니다. 큐의 첫 번째 사각형을 의미합니다 (일반 큐와 마찬가지로) – Patrunjel
현재 값보다 낮은 값으로 "리프레시"하지 않는 것에 대한 논리가 없습니까? – mbeckish