Post on 14-Aug-2020
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
ESTRUTURAS DE DADOS AVANÇADAS
Aula 3
105/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Agenda
�Estrategias de Projeto Algoritmos�Refinamentos Sucessivos
�Força Bruta�Dividir e conquistar
�Bibliografia
205/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos
�Força Bruta� É a mais simples das estratégias/ténicas de projeto de algoritmo, uma solução
direta para resolver um problema, geralmente baseada diretamente no enunciado do problema e nas definições dos conceitos envolvidos
� A “força” é de um computador e não do intelecto de alguém.Somente faça
� Geralmente, a estratégia de “força bruta” é umadas mais fáceis de aplicar
305/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos
�Força Bruta�Exemplos:
Calculando a soma de n números (a > 0, n sendo uminteiro não negativo), Multiplicação de duas matrizes n por nOrdenação por seleção, Busca seqüencial
�Apesar de ser raramente uma fonte dealgoritmos eficientes ou brilhantes, a técnicaforça bruta é uma importante estratégia deprojeto de algoritmos
�Força bruta é aplicável a uma ampla variedadede problemas (Soma de N numeros, det. Maior elemento da
lista)
405/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos
�Força Bruta�Para alguns problemas importantes (ordenação,busca, multiplicação de matrizes, string matching, etc),A técnica de força bruta fornece:
�Algoritmos razoáveis�Algoritmos de valor prático�Algoritmos sem limitações quanto ao tamanho dainstância.
505/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos
�Força Bruta – por que usar ?�O esforço para projetar um algoritmo mais eficiente
pode não ser justificável se:�Somente algumas poucas instâncias de um problemaNecessitarem ser resolvidas (velocidade aceitável)�Mesmo ineficiente em geral , pode ser útil paraResolver problemas com instâncias pequenas�Propósito teórico e educacional
605/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos
�Força Bruta�Aplicação da técnica força bruta em problemasde ordenação.
Dada uma lista de n elementos ordenáveis
(números, caracteres, strings), rearranjá–los
em ordem crescente.
Qual seria o método mais direto para resolver oproblema da ordenação?
705/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos
�Força Bruta – Exemplo de Busca
rotina BuscaPadrao(texto[0 ... n-1], padrao[0 ... m-1])para i ← 0 até n – m faça
j ← 0enquanto j < m e padrao[j] = texto[i + j] faça
j ← j + 1se j = m então
retorne iretorne -1
805/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos
�Tipos de Algorimos em que se aplica essa tecnica�Selection sort (Ordenação por seleção )
� Baseado em se passar sempre o menor valor do vetor para a primeiraposição (ou o maior dependendo da ordem requerida depois o de segundo menor valor para a segunda posição, e assim é feitosucessivamente com os (n-1) elementos restantes, até os últimos doiselementos.
905/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos
�Selection sort (Ordenação por seleção )�Exemplo
�934651278 �193465278�129346578�123946578�123496578�123459678�123456978�123456798�123456789
1005/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos
�Bubble Sort� Comparar elementos adjacentes de uma lista e permutá–los se eles estiverem
fora de ordem.� Fazendo isso repetidamente, acabamos “empurrando” (bubbling up) o maior
elemento para a última posição da lista.� A próxima passagem “empurra” o segundo maior e assim por diante, até após
n–1 passos, a lista ser ordenada.
1105/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos
�Busca Sequencial�Compara elementos sucessivos de uma dadalista com um dada chave de busca até:
�Encontrar um elemento similar (busca bemsucedida) ou�A lista ser exaurida sem encontrar um elementosimilar (busca mal sucedida)
1205/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos
�Prós FB
�Ampla aplicabilidade
�Simplicidade
�Fornece algoritmos razoáveis para alguns
Problemas importantes
�Fornece algoritmos padrão para tarefas
computacionais simples.
1305/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos
�Considerações finais FB
�Os principais méritos de uma estratégia força
bruta são a ampla aplicabilidade e simplicidade
�O principal demérito é uma baixa eficiência da
maioria dos algoritmos força bruta.
1405/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos
�Dividir e conquistar.� Provavelmente a tecnica mais conhecida.�Divide a instancia do problema em duas ou mais
instancias menores.�Resolver as instâncias menoresrecursivamente�Obtem a solução para as instâncias originais(maiores) através da combinação destassoluções.
1505/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos
�Dividir e conquistar.�O paradigma de dividir e conquistar envolve 3passos:
DividirConquistarCombinar
1605/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos
�Dividir e conquistar.
1705/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos
� Exemplo dividir e conquistar Computar a soma de n números ao, ..., an–1� Se n>1, podemos dividir o problema em duasinstâncias do mesmo problema:
� Soma dos primeiros n/2 números� Soma dos n/2 números restantes.
Uma vez estas duas somas computadas,adicionamos seus valores para obter oresultado final:
1805/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos
� Exemplo dividir e conquistar – continuação
� Esta é uma maneira eficiente de computar asoma de n números?
� É mais eficiente do que uma adição forçabruta?
1905/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos� Porém, freqüentemente, o tempo gasto naexecução das três etapas do algoritmo dividir &conquistar, é menor do que a resolução por outrosmétodos.� A estratégia dividir & conquistar produz osalgoritmos mais importantes e eficientes emciência da computação
� Importante: A estratégia dividir & conquistar éidealmente adaptada a computação paralela.
2005/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos� Tipos de Algorimos em que se aplica tecnica D&C:
� Mergesort – (Sort – Ordenar , Merge – Unir)
2105/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos� Quicksort
� Escolha um elemento da lista, denominado pivô;� Rearranje a lista de forma que todos os elementos
anteriores ao pivô sejam menores que ele, e todos os elementos posteriores ao pivô sejam maiores que ele. Ao fim do processo o pivô estará em sua posição final e haverá duas sublistas não ordenadas. Essa operação édenominada partição;
� Recursivamente ordene a sublista dos elementos menores e a sublista dos elementos maiores;
2205/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos� Quicksort - Exemplo
� Ordenar o arranjo 0 5 3 1 9 8 2 4 7� Determina pivo 5� Rearranja lista 03124 5 9 8 7 (partição)� Ordena recursivamente sublistas (03124 e 987):� 01234 5 789
2305/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Estrategias de Projeto Algoritmos� Considerações :
� Dividir e Conquistar é uma técnica geral de projeto de algoritmos que Resolve uma instância do problema dividindo–a em diversas instância menores (idealmente de tamanhos similares)
� Resolvendo cada uma delas recursivamente� Combinando suas soluções para obter a solução paraa instância original do problema� Muitos algoritmos eficientes são baseados nesta técnica.� Contudo, ela pode ser inaplicável e inferior a soluções
algorítmicas mais simples.
2405/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com
Bibliografia
05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com 25
BIBLIOGRAFIA BÁSICA
1AZEREDO, Paulo A. Métodos de Classificação de Dados. Rio de Janeiro: Ed. Campus, 1996.
2LAUREANO, M. Estrutura de Dados com Algoritmos e C. 1ª Ed. São Paulo: Brasport, 2008.
3PEREIRA, Silvio do Lago. Estruturas de Dados Fundamentais – Conceitos e Aplicações. 7.ed. São Paulo: Érica, 2008.
BIBLIOGRAFIA COMPLEMENTAR
4KOFFMANN, E.B. Objetos, Abstração, Estrutura de Dados e Projetos. 1ª Ed. Rio de Janeiro: LTC, 2008.
5MORAES, Celso Roberto. Estruturas de Dados e Algoritmos.Uma abordagem didática. Edição revista e Ampliada. São Paulo: Editora Futura, 2003.
6WIRTH, Niklaus. Algoritmos e estruturas de dados. Rio de Janeiro: Prentice Hall do Brasil, 1989.
7ZIVIANI, N. Projeto de Algoritmos com implementações em Pascal e C , Editora Pioneira, 1999.