1. Trang chủ
  2. » Luận Văn - Báo Cáo

Chuyên đề Công nghệ phần mềm PTIT Các thuật toán đối sánh mẫu

74 297 5

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Các Thuật Toán Đối Sánh Mẫu
Tác giả Nguyễn Chí Công
Người hướng dẫn Nguyễn Duy Phương
Trường học Học Viện Công Nghệ Bưu Chính Viễn Thông
Chuyên ngành Công nghệ phần mềm
Thể loại Báo cáo
Năm xuất bản 2021
Thành phố Hà Nội
Định dạng
Số trang 74
Dung lượng 1,04 MB

Cấu trúc

  • I. Các thuật toán đối sánh mẫu (3)
  • II. Phân loại các thuật toán đối sánh mẫu (4)
  • III. Trình bày các thuật toán tìm kiếm mẫu từ trái qua phải (5)
    • 1. Brute Force algorithm (4)
    • 2. Search with an automaton (4)
    • 3. Karp-Rabin algorithm (4)
    • 4. Shift Or algorithm (4)
    • 5. Morris - Pratt algorithm (4)
    • 6. Knuth-Morris-Pratt algorithm (4)
    • 7. Apostolico-Crochemore algorithm (4)
    • 8. Not so naive algorithm (4)
  • IV. Trình bày các thuật toán tìm kiếm mẫu từ phải qua trái (35)
    • 1. Boyer Moore algorithm (4)
    • 2. Zhu .................................................................................................... Kataoka algorithm (39)
    • 3. Berry-Ravindran algorithm (41)
    • 4. Turbo-BM algorithm (44)
    • 5. Tuned boyer-moore algorithm (48)
    • 6. Apostolico-giancarlo algorithm (51)
    • 7. Quick Search algorithm (4)
  • V. Trình bày các thuật toán tìm kiếm mẫu từ vị trí cụ thể (57)
    • 1. Colussi algorithm (5)
    • 2. Skip Search Algorithm (5)
    • 3. Alpha Skip Search Algorithm (5)
  • VI. Trình bày các thuật toán tìm kiếm mẫu từ vị trí bất kỳ (66)
    • 1. Horspool algorithm (5)
    • 2. Smith algorithm (5)
    • 3. Raita algorithm (5)

Nội dung

Các thuật toán đối sánh mẫu, thuật toán tìm kiếm mẫu từ trái qua phải, thuật toán tìm kiếm mẫu từ phải qua trái, thuật toán tìm kiếm mẫu từ vị trí cụ thể, thuật toán tìm kiếm mẫu từ vị trí bất kỳ

Các thuật toán đối sánh mẫu

1 Thuật toán Knuth-Morris-Partt

5 Thuật toán Automat hữu hạn

25 Backward Nondeterministic Dawg 2.38 Matching algorithm

Phân loại các thuật toán đối sánh mẫu

Phân loại các thuật toán:

Nhóm 1: các thuật toán duyệt từ trái sang phải:

Nhóm 2: các thuật toán duyệt từ phải sang trái:

Nhóm 3: các thuật toán duyệt tại vị trí cụ thể:

Nhóm 4: các thuật toán duyệt tại vị trí bất kỳ:

Trình bày các thuật toán tìm kiếm mẫu từ trái qua phải

Not so naive algorithm

Nhóm 2: các thuật toán duyệt từ phải sang trái:

Nhóm 3: các thuật toán duyệt tại vị trí cụ thể:

Nhóm 4: các thuật toán duyệt tại vị trí bất kỳ:

III Trình bày các thuật toán tìm kiếm mẫu từ trái qua phải

- Không có pha chuẩn bị

- Bộ nhớ cần dùng cố định

- Luôn luôn dịch 1 bước sang phải

- Việc so sánh có thể phải dùng trong các trường hợp

- Độ phức tạp pha thực thi là O(m x n)

Thuật toán Brute Force thực hiện việc kiểm tra tất cả các vị trí trong đoạn văn bản từ 0 đến n-m mà không cần xác định sự tồn tại của mẫu tại các vị trí đó Sau mỗi lần kiểm tra, mẫu sẽ được dịch sang phải một vị trí.

- Yêu cầu xây dựng automaton đơn định (DFA)

- Pha xử lý có độ phức tạp tính toán là O(n∂)

- Quá trình tìm kiếm có độ phức tạp là O(n) Trường hợp DFA đươc xây dựng bằng cây cân bằng thì độ phức tạp là O(n*log(∂))

Trong thuật toán DFA, quá trình tìm kiếm được chuyển thành một quá trình biến đổi trạng thái của automat Hệ thống automat được xây dựng dựa trên xâu mẫu, trong đó mỗi trạng thái (nút) đại diện cho số ký tự khớp giữa mẫu và văn bản Các ký tự trong văn bản sẽ tác động đến việc thay đổi các trạng thái, và khi đạt được trạng thái cuối cùng, điều đó có nghĩa là đã tìm thấy vị trí xuất hiện của mẫu trong văn bản.

Thuật toán DFA tương tự như thuật toán Knuth-Morris-Pratt ở điểm nhảy về trạng thái trước khi gặp ký tự không khớp, nhưng nó có độ chính xác cao hơn Điều này là do DFA xác định vị trí nhảy dựa trên ký tự không khớp trong văn bản, trong khi KMP chỉ dựa vào vị trí không khớp.

Việc xây dựng hệ automat trên ma trận kề khá đơn giản với thời gian xử lý O(n) và bộ nhớ O(m*d), nhưng trong DFA chỉ có tối đa m cung thuật và m cung nghịch Do đó, việc lưu trữ các cung có thể sử dụng cấu trúc danh sách kề Forward Star thay vì ma trận kề, giúp giảm thời gian chuẩn bị và bộ nhớ xuống còn O(m) Tuy nhiên, thời gian tìm kiếm có thể tăng nhẹ so với việc sử dụng ma trận kề.

Pha tiền xử lý xây đựng DFA:

2.4 Chương trình chạy package traisangphai.Automaton; public class Demo_Automaton { public static void main(String[] args) { char[] pat = "ABCABAB".toCharArray(); char[] txt = "ABABDABACDABABCABAB".toCharArray(); searchAtm(pat, txt);

The function `getNextState` is designed to determine the next state in a pattern matching algorithm It takes an array of characters representing the pattern, its length, the current state, and a character `x` as input If the current state is less than the pattern's length and the character at that state matches `x`, the function returns the next state If not, it checks for potential matches by iterating backwards through the pattern The function compares characters to find the longest prefix that matches the suffix, ultimately returning the new state based on the findings.

} static void compute(char[] pat, int M, int[][] TF) { int state, x; for (state = 0; state 1); return (int) lim;

} static void searchSO(char[] x, char[] y) { int m = x.length; int n = y.length; long lim, state; long[] S = new long[256]; int j; lim = preSo(x, m, S); for (state = ~0, j = 0; j < n; ++j) { state = (state

Ngày đăng: 03/07/2021, 14:19

HÌNH ẢNH LIÊN QUAN

Hình 3.1 : Dịch chuyển trong thuật toán Morris-Pratt - Chuyên đề Công nghệ phần mềm PTIT  Các thuật toán đối sánh mẫu
Hình 3.1 Dịch chuyển trong thuật toán Morris-Pratt (Trang 22)
Bảng bmGs và bmBc được tính toán trong thời gian O(m+σ) trước khi thực hiện  tìm kiếm và cần 1 không gian phụ là O(m+σ) - Chuyên đề Công nghệ phần mềm PTIT  Các thuật toán đối sánh mẫu
Bảng bm Gs và bmBc được tính toán trong thời gian O(m+σ) trước khi thực hiện tìm kiếm và cần 1 không gian phụ là O(m+σ) (Trang 36)

TỪ KHÓA LIÊN QUAN

w