Kết nối giữa chức năng tiền tố KMP và tự động khớp chuỗi


7

Để cho AP=(Q,Σ,δ,0,{m})các automaton chuỗi phù hợp cho mô hìnhPΣm, đó là

  • Q={0,1,,m}
  • δ(q,a)=σP(P0,qa) cho tất cả qQaΣ

với σP(w) độ dài của tiền tố dài nhất của P đó là một hậu tố của w, đó là

σP(w)=max{kN0P0,kw}.

Bây giờ, hãy π các chức năng tiền tố từ thuật toán Knuth-Morris-Pratt , đó là

πP(q)=max{kk<qP0,kP0,q} .

Hóa ra, người ta có thể sử dụng πP để tính toán δ một cách nhanh chóng; quan sát trung tâm là:

Giả sử các khái niệm trên và aΣ . Đối với q{0,,m} với q=m hoặc Pq+1a , nó giữ điều đó

δ(q,a)=δ(πP(q),a)

Nhưng làm thế nào tôi có thể chứng minh điều này?


Để tham khảo, đây là cách bạn tính toán πP :

m ← length[P ]
π[0] ← 0
k ← 0
for q ← 1 to m − 1 do
  while k > 0 and P [k + 1] =6 P [q] do
    k ← π[k]
    if P [k + 1] = P [q] then
       k ← k + 1
    end if
    π[q] ← k
 end while
end for

return π

3
Bạn có thể cung cấp thêm một chút chi tiết? Mô hình là gì? Chính xác thì hàm tiền tố là gì - Tôi không thấy hàm tiền tố trên liên kết bạn cung cấp? Là tự động xác định hoặc không xác định?
Dave Clarke

3
Đó không phải là định nghĩa của chức năng chuyển tiếp KMP sao? Bạn có thể thấy những ghi chú này hữu ích (nhưng xem chú thích 1).
JeffE

Tôi đã chỉnh sửa câu hỏi với chức năng tiền tố của KMP
Bob

1
Vì vậy, câu hỏi của bạn về cơ bản là làm thế nào để chứng minh rằng đoạn mã trên tính toán hàm tiền tố của KMP.
rgrig

2
@Raphael: Tôi thấy câu hỏi được chỉnh sửa ít dễ đọc hơn nhiều .
JeffE

Câu trả lời:


3

Trước hết, lưu ý rằng theo định nghĩa

  • δ(q,a)=σP(P0,qa)=:s1
  • δ(πP(q),a)=σP(P0,πP(q)a)=:s2 .

Hãy để chúng tôi điều tra và trong một bản phác thảo:s1s2

phác họa
[ nguồn ]

Bây giờ giả sử ; điều này mâu thuẫn với sự lựa chọn tối đa của trực tiếp. Nếu chúng tôi giả sử chúng tôi mâu thuẫn với thực tế là cả và đều được chọn tối đa, đặc biệt vì . Vì cả hai trường hợp đều dẫn đến mâu thuẫn giữ,s2>s1s1s1>s2 s2πP(q)πP(q)s11s1=s2


Theo yêu cầu, một phiên bản công phu hơn của bằng chứng:

Bây giờ chúng tôi phải hiển thị ; chúng tôi làm điều này bằng cách chỉ ra rằng điều ngược lại dẫn đến mâu thuẫn.s1=s2

  • Giả sử . Lưu ý rằng vì và theo định nghĩa của . Do đó, - tiền tố của hậu tố của - dài hơn , theo định nghĩa của là tiền tố dài nhất của đó là hậu tố của . Đây là một mâu thuẫn.s2>s1P0,s2P0,qaP0,s2P0,πP(q)aP0,πP(q)P0,qs2P0,s2P P0,qaP0,s1s1PP0,qa

Trước khi tiếp tục với trường hợp khác, chúng ta hãy xem . Quan sát rằng vì , chúng ta có . Giả sử rằng ngay lập tức mâu thuẫn với sự lựa chọn tối đa của ( nằm trong tập được chọn từ).πP(q)s11P0,s1P0,qaP0,s1P0,qπP(q)<s11πP(q)s11πP(q)

  • Giả sử . Chúng tôi vừa hiển thị và nhớ rằng . Do đó, mâu thuẫn với lựa chọn tối đa của ( nằm trong tập được chọn từ).s1>s2|P0,πP(q)a|s1P0,πP(q)aP0,qas1>s2s2s1s2

Vì và thể giữ được, chúng tôi đã chứng minh rằng ,s1>s2s2>s1s1=s2


Bạn có thể vui lòng biện minh cho câu trả lời của bạn cho hoặc không? q=mPq+1a

@SCO: Ý của bạn là "biện minh" là gì? Đây chỉ là một điều kiện trong tuyên bố đảm bảo rằng "tiền tố dài nhất của P là Hậu tố của w" được sử dụng.
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.