ตัวอย่างที่อัลกอริทึม Knuth-Morris-Pratt เร็วกว่า Boyer-Moore?


10

หน้านี้เกี่ยวกับอัลกอริทึม Knuth-Moriss-Pratt เทียบกับ Boyer-Moore อธิบายกรณีที่เป็นไปได้ที่อัลกอริทึม Boyer-Moore ทนทุกข์ทรมานจากระยะทางข้ามขนาดเล็กในขณะที่ KMP สามารถทำงานได้ดีขึ้น
ฉันกำลังมองหาตัวอย่างที่ดี (ข้อความรูปแบบ) ที่สามารถแสดงให้เห็นถึงกรณีนี้ได้อย่างชัดเจน


คำตอบ:


3

มีกระดาษที่ทำการทดสอบที่ดีเกี่ยวกับอัลกอริทึมการจับคู่สตริงเหล่านี้สำหรับรูปแบบที่แตกต่างกัน: " การเปรียบเทียบอัลกอริทึมการจับคู่สตริง: ความช่วยเหลือเพื่อความปลอดภัยของเนื้อหาข้อมูล "

นอกจากนี้ยังมีการศึกษาขั้นตอนวิธีการจับคู่สตริงสำหรับภาษาญี่ปุ่น: การเปรียบเทียบและปรับปรุงอัลกอริทึมการจับคู่สตริงสำหรับข้อความภาษาญี่ปุ่น

ฉันหวังว่าสิ่งเหล่านี้มีประโยชน์ในการทำความเข้าใจเกี่ยวกับประสิทธิภาพของอัลกอริทึม!


3

รูปแบบเหล่านี้จะทำให้ KMP ทำงานได้เร็วขึ้น:

T = aaaaaaaaaa P = aaaa KMP จะลอง 10 ขั้นตอนเปรียบเทียบเมื่อ Boyer-Moore ใช้เวลา 28

ตัวอย่างอื่น:

T = aaaaaaaaaa P = abab KMP จะลอง 8 เปรียบเทียบขั้นตอนที่ BM จะลอง 12


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