• Nenhum resultado encontrado

Análise de Algoritmos

N/A
N/A
Protected

Academic year: 2022

Share "Análise de Algoritmos"

Copied!
39
0
0

Texto

(1)

Análise de Algoritmos

(2)

www.nakamura.eti.br/eduardo Análise de Algoritmos 2

(3)

www.nakamura.eti.br/eduardo Análise de Algoritmos 3

(4)

• Procedimento computacional bem definido

▫ Recebe algum valor, ou conjunto de valores, como entrada

▫ Produz algum valor, ou conjunto de valores, como saída

www.nakamura.eti.br/eduardo Análise de Algoritmos 4

Algoritmo

Entrada Saída

(5)

www.nakamura.eti.br/eduardo Análise de Algoritmos 5

(6)

• Procedimento computacional bem definido

▫ Recebe algum valor, ou conjunto de valores, como entrada

▫ Produz algum valor, ou conjunto de valores, como saída

• Ferramenta para resolver um problema computacional

▫ Enunciado especifica o relacionamento entre a entrada e a saída desejada

▫ Algoritmo é o procedimento para alcançar este relacionamento

www.nakamura.eti.br/eduardo Análise de Algoritmos 6

(7)

• Problema de ordenação

▫ Dada um conjunto de valores de entrada, ordená-los de forma crescente

▫ Usado freqüentemente na prática

▫ Um problema interessante para introduzir técnicas de projeto e de análise de algoritmos

• Especificação

▫ Entrada: uma seqüência de n números

▫ Saída: uma permutação da seqüência de entrada, tal que

www.nakamura.eti.br/eduardo Análise de Algoritmos 7

an

a

a1, 2,..., a n

a

a'1, '2 ,..., ' a n

a

a'1 '2 ..., '

(8)

• Uma instância

▫ Seqüência de entrada [1, 3, 2, 5, 6, 4]

▫ Seqüência de saída [1, 2, 3, 4, 5, 6]

• Instância de um problema

▫ Uma entrada que satisfaz as restrições para se calcular uma solução para o problema

www.nakamura.eti.br/eduardo Análise de Algoritmos 8

(9)

• Estruturas de dados

▫ Meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificações

• Técnica

▫ Para muitos problemas você não terá algoritmos prontos

▫ O curso lhe ensinará algumas técnicas para que você desenvolva seus algoritmos

www.nakamura.eti.br/eduardo Análise de Algoritmos 9

(10)

• Os algoritmos estudados visam a eficiência

▫ Tempo de execução

▫ Espaço (memória) ocupado

▫ Classe de problemas P

• Nem todos os problemas possuem solução eficiente

▫ Classe de problemas NP-Completo

▫ Encontrados com grande freqüência na prática

▫ Exemplos

 Caixeiro viajante

 Binpacking

 Steiner tree

www.nakamura.eti.br/eduardo Análise de Algoritmos 10

(11)

www.nakamura.eti.br/eduardo Análise de Algoritmos 11

(12)

• Se computadores fossem infinitamente rápidos, qual algoritmo você implementaria?

• Seria necessário estudar algoritmos?

www.nakamura.eti.br/eduardo Análise de Algoritmos 12

(13)

www.nakamura.eti.br/eduardo Análise de Algoritmos 13

(14)

• Especificação

▫ Entrada: uma seqüência de n números

▫ Saída: uma permutação da seqüência de entrada, tal que

▫ Os números a serem ordenados são chamados de chaves

• Isertion sort (inserção)

▫ Semelhante a ordenação de cartas em uma mão de jogo

www.nakamura.eti.br/eduardo Análise de Algoritmos 14

an

a

a1, 2,..., a n

a

a'1, '2,..., ' a n

a

a'1 '2 ..., '

an

a

a1, 2,...,

(15)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 15

(16)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 16

1 2 3 4 5 6

5 2 4 6 1 3

2

(17)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 17

1 2 3 4 5 6

5 2 4 6 1 3

2

(18)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 18

1 2 3 4 5 6

5 5 4 6 1 3

2

(19)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 19

1 2 3 4 5 6

2 5 4 6 1 3

2

(20)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 20

1 2 3 4 5 6

2 5 4 6 1 3

4

(21)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 21

1 2 3 4 5 6

2 5 5 6 1 3

4

(22)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 22

1 2 3 4 5 6

2 4 5 6 1 3

4

(23)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 23

1 2 3 4 5 6

2 4 5 6 1 3

4 6 1 3

(24)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 24

1 2 3 4 5 6

2 4 5 6 1 3

4 6 1 3

(25)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 25

1 2 3 4 5 6

2 4 5 6 1 3

4 6 1 3

(26)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 26

1 2 3 4 5 6

2 4 5 6 6 3

4 6 1 3

(27)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 27

1 2 3 4 5 6

2 4 5 5 6 3

4 6 1 3

(28)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 28

1 2 3 4 5 6

2 4 4 5 6 3

4 6 1 3

(29)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 29

1 2 3 4 5 6

2 2 4 5 6 3

4 6 1 3

(30)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 30

1 2 3 4 5 6

1 2 4 5 6 3

4 6 1 3

(31)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 31

1 2 3 4 5 6

1 2 4 5 6 3

4 6 1 3

(32)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 32

1 2 3 4 5 6

1 2 4 5 6 6

4 6 1 3

(33)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 33

1 2 3 4 5 6

1 2 4 5 5 6

4 6 1 3

(34)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 34

1 2 3 4 5 6

1 2 4 4 5 6

4 6 1 3

(35)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 35

1 2 3 4 5 6

1 2 3 4 5 6

4 6 1 3

(36)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 36

1 2 3 4 5 6

1 2 3 4 5 6

4 6 1 3

(37)

• Ao avaliar cada chave do vetor

▫ Quando o algoritmo trabalhou menos?

▫ Quando o algoritmo trabalhou mais?

• Baseado nisso

▫ Com qual entrada o algoritmo vai trabalhar menos?

▫ Com qual entrada o algoritmo vai trabalhar mais?

www.nakamura.eti.br/eduardo Análise de Algoritmos 37

(38)

INSERTION-SORT(A, n) 1: for j  2 to n do 2: chave  A[j];

3: i  j – 1;

4: while i > 0 and A[i] > chave do 5: A[i+1]  A[i];

6: i  i – 1;

7: end while

8: A[i+1]  chave;

9: end for

www.nakamura.eti.br/eduardo Análise de Algoritmos 38

(39)

• Com qual entrada o algoritmo vai trabalhar menos?

• Com qual entrada o algoritmo vai trabalhar mais?

• Adapte o insertion-sort de maneira que o vetor de saída esteja na ordem decrescente

www.nakamura.eti.br/eduardo Análise de Algoritmos 39

Referências

Documentos relacionados

No que refere se ao aspecto Meio Ambiente e Qualidade Ambiental foi observado que 63% não reconhecem o tratamento de esgoto, e afirmam que o mesmo é

outros países NOTA: A MELHORIA DE PONTUAÇÃO NO DOING BUSINESS NO INDICADOR DE COMÉRCIO EXTERIOR VIRÁ DE AÇÕES SOB RESPONSABILIDADE DA RECEITA FEDERAL – PRINCIPALMENTE ASSOCIADAS

Salienta-se, a nível intra-regional (Figura 3.2.3 - B), o contributo das sub-regiões Alto-Trás-os-Montes, Grande Porto, Entre Douro e Vouga e Cávado para o aumento mais

O Conselho Editorial da Revista Pesquisa e Debate em Educação (RPDE) torna público o presente Edital e convida os interessados a remeter artigos científicos,

O Fundo pretende atingir seu objetivo investindo no mínimo 95% de seu patrimônio em cotas de Fundo de Investimento de Renda Fixa, que possuam como política de investimento a

§ 2 o Serão reduzidos em 50% os emolumentos e taxa de fiscalização judiciária para os atos notariais e registrais relativos a imóveis oriundos de processos de regularização

Publicamos aqui um segundo comentário, o de Maria Isabel Lins, que interroga o texto de Attié na vertente do que há do desejo do autor na obra do poeta Mallarmé e as consequências

OBSERVAÇÃO : O ALUNO DEVERÁ VERIFICAR A EXISTÊNCIA DE JANELA NA GRADE CURRICULAR DE SUA TURMA COMPATÍVEL COM O HORÁRIO DE ORIENTAÇÃO OFERECIDO POR CADA PROFESSOR, OU OPTAR POR