Алгоритм Шрайера — Симса
- 1 year ago
- 0
- 0
???????? ??? — ??????? — ???????? ?????? ????????? , ????????????? ????????? ??? ? ? 1975 ???? , ????????? ????? ????????? ???????? ?? ??????? ? ?????? ?????? .
?????? ??????????? ? ????????? ??????????? ???????????, ????????, ???????????? ? ??????? ?????? grep .
{a, ab, bc, bca, c, caa}
. ????? ??????? ?????????????, ????? ????????. ????? ??????? — ?????????? ??????, ??????? — ????????.
???????? ?????? ???????? ??????? , ???????? ????? ???????? ?????? ??????. ??????? ???????? ?? ??????? ??? ??????? ?????? ? ????????? ?? ??????????????? ??????. ???? ??????? ?????? ? ???????? ?????????, ??????????????? ?????? ??????? ???????????? ? ?????? ??????.
????????? ????? ?????? ????? ?????????? ? ?????? ??????, ??? ?????????? ??? (?????????? ??????). ??? ???????? ???????? ?????????, ???????????? ???? ?????? ?? — ?? ??? ???????, ??? ?????? ?????? ????????.
?????? ?????? ? ????????? — ??????? ??????? «?????????????????????», ???? ????????? ?? ???????. ??? ???? ??????? ???????? ? ????????? ????????? ??? ????? ???????????? ????? ?? ????????, ??? ??? ??? ????? ???????? ? ???????? ????????? (????????, ??? ?????? ??????
aabab
, ??????????
aab
aabab
, ????? ?????????? ?????? ??????? ??????? ???????? ? ???????? ????????? ???????? ? ???????? ????????? — ????? ???? ?? ??????? ? ?????????
a
, ? ????? ????? ?????????? ????? ??????). ????? ??????? ????????????????????, ? ???? ??????????? ?????????? ??????, ??????????? ?????? ???????? ? (??? ??? ????????????????? ??????? ???????????? ? ???????????????????). ????????, ???? ????????? ??????
aaba
, ?? ???? ???????????? ????????
aba
,
ba
,
a
. ?????????? ?????? — ??? ?????? ?? ????, ??????????????? ?????? ???????? ????????, ??????? ?? ??????? ??? ? ????? (? ?????? ??????
a
).
??? ????????? ???? ?????????? ?????? — ?????. ??? ????????? ??????? ??????: ???? ????????? ???????????? ?????? — , ?? ?????????????? ????? ?? ?????????? ?????? ????????, ???? ?????? ???? ????, ??????????? ???????? , ?????????? ?????? ???????????? ? ??? ????, ???? ??? ???? ?????. ????? — ???????? ???????? ?? ?????????? ?????? ??? ? ??? ???, ???? ???? ?? ??????? ?? ???????? ??????-?????, ???? ?? ?????? ????, ??????????? ???????? .
* ···Ø···> * ···Ø···> * ···Ø···> * | | c c ? ? [*] ·············Ø··············> * ????? ?????????? ??????
???? ??????? ???????????????????. ?????????????? ???????????????????? ????????? ???????? ? ????????????????? ? ????? ?????? ???????? ? ????????????? ?????????? ?????????? ??????. ?? ???? ??????? ????? ?????????? ? ?????????????????, ?? ???????? ????? ??????: ???? ??? ??????? ?????? ???? ?? ??????? , ?????????? ?? ?????????? ?????? ??? ? ??? ??? — ???? ???? ?? ??????? ? ??????, ???? ????? ???? ???? ?? ??????? .
??? ?????????????? ?????? ?????? ??????????. ????????, ??? ?????????? ??????:
??? ??????????(v) ???? v.????????????? ? Ø // ??? ????? ?????????? ??????.????????????? = ?????? ??????? v.????????????? u := v.???????? c := v.?????? ????????? u := ??????????(u) ?? (u = ??????) ??? (?????????? ???? u —c? w) ???? ?????????? ??????? u —c? w ?? v.????????????? := w ????? v.????????????? := ?????? ??????? v.?????????????
?????????????? ??????????? ?????????? ???????? ??????: ???? ?????????? ?????? ?? ??????? ????? ? ???????? , ???? ???? ??????????? ????????. ??? ????? ????????? ??? ?????????? ???????? ??????: ???????? ?????? ????? ?? ????????? ?? ?????????? ??????? ???????? ???????; ????? ?? ???????? ??????? ???? ??? ????????? ??????.
??? ????????????????(v, i) ?????????? "??????? " + v.?????? + " ? ??????? " + (i - v.??????? + 1)
??? ??????????????????? ????????? := ?????? ???? i=1..|????????| ????????? := ???????(?????????, ????????[i]); ???? ?????????.?????? ? Ø ????????????????(?????????, i) ???????? := ????????? ???? ??????????????(????????) ? Ø ???????? := ??????????????(????????); ????????????????(????????, i)
?????????? ? ???????? ?????? ? ???????? ????? ???????????? ?? ???? ?????????? ??? ?? ???? ??????. ???????? ???????? — ????? ????????? ?? ?????, ????? ?? ??????? , ????? ?????????? ??? ???? ?????, ????? — ??? ????????? (?? ??????????????? ?????? ????????? ??? ??? ?? ??????).
?????????????? ????????? ?????? ????????? ??????? ?? ??????????? ??????. ????????:
![]() |
? ??????
?? ???????
?????? ?? ?????????
(??.
???????????? ?? ??????
).
|