คำฟีโบนัชชี


11

ฉันเจอปัญหาต่อไปนี้ในตำราเรียนภาษาอัลกอริทึมเก่าของฉัน แต่น่าเสียดายที่ไม่มีคำแนะนำหรือวิธีแก้ปัญหา

"เรากำหนดคำ Fibonacci เป็น , F 1 = b , F n + 2 = F n F n + 1โดยที่aและbเป็นตัวอักษรทั่วไปวิธีในสตริงที่กำหนด ค้นหาคำย่อยของ Fibonacci ที่ยาวที่สุดในเวลาเชิงเส้นหรือไม่ "F0=aF1=bFn+2=FnFn+1ab

ฉันรู้วิธีแก้ปัญหาในเวลากำลังสอง แต่ไม่สามารถลดลงเป็นเส้นตรง ใครช่วยชี้ทางให้ฉันได้?


3
ชื่อหนังสือตำราเรียนอัลกอริธึมเก่าแก่เล่มนี้คืออะไร
Saeed

คำศัพท์ย่อยจำเป็นต้องต่อเนื่องกัน (เช่นปัจจัย) ในหนังสือเล่มนี้หรือไม่
Klaus Draeger

คำตอบ:


12

F(i,j)ijF(i2,j)F(i1,j+fib(i))O(nlogn)i.

O(n/fib(i))F(i2,j)F(i2,j)F(i,j)O(n)ii2i

FO(nlogn)FO(n) logn


คุณบอกฉันได้ไหมว่าทำไมคุณคิดว่าการเขียนโปรแกรมแบบไดนามิกจะเป็นตัวเลือกที่ดีที่สุดสำหรับปัญหานี้ ที่เราจะประสบปัญหาถ้าเราใช้การเขียนโปรแกรมแบบคงที่เช่นC ?
tarit goswami

1
การเขียนโปรแกรมแบบไดนามิกเป็นเทคนิคการออกแบบอัลกอริทึมไม่ใช่คลาสของภาษาโปรแกรม
David Eppstein
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.