2D 로컬 최대
입력 : 2 차원 배열 An × nㅏ
출력 : 로컬 최대 - 쌍 되도록 [ I , J는 ] 엄밀히 큰 값을 포함하는 어레이 내에 이웃 셀이 없다. ( i , j )A [ i , j ]
(인접한 셀은 어레이에 존재 사이 의 셀 이다.) 예를 들어 A 가A [ i , j + 1 ] , A [ i , j - 1 ] , A [ i - 1 , j ] , A [ i + 1 , j ]ㅏ
0삼241250삼삼01411삼
각 굵은 셀은 로컬 최대 값입니다. 비어 있지 않은 모든 배열에는 하나 이상의 로컬 최대 값이 있습니다.
연산. 가 단, 각 셀을 확인 : - 시간 알고리즘. 더 빠르고 재귀적인 알고리즘에 대한 아이디어가 있습니다.O ( n2)
주어지면 중간 열의 셀과 가운데 행의 셀로 구성되도록 교차 X 를 정의 하십시오. 먼저 X의 각 셀을 확인 하여 셀이 A 의 로컬 최대 값인지 확인하십시오 . 그렇다면 해당 셀을 반환하십시오. 그렇지 않으면 ( i , j ) 를 X의 최대 값 셀로 설정하십시오 . 이후 ( 난 , j는 ) 로컬 최대가 아닌, 그 인접 셀이 있어야 ( I ' , J ' ) 보다 큰 값.ㅏ엑스엑스ㅏ( i , j )엑스( i , j )(i′,j′)
A∖XAX(i′,j′)A′
A′A
(i′,j′)A′A′(i′,j′)⋄
알고리즘은 재귀 적으로 호출됩니다.n2×n2A′(i,j)
T(n)n×nT(n)=T(n/2)+O(n)T(n)=O(n)
따라서 우리는 다음 정리를 증명했습니다.
O(n)n×n
아니면 우리가?