Pesquisa Binária - Análise de Complexidade

download Pesquisa Binária - Análise de Complexidade

of 31

description

Apresentação sobre análise de complexidade da Pesquisa Binária, realizada para a matéria de Projeto de Analise de Algorítimos da Universidade de Vila Velha.Alunos: João Paulo Buback, Lorran Pegoretti e Ricardo da Hora.

Transcript of Pesquisa Binária - Análise de Complexidade

Pesquisa Binria

Pesquisa BinriaTrabalho realizado para avaliao na disciplina de Projeto e Anlise de Algoritmos, do curso de Cincia da Computao, turno matutino, da Universidade de Vila Velha (UVV), ministrada pelo professor Alessandro Oliveira.

Joo Paulo Buback, Lorran Pegoretti, Ricardo da Hora30/04/2013Tpicos abordadosObjetivo

Busca Binria

Tcnicas

Anlise

Tempo de execuo

Sugesto de melhoria

Concluses

Busca BinriaBusca BinriaUsado para encontrar a posio de um valor dentro de um vetor ordenado

Algoritmo determinstico

Paradigma dividir para conquistar

Pode ser aplicada de forma iterativa ou de forma recursiva

A busca binria um algoritmo de busca que visa encontrar um determinado valor em uma sequencia ordenada de nmeros. Segue o paradigma de dividir e conquistar, quebrando o vetor pela metade at que o valor a ser procurado seja encontrado ou no.4

Busca Binria5Busca Binria

6TcnicasTcnicasBusca dicotmicaOs algoritmos operam selecionando entre duas alternativas distintas (dicotomias) a cada passo do seu funcionamento

DeterminsticoDado a mesma massa de dados como entrada garantem a mesma sada corresponde no mesmo nvel complexidade assinttica

Paradigma Dividir e ConquistarResolve o problema principal, dividindo-o em subproblemas menores que em tese so mais simples de serem resolvidosCaractersticas do AlgoritmoA busca binria possu uma srie de caractersticas importantes de serem mencionadas ao se descrever o algoritmo.Busca DicotmicaDentro dos algoritmos de busca, a busca binria faz parte de uma categoria chamada de busca dicotmica. Na busca dicotmica os algoritmos operam selecionando entre duas alternativas distintas (dicotomias) a cada passo do seu funcionamento.DeterminsticoO algoritmo de busca binria faz parte de uma categoria de algoritmos chamados de Determinsticos. Os algarismos determinsticos so aqueles que dado a mesma massa de dados como entrada garantem a mesma sada corresponde no mesmo nvel complexidade assinttica.Dessa forma, dado uma massa de dados n e uma chave de busca k e funcionamento correto do algoritmo, a busca binria sempre retornar o mesmo resultado de sada com o mesmo comportamento assinttico (no considerando a variao de constantes).Paradigma Dividir e ConquistarO algoritmo de busca binria utiliza-se do paradigma de dividir e conquistar. Tal paradigma consiste em resolver o problema principal, o dividindo em subproblemas menores que em tese so mais simples de serem resolvidos. Dessa forma, as soluo dos subproblemas podem ser somadas para encontrar a soluo do problema principal.A busca binria entra neste paradigma ao dividir pela metade a massa de dados a cada iterao, diminuindo pela metade o espao de busca da massa, at que o elemento buscado seja encontra ou at que o espao de busca seja reduzido a um valor unitrio.

8Tcnicas

9AnliseAnlise passo-a-passo

11Funo de ComplexidadeF(n) = logn+1Relao de RecorrnciaTeorema Mestre

Para n >= 2

Melhor casoO melhor caso da busca binria acontece quando o elemento a ser procurado encontrado na primeira tentativaRealiza somente duas operaes no melhor casoAnlise AssintticaO(1)O melhor caso da busca binria apresenta um comportamento constantePior CasoO pior caso da busca binria acontece quando o elemento a ser procurado no se encontra na massa de dadosRealiza todas as operaes possveisAnlise AssintticaO pior caso da busca binria apresenta um comportamento logartmico.O(logn)Pior caso Exemplo, vetor n = 64Loop 1 n = 64 para n = 32Loop 2 n = 32 para n = 16Loop 3 n = 16 para n = 8Loop 4 n = 8 para n = 4Loop 5 n = 4 para n = 2Loop 6 n = 2 para n = 1 Nmero total de operaes c * k Generalizao do padro observado acima n = 2^k Aplicando log dos dois lados temos k = logn Consequentemente c * logn O(logn)

Anlise AssintticaCaso MdioO caso mdio da busca binria acontece quando o elemento a ser procurado encontrado em uma quantidade entre O(1) e O(logn)O nmero de operaes depende da posio na massa de dados onde o elemento a ser procurado se encontra.Anlise AssintticaO pior caso da busca binria apresenta um comportamento logartmico.O(logn)Anlise Assinttica

Anlise Assinttica

Anlise Assinttica

Anlise Assinttica

Observao importante lembrar que a busca binria s funciona em massa de dados ordenadasO algoritmo de ordenao usado na massa somar sua complexidade a complexidade total do algoritmo se for necessrio organizar os dadosO algoritmo de ordenao deve ser escolhido com cautela.

Anlise AssintticaTeste de ExecuoMassa de dados10 elementos10 elementos10^4 elementos10^5 elementos10^6 elementos10^7 elementosTeste de execuo

Grfico Melhor CasoTeste de execuo

Caso MdioTeste de execuo

Grfico Caso MdioTeste de execuo

Pior CasoTeste de execuo

Sugesto de MelhoriasVerificar as pontasAntes de iniciar a busca, verificar se o elemento procurado est nas pontas ou se ele maior que o elemento na ponta direita ou menor que o elemento da pontas esquerdaSe o elemento a ser buscado cai nestes critrios, conseguimos evitar o pior caso o transformando para um melhor casoSugesto de MelhoriasEstouro de LimiteO clculo do meio do vetor meio = (inicio+final)/2 uma implementao ingnua, sujeita a causar falhas no algoritmo para nmeros muito grandesPara corrigir tal problema, devemos calcular o meio da seguinte forma:Meio = (final inicio)/2 + inicio

Refernciashttp://www.brpreiss.com/books/opus5/html/page449.htmlAlgoritmos : teoria e prtica - Thomas H. Cormenhttp://rosettacode.org/wiki/Binary_search