Você está na página 1de 14

Anlise e Complexidade de

Algoritmos
Aula 01 Introduo a Anlise e
Complexidade de Algortmos

Clique para editar o estilo do subttulo mestre

Humberto Roque Kuhn

A funo dos Algoritmos


na computao

O que so algoritmos ?
Porque o estudo dos algoritmos
vale a pena ?
Qual a funo dos algoritmos em
relao a outras tecnologias
usadas em computadores ?

Estrutura de Dados e Algoritmos

Estrutura de Dados e Algoritmos

Um algoritmo uma ferramenta


computacional para resolver um
problema computacional.
O enunciado do problema
especifica o relacionamento entre
a entrada e a sada desejada.
O algoritmo servir para alcanar
este relacionamento da entrada
com a sada.

Estrutura de Dados e Algoritmos

Ex: Poderia ser necessrio ordenar


uma sequncia de nmeros em
ordem crescente.
Como definir formalmente o
problema da ordenao ?

Problema da Ordenao

Problema da Ordenao

Instncia: sequncia de entrada.


Ordenao: operao fundamental
em computao, utilizada em etapas
intermedirias.
Dependem: nmero de itens a
serem ordenado; extenso em que
os itens j esto ordenado; ou
restries sobre os valores de itens e
dos dispositivos de armazenamento:
memria, disco, ...

Problemas & Algoritmos

Algoritmo Correto: para cada


instncia de entrada, ele pra com a
sada correta.

Algoritmo correto resolve o


problema computacional dado.
Algoritmo Incorreto: pode no
parar em algumas instncias de
entrada, ou ento pode parar com
resposta no desejada.

Problemas & Algoritmos

Projetando Algoritmos

Estrutura de Dados: um meio


para armazenar e organizar dados
com o objetivo de facilitar o acesso e
as modificaes.
Nenhuma estrutura de dados nica
funciona bem para todos os
propsitos. importante conhecer os
pontos fortes e as limitaes de
vrias delas.

Projetando Algoritmos

Tcnica: Poderemos utilizar o material de


aula como um livro de receitas para
algoritmos. Mas algum dia voc poder
encontrar um problema para o qual no
seja possvel descobrir prontamente um
algoritmo publicado.
Aprenderemos tcnicas de projeto e
anlise de algoritmos, de forma que
poderemos desenvolver algoritmos,
fornecendo a resposta correta e entender
sua eficincia.

Projetando Algoritmos

Problemas difceis: Estaremos estudando


algoritmos eficientes.
A medida habitual de eficincia a
velocidade(tempo que um algoritmo demora
para produzir um resultado).
Existem problemas para os quais no se
conhece nenhuma soluo eficiente. (NPcompletos)
NP-completo: Ainda no foi encontrado
nenhum algoritmo eficiente para um
problema NP-completo, mas tambm
ningum provou que no possvel existir
um algoritmo eficiente.

Projetando Algoritmos

til conhecer os problemas NP-completos,


pois sempre aparecem em aplicaes reais.
Assim no perder tempo tentando buscar
uma soluo eficiente. Por outro lado se
mostrar que o problema NP-completo,
poder se dedicar a desenvolver um
algoritmo que oferea uma boa soluo,
embora no seja a melhor possvel.

Exerccios
1.Fornea um exemplo real no qual aparea
os problemas computacionais a seguir:
ordenao, localizao da envoltria
convexa.
2.Alm da velocidade, que outras medidas de
eficincia poderiam ser usadas em uma
configurao real ?
3.Selecione uma estrutura de dados que voc
j tenha visto antes e discuta seus pontos
fortes e suas limitaes.

Você também pode gostar