ถ้าฉันไม่เข้าใจคุณผิดฉันคิดว่าการคำนวณต้นทุนขั้นต่ำสามารถคำนวณได้ในเวลาดังต่อไปนี้O(n2)
สำหรับแต่ละดัชนี i เราจะคำนวณกลุ่มของค่าสำหรับดังนี้ ให้เป็นจำนวนเต็มที่เล็กที่สุดซึ่งมีจำนวนเต็มพอใจสำหรับนี้โดยเฉพาะปล่อยให้เป็นใหญ่ที่สุดด้วยคุณสมบัตินี้ หากไม่มีอยู่ให้ตั้งค่าเพื่อให้เรารู้ว่ามีค่าศูนย์สำหรับดัชนีนี้(pℓi,rℓi)ℓ=1,2,…p1i≥1r≥2S[i−rp1i+1,i−p1i]=S[i−(r−1)p1i+1,i].
p1ir1irpiLi=0(pℓi,rℓi)
ให้เป็นจำนวนเต็มที่เล็กที่สุดที่ใหญ่กว่าน่าพอใจเช่นเดียวกัน
สำหรับบาง2 เช่นเดียวกับก่อนที่จะใช้จะเป็นสูงสุดคนหนึ่งที่ได้รับการแก้ไข 2 โดยทั่วไปเป็นจำนวนดังกล่าวมีขนาดเล็กที่สุดอย่างเคร่งครัดใหญ่กว่าell-1} ถ้าไม่มีเช่นอยู่แล้วell-1p2i(r1i−1)p1iS[i−r2ip2i+1,i−p2i]=S[i−(r2i−1)p2i+1,i]
r2i≥2r2ip2ipℓi(rℓ−1i−1)pℓ−1ipℓiLi=ℓ−1
โปรดทราบว่าสำหรับแต่ละดัชนีฉันเรามีเนื่องจากค่าเพิ่มขึ้นเรขาคณิตกับ\(หากมีอยู่จริงมันไม่ใช่แค่ใหญ่กว่าแต่ใหญ่กว่านั้นอย่างน้อยสิ่งนี้ทำให้เกิดการเพิ่มขึ้นทางเรขาคณิต )Li=O(log(i+1))pℓiℓpℓ+1i(rℓi−1)pℓipℓi/2
สมมติว่าตอนนี้เรามอบค่าทั้งหมดให้เรา ต้นทุนขั้นต่ำจะได้รับจากการเกิดซ้ำ
ด้วยความเข้าใจว่าสำหรับเราตั้ง+ ตารางสามารถเติมเต็มในเวลา(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))}
i>jdp(i,j)=+∞O(n2+n∑jLj)
เราได้สังเกตเห็นแล้วว่าโดย จำกัด ขอบเขตผลรวมตามคำศัพท์ แต่ที่จริงถ้าเราดูผลรวมทั้งหมดเราสามารถพิสูจน์สิ่งที่คมชัดกว่า∑jLj=O(∑jlog(j+1))=Θ(nlogn)
พิจารณาคำต่อท้ายต้นไม้ของสิ่งที่ตรงกันข้ามของ (กล่าวคือต้นไม้คำนำหน้าของ S) เราจะเรียกเก็บเงินผลงานแต่ละรายการไปยัง sumไปยังขอบของเพื่อให้แต่ละส่วนได้รับการเรียกเก็บเงินไม่เกินครั้งเดียว ชาร์จแต่ละขอบเล็ดลอดออกมาจากและมุ่งหน้าไปยังญ) นี่เป็นใบของต้นไม้คำนำหน้าสอดคล้องกับและ NCA หมายถึงบรรพบุรุษที่ใกล้ที่สุดT(S←)S∑iLiT(S←)pjinca(v(i),v(i−pji))v(i−pji)v(i)S[1..i]
นี้แสดงให้เห็นว่า(n) ค่าสามารถคำนวณได้ในเวลาโดยการสำรวจเส้นทางของทรีต่อท้าย แต่ฉันจะให้รายละเอียดในการแก้ไขในภายหลังหากใครสนใจO(∑iLi)=O(n)(pji,rji)O(n+∑iLi)
แจ้งให้เราทราบหากนี่เหมาะสม