การจับคู่รูปแบบโดยไม่สนใจ: หลายรูปแบบ


9

กระดาษ SODA 2 หน้าของ Kalaiให้อัลกอริธึมที่ง่ายและมีประสิทธิภาพสำหรับการจับคู่รูปแบบโดยไม่ต้องสนใจ (wildcard ที่ตรงกับอักขระหนึ่งตัว) ในสาระสำคัญมันเป็นเรื่องง่ายเหมือนการโน้มน้าวใจ

แต่จะเกิดอะไรขึ้นหากเราค้นหาลวดลายหลาย ๆรูปแบบโดยไม่สนใจ? เราสามารถยังคงแก้ปัญหาด้วยเทคนิคที่อิงกับ FFT ได้หรือไม่?

คำตอบ:


5

สำหรับกรณีที่มีรูปแบบหลากหลายดูเหมือนว่าการสแกนหาแต่ละอย่างอาจเป็นทางออกที่ดีที่สุดอย่างน้อยที่สุดเว้นแต่ว่าสมมติฐานเวลาแบบเอ็กซ์โปเนนเชียลที่แข็งแกร่งจะล้มเหลว

จำได้ว่าชุดที่กำหนด S1,S2,,Sn และ T1,T2,,Tn เหนือจักรวาล [m]ถ้าเราสามารถตัดสินใจได้ว่ามี Si และ Tj ดังนั้น SiTj=[m] ภายในเวลาที่กำหนด O(n2-εโรงเรียนสารพัดช่าง(ม.))จากนั้น SETH ล้มเหลวนั่นคือเรามีอัลกอริทึม CNF-SAT พร้อมเวลาทำงาน O* * * *(2(1-ε/2)n).

ชุดที่กำหนด S1,S2,...,Sn และ T1,T2,...,Tnเราเข้ารหัสปัญหาข้างต้นเนื่องจากการจับคู่หลายรูปแบบโดยไม่สนใจตัวอักษรไบนารีดังต่อไปนี้:

  • ข้อความคือ
    1[T1]10ม.+21[T2]10ม.+2...0ม.+21[Tn]1,
    ที่ไหน [Tผม] เป็นการเข้ารหัสตามธรรมชาติของ Tผม เป็นสตริงไบนารี
  • เรามี n รูปแบบของรูปแบบ 1Sผม1ที่ไหน Sผม เป็นสตริง Y=Y1Y2...Yม. ดังนั้น YJ=1 ถ้า JSผม และ YJ=* * * * ถ้า JSผม (ที่นี่ * * * * เป็นสัญลักษณ์ที่ไม่สนใจ)

ตอนนี้มันชัดเจนว่าเป็นรูปแบบ 1Sผม1 สามารถจับคู่ข้อความเมื่อมีเหตุการณ์ 1[TJ]1และเฉพาะเมื่อ SผมTJ=[ม.]. ความยาวรวมของรูปแบบและความยาวของข้อความมีทั้งO(nม.)ตัวอย่างเช่นอัลกอริทึม single-pass ใกล้เชิงเส้นสำหรับหลายรูปแบบจะให้การปรับปรุงที่สำคัญกว่าอัลกอริทึม CNF-SAT ที่รู้จักกันดี ...

(โปรดทราบว่านี่ไม่ได้พูดอะไรเกี่ยวกับอัลกอริทึมที่ใช้เวลามากมายในการประมวลผลรูปแบบล่วงหน้าพูดเป็นกำลังสองในความยาวทั้งหมดของรูปแบบ)

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