01/04/2012
01/04/2012
O que so Algoritmos?
Segundo Dijkstra1, um algoritmo corresponde a uma descrio de um padro de comportamento, expresso em termos de um conjunto finito de aes.
Exemplo: Quando executamos a operao a+b percebemos um padro de comportamento, mesmo que a operao seja realizada para valores diferentes de a e b.
Informalmente, um algoritmo descreve uma seqncia de passos computacionais que transforma a entrada numa sada, em um tempo de execuo finito.
1. Cientista da computao holands que recebeu o Prmio Turing de 1972 por suas contribuies fundamentais, no desenvolvimento de algoritmos, linguagens de programao e sistemas operacionais e processamento distribudo. 01/04/2012 PAA - Introduo e Motivao 4
01/04/2012
01/04/2012
01/04/2012
01/04/2012
01/04/2012
01/04/2012
10
Algoritmos Problemas
Mapeamento de DNA
O Projeto Genoma Humano: 100.000 genes no DNA humano; Determinar a seqncia de 3 bilhes de pares de bases qumicas; Tais tarefas exigem Algoritmos sofisticados!
01/04/2012
11
Algoritmos Problemas
Roteamento de pacotes na Internet:
Gerenciar e manipular com segurana e rapidez grande quantidade de pacotes de dados na internet uma tarefa que requer algoritmos inteligentes.
01/04/2012
12
Algoritmos Problemas
Criptografia de chave pblica:
Manter privativas informaes como senhas bancrias, nmeros de carto de crditos, dentre outras informaes confidenciais, requer o uso de algoritmos numricos e teoria dos nmeros.
01/04/2012
13
Algoritmos Problemas
Otimizao e Logstica em Operaes Industriais: A otimizao dos processo operacionais da industria (do petrleo por exemplo) requer a utilizao de algoritmos inteligentes.
01/04/2012
14
Algoritmos Problemas
Localizao tima de Recursos ou Facilidades:
Alocar recurso escassos da melhor maneira possvel, requer o uso de algoritmos aproximativos.
01/04/2012
15
01/04/2012
16
Algoritmo Tratabilidade
Problema Problema
Deciso Modelagem
Modelo Modelo
formalismo
Soluo Soluo
Implementao
Algoritmo Algoritmo
Eficcia Eficincia
A eficcia mede a relao entre os resultados obtidos e os objetivos pretendidos, ou seja, ser eficaz conseguir atingir um dado objetivo. A Eficincia ou rendimento refere-se relao entre os resultados obtidos e os recursos empregados
18
Algoritmos Eficientes
Algoritmos criados para resolver o mesmo problema muitas vezes diferem de forma drstica em sua eficincia. Tais diferenas podem ser muito mais significativas que as diferenas relativas qualidade de Hardware ou software. Por exemplo para o problema de ordenao de um vetor pode-se utilizar: O Algoritmo de Ordenao por Insero:
T1 = c1n
T2 = c2 n log 2 n
Onde n o tamanho do vetor a ser ordenado e c1, c2 so constantes que no dependem de n.
01/04/2012
19
Algoritmos Eficientes
Exemplo: Considere o problema de ordenar um vetor de nmeros e a utilizao dos algoritmos da insero e da intercalao. Dados os computadores descritos na tabela:
Considere ainda que o programador com o computador A excelente e codificou em linguagem de mquina, enquanto, o que utilizou o computador B um programador mediano e utilizou uma linguagem da alto nvel. Assim, calcule o tempo de processamento necessrio para ordenar um vetor com um milho de nmeros (n= 106 ) em cada uma das mquinas com seus respectivos algoritmos.
01/04/2012
20
Algoritmos Eficientes
Exemplo: Resoluo.
TC A =
= 2000 segundos
TC B =
100 segundos
Obs.: Mesmo em desvantagens tcnica (hardware, software e peopleware) o computador B foi 20 vezes mais rpido que o computador A.
01/04/2012 PAA - Introduo e Motivao 21
Algoritmos Complexidade
Na construo de algoritmos dois aspectos considerados no que diz respeito eficincia:
A Complexidade de Tempo: A complexidade de tempo no representa tempo diretamente, mas o nmero de vezes que determinada operao considerada relevante executada. A complexidade de Espao: A complexidade de espao representa a quantidade de memria que necessrio para armazenar as estruturas de dados associadas ao algoritmo.
01/04/2012 PAA - Introduo e Motivao 22
so
Algoritmos Complexidade
A Ordem de complexidade de uma algoritmo ou O() a complexidade assinttica e representa o comportamento assinttico do algoritmo, sendo a sua funo de complexidade. A funo de complexidade utilizada para medir o custo de execuo de um algoritmo e (n) a medida do tempo necessrio para executar o algoritmo para um problema de tamanho n.
01/04/2012
23
Algoritmos Complexidade
Estimativa de tempo de execuo a medida que n cresce:
01/04/2012
24
Algoritmos Complexidade
Estimativa de tempo de execuo a medida que n cresce:
01/04/2012
25
01/04/2012
26
S = (a + b + c).(a + b + c).(a + b + c )
Encontrar os valores das variveis para os quais S = 1 no faz parte do problema SAT. Para se verificar uma expresso booleana no problema SAT tal expresso precisa est na FNC.
Um simples exemplo de aplicao:
01/04/2012 PAA - Introduo e Motivao 28
01/04/2012
30
01/04/2012
31
Neste caso, as cidades so representadas por vrtices e estradas por linhas (arestas).
01/04/2012 PAA - Introduo e Motivao 32
Observao: o modelo matemtico escolhido, em geral, visando uma estratgia que leve soluo.
A soluo ser apresentada na forma de um algoritmo.
01/04/2012
33
01/04/2012
35