de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos...

29
Complexidade de Algoritmos

Transcript of de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos...

Page 1: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

Complexidade de Algoritmos

Page 2: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

Conceitos BásicosMsc. Marcelo Aires

Page 3: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

O QUE SÃOALGORITMOS?

3

Page 4: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

➢ Um algoritmo é uma sequência de passos computacionais que transformam a entrada (algum valor ou conjunto de valores) na saída (algum valor ou conjunto de valores).

➢ Também podemos visualizar um algoritmo como uma ferramenta para resolver um problema computacional bem especificado (o relacionamento entre a entrada e a saída desejada).

Algoritmos

Page 5: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

➢ Exemplo de problema: ordenar uma sequência de números em ordem crescente.

➢ Entrada: Uma sequência de n números (a₁, a₂, ..., an).➢ Saída: Uma permutação (reordenação) (a'₁, a'₂, ..., a'n) da

sequência de entrada, tal que a'₁ <= a'₂ <= … <= a'n➢ Ex: (31, 41, 59, 26, 41, 58) -> Instância

(26, 31, 41, 41, 58, 59) -> Resultado

Algoritmos

Page 6: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

➢ Uma instância de um problema consiste na entrada (que satisfaz a quaisquer restrições impostas no enunciado do problema) necessária para se calcular uma solução para o problema.

Algoritmos

Page 7: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

➢ Um algoritmo é dito correto se, para cada instância de entrada, ele pára com a saída correta.

➢ Dizemos que um algoritmo correto resolve o problema computacional dado.

➢ Um algoritmo incorreto pode não parar em algumas instâncias de entrada, ou então pode parar com outra resposta que não a desejada.

Algoritmos

Page 8: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

➢ O fato de um algoritmo resolver (teoricamente) um problema não significa que seja aceitável na prática. ○ Recursos de espaço e tempo requeridos têm

grande importância em casos práticos.➢ Às vezes, o algoritmo mais imediato (fácil) está longe de

ser razoável em termos de eficiência.

Algoritmos

Page 9: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

Algoritmos➢ Calcular o determinante de uma matriz n x n?

Page 10: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

➢ E se os recursos computacionais forem infinitos?○ Memória livre eternamente

➢ Você estudaria algoritmos? (sim? solução correta?)➢ Qualquer método correto resolveria.➢ Usaria o mais fácil de implementar.

Algoritmos

Page 11: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

➢ Entretanto, sabemos que os computadores não são infinitamente rápidos. A memória pode ser de baixo custo, mas não é gratuita.

➢ Assim, o tempo de computação é um recurso limitado, bem como o espaço na memória.

➢ Recursos usados de forma sensata → algoritmos eficientes.

Algoritmos

Page 12: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

FORMAS DE REPRESENTAÇÃO DEALGORITMOS?

12

Page 13: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

➢ Existem diversas formas de representação de algoritmos, mas não há um consenso com relação à melhor delas. Algumas delas são:○ Descrição Narrativa;○ Diagrama de bloco (Fluxograma);○ Diagrama de Chapin; e○ Pseudocódigo.

Formas de Representação

Page 14: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

➢ A representação dos algoritmos são expressos diretamente em linguagem natural;

➢ Fornece passos em ordem numérica;➢ Pouco usada na prática, pois dá oportunidade a erros de

interpretação, como ambiguidades e imprecisões;➢ Também conhecida como Linguagem Natural.

Descrição Narrativa

Page 15: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

➢ Exemplo de uma receita de bolo:○ Misture os ingredientes;○ Unte a forma com manteiga;○ Despeje a mistura na forma;○ Se houver coco ralado;○ então despeje sobre a mistura;○ Leve a fôrma ao forno;○ Enquanto não corar;○ deixe a forma no forno;○ Retire do forno;○ Deixe esfriar.

Descrição Narrativa

Page 16: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

➢ Exemplo do cálculo da média de um aluno:

Descrição Narrativa

1. Obter as suas 2 notas2. Calcular a média aritmética;3. Se a média for maior que 60

3.1. o aluno foi aprovado;4. Senão ele foi para prova final

4.1. realiza a prova final;5. Se resultado da prova final maior que 60

5.1. o aluno foi aprovado;6. Senão

6.1. ele foi reprovado

Page 17: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

➢ Conhecida por diagrama de fluxo ou fluxograma;➢ Ferramenta usada por profissionais envolvidos

diretamente com a programação;➢ Tem como objetivo descrever o método e a seqüência

do processo em um computador;➢ Pode ser desenvolvido em qualquer nível de detalhe;➢ Usa diversos símbolos geométricos, os quais

estabelecerão as seqüências de operações a serem efetuadas em um processamento computacional.

Diagrama de Bloco

Page 18: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

Diagrama de Bloco

Page 19: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

Diagrama de Bloco

Page 20: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

Diagrama de Bloco

Page 21: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

Exemplo de Diagrama

Page 22: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

Exemplo de Diagrama

Page 23: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

➢ Diagrama de quadros que permite apresentar uma visão hierárquica e estruturada da lógica do problema;

➢ Representação das estruturas que tem um ponto de entrada e um ponto de saída;

➢ São compostos pelas estruturas básicas de controle de seqüência, seleção e repetição;

➢ Fácil de entender e mais simples (diagrama de bloco);➢ Também conhecido como Diagrama de Quadro.

Diagrama de Chapin

Page 24: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

Diagrama de Chapin

Page 25: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

Diagrama de Chapin

Page 26: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

➢ Representação de um algoritmo através de códigos;➢ Tem um grau de rigidez sintática intermediária entre as

linguagens natural e de programação;➢ Pode-se utilizar o idioma nativo;➢ Deve manter, tanto quanto possível, a rigidez semântica; ➢ A idéia é que seja um passo intermediário entre a

linguagem natural e a linguagem de programação de alto nível.

Pseudocódigo

Page 27: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

➢ Comandos básicos:○ escreva○ leia○ se…senao○ enquanto○ para○ faca...enquanto○ funcao

Pseudocódigo

Page 28: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

➢ CORMEN, T. H.; STEIN, C.; LEISERSON, C.; RIVEST, R. L. Algoritmos: teoria e prática. Rio de Janeiro: Campus, 2002.

➢ MEDINA, M.; FERTING, C.. Algoritmos e programação: teoria e prática. Novatec Editora, 2006.

Referências

Page 29: de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos Calcular o determinante de uma matriz n x n? E se os recursos computacionais forem

➢ Crie um algoritmo que calcule os valores de x' e x'' de uma equação de segundo grau ax²-bx+c=0.

➢ Desenvolva um algoritmo que ordene um conjunto de inteiros em ordem crescente.

➢ Desenvolva um algoritmo que verifica a existência de um número em uma matriz 3x3.

Exercício