estrutura avancada de dados sem 3€¦ · inteiro não negativo), multiplicação de duas matrizes...

25
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula 3 1 05/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Upload: others

Post on 14-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

ESTRUTURAS DE DADOS AVANÇADAS

Aula 3

105/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 2: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

Agenda

�Estrategias de Projeto Algoritmos�Refinamentos Sucessivos

�Força Bruta�Dividir e conquistar

�Bibliografia

205/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 3: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

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- [email protected] –http://professorleomir.wordpress.com

Page 4: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

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- [email protected] –http://professorleomir.wordpress.com

Page 5: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

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- [email protected] –http://professorleomir.wordpress.com

Page 6: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

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- [email protected] –http://professorleomir.wordpress.com

Page 7: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

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- [email protected] –http://professorleomir.wordpress.com

Page 8: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

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- [email protected] –http://professorleomir.wordpress.com

Page 9: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

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- [email protected] –http://professorleomir.wordpress.com

Page 10: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

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- [email protected] –http://professorleomir.wordpress.com

Page 11: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

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- [email protected] –http://professorleomir.wordpress.com

Page 12: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

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- [email protected] –http://professorleomir.wordpress.com

Page 13: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

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- [email protected] –http://professorleomir.wordpress.com

Page 14: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

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- [email protected] –http://professorleomir.wordpress.com

Page 15: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

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- [email protected] –http://professorleomir.wordpress.com

Page 16: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

Estrategias de Projeto Algoritmos

�Dividir e conquistar.�O paradigma de dividir e conquistar envolve 3passos:

DividirConquistarCombinar

1605/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 17: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

Estrategias de Projeto Algoritmos

�Dividir e conquistar.

1705/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 18: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

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- [email protected] –http://professorleomir.wordpress.com

Page 19: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

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- [email protected] –http://professorleomir.wordpress.com

Page 20: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

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- [email protected] –http://professorleomir.wordpress.com

Page 21: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

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- [email protected] –http://professorleomir.wordpress.com

Page 22: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

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- [email protected] –http://professorleomir.wordpress.com

Page 23: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

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- [email protected] –http://professorleomir.wordpress.com

Page 24: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

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- [email protected] –http://professorleomir.wordpress.com

Page 25: estrutura avancada de dados sem 3€¦ · inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma

Bibliografia

05/08/2011 Professor Leomir J. Borba- [email protected] –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.