Académique Documents
Professionnel Documents
Culture Documents
Trabalho 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 Hora 30/04/2013
Tpicos abordados
Anlise
Tempo de execuo Sugesto de melhoria Concluses
Busca Binria
Busca Binria
Usado 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
Busca Binria
Busca Binria
Tcnicas
Tcnicas
Busca dicotmica
Os algoritmos operam selecionando entre duas alternativas distintas (dicotomias) a cada passo do seu funcionamento
Determinstico
Dado a mesma massa de dados como entrada garantem a mesma sada corresponde no mesmo nvel complexidade assinttica
Resolve o problema principal, dividindo-o em subproblemas menores que em tese so mais simples de serem resolvidos
Tcnicas
Anlise
Anlise passo-a-passo
Funo de Complexidade
F(n) = logn+1
Relao de Recorrncia
Teorema Mestre
Para n >= 2
Anlise Assinttica
Melhor caso
O melhor caso da busca binria acontece quando o elemento a ser procurado encontrado na primeira tentativa Realiza somente duas operaes no melhor caso
O(1)
Anlise Assinttica
Pior Caso
O pior caso da busca binria acontece quando o elemento a ser procurado no se encontra na massa de dados Realiza todas as operaes possveis
O(logn)
Anlise Assinttica
Pior caso
Exemplo, vetor n = 64
Loop Loop Loop Loop Loop Loop
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 Assinttica
Caso Mdio
O 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.
O(logn)
Anlise Assinttica
Anlise Assinttica
Anlise Assinttica
Anlise Assinttica
Anlise Assinttica
Observao
importante lembrar que a busca binria s funciona em massa de dados ordenadas O algoritmo de ordenao usado na massa somar sua complexidade a complexidade total do algoritmo se for necessrio organizar os dados O algoritmo de ordenao deve ser escolhido com cautela.
Teste de Execuo
Teste de execuo
Massa de dados
10^7 elementos
Teste de execuo
Teste de execuo
Caso Mdio
Teste de execuo
Teste de execuo
Pior Caso
Sugesto de Melhorias
Sugesto de Melhorias
Verificar as pontas
Antes 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 esquerda Se o elemento a ser buscado cai nestes critrios, conseguimos evitar o pior caso o transformando para um melhor caso
Estouro de Limite
O clculo do meio do vetor meio = (inicio+final)/2 uma implementao ingnua, sujeita a causar falhas no algoritmo para nmeros muito grandes Para corrigir tal problema, devemos calcular o meio da seguinte forma:
Referncias