Anda di halaman 1dari 35

UNIVERSIDADE DO ESTADO DO RIO GRANDE DO NORTE UERN FACULDADE DE CINCIAS EXATAS E NATURAIS DEPARTAMENTO DE INFORMTICA MESTRADO EM CINCIA DA COMPUTAO

Projeto e Anlise de Algoritmos Introduo


Professores.: Francisco Chagas de Lima Jnior Dario Jos Aloise

01/04/2012

PAA - Introduo e Motivao

Origem do Vocbulo Algoritmo

01/04/2012

PAA - Introduo e Motivao

Origem do Vocbulo Algoritmo


Do antropnimo rabe al-Khuwarizmi (matemtico rabe do sculo IX) formou-se o rabe al-Khuwarizmi numerao decimal em arbicos que passou ao latim medieval algorismus com influncia do grego arithms nmero; definiu-se a forma histrica Algorithmo (1871).

Referncia: Dicionrio Houaiss da Lngua Portuguesa, 2001, 1a edio.


01/04/2012 PAA - Introduo e Motivao 3

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

Algoritmos: Outras Definies


Dicionrio Houaiss da Lngua Portuguesa, 2001, 1a edio: Conjunto das regras e procedimentos lgicos perfeitamente definidos que levam soluo de um problema em um nmero de etapas. Dicionrio Webster da Lngua Inglesa: An Algorithm is a procedure for solving a mathematical problem in a finite number of steps that frequently involves a repetition of an operation. Algorithms in C, Sedgewick, 1998, 3rd edition: The term algorithm is used in computer science to describe a problem solving method suitable for implementation as a computer program.

01/04/2012

PAA - Introduo e Motivao

Algoritmos: Outras Definies


Observaes Decorrentes das Definies:
Regras so precisas e bem organizadas Conjunto de regras finito Regras so executadas por um computador Tempo de execuo finito

01/04/2012

PAA - Introduo e Motivao

Observaes Decorrentes das Definies


Regras so precisas e bem organizadas:
A maior parte dos algoritmos utiliza mtodos de organizao de dados envolvidos na computao, ou seja, utilizam Estruturas de dados.

01/04/2012

PAA - Introduo e Motivao

Observaes Decorrentes das Definies


Conjunto de regras finito:
Na implementao de algoritmos deve-se utilizar um repertrio finito de regras e termos, normalmente pertencentes sintaxe de uma Linguagem de Programao.

01/04/2012

PAA - Introduo e Motivao

Observaes Decorrentes das Definies


Regras so executadas por um computador: importante lembrar que como existem diferentes tipos de computadores, existem diferentes modelos computacionais. Um algoritmo no existe, ou seja, no possvel escrev-lo, se antes no for definido o modelo computacional associado (definio de como o mesmo ser executado). Este um Conceito fundamental no projeto de qualquer algoritmo.

01/04/2012

PAA - Introduo e Motivao

Observaes Decorrentes das Definies


Tempo de execuo finito:
Na prtica, ningum est interessada em algoritmos que levam anos, dcadas, sculos, milnios para executarem.

01/04/2012

PAA - Introduo e Motivao

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

PAA - Introduo e Motivao

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

PAA - Introduo e Motivao

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

PAA - Introduo e Motivao

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

PAA - Introduo e Motivao

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

PAA - Introduo e Motivao

15

Algumas perguntas sobre Algoritmos


Todos os problemas ligados s cincias exatas possuem algoritmos? Todos os problemas computacionais tm a mesma dificuldade de resoluo? Como algoritmos diferentes para um mesmo problema podem ser comparados ou avaliados? Um programa pode ser visto como um algoritmo codificado em de forma especial que pode ser executado por um computador. Qualquer computador pode executar qualquer programa? O que um algoritmo eficiente?

01/04/2012

PAA - Introduo e Motivao

16

Algoritmo Tratabilidade
Problema Problema
Deciso Modelagem

Modelo Modelo

formalismo

O problema em questo tratvel?

Soluo Soluo

Implementao

Algoritmo Algoritmo

Ou seja, existe algoritmo polinomial que resolva tal problema?


01/04/2012 PAA - Introduo e Motivao 17

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

. Metas e Objetivos Metas e Objetivos Recursos Recursos

Eficcia Eficcia Eficincia Eficincia


01/04/2012

PAA - Introduo e Motivao

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

O Algoritmo de Ordenao por intercalao:

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

PAA - Introduo e Motivao

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

PAA - Introduo e Motivao

20

Algoritmos Eficientes
Exemplo: Resoluo.

TC A =

2.(106 ) 2 instrues 10 instrues / segundos


9

= 2000 segundos

TC B =

50.(106 ). log 2 10 6 instrues 10 instrues / segundos


7

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

PAA - Introduo e Motivao

23

Algoritmos Complexidade
Estimativa de tempo de execuo a medida que n cresce:

Fonte: ZIVIANI, Nvio, Projetos de Algoritmos: Com implementao em Java e C++.

01/04/2012

PAA - Introduo e Motivao

24

Algoritmos Complexidade
Estimativa de tempo de execuo a medida que n cresce:

01/04/2012

PAA - Introduo e Motivao

25

Algoritmos Eficientes Problemas Difceis


Infelizmente nem todos problemas do mundo real tem algoritmos eficientes para resolv-los. Alguns problemas apresentam alta complexidade computacional de forma que os algoritmos at ento conhecidos dependem de elevando tempo de processamento para obteno de uma soluo de qualidade. So exemplos deste tipo de problema:
Problema do Caixeiro Viajante PCV Problemas de Satisfabilidade SAT Problema de Escalonamento de Tarefas Job shop scheduling

01/04/2012

PAA - Introduo e Motivao

26

Algoritmos Eficientes Problemas Difceis


Problema do Caixeiro Viajante PCV: O Problema do Caixeiro Viajante um dos mais clssicos problemas de otimizao combinatria. Caracteriza-se por, dado um conjunto de n cidades e uma matriz de distncias D[1..n,1..n], determinar o caminho que tenha a menor distncia a ser percorrida para que sejam visitadas todas as cidades passando exatamente uma nica vez em cada cidade e retornando a cidade de origem.

Um simples exemplo de aplicao:


01/04/2012 PAA - Introduo e Motivao 27

Algoritmos Eficientes Problemas Difceis


Problema de Satisfabilidade SAT: Uma expresso booleana S satisfazvel se suas variveis podem receber valores 0 ou 1 de tal forma que S seja 1. No exemplo abaixo, S satisfazvel: se a = 1, b = 1 e c = 0, ento S = 1. O problema SAT determinar se dada expresso S satisfazvel ou no.

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

Algoritmos Eficientes Problemas Difceis


Problema de Escalonamento de Tarefas: Os problemas de escalonamento de tarefas consistem em determinar uma atribuio de tarefas para mquinas (processadores, trabalhadores, etc.) de forma a otimizar o tempo de execuo total destas tarefas. Estes problemas so muito importantes para a rea de computao e esto ligados diretamente a estratgias usadas por sistemas operacionais e compiladores. So problemas que necessitam de solues rpidas, muitas vezes de forma on-line.
Um simples exemplo de aplicao:
01/04/2012 PAA - Introduo e Motivao 29

Algoritmos Modelagem Matemtica


A modelagem Matemtica uma metodologia para a construo de algoritmos eficientes. A modelagem Matemtica a ferramenta para construo de algoritmos que utiliza conjunto de conceitos que traz coeso a princpios e tcnicas mostrando quando, como e porque us-los em situaes diferentes. O processo de Modelagem:

01/04/2012

PAA - Introduo e Motivao

30

Exemplo de Modelagem Matemtica


Suponha uma malha rodoviria entre as cidades A,B C, D, E e F. PROBLEMA: Achar um subconjunto da malha rodoviria representada pela tabela abaixo que ligue todas as cidades e tenha um comprimento total mnimo.

01/04/2012

PAA - Introduo e Motivao

31

Exemplo de Modelagem Matemtica


MODELO: A tabela em si, j um modelo da situao real, entretanto, tal modelo pode ser melhorado transformando a tabela numa representao grfica denominada GRAFO, que ser o modelo matemtico para o problema.

Neste caso, as cidades so representadas por vrtices e estradas por linhas (arestas).
01/04/2012 PAA - Introduo e Motivao 32

Exemplo de Modelagem Matemtica


Na seqncia deve-se: Achar uma soluo em termos desse modelo.
Nesse caso, achar um grafo Gi com o mesmo nmero de vrtices e um conjunto mnimo de arestas que conecte todas as cidades e satisfaa a condio do problema.

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

PAA - Introduo e Motivao

33

Exemplo de Modelagem Matemtica


ALGORITMO: 1. Selecione arbitrariamente qualquer vrtice e o coloque no conjunto de vrtices j conectados. 2. Escolha dentre os vrtices no conectados aquele mais prximo de um vrtice j conectado. Se existir mais de um vrtice com essa caracterstica escolha aleatoriamente qualquer um deles. 3. Repita o passo 2 at que todos os vrtices j estejam conectados.
Obs.: Este um exemplo de um algoritmo guloso.
01/04/2012 PAA - Introduo e Motivao 34

Exemplo de Modelagem Matemtica


GRAFO: POSSVEIS SOLUES:

01/04/2012

PAA - Introduo e Motivao

35

Anda mungkin juga menyukai