นี่คือปัญหา:
สมมติว่า S คือชุดของสตริง และเราทราบความยาวรวมของสตริงทั้งหมดใน S ใน n เราต้องหาโครงสร้างข้อมูลที่มีช่องว่าง O(n) ที่ค้นหา LCP(s,t) ใน O(1) โดยที่ LCP เป็นคำนำหน้าทั่วไปที่ยาวที่สุดระหว่างสตริง ส,ที.
ตอนแรกฉันคิดว่าสามารถใช้แฮชได้เนื่องจากเราสามารถตรวจสอบตัวเลขในเวลาคงที่และค้นหาสตริงย่อยในเวลาคงที่ได้หากเราแฮชสตริงล่วงหน้า แต่ฉันไม่คิดว่าวิธีนี้จะได้ผลเนื่องจากมันต้องการพื้นที่มากขึ้นและหลังจากนั้นสักครู่ การค้นหา ฉันพบว่าวิธีแก้ปัญหาอาจอยู่ที่การใช้ Trie's, Suffix arrays และอาจเป็น LCA และ RMQ ฉันคิดว่าฉันเกือบจะได้คำตอบแล้ว แต่ไม่รู้ว่าแนวคิดเหล่านี้จะทำงานร่วมกันเพื่อสร้างโครงสร้างข้อมูลที่ให้ LCP ได้อย่างรวดเร็วได้อย่างไร
ขอบคุณสำหรับการอ่าน
sqrt(n)
และมีสตริงsqrt(n)
หรือไม่ - person Yonlif   schedule 03.01.2020n
- person FrastoFresto   schedule 03.01.2020sqrt(n)
- person Yonlif   schedule 03.01.2020O(length of prefix)
เนื่องจากคุณไม่สามารถสร้างสตริงเพื่อส่งคืนเร็วกว่านั้นได้ ฉันคิดว่านี่จะต้องเป็นคำตอบ มีวลีเช่นสตริงที่มีความยาวคงที่อยู่ในคำอธิบายดั้งเดิมหรือไม่ - person btilly   schedule 03.01.2020