Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Caracteres
RelatriodoProjeto1
2015.2
GuilhermePeixoto
RafaelAcevedo
Recife,25deOutubrode2015
Sumrio
1.Identificao
1.1Equipe
1.2Descriodacontribuiodosmembros
2.Implementao
2.1Algoritmosimplementados
2.2Situaesnasquaiscadaalgoritmoempregado
2.3Detalhesdeimplementaorelevantes
3.Testes
3.1BuscaExata
3.1.1.KMP
3.1.2.AhoCorasick
3.2BuscaAproximada
3.2.1WuMamber
3.2.2.Sellers
3.3Benchmarks
3.3.1:Buscaporumpadro
3.3.2:Buscaporvriospadres
3.3.3:Buscaaproximada
1.Identificao
1.1Equipe
GuilhermePalmaPeixoto(gpp)
RafaelAcevedodeAguiar(raa7)
1.2Descriodacontribuiodosmembros
GuilhermePeixoto
:Implementaodosalgoritmosdestringmatchingexatoseexecuo
dostestesrelacionadosaessesalgoritmos
RafaelAcevedo
:Implementaodosalgoritmosdematchingaproximadoeexecuodos
testesrelacionadosaessesalgoritmos
2.Implementao
2.1Algoritmosimplementados
Foram implementados 2 algoritmos para matching exato: o Algoritmo de
KnuthMorrisPratt(KMP) e o Algoritmo de
AhoCorasick
. J para matching
aproximado, foram implementados o Algoritmo de
Sellers e o Algoritmo de
WuManber
.
2.2Situaesnasquaiscadaalgoritmoempregado
No caso de matching exato, usamos o KMP quando o usurio entra com
apenasumpadro.Quandohmaisdeumpadro,usadooAhoCorasick.
Para matching aproximado, utilizamos o WuManber quando o padro tem
menos que 64 caracteres(tamanho da palavra de mquina) e o Sellers caso o
padrotenha64oumaiscaracteres.
2.3Detalhesdeimplementaorelevantes
Na nossa implementao do algoritmo de AhoCorasick, a funo de
transioentre os estadosfoiimplementadacomoumamatriz(aocontrriodeoutra
estruturacomomap)poisestaexecutaacessostransiesemtempoconstante.
3.Testes
A fim de testar a performance do projeto desenvolvido, podemos dividir os
testes nas seguintes fases: busca exata e busca aproximada. A menos que
explicitamente anotado,todosostestes foram feitos em: OS X10.11, 2.6GHzIntel
Corei5,8GB1600MHzDDR3.
3.1BuscaExata
3.1.1.KMP
Para medir a performance embusca exata, foi feita a buscaporpadresde
tamanhos diversosem basesdecaractersticasdiferentes: emtextos de linguagem
natural e bases de "carter gentico" (i.e.: as
strings so padres de genomas,
protenas, etc). A tabela a seguir mostraaperformancede acordo como tamanho
deumpadrobuscadoeabasedetexto.OalgoritmoutilizadonessecasooKMP.
Almdessestestes,foifeitoumasrieadicionaldetestesdentrodoarquivo
genome/ecoli.txt
paraavaliarmelhorainflunciadotamanhodopadronabusca.
Grfico(1):PerformancedoalgoritmoKMPemrelaoaotamanhodopadroaserbuscado.
Grfico(2):PerformancedoalgoritmoKMPemrelaoaotamanhodotextodeentrada.
3.1.2.AhoCorasick
Tambm foi testada a performance ao procurar simultaneamente porvrios
padres no mesmo texto, na qual utilizase o AhoCorasick para realizar essa
busca. Para oteste, foramutilizadasstringsaleatrias. Paraoconjuntode padres,
foram geradas 1000 strings de tamanho 5, 10, 50e100 aleatoriamente,enquanto
para o conjunto de padres foram geradas 40,000 strings de tamanho 200. Os
resultadossoreportados deformaanloga, ao longode100execuesparacada
configurao:
PerformanceAhoCorasick
TamanhodoPadro
Tempomdioexecuo
(s)
DesvioPadro
0.130
0.007
10
0.128
0.006
50
0.144
0.014
100
0.154
0.014
Grfico(3):PerformancedoalgoritmoAhoCorasickemrelaoaotamanhodopadroaserbuscado.
Grfico(4):PerformancedoalgoritmoAhoCorasickemrelaoaotamanhodotextodeentrada.
3.2BuscaAproximada
Os testes realizados para busca aproximada so similares aos realizados
para buscaexata. A fim de medir a performanceem buscaexata, primeiro feitoa
busca por um padro em textos que possuem caractersticas distintas, de forma
anloga ao experimento inicial. Para padres de tamanho inferiora64caracteres,
WuMamber utilizado como algoritmo caso contrrio a buscafeitautilizando o
Sellers.Natabelaabaixo,observamosaperformancedoWuMamber.
3.2.1WuMamber
PerformanceWuMamber
Erro
K
1
3
5
englishTexts\bible.txt
genome\ecoli.txt
protein\hs.txt
Mdia
DP
Mdia
DP
Mdia
DP
0,020s
0,001
0,046s
0,004
0,034s
0,004
0,021s
0,001
0,046s
0,002
0,034s
0,002
0,020s
0,0009
0,052s
0,006
0,034s
0,002
Grfico(5):PerformancedoalgoritmoWuMamberemrelaoaotamanhodopadroaserbuscado.
Grfico(6):PerformancedoalgoritmoWuMamberemrelaoaotamanhodotextodeentrada.
3.2.2.Sellers
ParatestaroalgoritmoSellers,foifixado otamanhodopadroem100(umavezque
para qualquer padrodetamanhoinferiora65oWuMamber acionado)efoi feitaabusca
aproximadaemtrsbasesdiferentes,analogamenteaosexperimentosanteriores.
PerformanceSellers
Erro
K
10
25
englishTexts\bible.txt
genome\ecoli.txt
protein\hs.txt
Mdia
DP
Mdia
DP
Mdia
DP
0.065
0.007
0.043
0.006
0.031
0.002
0.062
0.003
0.043
0.003
0.032
0.003
10
50
0.064
0.007
0.044
0.007
0.032
0.002
Observamos tambm de acordo com o grfico a seguir o impacto (ou ausncia de)
que a variao no tamanho do padro provoca na performance do algoritmo. Para os
valores testados, podemos perceber que, assim como nosoutrosexperimentos,otamanho
dopadropoucoinfluencianaperformancedoalgoritmo.
Grfico(7):PerformancedoalgoritmoSellersemrelaoaotamanhodopadroaserbuscado.
possvel ver tambm que, de acordo com o esperado, o algoritmo obtm uma
performancelineardeacordocomotamanhodotexto,comoobservadonogrficoaseguir.
Grfico(8):PerformancedoalgoritmoSellersemrelaoaotamanhodotextodeentrada.
11
3.3Benchmarks
Na fase de testes comparamos tambm a performance da nossa implementao
com a da ferramenta grep (verso: (BSD grep) 2.5.1FreeBSD, OS X 10.11)parabuscade
padres exatos. Cada teste foi executado 100 vezes e foi obtida a mdia e desvio padro
dotempodeexecuo.Mostramososresultadosaseguir:
3.3.1:Buscaporumpadro
Nesse caso de teste, foi feita a busca por um padro gerado aleatoriamente de
tamanho 5 dentrodeumarquivodetexto geradoaleatoriamentequecontm400,000linhas
com200caracterescada.Osresultadosforam:
Ferramenta
Mdia
DesvioPadro
grep
0.136s
0.041
pmt\kmp
0.089s
0.012
3.3.2:Buscaporvriospadres
Nesse caso de teste, foi feita a busca por 100 padres gerados aleatoriamente de
tamanho 5 dentrodeumarquivodetexto geradoaleatoriamentequecontm400,000linhas
com 200 caracteres cada. A opo"f"foipassadaaogrepparaquefossefeita abuscapor
mltiplospadres.Osresultadosforam:
Ferramenta
Mdia
DesvioPadro
grep
3.960s
0.090
pmt\ahocorasick
0.117s
0.002
12
3.3.3:Buscaaproximada
O benchmark de comparao para a busca aproximada foi o
agrep
4.172_i386
,
VMWareubuntu14.04,4GBRAM, Inteli7.Foibuscadoporumpadroaleatriodetamanho
32 dentro de um arquivo gerado aleatoriamente que contm 400,000 linhas com 200
caracterescada.Osresultadosforam:
Ferramenta
Mdia
DesvioPadro
agrep
0.670s
0.001
pmt\wu_mamber
0.100s
0.007
13