Introdução Conceitos Basicos
Introdução Conceitos Basicos
Introdução Conceitos Basicos
Soluções:
Receitas
Procedimentos
Descrição de processos – Algoritmos
Programa
Implementação do algoritmo em uma linguagem de programação.
Estrutura de dados
Organização dos dados necessários para resolver o problema.
Exemplo:
Entrada: 31 41 59 26 41 58
Saída: 26 31 41 41 58 59
Tipos de problemas
Projeto Genoma Humano
Busca/Roteamento na Internet
Comércio eletrônico
Distância entre pontos (google maps)
Alocação de recursos
Multiplicação de matrizes
Técnicas
Problemas Difíceis
Problemas NP-Completos
Aplicações Reais
Problema do Caixeiro-Viajante: Uma companhia de entregas carrega
um caminhão com mercadorias para serem entregues em diversos
pontos. No final do dia, o caminhão deve retornar à companhia para
ser recarregado. Determinar a rota de entregues com a menor
distância.
Algoritmos de Aproximação
n4 31 88 244
2n 19 25 31
Característica de Correção
Para qualquer entrada dado o algoritmo termina com a saída:
▪ b1 < b2 < b3 < b4 < ...< bn
▪ b1, b2, b3, b4, ..., bn é uma permutação de a1, a2, a3, a4, ..., an
Tempo de Execução
Depende de:
▪ Número de elementos
▪ Quão (parcialmente) ordenados eles estão
▪ Algoritmo
8 2 4 9 3 6
8 2 4 9 3 6
1 i j 2 8 4 9 3 6
2 4 8 9 3 6
Ordenado Chave
2 4 8 9 3 6
2 3 4 8 9 6
2 3 4 6 8 9
Inicialização
Para i=2, o invariante se mantém já que A[1] está ordenado.
Manutenção:
O laço ENQUANTO interior move os elementos A[i-1], A[i-2], ..., A[i-k] uma posição para
direita sem mudar a ordem.
Então o elemento A[i] (salvo) é inserido na posição k de forma que A[k-1] ≤ A[k] ≤A [k+1].
A[1...i-1] estava ordenado + A[i] → A[1...i] ordenado.
Terminação:
O laço termina quando i=n+1. Então o invariante assegura que “A[1...n] consiste de
elementos de A[1...n] mas ordenados”
Entrada
Especificações precisas de que o algoritmo recebe como entrada.
Saída
Especificações precisas do que o algoritmo produz com a entrada.
As manipulações de casos especiais da entrada devem ser descritas.
Melhor Caso
Pior caso
Caso médio