CES-11 Algoritmos e g m Estruturas de Dados

Propaganda
CES-11
Algoritmos
g
m e
Estruturas de Dados
Carlos Alberto Alonso Sanches
Juliana de Melo Bezerra
Objetivos
j
g
gerais
ƒ Compreensão da necessidade de uma boa
estruturação das informações processadas no
computador
ƒ Capacidade de escolher a estrutura de dados
mais adequada
q
para
p
uma determinada aplicação
p
ç
ƒ Capacidade de programar métodos 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 saída
ƒ Algoritmo correto
ƒ Para cada instância de entrada, termina e produz
uma
m saída
s íd adequada
d
d
ƒ Algoritmo
g
incorreto
ƒ Quando para com uma resposta indesejada
seja permanece em loop)
ƒ Quando não para (ou seja,
Exemplos
mp
de algoritmos
g
m
ƒ Projeto Genoma Humano
ƒ O DNA humano possui cerca de 100 mil genes e
3 bilhões de p
pares de bases químicas
q
ƒ
ƒ
ƒ
ƒ
ƒ
Necessidade de armazenar esses dados e analisá-los
Inserção, eliminação e atualização dos dados
Ordenação classificação e pesquisa de informações
Ordenação,
Correlação entre os dados
Cálculos científicos 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
Localização
zação de rotas por onde
on os dados
a os trafegam
traf gam
ƒ Mecanismos de pesquisa de páginas
Exemplos
mp
de algoritmos
g
m
ƒ Comércio eletrônico
ƒ Necessidade de manter informações privativas
(número de cartões,
cartões senhas,
senhas etc
etc.))
ƒ Criptografia de chave pública e assinaturas digitais
ƒ Compactação e descompactação
ƒ Indústria e comércio
ƒ Alocação adequada de recursos escassos
ƒ Onde localizar os poços de petróleo para maximizar o
lucro?
ƒ Onde investir em publicidade?
l
Público?
ú l
Região?
ƒ Como designar tripulações de voo de um modo menos
dispendioso?
ƒ Qual melhor investimento: ações, opções, títulos públicos?
Desenvolvimento
m
de um
m algoritmo
g
m
ƒ Características
í
dos algoritmos
Convém conhecer os
algoritmos existentes
para então adaptá-los
às suas necessidades
ƒ Considere um problema prático
ƒ Existem muitas resoluções candidatas, mas
provavelmente não serão exatamente aquilo
p
q
de que
q
você precisa...
ƒ Qual o melhor algoritmo?
ƒ Basta que forneça a resposta correta?
ƒ Também é importante a sua eficiência
ƒ Tempo de computação
ƒ Memória utilizada
Estruturas de dados
ƒ O consumo de tempo
p e de memória torna-se
extremamente crítico quando o universo de
informações é muito grande...
ƒ A eficiente utilização dos recursos
computacionais e a redução do tempo de
resposta dependem
d
d
d
de d
dois
i f
fatores:
ƒ Boa estruturação das informações
ƒ 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 sequência
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 telefônicas
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 vários filhos
ƒ Não pode ser pai de nenhum ancestral
Exemplos
mp
de árvores
ƒ
ƒ
ƒ
ƒ
Organograma
g
g
de empresas
p
Organização de livros e cursos
Jogos eliminatórios de um campeonato
Expressões aritméticas
Grafos
f
ƒ Há uma interligação
g ç geral
g
entre os elementos,
sem formar sequências ou hierarquias:
ƒ Exemplos:
E
l
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
Tarefas de um projeto
Sistema rodoviário
Redes de interconexão
Fornecimento
m
de produtos
p
entre fábricas
f
Máquinas de estados finitos
etc.
Importância
mp
da disciplina
p
ƒ Na Ciência da Computação:
ƒ
ƒ
ƒ
ƒ
Processo de compilação
Gerenciamento de programas e de memória
Construção 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 não triviais.
ƒ Alguns exemplos de problemas em grafos:
ƒ
ƒ
ƒ
ƒ
ƒ
Caminhos mais curtos
Validação de grafos acíclicos
Componentes fortemente conexos
Pontos de articulação
Árvore geradora de custo mínimo
Caminhos mais curtos
ƒ Distâncias a
partir de um
dado vértice
ƒ Aplicações:
ƒ Transporte
terrestre ou
aéreo
ƒ Robótica
ƒ Projetos
P j t sd
de VLSI
Validação de grafos acíclicos
Grafo acíclico
Grafo cíclico
ƒ Aplicações:
ƒ Gerenciamento de projetos (redes PERT-CPM:
PERT CPM:
Program Evaluation and Review Technique, Critical
ath Method)
Path
ƒ Simulação de circuitos combinacionais
Componentes fortemente conexos
ƒ Subconjuntos maximais de vértices onde há
caminhos de qualquer vértice a todos os demais.
1
2
6
3
5
4
8
1,2,3,4
7
9
8,9
5,6,7
10
10
ƒ Aplicações:
ƒ Privacidade em sistemas de comunicação
ƒ Classes de equivalência em circuitos digitais
ƒ Redução do tamanho de determinados problemas
Pontos de articulação
ƒ Um vértice é ponto de articulação se,
se ao ser
removido, desconecta o grafo.
a
a
c
b
d
e
f
b
g
d
c
e
f
b
g
a é ponto de articulação
d
e
f
g
c é ponto de articulação
ƒ Aplicações:
ƒ Sistemas de transmissão de energia elétrica
ƒ Sistemas de distribuição hidráulica
ƒ Redes de interconexão em geral
Árvore geradora de custo mínimo
ƒ Às vezes, é necessário encontrar um subgrafo
gerador (todos os vértices e um subconjunto das
arestas) que seja árvore e que tenha custo mínimo.
1
6
2
6
5
4
5
3
4
6
1
6
1
5
3
5
2
5
2
6
Grafo não orientado
6
5
1
4
5
3
2
5
6
Á
Árvore
de custo 26
ƒ Aplicações:
ƒ Redes de interconexão em geral
4
3
3
4
1
4
5
2
6
Árvore de custo 15
Á
(mínimo)
Plano do curso
ƒ Primeiro Bimestre:
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
Breve revisão
Noções de complexidade de algoritmos
Li t lineares
Listas
li
Pilhas, filas e deques
Árvores
Árvores binárias
ƒ Segundo Bimestre:
ƒ Algoritmos de ordenação
ƒ Paradigma da Divisão
Divisão-e-Conquista
e Conquista
ƒ Grafos
ƒ Representações
ƒ Soluções
S l õ d
de alguns
l
problemas
bl
clássicos
lá i
ƒ Noções de Programação Orientada a Objetos
Avaliações individuais
ƒ Em cada bimestre
bimestre:
ƒ 2 provas
ƒ 3 llaboratórios
b r tóri s
ƒ Pesos:
ƒ Provas: 50%
ƒ Média dos laboratórios: 50%
Premissas
m
éticas nos laboratórios
ƒ É permitido:
ƒ C
Consultar
lt material
t i l didático
didáti (slides
lid , apostilas,
til
códigos)
ódi
)d
de
outros professores do ITA ou disponível na internet (neste
último caso, se for código, sem fornecê-lo a outros colegas)
ƒ Pensar na solução junto com um colega, antes de programarem
ƒ Trocar ideias com outro colega, mas sem olhar o código que ele
escreveu
ƒ Ajudar um colega a encontrar erros de codificação, desde que
já tenha terminado o próprio laboratório
ƒ Não é permitido:
ƒ Utilizar código pronto encontrado na internet
ƒ Olhar ou copiar soluções de outro aluno (da mesma turma ou de
anteriores)
ƒ Fazer o exercício (mesmo parcialmente) de um colega com
dificuldades
ƒ Escrever o código junto com outro colega
Bibliografia
g f
ƒ W. Celes, R. Cerqueira, J.L. Rangel
Introdução 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
Download