alggmoritmos e estruturas de dados - comp.ita.bralonso/ensino/ces11/ces11-cap01.pdf · ces-11...

23
CES-11 Algoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Upload: vannhan

Post on 23-May-2018

217 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

CES-11

Algoritmos e g mEstruturas de Dados

Carlos Alberto Alonso SanchesJuliana de Melo Bezerra

Page 2: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Objetivos geraisObjetivos geraisj gj gCompreensão da necessidade de uma boa estruturação das informações processadas no computador

Capacidade de escolher a estrutura de dados mais adequada para uma determinada aplicaçãoq p p ç

Capacidade de programar métodos que criam e manipulam essas estruturasmanipulam essas estruturas

Famoso livro de Niklaus Wirth: Algorithms + Data Structures = Programs“Estar alfabetizado” versus “saber redigir”Estar alfabetizado versus saber redigir

Page 3: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

AlgoritmoAlgoritmog mg mInformalmente, um algoritmo é qualquer g q qprocedimento computacional bem definido que recebe um conjunto de valores como entradaje produz outro conjunto de valores como saídaAlgoritmo corretoAlgoritmo correto

Para cada instância de entrada, termina e produz m s íd d duma saída adequada

Algoritmo incorretogQuando para com uma resposta indesejadaQuando não para (ou seja permanece em loop)Quando não para (ou seja, permanece em loop)

Page 4: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Exemplos de algoritmosExemplos de algoritmosmp g mmp g m

Projeto Genoma HumanoProjeto Genoma HumanoO DNA humano possui cerca de 100 mil genes e 3 bilhões de pares de bases químicasp q

Necessidade de armazenar esses dados e analisá-losInserção, eliminação e atualização dos dadosOrdenação classificação e pesquisa de informaçõesOrdenação, classificação e pesquisa de informaçõesCorrelação entre os dadosCálculos científicos envolvendo grandes matrizes

ltidi i imultidimensionaisInternet

E l it i i l Emprega algoritmos para gerenciar e manipular um enorme volume de dados

Localização de rotas por onde os dados trafegamLoca zação rotas por on os a os traf gamMecanismos de pesquisa de páginas

Page 5: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Exemplos de algoritmosExemplos de algoritmosmp g mmp g m

Comércio eletrônicoComércio eletrônicoNecessidade de manter informações privativas (número de cartões senhas etc )(número de cartões, senhas, etc.)

Criptografia de chave pública e assinaturas digitaisCompactação e descompactação

Indústria e comércioAlocação adequada de recursos escassosAlocação adequada de recursos escassos

Onde localizar os poços de petróleo para maximizar o lucro?

l ú l Onde investir em publicidade? Público? Região?Como designar tripulações de voo de um modo menos dispendioso?dispendioso?Qual melhor investimento: ações, opções, títulos públicos?

Page 6: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Desenvolvimento de um algoritmoDesenvolvimento de um algoritmom m g mm m g m

í Convém conhecer os Características dos algoritmosConsidere um problema prático

Convém conhecer os algoritmos existentes para então adaptá-los às suas necessidadesConsidere um problema prático

Existem muitas resoluções candidatas, mas provavelmente não serão exatamente aquilo de que

às suas necessidades

p q qvocê precisa...

Qual o melhor algoritmo? Basta que forneça a resposta correta?Basta que forneça a resposta correta?Também é importante a sua eficiência

Tempo de computaçãoTempo de computaçãoMemória utilizada

Page 7: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Estruturas de dadosEstruturas de dadosO consumo de tempo e de memória torna-se pextremamente crítico quando o universo de informações é muito grande...A eficiente utilização dos recursos computacionais e a redução do tempo de

d d d d i fresposta dependem de dois fatores:Boa estruturação das informaçõesBons algoritmos que manipulem essas estruturas

Principais modelos para visualizar, interpretar d de armazenar dados:

Listas linearesÁÁrvoresGrafos

Page 8: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Listas linearesListas lineares

Seus elementos formam uma sequência linear:q

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

• Listas telefônicas• Folhas de pagamento• Livros de uma biblioteca• Tabelas de um banco de Tabelas de um banco de

dados relacional

Page 9: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

ÁrvoresÁrvores

Há uma hierarquia entre os elementos:q

Cada elemento:Cada elemento:Tem um único pai (exceto a raiz)Pode ter vários filhosPode ter vários filhosNão pode ser pai de nenhum ancestral

Page 10: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Exemplos de árvoresExemplos de árvoresmpmp

Organograma de empresasg g pOrganização de livros e cursosJogos eliminatórios de um campeonatoJogos eliminatórios de um campeonatoExpressões aritméticas

Page 11: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

GrafosGrafosff

Há uma interligação geral entre os elementos, g ç gsem formar sequências ou hierarquias:

E lExemplos:Tarefas de um projetoSistema rodoviárioSistema rodoviárioRedes de interconexãoFornecimento de produtos entre fábricasm p fMáquinas de estados finitosetc.

Page 12: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Importância da disciplinaImportância da disciplinamp pmp pNa Ciência da Computação:

Processo de compilaçãoGerenciamento de programas e de memóriaConstrução de bancos de dadosConstrução de bancos de dadosetc.

Mesmo sem ser um especialista na área um Mesmo sem ser um especialista na área, um engenheiro nos dias de hoje deve ser capaz de elaborar algoritmos não triviais.Alguns exemplos de problemas em grafos:

Caminhos mais curtosValidação de grafos acíclicosComponentes fortemente conexosPontos de articulaçãoPontos de articulaçãoÁrvore geradora de custo mínimo

Page 13: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Caminhos mais curtosCaminhos mais curtos

Distâncias a Distâncias a partir de um dado vérticedado vérticeAplicações:

Transporte terrestre ou aéreoaéreoRobóticaP j t s d VLSIProjetos de VLSI

Page 14: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Validação de grafos acíclicosValidação de grafos acíclicos

Grafo acíclico Grafo cíclico

Aplicações:Gerenciamento de projetos (redes PERT CPM: Gerenciamento de projetos (redes PERT-CPM: Program Evaluation and Review Technique, Critical Path Method)ath Method)Simulação de circuitos combinacionais

Page 15: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Componentes fortemente conexosComponentes fortemente conexos

Subconjuntos maximais de vértices onde há

61

caminhos de qualquer vértice a todos os demais.

1,2,3,4 5,6,72 5

61

3

8,9 104 7

Aplicações:

8 9 10

Aplicações:Privacidade em sistemas de comunicaçãoClasses de equivalência em circuitos digitaisClasses de equivalência em circuitos digitaisRedução do tamanho de determinados problemas

Page 16: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Pontos de articulaçãoPontos de articulação

Um vértice é ponto de articulação se ao ser Um vértice é ponto de articulação se, ao ser removido, desconecta o grafo.

a

b c b c

a

b

d e f g d e f g

b

d e f g

Aplicações:

a é ponto de articulação c é ponto de articulação

Aplicações:Sistemas de transmissão de energia elétricaSistemas de distribuição hidráulicaSistemas de distribuição hidráulicaRedes de interconexão em geral

Page 17: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Árvore geradora de custo mínimo Á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.

16 5

1

16

1

12 4

3

15 5

6 43 2

2 4

3

5 5

6 4

2 4

3

15

43 2

5 6

6

64

5 6

6 4

Á

5 6

4

Á

Aplicações:

Grafo não orientado Árvore de custo 26 Árvore de custo 15 (mínimo)

Aplicações:Redes de interconexão em geral

Page 18: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Plano do cursoPlano do curso

Primeiro Bimestre:Breve revisãoNoções de complexidade de algoritmosLi t liListas linearesPilhas, filas e dequesÁrvoresÁrvoresÁrvores binárias

Segundo Bimestre:Segundo Bimestre:Algoritmos de ordenaçãoParadigma da Divisão-e-ConquistaParadigma da Divisão e ConquistaGrafos

RepresentaçõesS l õ d l bl lá iSoluções de alguns problemas clássicos

Noções de Programação Orientada a Objetos

Page 19: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Avaliações individuaisAvaliações individuais

Em cada bimestre:Em cada bimestre2 provas3 l b r tóri s3 laboratórios

Pesos:Provas: 50%Média dos laboratórios: 50%Média dos laboratórios: 50%

Page 20: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Premissas éticas nos laboratóriosPremissas éticas nos laboratóriosmmÉ permitido:

C lt t i l didáti ( lid til ódi ) d Consultar material didático (slides, apostilas, códigos) 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 programaremTrocar ideias com outro colega, mas sem olhar o código que ele escreveuescreveuAjudar 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 Fazer o exercício (mesmo parcialmente) de um colega com dificuldadesEscrever o código junto com outro colega

Page 21: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

BibliografiaBibliografiag fg fW. Celes, R. Cerqueira, J.L. RangelIntrodução a Estrutura de Dados

P. FeofiloffAl it Li CAlgoritmos em Linguagem C

A. DrozdekEstrutura de Dados e Algoritmos em C++g

Page 22: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Bibliografia complementarBibliografia complementarg f mp mg f mp m

T H Cormen C E Leiserson R L Rivest T.H. Cormen, C.E. Leiserson, R.L. Rivest Introduction to Algorithms

A. V. Aho, J. E. Hopcroft, J. D. UllmanData Structures and Algorithms

R S d i k

g

R. SedgewickAlgorithms [in C, C++, Java]

Page 23: Alggmoritmos e Estruturas de Dados - comp.ita.bralonso/ensino/CES11/ces11-cap01.pdf · CES-11 Alggmoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Bibliografia complementarBibliografia complementarg f mp mg f mp m

A M Tanenbaum Y Langsam M J Augenstein A.M. Tanenbaum, Y. Langsam, M.J. Augenstein Estruturas de Dados usando C

M T Goodrich R TamassiaM.T. Goodrich, R. TamassiaProjeto de Algoritmos

B.R. PreissEstruturas de Dados e Algoritmos