SlideShare a Scribd company logo
1 of 15
Download to read offline
Fast sequence clustering using a suffx array algorithm
Stepachev Maxim
March 9, 2013
Suffix array vs Suffix tree?
1. Проблема дополнительной памяти.
2. Аллокатоция памяти.
3. Достаточно высокая сложность реализации.
Основные проблемы суффиксного дерева:
2/15
Постановка задачи
Пусть у нас есть некоторый образец P и текст S, требуется найти все вхождения образца в
тексте.
3/15
Основные термины и понятия
Суффиксный массив — это массив лексикографически отсортированных суффиксов.
Ранг суффикса — то место, которое займет суффикс при сортировке, то есть его позиция в
суффиксном массиве.
S - Текст в котором происходит поиск, P - шаблон который мы ищем.
lcp — longest common prefix
4/15
Вопросы на понимание
Сколько памяти требует суффиксный массив?
5/15
Наивный алгоритм поиска
sip sip sip
I i i
Ippi ippi ippi
Issippi issippi issippi
Ississippi ississippi ississippi
Mississippi mississippi mississippi
Pi pi pi
Ppi ppi ppi
Sippi sippi sippi
Sissippi sissippi sissippi
Ssippi ssippi ssippi
Ssissippi ssissippi ssissippi
Простейший способ узнать, встречается ли образец в тексте, используя суффиксный массив,
— взять первый символ образца и бинарным поиском по суффиксному массиву найти
диапазон с суффиксами,начинающимися на такую же букву.
6/15
Вопросы на понимание
Какова сложность простейшего поиска?
7/15
Вопросы на понимание
Какова сложность простейшего поиска?
Бинарный поиск работает за время равное O(log|S|), а сравнение суффикса с образцом не
может превышать длины образца.
Таким образом время работы алгоритмы O(|P|log|S|), где S— текст, P— образец.
8/15
Ускоренный наивный алгоритм поиска
Основная идея заключается в вычислении общего префикса на краях диапазона.
Обозначения:
L=lcp(suffix[l],P)
R=lcp(suffix[r],P)
Утверждение первое: Префикс для любой строки внутри диапазона lcp не меньше, чем
минимум этих двух чисел.
Утверждение второе: Если общий префикс образца и любой строки внутри диапазона
не меньше m=min(L,R), то m символов можно пропускать сразу.
Пример:
L: ACCTCCCC
....
R: ACCTGGGG
P: ACCTGGAA
9/15
Создание LCP
LCP-массив — это массив значений lcp между лексикографически-соседними суффиксами.
Построить массив lcp достаточно просто. Решение в лоб, это идти по суффиксному
массиву и считать lcp соседних — это O(N^2).
Но если идти по массиву в правильном порядке, то можно использовать информацию с
предыдущего шага для расчетов.
А именно, если перебирать суффиксы в том порядке, в котором они встречаются в исходной
строке. Мы получим lcp-массив за линейное время O(N).
10/15
Задачи RMQ
Range Minimum (Maximum) Query – запрос минимума (максимума) на отрезке в массиве.
Пусть дан массив A[1..n]. Нам необходимо уметь отвечать на запрос вида «найти минимум
на отрезке с i-ого элемента по j-ый».
Постановка задачи:
Более-менее простые алгоритмы позволяют отвечать на запросы за <O(nlogn),O(1)>.
Нас может устроить и такое решение, если мы строили массив за O(nlogn), но можно
быстрее...
11/15
Алгоритм Фарака-Колтона и Бендера:
Алгоритм применяется для решения за <O(n),O(1)> времени специального случая задачи
RMQ (поиск минимума на отрезке),
в котором соседние элементы входной последовательности различаются на ±1.
Применение в нашей задаче:
Построим так называемый lcp-массив — это массив значений lcp между
лексикографически-соседними суффиксами.
12/15
Быстрый поиск:
Условные обозначения:
Lp и Rp - левая и правая границы диапазона ответов в суффиксном массиве.
L - левая граница диапазона поиска (изначально равна 0).
R -правая граница диапазона поиска (изначально равна |S|-1).
M=(R+L)/2
l=lcp(suffix[L],p)
r=lcp(suffix[R],p)
ml=lcp(suffix[L],suffix[M])
mr=lcp(suffix[M],suffix[R])
Подсчет и можно производить за O(1), если применять алгоритм Фарака-Колтона и
Бендера. Любая пара суффиксов suffix[] из диапазона [L,M] имеет хотя бы ml
совпадений в префиксах. Аналогично любая пара суффиксов suffix[] из диапазона
[M,R] имеет хотя бы mr совпадений в префиксах.
1. ml>l,L=M, l не меняем.
2. ml=l, (R=M, r=l+k+1) или (L=M,l=l+k+1)
3. ml<l,R=M,r=ml
13/15
Подводим итоги
Операция Suffix tree Suffix array
Построение: O(|s|) O(|s|)
Поиск: O(|p|) O(log|s|+|p|)
Память: O(|s|) O(|s|)
14/15
Литература и источники
http://neerc.ifmo.ru
http://habrahabr.ru/post/115346/
http://software.intel.com/ru-ru/blogs/2012/05/22/accelerate-2012-3
http://en.wikipedia.org/wiki/Suffix_array
http://en.wikipedia.org/wiki/Substring
http://e-maxx.ru/algo/
Simple Linear Work Suffix Array Construction (http://www.cs.helsinki.fi/u/tpkarkka/publications/icalp03.pdf)
Suffix arrays:A new method for on-line string searches (http://webglimpse.net/pubs/suffix.pdf )
Fast sequence clustering using a suffix array algorithm
Handmade ;)
15/15

More Related Content

Viewers also liked (10)

Biotech2012 spring 10_cloning_0
Biotech2012 spring 10_cloning_0Biotech2012 spring 10_cloning_0
Biotech2012 spring 10_cloning_0
 
Biotech autumn2012-02-comparative genomics
Biotech autumn2012-02-comparative genomicsBiotech autumn2012-02-comparative genomics
Biotech autumn2012-02-comparative genomics
 
Vvedenie v bioinformatiku_2
Vvedenie v bioinformatiku_2Vvedenie v bioinformatiku_2
Vvedenie v bioinformatiku_2
 
Ch08 massspec
Ch08 massspecCh08 massspec
Ch08 massspec
 
Biotech2012spring 1-overview 0
Biotech2012spring 1-overview 0Biotech2012spring 1-overview 0
Biotech2012spring 1-overview 0
 
Ch07 linearspacealignment
Ch07 linearspacealignmentCh07 linearspacealignment
Ch07 linearspacealignment
 
Bioalgo 2012-04-hmm
Bioalgo 2012-04-hmmBioalgo 2012-04-hmm
Bioalgo 2012-04-hmm
 
Seminar mol biol_1_spring_2013
Seminar mol biol_1_spring_2013Seminar mol biol_1_spring_2013
Seminar mol biol_1_spring_2013
 
Ngs 1 0_0
Ngs 1 0_0Ngs 1 0_0
Ngs 1 0_0
 
Ch11 hmm
Ch11 hmmCh11 hmm
Ch11 hmm
 

Similar to Slides3

Чему мы можем научиться у Lisp'а?
Чему мы можем научиться у Lisp'а?Чему мы можем научиться у Lisp'а?
Чему мы можем научиться у Lisp'а?
Vsevolod Dyomkin
 
Алгоритмы на ruby: перебор и рекурсия
Алгоритмы на ruby: перебор и рекурсияАлгоритмы на ruby: перебор и рекурсия
Алгоритмы на ruby: перебор и рекурсия
Evgeny Smirnov
 
минимум олимпиадника
минимум олимпиадникаминимум олимпиадника
минимум олимпиадника
liz_f
 
20091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture0320091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture03
Computer Science Club
 
20080217 efficientalgorithms kulikov_lecture13
20080217 efficientalgorithms kulikov_lecture1320080217 efficientalgorithms kulikov_lecture13
20080217 efficientalgorithms kulikov_lecture13
Computer Science Club
 
20080217 efficientalgorithms kulikov_lecture13
20080217 efficientalgorithms kulikov_lecture1320080217 efficientalgorithms kulikov_lecture13
20080217 efficientalgorithms kulikov_lecture13
Computer Science Club
 
20091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture0620091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture06
Computer Science Club
 
Анализ текста на основе лексико-синтаксичеких шаблонов c сокращением многов...
Анализ  текста на основе лексико-синтаксичеких  шаблонов c сокращением многов...Анализ  текста на основе лексико-синтаксичеких  шаблонов c сокращением многов...
Анализ текста на основе лексико-синтаксичеких шаблонов c сокращением многов...
Alexey Noskov
 

Similar to Slides3 (10)

Чему мы можем научиться у Lisp'а?
Чему мы можем научиться у Lisp'а?Чему мы можем научиться у Lisp'а?
Чему мы можем научиться у Lisp'а?
 
Алгоритмы на ruby: перебор и рекурсия
Алгоритмы на ruby: перебор и рекурсияАлгоритмы на ruby: перебор и рекурсия
Алгоритмы на ruby: перебор и рекурсия
 
минимум олимпиадника
минимум олимпиадникаминимум олимпиадника
минимум олимпиадника
 
20091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture0320091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture03
 
20080217 efficientalgorithms kulikov_lecture13
20080217 efficientalgorithms kulikov_lecture1320080217 efficientalgorithms kulikov_lecture13
20080217 efficientalgorithms kulikov_lecture13
 
20080217 efficientalgorithms kulikov_lecture13
20080217 efficientalgorithms kulikov_lecture1320080217 efficientalgorithms kulikov_lecture13
20080217 efficientalgorithms kulikov_lecture13
 
20091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture0620091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture06
 
Ruby строки
Ruby строкиRuby строки
Ruby строки
 
20131022 зобнин
20131022 зобнин20131022 зобнин
20131022 зобнин
 
Анализ текста на основе лексико-синтаксичеких шаблонов c сокращением многов...
Анализ  текста на основе лексико-синтаксичеких  шаблонов c сокращением многов...Анализ  текста на основе лексико-синтаксичеких  шаблонов c сокращением многов...
Анализ текста на основе лексико-синтаксичеких шаблонов c сокращением многов...
 

More from BioinformaticsInstitute

Биоинформатический анализ данных полноэкзомного секвенирования: анализ качес...
 Биоинформатический анализ данных полноэкзомного секвенирования: анализ качес... Биоинформатический анализ данных полноэкзомного секвенирования: анализ качес...
Биоинформатический анализ данных полноэкзомного секвенирования: анализ качес...
BioinformaticsInstitute
 
Knime &amp; bioinformatics
Knime &amp; bioinformaticsKnime &amp; bioinformatics
Knime &amp; bioinformatics
BioinformaticsInstitute
 
"Зачем биологам суперкомпьютеры", Александр Предеус
"Зачем биологам суперкомпьютеры", Александр Предеус"Зачем биологам суперкомпьютеры", Александр Предеус
"Зачем биологам суперкомпьютеры", Александр Предеус
BioinformaticsInstitute
 
Плюрипотентность 101
Плюрипотентность 101Плюрипотентность 101
Плюрипотентность 101
BioinformaticsInstitute
 
Секвенирование как инструмент исследования сложных фенотипов человека: от ген...
Секвенирование как инструмент исследования сложных фенотипов человека: от ген...Секвенирование как инструмент исследования сложных фенотипов человека: от ген...
Секвенирование как инструмент исследования сложных фенотипов человека: от ген...
BioinformaticsInstitute
 

More from BioinformaticsInstitute (20)

Graph genome
Graph genome Graph genome
Graph genome
 
Nanopores sequencing
Nanopores sequencingNanopores sequencing
Nanopores sequencing
 
A superglue for string comparison
A superglue for string comparisonA superglue for string comparison
A superglue for string comparison
 
Comparative Genomics and de Bruijn graphs
Comparative Genomics and de Bruijn graphsComparative Genomics and de Bruijn graphs
Comparative Genomics and de Bruijn graphs
 
Биоинформатический анализ данных полноэкзомного секвенирования: анализ качес...
 Биоинформатический анализ данных полноэкзомного секвенирования: анализ качес... Биоинформатический анализ данных полноэкзомного секвенирования: анализ качес...
Биоинформатический анализ данных полноэкзомного секвенирования: анализ качес...
 
Вперед в прошлое. Методы генетической диагностики древней днк
Вперед в прошлое. Методы генетической диагностики древней днкВперед в прошлое. Методы генетической диагностики древней днк
Вперед в прошлое. Методы генетической диагностики древней днк
 
Knime &amp; bioinformatics
Knime &amp; bioinformaticsKnime &amp; bioinformatics
Knime &amp; bioinformatics
 
"Зачем биологам суперкомпьютеры", Александр Предеус
"Зачем биологам суперкомпьютеры", Александр Предеус"Зачем биологам суперкомпьютеры", Александр Предеус
"Зачем биологам суперкомпьютеры", Александр Предеус
 
Иммунотерапия раковых опухолей: взгляд со стороны системной биологии. Максим ...
Иммунотерапия раковых опухолей: взгляд со стороны системной биологии. Максим ...Иммунотерапия раковых опухолей: взгляд со стороны системной биологии. Максим ...
Иммунотерапия раковых опухолей: взгляд со стороны системной биологии. Максим ...
 
Рак 101 (Мария Шутова, ИоГЕН РАН)
Рак 101 (Мария Шутова, ИоГЕН РАН)Рак 101 (Мария Шутова, ИоГЕН РАН)
Рак 101 (Мария Шутова, ИоГЕН РАН)
 
Плюрипотентность 101
Плюрипотентность 101Плюрипотентность 101
Плюрипотентность 101
 
Секвенирование как инструмент исследования сложных фенотипов человека: от ген...
Секвенирование как инструмент исследования сложных фенотипов человека: от ген...Секвенирование как инструмент исследования сложных фенотипов человека: от ген...
Секвенирование как инструмент исследования сложных фенотипов человека: от ген...
 
Инвестиции в биоинформатику и биотех (Андрей Афанасьев)
Инвестиции в биоинформатику и биотех (Андрей Афанасьев)Инвестиции в биоинформатику и биотех (Андрей Афанасьев)
Инвестиции в биоинформатику и биотех (Андрей Афанасьев)
 
Biodb 2011-everything
Biodb 2011-everythingBiodb 2011-everything
Biodb 2011-everything
 
Biodb 2011-05
Biodb 2011-05Biodb 2011-05
Biodb 2011-05
 
Biodb 2011-04
Biodb 2011-04Biodb 2011-04
Biodb 2011-04
 
Biodb 2011-03
Biodb 2011-03Biodb 2011-03
Biodb 2011-03
 
Biodb 2011-01
Biodb 2011-01Biodb 2011-01
Biodb 2011-01
 
Biodb 2011-02
Biodb 2011-02Biodb 2011-02
Biodb 2011-02
 
Ngs 3 1
Ngs 3 1Ngs 3 1
Ngs 3 1
 

Slides3

  • 1. Fast sequence clustering using a suffx array algorithm Stepachev Maxim March 9, 2013
  • 2. Suffix array vs Suffix tree? 1. Проблема дополнительной памяти. 2. Аллокатоция памяти. 3. Достаточно высокая сложность реализации. Основные проблемы суффиксного дерева: 2/15
  • 3. Постановка задачи Пусть у нас есть некоторый образец P и текст S, требуется найти все вхождения образца в тексте. 3/15
  • 4. Основные термины и понятия Суффиксный массив — это массив лексикографически отсортированных суффиксов. Ранг суффикса — то место, которое займет суффикс при сортировке, то есть его позиция в суффиксном массиве. S - Текст в котором происходит поиск, P - шаблон который мы ищем. lcp — longest common prefix 4/15
  • 5. Вопросы на понимание Сколько памяти требует суффиксный массив? 5/15
  • 6. Наивный алгоритм поиска sip sip sip I i i Ippi ippi ippi Issippi issippi issippi Ississippi ississippi ississippi Mississippi mississippi mississippi Pi pi pi Ppi ppi ppi Sippi sippi sippi Sissippi sissippi sissippi Ssippi ssippi ssippi Ssissippi ssissippi ssissippi Простейший способ узнать, встречается ли образец в тексте, используя суффиксный массив, — взять первый символ образца и бинарным поиском по суффиксному массиву найти диапазон с суффиксами,начинающимися на такую же букву. 6/15
  • 7. Вопросы на понимание Какова сложность простейшего поиска? 7/15
  • 8. Вопросы на понимание Какова сложность простейшего поиска? Бинарный поиск работает за время равное O(log|S|), а сравнение суффикса с образцом не может превышать длины образца. Таким образом время работы алгоритмы O(|P|log|S|), где S— текст, P— образец. 8/15
  • 9. Ускоренный наивный алгоритм поиска Основная идея заключается в вычислении общего префикса на краях диапазона. Обозначения: L=lcp(suffix[l],P) R=lcp(suffix[r],P) Утверждение первое: Префикс для любой строки внутри диапазона lcp не меньше, чем минимум этих двух чисел. Утверждение второе: Если общий префикс образца и любой строки внутри диапазона не меньше m=min(L,R), то m символов можно пропускать сразу. Пример: L: ACCTCCCC .... R: ACCTGGGG P: ACCTGGAA 9/15
  • 10. Создание LCP LCP-массив — это массив значений lcp между лексикографически-соседними суффиксами. Построить массив lcp достаточно просто. Решение в лоб, это идти по суффиксному массиву и считать lcp соседних — это O(N^2). Но если идти по массиву в правильном порядке, то можно использовать информацию с предыдущего шага для расчетов. А именно, если перебирать суффиксы в том порядке, в котором они встречаются в исходной строке. Мы получим lcp-массив за линейное время O(N). 10/15
  • 11. Задачи RMQ Range Minimum (Maximum) Query – запрос минимума (максимума) на отрезке в массиве. Пусть дан массив A[1..n]. Нам необходимо уметь отвечать на запрос вида «найти минимум на отрезке с i-ого элемента по j-ый». Постановка задачи: Более-менее простые алгоритмы позволяют отвечать на запросы за <O(nlogn),O(1)>. Нас может устроить и такое решение, если мы строили массив за O(nlogn), но можно быстрее... 11/15
  • 12. Алгоритм Фарака-Колтона и Бендера: Алгоритм применяется для решения за <O(n),O(1)> времени специального случая задачи RMQ (поиск минимума на отрезке), в котором соседние элементы входной последовательности различаются на ±1. Применение в нашей задаче: Построим так называемый lcp-массив — это массив значений lcp между лексикографически-соседними суффиксами. 12/15
  • 13. Быстрый поиск: Условные обозначения: Lp и Rp - левая и правая границы диапазона ответов в суффиксном массиве. L - левая граница диапазона поиска (изначально равна 0). R -правая граница диапазона поиска (изначально равна |S|-1). M=(R+L)/2 l=lcp(suffix[L],p) r=lcp(suffix[R],p) ml=lcp(suffix[L],suffix[M]) mr=lcp(suffix[M],suffix[R]) Подсчет и можно производить за O(1), если применять алгоритм Фарака-Колтона и Бендера. Любая пара суффиксов suffix[] из диапазона [L,M] имеет хотя бы ml совпадений в префиксах. Аналогично любая пара суффиксов suffix[] из диапазона [M,R] имеет хотя бы mr совпадений в префиксах. 1. ml>l,L=M, l не меняем. 2. ml=l, (R=M, r=l+k+1) или (L=M,l=l+k+1) 3. ml<l,R=M,r=ml 13/15
  • 14. Подводим итоги Операция Suffix tree Suffix array Построение: O(|s|) O(|s|) Поиск: O(|p|) O(log|s|+|p|) Память: O(|s|) O(|s|) 14/15
  • 15. Литература и источники http://neerc.ifmo.ru http://habrahabr.ru/post/115346/ http://software.intel.com/ru-ru/blogs/2012/05/22/accelerate-2012-3 http://en.wikipedia.org/wiki/Suffix_array http://en.wikipedia.org/wiki/Substring http://e-maxx.ru/algo/ Simple Linear Work Suffix Array Construction (http://www.cs.helsinki.fi/u/tpkarkka/publications/icalp03.pdf) Suffix arrays:A new method for on-line string searches (http://webglimpse.net/pubs/suffix.pdf ) Fast sequence clustering using a suffix array algorithm Handmade ;) 15/15