1 Ý tưởng của phần cải tiến thuật toán tìm next(k) trong KMP Sun Feb 05, 2012 3:36 pm
daotrang
Thành viên bắt đầu chia sẻ
Trong phần giới thiệu về thuật toán so khớp chuỗi KMP trên lớp (phần slide thầy đã gửi) có trình bày thuật toán xây dựng bảng next(k) thứ 2. Phần giả mã:
Tính next(k), k= 1, 2, ...,m
FOR(k=2;k<=m;k++)
r = k-1;
j = 1;
WHILE (j>0)
{
WHILE((r>0)&&(P[r]==P[k]))r--;
j=r-1;i=k-1;
WHILE ((j>0)&&(P[j]==P[i])){j--;i--;}
if (j>0) r--;
}
next[k]=r;
Em đọc mãi mà chưa tìm ra ý tưởng cải tiến bảng next(k)ở đây. Bác nào biết xin vui lòng chỉ giáo hay có ý tưởng gì đưa lên góp ý cho em với. Thank you so much :)
Tính next(k), k= 1, 2, ...,m
FOR(k=2;k<=m;k++)
r = k-1;
j = 1;
WHILE (j>0)
{
WHILE((r>0)&&(P[r]==P[k]))r--;
j=r-1;i=k-1;
WHILE ((j>0)&&(P[j]==P[i])){j--;i--;}
if (j>0) r--;
}
next[k]=r;
Em đọc mãi mà chưa tìm ra ý tưởng cải tiến bảng next(k)ở đây. Bác nào biết xin vui lòng chỉ giáo hay có ý tưởng gì đưa lên góp ý cho em với. Thank you so much :)