Алгоритмы отыскания совершенных повторов. Метод, основанный на хешировании

Содержание

Слайд 2

Пример функции расстановки с наложениями: h2(xi) = H(xi) mod M M

Пример функции расстановки с наложениями:
h2(xi) = H(xi) mod M M

- простое число (размер поля).
Пример списковой схемы устранения наложений
Информа- Расстановочное Дополнительное
ционный поле поле (ДП)
массив
Слайд 3

Алгоритмы отыскания совершенных повторов Хеширование. Пример. Пример. S = abcdabcbcbabcd; l

Алгоритмы отыскания совершенных повторов Хеширование. Пример.

Пример. S = abcdabcbcbabcd;
l =

3; h1(x) = H(x)
ns(a) = 0; ns(b) = 1; ns(c) = 2; ns(d) = 3
h1(abc) = 0*42 + 1* 41 + 2 = 6;
h1(bcd) = 1*42 + 2* 41 + 3 = 27;
h1(cda) = 2*42 + 3* 41 + 0 = 44;
h1(dab) = 3*42 + 0* 41 + 1 = 49;
h1(abc) = 0*42 + 1* 41 + 2 = 6;
h1(bcb) = 1*42 + 2* 41 + 1 = 25;
h1(cbc) = 2*42 + 1* 41 + 2 = 38;
h1(bcb) = 1*42 + 2* 41 + 1 = 25;
h1(cba) = 2*42 + 1* 41 + 0 = 36;
h1(bab) = 1*42 + 0* 41 + 1 = 17;
h1(abc) = 0*42 + 1* 41 + 2 = 6;
h1(bcd) = 1*42 + 2* 41 + 3 = 27;

0:
1:
---
6: abc, abc, abc
7:
---
17: bab
---
25: bcb, bcb
26:
27: bcd, bcd
---
36: cba
37:
38: cbc
---
44: cda
---
49: dab
---
63:

Слайд 4

Алгоритмы отыскания совершенных повторов Хеширование. Пример. Модульная функция Пример. S =

Алгоритмы отыскания совершенных повторов Хеширование. Пример. Модульная функция

Пример. S = abcdabcbcbabcd;


l = 3; h2(xi) = h1(xi) mod M ; M = 11;
ns(a) = 0; ns(b) = 1; ns(c) = 2; ns(d) = 3
h1(abc) = 6 mod 11 = 6;
h1(bcd) = 27 mod 11 = 5;
h1(cda) = 44 mod 11 = 0;
h1(dab) = 49 mod 11 = 5;
h1(abc) = 6 mod 11 = 6;
h1(bcb) = 25 mod 11 = 3;
h1(cbc) = 38 mod 11 = 5;
h1(bcb) = 25 mod 11 = 3;
h1(cba) = 36 mod 11 = 3;
h1(bab) = 17 mod 11 = 6;
h1(abc) = 6 mod 11 = 6;
h1(bcd) = 27 mod 11 = 5;
Слайд 5

Пример списковой схемы устранения наложений abcdabcbcbabcd 650563533665

Пример списковой схемы устранения наложений

abcdabcbcbabcd
650563533665

Слайд 6

l-граммные деревья — это структура данных, представляющая все l-граммы в виде

l-граммные деревья — это структура данных, представляющая все l-граммы в виде

дерева.
S = abcdabcbcbabcd;
l = 3;
1. abc
2. bcd
3. cda
4. dab
5. abc
6. bcb
7. cbc
8. bcb
9. cba
10. bab
11. abc
12. bcd

b

4

d

c

9

1, 5,11

3

2, 12

a

a

b

b

c

c

c

a

b

a

a

d

d

6,8

b

b

7

10

Слайд 7

Если v = xyz, то x – префикс v, z –

Если v = xyz, то x – префикс v, z –

суффикс, y – подслово. Оптимальные алгоритмы отыскания совершенных повторов основаны на построении
префиксного дерева : Вайнер (Weiner P., 1973)
суффиксного дерева : Мак-Крейг (McCreight, 1976)
графа подслов (DAWG) : A.Blumer, J.Blumer, A.Ehrenfeucht, 1984
Все конструкции функционально эквивалентны и реализуются за линейное (в зависимости от длины текста) время с линейными затратами памяти.
Слайд 8

Префикс−идентификатор pr(i) позиции i в тексте T − кратчайшее подслово, начинающееся

Префикс−идентификатор pr(i) позиции i в тексте T − кратчайшее подслово, начинающееся

в позиции i и встречающееся в T# только один раз (# - конечный маркер).
Пример дерева префикс-идентификаторов для T# = abacbcbacb#
i pr(i)
ab
bacbc
acbc
cbc
bc
cba
bacb#
acb#
cb#
b#
#

b

11

#

c

6

9

4

1

3

8

2

7

5

10

a

a

a

b

b

b

b

c

c

c

c

c

c

#

#

#

#

Слайд 9

Алгоритм Мартинеца на примере T# = abacbcbacb# Первый этап построения 11

Алгоритм Мартинеца на примере T# = abacbcbacb#
Первый этап построения

11

#

a

b

c

abacbcbacb#

1,3,8

2,5,7,10

4,6,9

Слайд 10

Алгоритм Мартинеца на примере T# = abacbcbacb# b 11 # c

Алгоритм Мартинеца на примере T# = abacbcbacb#

b

11

#

c

6

9

4

1

3

2

7

5

10

a

a

a

b

b

b

b

c

c

c

c

c

c

#

#

#

#

abacbcbacb#

8

1,3,8

3,8

2,5,7,10

3,8

2,7

2,7

2,7

4,6,9

4,6,9

Слайд 11

Пример компактного префиксного дерева для T# = abacbcbacb# 11 # c

Пример компактного префиксного дерева для T# = abacbcbacb#

11

#

c

6

9

4

1

3

8

2

7

5

10

a

acb

a

b

b

cb

c

cb

c

c

#

#

#

#

Слайд 12

Пример дерева всеx суффиксов для T# = abacbcbacb# i suf(i) abaсbcbacb#

Пример дерева всеx суффиксов для T# = abacbcbacb#
i suf(i)
abaсbcbacb#
baсbcbacb#
aсbcbacb#
сbcbacb#
bcbacb#
cbacb#


bacb#
acb#
cb#
b#
#

b

11

#

6

9

4

1

3

8

2

7

5

10

a

b

b

c

c

c

c

#

#

#

c

b

b

a

c

#

b

b

a

a

c

c

b

#

#

a

c

c

c

c

b

b

a

b

#

#

#

#

b

b

b

b

a

c

c

c

a

a

b

b

Слайд 13

Суффиксное дерево для T# = abacbcbacb# 11 # cbacb# 6 9

Суффиксное дерево для T# = abacbcbacb#

11

#

cbacb#

6

9

4

1

3

8

2

7

5

10

a

acb

acb#

b

bacbcbacb#

cb

cbacb#

cb

cbacb#

cbacb#

#

#

#

#

Слайд 14

Задачи, решаемые с помощью суффиксного дерева: Вычисление параметров полного частотного спектра;

Задачи, решаемые с помощью суффиксного дерева:
Вычисление параметров полного частотного спектра;
Поиск образца;
Последовательный

поиск множества образцов;
Поиск образца во множестве строк;
Наибольшая общая подстрока двух строк;
Общие подстроки более чем двух строк;
Задача загрязнения ДНК. Даны строки S1 и S2: S1 − вновь расшифрованная ДНК, S2 − комбинация источников возможного загрязнения. Найти все подстроки S2, которые встречаются в S1 и длина которых не меньше заданного l;
Суффиксно-префиксные совпадения всех пар строк (из заданного множества строк);
Обнаружение всех «нерасширяемых» повторов;
Задача о наибольшем общем «продолжении». Найти длину наибольшего общего префикса i-го суффикса строки S1 и j-го суффикса строки S2
Выявление всех «нерасширяемых» палиндромов.