Đạo hàm Brzozowski (Brzozowski derivative) là một kĩ thuật cài đặt động cơ regex không cần dựng NFA tường minh: đạo hàm Dc(r) của biểu thức r theo kí tự c mô tả phần ngôn ngữ còn lại sau khi đã "nuốt" kí tự c; xâu w=c1c2…cn khớp toàn phần r khi và chỉ khi biểu thức Dcn(…Dc1(r)) là nullable (chấp nhận xâu rỗng). Cho biểu thức chính quy r theo văn phạm:
.), ví dụ ab là a nối b;| là toán tử hội;* (hậu tố) là lặp Kleene;( ) để nhóm.Với mỗi xâu truy vấn, hãy xác định xâu đó có khớp toàn bộ (từ đầu đến cuối) biểu thức r hay không.
Dòng 1: biểu thức chính quy r (không khoảng trắng, độ dài ≤60, hợp lệ theo văn phạm trên).
Dòng 2: số nguyên k — số xâu truy vấn.
k dòng tiếp theo, mỗi dòng một xâu chữ cái thường cần kiểm tra (xâu rỗng biểu diễn bằng @).
k dòng, mỗi dòng ACCEPT hoặc REJECT.
Ví dụ: r= a(b|c)*d, xâu abcbd cho kết quả ACCEPT.
Ví dụ:
Đầu vào:
a(b|c)*d
5
ad
abcbd
a
abd
abce
Đầu ra:
ACCEPT
ACCEPT
REJECT
ACCEPT
REJECT
Đầu vào:
(a|b)(a|b)
5
aa
ab
ba
a
abc
Đầu ra:
ACCEPT
ACCEPT
ACCEPT
REJECT
REJECT
Đang tải editor...