Maksimum 2B yerel
giriş: 2 boyutlu dizi An × nA
çıkışı: bir lokal maksimum - bir çift bu tür bir [ ı , j ] katı bir daha büyük bir değeri içeren bir dizi herhangi bir komşu hücre vardır. (i,j)A[i,j]
(Komşu hücreler dizide bulunan arasındakilerdir.) Yani, örneğin, eğer bir olduğunuA[i,j+1],A[i,j−1],A[i−1,j],A[i+1,j]A
0324125033014113
sonra her kalın harfli hücre yerel bir maksimum değerdir. Boş olmayan her dizi en az bir yerel maksimum değere sahiptir.
Algoritma. Bir -zamanlı algoritması vardır: sadece her bir hücreyi kontrol edin. İşte daha hızlı, özyinelemeli bir algoritma için bir fikir.O(n2)
verildiğinde , orta sütundaki hücreler ve orta sıradaki hücrelerden oluşacak X çarpı tanımlayın . Önce hücrenin A'da yerel bir maksimum olup olmadığını görmek için X'deki her bir hücreyi kontrol edin . Eğer öyleyse, böyle bir hücreyi geri getirin. Aksi takdirde, ( i , j ) X cinsinden maksimum değere sahip bir hücre olsun . Yana ( i , j ) bir lokal maksimum değildir, bir komşu hücre olmalıdır ( I ' , J ' ) daha büyük bir değere sahip.AXXA(i,j)X(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)
Böylece, aşağıdaki teoremi kanıtladık:
O(n)n×n
Yoksa var mı?