Algoritmos de varredura linear e busca de padrões

17
Algoritmos de varredura linear e busca de padrões Davi Duarte, Luiz Afonso {ddp, lacbs}@cin.ufpe.br

description

Algoritmos de varredura linear e busca de padrões. Davi Duarte, Luiz Afonso { ddp, lacbs }@cin.ufpe.br. A importância do estudo de algoritmos. O que é algoritmo? Porque aprender algoritmos? Capacidade de generalização Aplicação a problemas reais Estimativa de tempo de execução. - PowerPoint PPT Presentation

Transcript of Algoritmos de varredura linear e busca de padrões

Page 1: Algoritmos de varredura linear e busca de padrões

Algoritmos de varredura linear e busca de padrões

Davi Duarte, Luiz Afonso{ddp, lacbs}@cin.ufpe.br

Page 2: Algoritmos de varredura linear e busca de padrões

A importância do estudo de algoritmos

• O que é algoritmo?• Porque aprender algoritmos?– Capacidade de generalização– Aplicação a problemas reais– Estimativa de tempo de execução

Page 3: Algoritmos de varredura linear e busca de padrões

Análise de tempo de execução

Complexidade Tempo esperadoO(log(N)) 10-7 segundos

O(N) 10-6 segundosO(N.log2(N)) 10-5 segundos

O(N2 ) 10-4 segundosO(N6) 3 minutosO(2N) 1014 anosO(N!) 10142 anos

• Tempo aproximado para algoritmos com N=100

Page 4: Algoritmos de varredura linear e busca de padrões

Varredura Linear

– Utilizado para resolver problemas geométricos– Linha conceitual “varre” o plano verticalmente– Pode ser utilizada em conjunto com outros

algoritmos– Particularmente útil em problemas envolvendo

distância Euclidiana e de Manhattan

Page 5: Algoritmos de varredura linear e busca de padrões

Distância de Manhattan

– A distância de Manhattan entre os pontos (x1,y1) e (x2,y2) é dada por |x1 – x2| + |y1 – y2|

– É chamada distância de Manhattan por conta das ruas em forma de grade da cidade de Manhattan

– Formalmente conhecida como métrica L1

Page 6: Algoritmos de varredura linear e busca de padrões

Par de pontos mais próximos

– Dado um conjunto de pontos encontrar o par de pontos mais próximo

– Ordenar os pontos pelo eixo X e varrer com uma linha vertical

– Utilizar árvores binárias balanceadaspara guardar os pontos mais próximos

– Complexidade O(N Log N)

Page 7: Algoritmos de varredura linear e busca de padrões

Interseção de segmentos de reta

– Encontrar interseção de segmentos de retas verticais e horizontais

– Utilizar linha de varredura para percorrer o plano horizontalmente

– Percorrer passando pelos pontosextremos dos segmentos

– Usar árvore binária balanceadapara armazenar retas intersectan-tes em um ponto de varredura

– Complexidade O(N log N)

Page 8: Algoritmos de varredura linear e busca de padrões

Área de união de retângulos

– Calcular a área da união de vários retângulos– Utilizar linha de varredura para percorrer o plano

horizontalmente– Percorrer passando pelas arestas

dos retângulos– Utilizar árvore binária balanceada

para armazenar número de retân-gulos em um ponto de varredura

– Complexidade O(N log N)

Page 9: Algoritmos de varredura linear e busca de padrões

Fecho convexo de pontos 2D

– Encontrar menor polígono que cerca um conjunto de pontos no plano 2D

– Ordenar os pontos pelo eixo X– Utilizar duas linhas de varredura percorrendo

verticalmente o plano– Gerar fecho superior e inferior– Procedimento similar ao Graham

scan para tratamento de triângulos– Complexidade O(N log N)

Page 10: Algoritmos de varredura linear e busca de padrões

Árvore de peso mínimo no espaço de Manhattan

– Encontrar a árvore geradora mínima em um conjunto de pontos considerando a distância de Manhattan

– Dividir o plano em octantes– Ordenar os pontos pela soma

das coordenadas– Dividir o octante em metades e usar

abordagem dividir para conquistar– Problema reduzido a encontrar o

vizinho mais próximo em um octante– Complexidade O (N log N)

Page 11: Algoritmos de varredura linear e busca de padrões

Busca de padrões

– DNA– Banco de Dados– Indexação

Page 12: Algoritmos de varredura linear e busca de padrões

Busca de padrões– Algoritmo ingênuo

• ABABABABAABABAA• ABABAA ?• _ABABAA ?• __ABABAA ?• ___ABABAA ?• ____ABABAA !• _____ABABAA ?• ______ABABAA ?• _______ABABAA ?• ________ABABAA ?• _________ABABAA !

– O(N*M)

Page 13: Algoritmos de varredura linear e busca de padrões

Busca de padrões– Knuth-Morris-Pratt

• ABABABABAABABAA• ABABAA ?• ____ABABAA !• _________ABABAA !

– O(M+N)

Page 14: Algoritmos de varredura linear e busca de padrões

Busca de padrões

– Trie• CERCARROCORAL

– "A", – "CARRO", – "CERCA", – “COR”,– "CORAL“

ϵ

A C

CA

CE

CO

CAR

CARR

CARRO

CER

CERC

CERCA

COR

CORA

CORAL

Page 15: Algoritmos de varredura linear e busca de padrões

Busca de padrões

– Aho-Corasick• CERCARROCORAL

– "A", – "CARRO", – "CERCA", – “COR”,– "CORAL“

ϵ

A C

CA CE CO

CAR

CARR

CARRO

CER

CERC

CERCA

COR

CORA

CORAL

Page 16: Algoritmos de varredura linear e busca de padrões

Busca de padrões

– Árvove de sufixos

– Hashing• Texto• Polinômio limitado• Número

Page 17: Algoritmos de varredura linear e busca de padrões

Dúvidas?