regex golf NP-Complete หรือไม่


27

เท่าที่เห็นในแถบ XKCD ที่ผ่านมานี้และโพสต์บล็อกล่าสุดนี้จาก Peter Norvig (และ Slashdot เนื้อเรื่องหลัง), "regex golf" (ซึ่งอาจเรียกได้ว่าเป็นปัญหาการแยกนิพจน์ทั่วไป) เป็นปริศนาของการกำหนดนิพจน์ปกติที่สั้นที่สุดที่เป็นไปได้ที่ยอมรับทุกคำในเซต A และไม่มีคำใน โพสต์ของ set B. Norvig มีอัลกอริธึมสำหรับการสร้างผู้สมัครที่มีเหตุผลสั้น ๆ และเขาสังเกตว่าวิธีการของเขาเกี่ยวข้องกับการแก้ปัญหาชุด NP-complete แต่เขาก็ระมัดระวังที่จะชี้ให้เห็นว่าวิธีการของเขานั้น และแน่นอนว่าเขาไม่จำเป็นต้องเป็นอัลกอริธึมเท่านั้นดังนั้นวิธีแก้ปัญหาของเขาจึงไม่รับประกันว่าจะดีที่สุดและเป็นไปได้ว่าอัลกอริธึมแบบพหุนามเวลาอื่น ๆ สามารถหาวิธีแก้ปัญหาที่เทียบเท่าหรือดีกว่าได้

เพื่อประโยชน์ของ concreteness และเพื่อหลีกเลี่ยงการแก้ไขคำถามการปรับให้เหมาะสมฉันคิดว่าสูตรที่เป็นธรรมชาติที่สุดของการแยกนิพจน์ปกติคือ:

ให้สอง (จำกัด ) ชุดและBของสายอักขระบางตัวΣ , มีการแสดงออกปกติของความยาวkที่ยอมรับทุกสายในAและปฏิเสธทุกสายในB ?ABΣkAB

มีความรู้เกี่ยวกับความซับซ้อนของปัญหาการแยกนี้หรือไม่? (โปรดทราบว่าเนื่องจากฉันได้ระบุและBเป็นชุด จำกัด ของสตริงความคิดตามธรรมชาติของขนาดสำหรับปัญหาคือความยาวทั้งหมดของสตริงทั้งหมดในAและBซึ่งจะเพิ่มการสนับสนุนจากk ) ดูเหมือนว่าเป็นไปได้สูงที่ฉันจะใช้ NP-Complete (และในความเป็นจริงฉันคาดว่าการลดลงของปัญหาการปกปิดบางส่วน) แต่การค้นหาบางอย่างไม่ได้เปิดใช้งานอะไรที่มีประโยชน์เป็นพิเศษABABk


4
มันอยู่ใน NP หรือเปล่า? เมื่อใช้นิพจน์ทั่วไปคุณจะตรวจสอบว่าคำนั้นเป็นภาษาที่อธิบายในเวลาพหุนามหรือไม่ วิธีมาตรฐาน - เปลี่ยนเป็น NFA จากนั้น DFA และ check - ใช้เวลาเอ็กซ์โพเนนเชียลเป็น (?) k
กราฟิลส์

1
ควรเสร็จสมบูรณ์ด้วย PSPACE ดู (Gramlich, Schnitger, การลด NFAs และนิพจน์ปกติ, 2005) ที่ggramlich.github.io/Publications/approximationSTACS05Pres.pdfและciteseerx.ist.psu.edu/viewdoc/ (PS: ฉันโพสต์สิ่งนี้เป็นความคิดเห็น เพราะคำตอบควรจะอธิบายว่าทำไม แต่ผมไม่ได้มีเวลาที่จะทำเช่นนั้นในขณะที่บางทีคนอื่นสามารถใช้อ้างอิงและอธิบายวิธีการทำงาน)
rgrig

1
สำหรับนิพจน์ทั่วไปตามที่เข้าใจใน TCS ปัญหาอยู่ใน NP (ใบรับรองขนาดพหุนามและตรวจสอบได้ในเวลาพหุนามจะเป็นนิพจน์ทั่วไปเอง) มัน (อาจ) ไม่ได้อยู่ใน NP ถ้าเราใช้เช่น PCREs สำหรับการแสดงออกปกติเพราะแม้แต่การทดสอบการเป็นสมาชิกก็คือ NP-hard ( perl.plover.com/NPC/NPC/NPC-3SAT.html )
Mike B.

1
@MikeB: แล้วคุณเช็คอินเวลาพหุนามอย่างไร คุณเห็นความคิดเห็นโดย @Raphael หรือไม่
rgrig

5
(1) คุณสามารถเรียกใช้อัลกอริทึมที่กำหนดไว้ใน P เพื่อทดสอบการเป็นสมาชิกของ NFAs (เริ่มต้นที่สถานะเริ่มต้นและจดจำสถานะทั้งหมดที่คุณสามารถทำได้หลังจากใช้สัญลักษณ์ของคำนั้นมาถึงจุดสิ้นสุดตรวจสอบว่าคุณมาถึงอย่างน้อย หนึ่งสถานะสุดท้าย) (2) มันขึ้นอยู่กับคำจำกัดความของ "การแสดงออกปกติ" - เราใช้นักวิทยาศาสตร์คอมพิวเตอร์หนึ่งคนหรือหนึ่งในโปรแกรมเมอร์หรือไม่? เราอนุญาตให้ใช้เฉพาะภาษาปกติหรือ (ภาษาย่อย) บริบทที่ละเอียดอ่อน (ดังนั้น PCREs) หรือไม่
Mike B.

คำตอบ:


15

สมมติว่าตัวแปร TCS ของ regex ปัญหานั้นคือปัญหา NP-complete

เราคิดว่า regexes ของเรามี

  • ตัวอักษรจากจับคู่ตัวเองΣ
  • , แสดงถึงการรวมกัน+
  • , denoting concatenation
  • , แสดงถึง Kleene-Star,* * * *
  • จับคู่สตริงว่างλ

และไม่มีอะไรอื่น ความยาวของ regex ถูกกำหนดให้เป็นหมายเลขของตัวละครจากΣในการ์ตูนสตริปเราพิจารณา regex เพื่อจับคู่คำหากตรงกับสตริงย่อยของคำ (การเปลี่ยนแปลงข้อสมมติฐานเหล่านี้ควรมีผลเฉพาะความซับซ้อนของการก่อสร้างด้านล่าง แต่ไม่ใช่ผลทั่วไป)Σ

ว่ามันอยู่ใน NP ตรงไปตรงมาตามที่อธิบายไว้ในความคิดเห็น (ตรวจสอบผู้สมัคร - RE โดยการแปลมันเป็น NFA และใช้มันในทุกคำจากและB )AB

ในการแสดงความแข็งของเอ็นพีเราลดการตั้งค่าฝาครอบ:

กำหนดจักรวาลและชุดCของส่วนย่อยของUจะมีชุดC 'Cขนาดkเพื่อให้S C ' S = U ?ยูCยูC'CkSC'S=ยู

เราแปลอินพุตสำหรับ Set cover เป็นหนึ่งสำหรับ regex golf ดังนี้:

  • มีอักขระหนึ่งตัวสำหรับแต่ละชุดย่อยใน Cและอีกหนึ่งอักขระ (แทนด้วย xในรายการต่อไปนี้)ΣCx
  • มีคำหนึ่งสำหรับแต่ละองค์ประกอบอีเมลของU คำนี้ประกอบด้วยอักขระที่แสดงถึงชุดย่อยใน Cที่มี e (ตามลำดับโดยพลการ)AอียูCอี
  • มีคำเดียวxBx
  • จะถูกยกไปk

การลดลงนี้เห็นได้ชัดใน P และความเท่าเทียมกันก็ค่อนข้างง่ายที่จะเห็น:

  • ถ้าเป็นวิธีแก้ปัญหาสำหรับอินสแตนซ์ของ set set, regex c 1 + + c kเป็นวิธีแก้ปัญหาสำหรับ regex golf1,...,k1++k
  • regex จับคู่ subword ว่างจะตรงกับxดังนั้น regex ใด ๆ การแก้ปัญหากอล์ฟที่มีการมีอย่างน้อยหนึ่งตัวอักษรจากแต่ละคำใน ดังนั้นหากอินสแตนซ์กอล์ฟสามารถแก้ไขได้มีชุดของตัวอักษรkมากที่สุดจากΣเพื่อให้แต่ละคำในAถูกปกคลุมด้วยตัวอักษรชุดนี้ โดยการก่อสร้างชุดย่อยที่สอดคล้องกันจากCเป็นวิธีการแก้ปัญหาไปยังอินสแตนซ์ครอบคลุมชุดxAkΣAC

1
ดีมากให้ฉันเพิ่ม 2 คะแนนเพื่อความสมบูรณ์: (1) ในฐานะข้อสันนิษฐานเพิ่มเติมเกี่ยวกับสเปคปัญหาและBต้องเป็นเซต จำกัด (และองค์ประกอบทั้งหมดมีการแจกแจงอย่างชัดเจน?) (2) ขนาดของผู้สมัคร RE อยู่ในO ( n )ตั้งแต่1ABO(n)เป็นผู้สมัครที่ถูกต้องและมีขนาดใน O ( n )ดังนั้นสำหรับทุกขนาดใหญ่ kคำตอบคือจริงนิด a1+a2+...,aผมAO(n)k
Mike B.

2
@ ไมค์ B: (1): ความวิจิตรของและBนั้นได้ถูกกำหนดในคำถาม ในทฤษฎีความซับซ้อนการแสดงรายการแบบละเอียดเป็นวิธีเริ่มต้นของการแสดงเซต จำกัด (2) ย่อมเป็นข้อโต้แย้งที่จำเป็นหากต้องการสร้างส่วน "in NP" อย่างเข้มงวด AB
FrankW
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.