Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouAnavitória Alanis Alterado mais de 9 anos atrás
1
D’Gledson Pinto Rabelo Suffix Array
2
Suffix Array – O que é ? É uma estrutura de dado eficiente para strings. Possui funcionalidades similares à Suffix Tree mas é muito mais simples de construir e utilizar especialmente em um ambiente de programação competitiva. O sufixo i de uma string é um caso especial da substring que vai do caractere i até o final da string. Exemplo: O segundo sufixo de ‘PROGRAMA’ é ‘OGRAMA’ e o quarto é ‘RAMA’
3
Suffix Array – O que é ?
4
Suffix Array - Implementação
5
Suffix Array – strcmp e C++ sort – O(n²logn). N <= 1000. Suffix Array utilizando ranking pairs e C++ sort – O(nlog²n). N <= 10.000. Suffix Array utilizando ranking pairs e Radix sort – O(nlogn). N <= 100.000.
6
Suffix Array - Aplicações String matching O(m log n) Longest Common Prefix O(n) Longest Repeated Substring O(n) Longest Common Substring O(n)
7
Longest Common Prefix – Implementação Esta implementação é lenta, podendo aumentar o valor de L até O(n²) vezes. Uma idéia melhor é utilizando Permuted Longest Common Prefix O teorema de PLCP diz que o número total de operações de adição e subtração é no máximo O(n).
8
Permutated Longest Prefix - Implementação
10
Longest Repeated Substring Se nós tivermos compilado o Suffix Array e o LCP, podemos determinar o tamanho da LRS em O(n). O tamanho da LRS é apenas o maior número no vetor LCP.
11
Longest Common Substring Sem perda de generalidade, vamos considerar o caso com apenas duas strings. Primeiramente nós temos de concatenar ambas as strings utilizando um delimitador que não aparece em nenhuma das strings (neste caso foi utilizado um ponto). Depois computamos o Suffix Array e LCP da nova string. Strings do exemplo : T1 : GATAGACA T2 : CATA.
12
Longest Common Substring
13
Exercício : UvA DNA Sequencing
14
Solução
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.