Z hàm số ( mở rộng KMP )
Ước định: Tự phù xuyến hạ tiêu lấy
Định nghĩa
Đối với một cái chiều dài vì
Nước ngoài giống nhau đem tính toán nên số tổ thuật toán xưng làZ Algorithm,Mà quốc nội tắc xưng này vìMở rộng KMP.
Áng văn chương này giới thiệu ở
Giải thích
Phía dưới bao nhiêu dạng lệ triển lãm đối với bất đồng tự phù xuyến Z hàm số:
Mộc mạc thuật toán
Z hàm số mộc mạc thuật toán phức tạp độ vì
Thực hiện
1 2 3 4 5 6 7 |
|
1 2 3 4 5 6 7 |
|
Tuyến tính thuật toán
Giống như đại đa số tự phù xuyến chủ đề sở giới thiệu thuật toán, này mấu chốt ở chỗ, vận dụng tự động cơ tư tưởng tìm kiếm hạn chế điều kiện hạ trạng thái dời đi hàm số, khiến cho có thể mượn dùng phía trước trạng thái tới gia tốc tính toán tân trạng thái.
Ở nên thuật toán trung, chúng ta từ
Đối với
Thuật toán trong quá trình chúng ta giữ gìn hữu điểm cuối nhất dựa hữu xứng đôi đoạn. Vì phương tiện, nhớ làm
Ở tính toán
- Nếu
,Như vậy căn cứ Định nghĩa có ,Bởi vậy .Lúc này:- Nếu
,Tắc . - Nếu không
,Lúc này chúng ta lệnh ,Sau đó bạo lực cái cử tiếp theo cái tự phù mở rộng Thẳng đến không thể mở rộng mới thôi.
- Nếu
- Nếu
,Như vậy chúng ta trực tiếp dựa theo mộc mạc thuật toán, từ Bắt đầu tương đối, bạo lực cầu ra . - Ở cầu ra
Sau, nếu ,Chúng ta liền yêu cầu đổi mới ,Cho dù .
Có thể phỏng vấnCái này trang webTới xem Z hàm số bắt chước quá trình.
Thực hiện
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Phức tạp độ phân tích
Đối với nội tầngwhile
Tuần hoàn, mỗi lần chấp hành đều sẽ khiến cho
Đối với ngoại tầng tuần hoàn, chỉ có một lần tuyến tính biến lịch.
Tổng phức tạp độ vì
Ứng dụng
Chúng ta hiện tại tới suy xét ở bao nhiêu cụ thể dưới tình huống Z hàm số ứng dụng.
Này đó ứng dụng ở rất lớn trình độ thượng cùngTiền tố hàm sốỨng dụng cùng loại.
Xứng đôi sở hữu tử xuyến
Vì tránh cho lẫn lộn, chúng ta đem
Vì giải quyết này vấn đề, chúng ta cấu tạo một cái tân tự phù xuyến
Đầu tiên tính toán
Lúc đó gian phức tạp độ ( đồng thời cũng là này không gian phức tạp độ ) vì
Bản chất bất đồng tử xuyến số
Cấp định một cái chiều dài vì
Suy xét tính toán tăng lượng, tức ở biết trước mặt
Lệnh
Thiết xuyến
Cho nên, đem tự phù
Thuật toán thời gian phức tạp độ vì
Đáng chú ý chính là, chúng ta có thể dùng đồng dạng phương pháp ở
Tự phù xuyến chỉnh chu kỳ
Cấp định một cái chiều dài vì
Suy xét tính toán
Nên sự thật chứng minh cùng ứng dụngTiền tố hàm sốChứng minh giống nhau.
Luyện tập đề mục
- CF126B Password
- UVa # 455 Periodic Strings
- UVa # 11022 String Factoring
- UVa 11475 - Extend to Palindrome
- LA 6439 - Pasti Pas!
- Codechef - Chef and Strings
- Codeforces - Prefixes and Suffixes
- Leetcode 2223 - Sum of Scores of Built Strings
Bổn giao diện chủ yếu dịch tự bác vănZ-функция строки и её вычислениеCùng với tiếng Anh phiên dịch bảnZ-function and its calculation.Trong đó tiếng Nga bản bản quyền hiệp nghị vì Public Domain + Leave a Link; tiếng Anh bản bản quyền hiệp nghị vì CC-BY-SA 4.0.
Bổn giao diện gần nhất đổi mới:2024/2/17 00:18:55,Đổi mới lịch sử
Phát hiện sai lầm? Tưởng cùng nhau hoàn thiện?Ở GitHub thượng biên tập này trang!
Bổn giao diện cống hiến giả:iamtwz,LeoJacob,minghu6,countercurrent-time,Dfkuaid,Enter-tainer,ethanrao,gi-b716,ksyx,Marcythm,Menci,NachtgeistW,ouuan,pengxurui,shawlleyw,sshwy,StudyingFather,SukkaW,TrisolarisHD,weiyong1024,Xeonacid
Bổn giao diện toàn bộ nội dung ởCC BY-SA 4.0CùngSATAHiệp nghị chi điều khoản hạ cung cấp, phụ gia điều khoản cũng khả năng ứng dụng