Mật khẩu regex NP-hard?


13

Tôi đã bị lừa vào một ngày khác trên trang web này: http://regexcrossword.com/ và nó khiến tôi tự hỏi cách tốt nhất để giải quyết nó là gì.

Bạn có thể giải quyết vấn đề sau trong thời gian đa thức hay là NP-hard?

Đưa ra một lưới NxM với N biểu thức chính quy cho các cột và M cho các hàng, tìm bất kỳ giải pháp nào cho lưới sao cho tất cả các biểu thức chính quy được thỏa mãn hoặc nói rằng không có giải pháp nào tồn tại.


Chưa nhìn vào trang này, nhưng các câu hỏi với Regexes có xu hướng hoàn thành PSPACE, một lớp ít nhất là khó như NP
jmite

1
@jmite Các chuỗi đoán phù hợp với một số biểu thức chính quy là "dễ dàng" vì chúng ta không phải lấy một số thuộc tính toàn cầu của biểu thức chính quy. Trên thực tế, tôi nghĩ vấn đề nằm ở NP (xem bình luận bên dưới câu trả lời của FrankW.)
Raphael

Câu trả lời:


11

Vấn đề là NP-hard.

Chúng tôi thể hiện điều này bằng cách giảm nắp đỉnh:

Cho một đồ thị và một ngưỡng k , là có một tập hợp con V 'V của cardinality tại hầu hết k , do đó mỗi cạnh trong E là sự cố với ít nhất một nút trong V ' ?G=(V,E)kVVkEV

Chúng tôi dịch điều này thành một ô chữ regex với cột và | V | các hàng như sau:|E|+1|V|

Tất cả các cột, ngoại trừ cột đầu tiên, tương ứng với một cạnh. Họ nhận được một regex .01(0|1)

Tất cả các hàng tương ứng với một đỉnh. Họ nhận được một biểu thức cho phép viết

  • một trong cột đầu tiên và mỗi cột tương ứng với một sự cố cạnh đó nút và zero trong tất cả các cột khác, hoặc1

  • 0

Cuối cùng, cột đầu tiên đếm kích thước của nắp đỉnh. Nó nhận được một regex, cho phép nhiều nhất là .k

Sự tương ứng giữa các giải pháp cho ô chữ regex và bìa đỉnh nên rõ ràng.

Thí dụ:

Tìm một nắp đỉnh có kích thước 2 cho đồ thị sau:

https://i.imgur.com/TY6sjjV.png

VA=0|10110

VB=0|11101

VC=0|10011

VD=0|11000

Counter=0|010|01010

E1=01(0|1)

E2=01(0|1)

E3=01(0|1)

E4=01(0|1)

VAVDCounterE1E4

VA,VBVC,VB

Counter0|010


2
Vì chúng ta có thể tính toán NFA có kích thước đa thức cho các biểu thức chính quy cũng như đoán b) giải pháp và c) (tính toán tuyến tính) của tất cả các NFA và d) xác minh (trong thời gian đa thức) rằng các phép tính phù hợp với các từ đã đoán, vấn đề cũng nằm ở NP.
Raphael

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.