ALGORITMOS E ESTRUTURAS DE DADOS CES-11

Documentos relacionados
CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Estrutura de Dados. Plano de Ensino. Vilson Heck Junior. Campus Lages. Instituto Federal de Santa Catarina

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação

If969 - Algoritmos e Estruturas de Dados

SIN5013 Análise de Algoritmos e Estrutura de Dados - 1o Semestre de 2019

Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade

Algoritmos e Estrutura de Dados. Aula 01 Apresentação da Disciplina e Introdução aos Algoritmos Prof. Tiago A. E. Ferreira

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Campus Curitiba PLANO DE ENSINO

ESTRUTURA DE DADOS DCC013

Algoritmo e Introdução a Programação. Prof. Josino Rodrigues

Análise e Projeto de Algoritmos

SCC-201 Introdução à Ciência de Computação II

Árvores: Conceitos Básicos e Árvore Geradora

Estruturas de Dados. Pedro Ribeiro 2017/2018 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Estruturas de Dados 2017/ / 16

Informações Importantes! INF TURMA A

CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Complexidade de Tempo e Espaço

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão

GRAFOS Conceitos Básicos (Parte 1)

Algoritmos 2 - Introdução

Algoritmos e Estruturas de Dados II

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches

Teoria da Complexidade Computacional

Algoritmos em Grafos

BCC Projeto e Análise de Algoritmos Aula 0: Apresentação

Introdução a Grafos Letícia Rodrigues Bueno

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

Teoria dos Grafos 1. Teoria dos Grafos

SCC0502 Algoritmos e Estruturas de Dados I. Profa. Maria Cristina

Dados Gerais. Conteúdo. Tipos de Dados. Profa. Renata de Matos Galante

UNIVERSIDADE PRESBITERIANA MACKENZIE Faculdade de Computação e Informática. 3 a ETAPA

Estruturas de Dados Apresentação da Disciplina

Estruturas de Dados Aula 1: Introdução e conceitos básicos 28/02/2011

SCC-501 Introdução à Ciência de Computação II

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

MC3305 Algoritmos e Estruturas de Dados II. Aula 00 Apresentação. Prof. Jesús P. Mena-Chalco.

Conceitos Básicos da Teoria de Grafos

05 Grafos: ordenação topológica SCC0503 Algoritmos e Estruturas de Dados II

BCC402 Algoritmos e Programação Avançada. Prof. Marco Antonio M. Carvalho Prof. Túlio Toffolo 2012/1

Estruturas de Dados Grafos

CCI - 22 Matemática Computacional

Projeto e Análise de Algoritmos Projeto de Algoritmos Programação Dinâmica. Prof. Humberto Brandão

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

ESTRUTURAS DE DADOS. prof. Alexandre César Muniz de Oliveira. 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8.

Estrutura de Dados II

Estruturas de Dados para Conjuntos Disjuntos: Union-find Letícia Rodrigues Bueno

PLANO DE UNIDADE DIDÁTICA- PUD

Cap. 2 Conceitos Básicos em Teoria dos Grafos

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

Introdução. Estrutura de Dados II Prof Jairo Francisco de Souza

Pesquisa Operacional. Teoria dos Grafos

Projeto e Análise de Algoritmos. Introdução. Prof. Ademir Constantino Universidade Estadual de Maringá Departamento de Informática

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches

Grafos representação e aplicações. Prof. Guilherme Tomaschewski Netto

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

Árvores. SCC-214 Projeto de Algoritmos. Thiago A. S. Pardo. Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral

Mecanismos de Interrupção e de Exceção, Barramento, Redes e Sistemas Distribuídos. Sistemas Operacionais, Sistemas

B-tree. B-Trees. Estrutura do nodo da B-tree. Balanceamento. Disposição dos elementos ordenados na B-tree. Exemplo de uma B-tree de ordem 3

Teoria dos Grafos Aula 6

Projeto e Análise de Algoritmos

Estruturas de Dados. / NT Editora. -- Brasília: p. : il. ; 21,0 X 29,7 cm.

Aula 10: Tratabilidade

TEORIA: 60 LABORATÓRIO: 0

DISCIPLINA: Programação de Computadores I

ESTRUTURA DE DADOS. Arvore Binária Jose. Arvore Ternaria Direção

Programa Analítico de Disciplina INF101 Introdução à Programação II

(RelGradeCurricular) Número de créditos no período: 30 2 CMP4121 INTROD CIENCIA DA COMPUTACAO II MAF4231 CALCULO PARA COMPUTACAO III

Grafos - Introdução. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/ / 32

Algoritmos para Automação e Sistemas

Planificação Anual da disciplina de Programação e Sistemas de Informação 10º 1PI

Projeto e Análise de Algoritmos NP Completude Parte 2. Prof. Humberto Brandão

Transcrição:

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA

OBJETIVOS 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 para uma determinada aplicação Capacidade de programar métodos que criam e manipulam essas estruturas Estar alfabetizado versus saber redigir

ALGORITMO Informalmente, um algoritmo é qualquer procedimento computacional bem definido que recebe um conjunto 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 saída correta Algoritmo incorreto Quando não para (permanece em loop) Quando para com uma resposta diferente da desejada

EXEMPLOS DE ALGORITMOS Projeto Genoma Humano O DNA humano possui cerca de 100 mil genes e 3 bilhões de pares de bases químicas Necessidade de armazenar os dados e analisá-los Inserção, eliminação e atualização desses dados Ordenação, classificação e pesquisa de informações Correlação entre esses dados Cálculos científicos envolvendo grandes matrizes multidimensionais Internet Emprega algoritmos para gerenciar e manipular um enorme volume de dados Localização de rotas por onde os dados trafegam Mecanismos de pesquisa de páginas

EXEMPLOS DE ALGORITMOS Comércio eletrônico Necessidade de manter informações privativas (número de cartões, senhas, 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? Público? 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 DE UM ALGORITMO Características dos algoritmos Considere um problema prático Existem muitas resoluções candidatas, mas provavelmente não serão bem aquilo que desejamos... Qual o melhor algoritmo? Convém conhecer os algoritmos existentes para então desenvolver o seu 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 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 de dois fatores: Boa estruturação das informações Bons algoritmos que manipulem essas estruturas Principais modelos para visualizar, interpretar e armazenar dados: Listas lineares Árvores Grafos

LISTAS LINEARES Seus elementos formam uma sequência linear: Cada elemento possui um antecessor e um sucessor (exceto o primeiro e o último) 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 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 DE ÁRVORES Organograma de empresas Organização de livros e cursos Jogos eliminatórios de um campeonato Expressões aritméticas

GRAFOS Há uma interligação geral entre os elementos, sem formar sequências ou hierarquias: Exemplos: Tarefas de um projeto Sistema rodoviário Redes de interconexão Fornecimento de produtos entre fábricas Máquinas de estados finitos etc.

IMPORTÂNCIA DA DISCIPLINA 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, 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 de VLSI

VALIDAÇÃO DE GRAFOS ACÍCLICOS Grafo acíclico Grafo cíclico Aplicações: Gerenciamento de projetos (redes PERT-CPM: Program Evaluation and Review Technique, Critical Path Method) Simulação de circuitos combinacionais

COMPONENTES FORTEMENTE CONEXOS Subconjuntos maximais de vértices onde há caminhos de qualquer vértice a todos os outros. 1 6 2 3 5 1,2,3,4 5,6,7 4 7 8,9 10 8 9 10 Aplicações: Redução do tamanho de determinados problemas Classes de equivalência em circuitos digitais Privacidade em sistemas de comunicação

PONTOS DE ARTICULAÇÃO Um vértice é ponto de articulação se, ao ser removido, desconecta o grafo. a a b c b c b d e f g d e f g a é ponto de articulação d e f g c é ponto de articulação Aplicações: Redes de interconexão em geral Sistemas de transmissão de energia elétrica Sistemas de distribuição hidráulica

Á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 5 1 2 5 4 5 3 3 6 2 4 6 5 6 1 6 2 5 5 4 3 6 4 5 6 1 2 1 5 4 3 3 2 4 5 6 Grafo não orientado Árvore de custo 26 Aplicações: Redes de interconexão em geral Árvore de custo 15 (mínimo)

PLANO DO CURSO Primeiro Bimestre: Breve revisão de ponteiros Noções de complexidade de algoritmos Listas lineares Pilhas, filas e deques Árvores Árvores binárias Segundo Bimestre: Algoritmos de ordenação Paradigma da Divisão-e-Conquista Grafos Representações Soluções de alguns problemas clássicos Noções de Programação Orientada a Objetos

CRITÉRIOS DE AVALIAÇÃO Por bimestre: 2 provas e de 2 a 5 laboratórios Nota bimestre = (média provas + média labs) / 2 Um exame final As provas, os laboratórios e o exame são individuais. 19

BIBLIOGRAFIA P. Feofiloff Algoritmos em Linguagem C N. Ziviani Projeto de Algoritmos A.M. Tanenbaum, Y. Langsam, M.J. Augenstein Estruturas de Dados usando C M.T. Goodrich, R. Tamassia Projeto de Algoritmos B.R. Preiss Estruturas de Dados e Algoritmos

BIBLIOGRAFIA COMPLEMENTAR T.H. Cormen, C.E. Leiserson, R.L. Rivest Algoritmos : Teoria e Prática A. Drozdek Estrutura de Dados e Algoritmos em C++ R. Sedgewick Algorithms in [C, C++, Java] A. V. Aho, J. E. Hopcroft, J. D. Ullman Data Structures and Algorithms