de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos...
Transcript of de Algoritmos Complexidade€¦ · Algoritmosser razoável em termos de eficiência. Algoritmos...
Complexidade de Algoritmos
Conceitos BásicosMsc. Marcelo Aires
O QUE SÃOALGORITMOS?
3
➢ 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
➢ 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
➢ 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
➢ 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
➢ 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
Algoritmos➢ Calcular o determinante de uma matriz n x n?
➢ 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
➢ 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
FORMAS DE REPRESENTAÇÃO DEALGORITMOS?
12
➢ 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
➢ 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
➢ 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
➢ 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
➢ 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
Diagrama de Bloco
Diagrama de Bloco
Diagrama de Bloco
Exemplo de Diagrama
Exemplo de Diagrama
➢ 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
Diagrama de Chapin
Diagrama de Chapin
➢ 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
➢ Comandos básicos:○ escreva○ leia○ se…senao○ enquanto○ para○ faca...enquanto○ funcao
Pseudocódigo
➢ 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
➢ 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