अगर मुझे आपकी गलतफहमी नहीं है, तो मुझे लगता है कि न्यूनतम लागत कारक की गणना समय में की जा सकती है।ओ ( एन 2 )O(n2)
प्रत्येक सूचकांक मैं के लिए, हम मूल्यों का एक समूह की गणना करेगा के लिए इस प्रकार है। बता दें कि सबसे छोटा पूर्णांक होता है जैसे कि एक पूर्णांक संतोषजनकइस विशेष , को इस संपत्ति के साथ सबसे बड़ा होने दें । यदि ऐसा कोई मौजूद नहीं है, तो सेट करें ताकि हम जान सकें कि इस सूचकांक के लिए शून्य मान हैं।( पी ℓ मैं , आर ℓ मैं ) (pℓi,rℓi)ℓ = 1 , 2 , ... ℓ=1,2,…पी 1 मैं ≥ 1 p1i≥1r ≥ 2 r≥2एस [ मैं - आर पी 1 मैं + 1 , मैं - पी 1 मैं ] = एस [ मैं - ( आर - 1 ) पी 1 आई + 1 , आई ] । S[i−rp1i+1,i−p1i]=S[i−(r−1)p1i+1,i].
पी1 मैंp1i r 1 मैंr1i आरrपीमैंpiएलमैं=0Li=0(पी ℓ मैं ,आर ℓ मैं )(pℓi,rℓi)
आज्ञा देना सबसे छोटा पूर्णांक है जो कड़ाई से बड़ा है संतोषजनक, इसी तरह,
कुछ । पहले की तरह, को अधिकतम होने के लिए निश्चित । सामान्य तौर पर सबसे छोटी ऐसी संख्या है जो से कड़ाई से बड़ी है । यदि ऐसा कोई मौजूद नहीं है, तो ।p 2 ip2i ( r 1 i - 1 ) p 1 i(r1i−1)p1i S [ i - r 2 i p 2 i + 1 , i - p 2 i ] = S [ i - ( r 2 i - 1 ) p 2 i + 1 , 1 मैं ] S[i−r2ip2i+1,i−p2i]=S[i−(r2i−1)p2i+1,i]
आर 2 मैं ≥ 2 r2i≥2आर 2 मैंr2i पी2ip2ipℓipℓi(rℓ−1i−1)pℓ−1i(rℓ−1i−1)pℓ−1ipℓipℓiLi=ℓ−1Li=ℓ−1
नोट प्रत्येक सूचकांक मैं के लिए, हमारे पास है कि के कारण मूल्यों के साथ ज्यामितीय बढ़ती । (यदि मौजूद है, तो यह कड़ाई से से बड़ा नहीं है, लेकिन इससे कम से कम । यह ज्यामितीय वृद्धि को स्थापित करता है। )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
मान लीजिए अब सभी मान हमें दिए गए हैं। न्यूनतम लागत पुनरावृत्ति
इस समझ के साथ कि हमने । तालिका समय में भरी जा सकती है ।(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)
हमने पहले से ही उस को शब्द द्वारा शब्द ऊपर देखा था । लेकिन वास्तव में अगर हम पूरे योग को देखें, तो हम कुछ तेज कर सकते हैं।∑jLj=O(∑jlog(j+1))=Θ(nlogn)∑jLj=O(∑jlog(j+1))=Θ(nlogn)
(यानी, के उपसर्ग वृक्ष के रिवर्स के प्रत्यय ट्री पर विचार करें । हम प्रत्येक योगदान को से एक किनारे लिए चार्ज करेंगे, ताकि प्रत्येक किनारे पर एक बार में शुल्क लिया जाए। प्रत्येक से निकलने वाले किनारे पर को चार्ज करें और । यहाँ अनुरूप उपसर्ग वृक्ष का पत्ता है और nca निकटतम सामान्य पूर्वज को दर्शाता है।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]
इससे पता चलता है कि । मान गणना समय में प्रत्यय वृक्ष के एक द्वारा की जा सकती है, लेकिन अगर किसी को दिलचस्पी है, तो मैं बाद में विवरण को छोड़ दूंगा।O(∑iLi)=O(n)O(∑iLi)=O(n)(pji,rji)(pji,rji)O(n+∑iLi)O(n+∑iLi)
मुझे पता है अगर यह समझ में आता है।