Eğer sizi yanlış anlamıyorsam, minimum maliyet çarpanlarının zamanında aşağıdaki gibi hesaplanabileceğini düşünüyorum.O(n2)O(n2)
Her indeks i için, için bir grup değeri aşağıdaki gibi hesaplayacağız. Let bir tamsayı olduğu gibi tam sayı küçük olması tatminBu özel , bu özelliğe sahip en büyük . Böyle bir yoksa, bu için sıfır değerleri olduğunu bildiğimiz için ayarlayın .( p ℓ i , r ℓ i ) (pℓi,rℓi)ℓ = 1 , 2 , … ℓ=1,2,…p 1 i ≥ 1 p1i≥1r ≥ 2 r≥2S [ i - r p 1 i + 1 , i - p 1 i ] = S [ i - ( r - 1 ) p 1 i + 1 , i ] . S[i−rp1i+1,i−p1i]=S[i−(r−1)p1i+1,i].
p1ip1ir1ir1irrpipiLi=0Li=0(pℓi,rℓi)(pℓi,rℓi)
Let kesin daha büyük en küçük tam sayı olduğu karşılayan, aynı şekilde,
bazı . Daha önce olduğu gibi, sabit sahip maksimum olacak şekilde alın . Genel olarak , den kesinlikle daha büyük olan en küçük sayıdır . Böyle bir yoksa, .p2ip2i(r1i−1)p1i(r1i−1)p1iS[i−r2ip2i+1,i−p2i]=S[i−(r2i−1)p2i+1,i]S[i−r2ip2i+1,i−p2i]=S[i−(r2i−1)p2i+1,i]
r2i≥2r2i≥2r2ir2ip2ip2ipℓipℓi(rℓ−1i−1)pℓ−1i(rℓ−1i−1)pℓ−1ipℓipℓiLi=ℓ−1Li=ℓ−1
Her dizin i için, değerleri ile geometrik olarak arttığından olduğuna . ( varsa, sadece kesinlikle daha büyük değil, en azından daha büyüktür . Bu geometrik artışı oluşturur. )Li=O(log(i+1))Li=O(log(i+1))pℓipℓiℓℓpℓ+1ipℓ+1i(rℓi−1)pℓi(rℓi−1)pℓipℓi/2pℓi/2
Şimdi tüm değerlerin bize verildiğini varsayalım . Minimum maliyet
için ayarladığımız anlayışıyla . Tablo sürede .(pℓi,rℓi)(pℓi,rℓi)dp(i,j)=min{dp(i,j−1)+1,minℓ(dp(i,j−rℓjpℓj)+dp(j−rℓjpℓj+1,j−pℓj))}dp(i,j)=min{dp(i,j−1)+1,minℓ(dp(i,j−rℓjpℓj)+dp(j−rℓjpℓj+1,j−pℓj))}
i>ji>jdp(i,j)=+∞dp(i,j)=+∞O(n2+n∑jLj)O(n2+n∑jLj)
Yukarıda , toplam terimi terime göre sınırlayarak daha önce gözlemledik . Ama aslında, toplamın tamamına bakarsak, daha keskin bir şey kanıtlayabiliriz.∑jLj=O(∑jlog(j+1))=Θ(nlogn)∑jLj=O(∑jlog(j+1))=Θ(nlogn)
Soneki ağacı düşünün ait ters (yani, S önek ağacı). Bu toplamı her katkı şarj olur bir kenarına her bir kenarı bir kez en şarj edilecektir. Her den yayılan ve yönünde doğru . Burada , karşılık gelen önek ağacının ve nca, en yakın ortak atası belirtir.T(←S)T(S←)SS∑iLi∑iLiT(←S)T(S←)pjipjinca(v(i),v(i−pji))nca(v(i),v(i−pji))v(i−pji)v(i−pji)v(i)v(i)S[1..i]S[1..i]
Bu . Değerler , zamanında sonek ağacının geçişi ile hesaplanabilir, ancak ilgilenen varsa ayrıntıları sonraki bir düzenlemeye bırakacağım.O(∑iLi)=O(n)O(∑iLi)=O(n)(pji,rji)(pji,rji)O(n+∑iLi)O(n+∑iLi)
Bunun mantıklı olup olmadığını bana bildirin.