You are on page 1of 23

CES-11

Algoritmos
g
m e
Estruturas de Dados

Carlos Alberto Alonso Sanches


Juliana de Melo Bezerra

Objetivos
j
g
gerais
Compreenso da necessidade de uma boa
estruturao das informaes processadas no
computador
Capacidade de escolher a estrutura de dados
mais adequada
q
para
p
uma determinada aplicao
p

Capacidade de programar mtodos que criam e


manipulam essas estruturas
Famoso livro de Niklaus Wirth:

Algorithms + Data Structures = Programs

Estar
Estar alfabetizado
alfabetizado versus saber
saber redigir
redigir

Algoritmo
g
m
Informalmente, um algoritmo
g
qualquer
q q
procedimento computacional bem definido que
recebe um conjunto
j
de valores como entrada
e produz outro conjunto de valores como sada
Algoritmo correto
Para cada instncia de entrada, termina e produz
uma
m sada
s d adequada
d
d

Algoritmo
g
incorreto
Quando para com uma resposta indesejada
seja permanece em loop)
Quando no para (ou seja,

Exemplos
mp
de algoritmos
g
m
Projeto Genoma Humano

O DNA humano possui cerca de 100 mil genes e


3 bilhes de p
pares de bases qumicas
q

Necessidade de armazenar esses dados e analis-los


Insero, eliminao e atualizao dos dados
Ordenao classificao e pesquisa de informaes
Ordenao,
Correlao entre os dados
Clculos cientficos envolvendo grandes matrizes
multidimensionais
ltidi
i
i

Internet

E
Emprega algoritmos
l
it
para gerenciar
i e manipular
i l um
enorme volume de dados
Loca
Localizao
zao de rotas por onde
on os dados
a os trafegam
traf gam
Mecanismos de pesquisa de pginas

Exemplos
mp
de algoritmos
g
m
Comrcio eletrnico
Necessidade de manter informaes privativas
(nmero de cartes,
cartes senhas,
senhas etc
etc.))
Criptografia de chave pblica e assinaturas digitais
Compactao e descompactao

Indstria e comrcio
Alocao adequada de recursos escassos
Onde localizar os poos de petrleo para maximizar o
lucro?
Onde investir em publicidade?
l
Pblico?
l
Regio?
Como designar tripulaes de voo de um modo menos
dispendioso?
Qual melhor investimento: aes, opes, ttulos pblicos?

Desenvolvimento
m
de um
m algoritmo
g
m
Caractersticas

dos algoritmos

Convm conhecer os
algoritmos existentes
para ento adapt-los
s suas necessidades

Considere um problema prtico


Existem muitas resolues candidatas, mas
provavelmente no sero exatamente aquilo
p
q
de que
q
voc precisa...

Qual o melhor algoritmo?


Basta que fornea a resposta correta?
Tambm importante a sua eficincia
Tempo de computao
Memria utilizada

Estruturas de dados
O consumo de tempo
p e de memria torna-se
extremamente crtico quando o universo de
informaes muito grande...
A eficiente utilizao dos recursos
computacionais e a reduo do tempo de
resposta dependem
d
d
d
de d
dois
i f
fatores:
Boa estruturao das informaes
Bons algoritmos que manipulem essas estruturas

Principais modelos para visualizar, interpretar


e armazenar dados:
d d
Listas lineares
rvores

Grafos

Listas lineares
Seus elementos formam uma sequncia
q
linear:

Cada elemento p
possui um antecessor e um
sucessor (exceto o primeiro e o ltimo)
modelo:
Tabelas, em geral, se enquadram neste modelo

Listas telefnicas
Folhas de pagamento
Livros de uma biblioteca
Tabelas de um banco de
dados relacional

rvores
H uma hierarquia
q
entre os elementos:

Cada elemento:
Tem um nico pai (exceto a raiz)
Pode ter vrios filhos
No pode ser pai de nenhum ancestral

Exemplos
mp
de rvores

Organograma
g
g
de empresas
p
Organizao de livros e cursos
Jogos eliminatrios de um campeonato
Expresses aritmticas

Grafos
f
H uma interligao
g geral
g
entre os elementos,
sem formar sequncias ou hierarquias:

Exemplos:
E
l

Tarefas de um projeto
Sistema rodovirio
Redes de interconexo
Fornecimento
m
de produtos
p
entre fbricas
f
Mquinas de estados finitos
etc.

Importncia
mp
da disciplina
p
Na Cincia da Computao:

Processo de compilao
Gerenciamento de programas e de memria
Construo de bancos de dados
etc.

Mesmo sem ser um especialista na rea


rea, um
engenheiro nos dias de hoje deve ser capaz de
elaborar algoritmos no triviais.
Alguns exemplos de problemas em grafos:

Caminhos mais curtos


Validao de grafos acclicos
Componentes fortemente conexos
Pontos de articulao
rvore geradora de custo mnimo

Caminhos mais curtos


Distncias a
partir de um
dado vrtice
Aplicaes:
Transporte
terrestre ou
areo
Robtica
Projetos
P j t sd
de VLSI

Validao de grafos acclicos

Grafo acclico

Grafo cclico

Aplicaes:
Gerenciamento de projetos (redes PERT-CPM:
PERT CPM:
Program Evaluation and Review Technique, Critical
ath Method)
Path
Simulao de circuitos combinacionais

Componentes fortemente conexos


Subconjuntos maximais de vrtices onde h
caminhos de qualquer vrtice a todos os demais.
1
2

6
3

4
8

1,2,3,4

7
9

8,9

5,6,7

10

10

Aplicaes:
Privacidade em sistemas de comunicao
Classes de equivalncia em circuitos digitais
Reduo do tamanho de determinados problemas

Pontos de articulao
Um vrtice ponto de articulao se,
se ao ser
removido, desconecta o grafo.
a

a
c

b
d

b
g

c
e

b
g

a ponto de articulao

c ponto de articulao

Aplicaes:
Sistemas de transmisso de energia eltrica
Sistemas de distribuio hidrulica
Redes de interconexo em geral

rvore geradora de custo mnimo


s vezes, necessrio encontrar um subgrafo
gerador (todos os vrtices e um subconjunto das
arestas) que seja rvore e que tenha custo mnimo.
1

6
2

6
5

5
3
4
6

5
3

5
2

2
6

Grafo no orientado

6
5

1
4

5
3

rvore
de custo 26

Aplicaes:
Redes de interconexo em geral

4
5

2
6

rvore de custo 15

(mnimo)

Plano do curso
Primeiro Bimestre:

Breve reviso
Noes de complexidade de algoritmos
Li t lineares
Listas
li
Pilhas, filas e deques
rvores
rvores binrias

Segundo Bimestre:
Algoritmos de ordenao
Paradigma da Diviso
Diviso-e-Conquista
e Conquista
Grafos
Representaes
Solues
S l d
de alguns
l
problemas
bl
clssicos
l i

Noes de Programao Orientada a Objetos

Avaliaes individuais
Em cada bimestre
bimestre:
2 provas
3 llaboratrios
b r tri s

Pesos:
Provas: 50%
Mdia dos laboratrios: 50%

Premissas
m
ticas nos laboratrios
permitido:

C
Consultar
lt material
t i l didtico
didti (slides
lid , apostilas,
til
cdigos)
di
)d
de
outros professores do ITA ou disponvel na internet (neste
ltimo caso, se for cdigo, sem fornec-lo a outros colegas)
Pensar na soluo junto com um colega, antes de programarem
Trocar ideias com outro colega, mas sem olhar o cdigo que ele
escreveu
Ajudar um colega a encontrar erros de codificao, desde que
j tenha terminado o prprio laboratrio

No permitido:
Utilizar cdigo pronto encontrado na internet
Olhar ou copiar solues de outro aluno (da mesma turma ou de
anteriores)
Fazer o exerccio (mesmo parcialmente) de um colega com
dificuldades
Escrever o cdigo junto com outro colega

Bibliografia
g f
W. Celes, R. Cerqueira, J.L. Rangel

Introduo a Estrutura de Dados

P. Feofiloff

Al it
Algoritmos
em Li
Linguagem C

A. Drozdek

Estrutura de Dados e Algoritmos


g
em C++

Bibliografia
g f complementar
mp m
T.H.
T H Cormen,
Cormen C.E.
C E Leiserson,
Leiserson R.L.
R L Rivest

Introduction to Algorithms

A. V. Aho, J. E. Hopcroft, J. D. Ullman

Data Structures and Algorithms


g

R.
R S
Sedgewick
d
i k

Algorithms [in C, C++, Java]

Bibliografia
g f complementar
mp m
A.M.
A M Tanenbaum
Tanenbaum, Y.
Y Langsam,
Langsam M.J.
M J Augenstein

Estruturas de Dados usando C

M.T.
M T Goodrich,
Goodrich R.
R Tamassia

Projeto de Algoritmos

B.R. Preiss

Estruturas de Dados e Algoritmos

You might also like