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

Documentos relacionados
ALGORITMOS E ESTRUTURAS DE DADOS CES-11

CES-11. Algoritmos e Estruturas de Dados. Objetivos gerais. Exemplo. Algoritmo

Introdução à Lógica de Programação

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação

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

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

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

Informações Importantes! INF TURMA A

Estruturas de Dados Apresentação

PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA DEPARTAMENTO DE INFORMÁTICA APLICADA

CCI-22. Matemática Computacional. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

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

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

PLANO DE DISCIPLINA DISCIPLINA: Estrutura de Dados 2

ESTRUTURA DE DADOS DCC013

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

If969 - Algoritmos e Estruturas de Dados

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

SCC0502 Algoritmos e Estruturas de Dados I

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

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

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

Programa Analítico de Disciplina SIN213 Projeto de Algoritmos

Complexidade de Tempo e Espaço

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

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

Algoritmos em Grafos

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

Web site. Profa. Patrícia Dockhorn Costa.

Árvores: Conceitos Básicos e Árvore Geradora

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

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

Algoritmos e Estruturas de Dados II

Algoritmos 2 - Introdução

Introdução a Grafos Letícia Rodrigues Bueno

Análise e Projeto de Algoritmos

GRAFOS Conceitos Básicos (Parte 1)

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

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

Teoria da Complexidade Computacional

Teoria dos Grafos 1. Teoria dos Grafos

CCI-22. Prof. Paulo André Castro Sala 110 Prédio da Computação

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

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

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

PLANO DE APRENDIZAGEM. CH Teórica: 80 Prática: 20 CH Total: 100 Créditos: 05 Pré-requisito(s): Linguagem de Programação I Período: III Ano: 2019.

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

Estrutura de Dados II

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

Conceitos Básicos da Teoria de Grafos

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

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

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

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

Preliminares. Profa. Sheila Morais de Almeida. agosto

INTRODUÇÃO AOS SISTEMAS LÓGICOS

Busca em Profundidade. Componentes Conexos. Grafos. Maria Adriana Vidigal de Lima. Fevereiro

Contribuições do desenvolvimento de um Browser a partir de conceitos da Biblioteca Padrão de Gabaritos do C++

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

Projeto e Análise de Algoritmos

Árvore Geradora Mínima

Cap. 2 Conceitos Básicos em Teoria dos Grafos

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. Link do Google Drive: ED Apresentação Luiz Gonçalves Última revisão 8/12/14

Aula 10: Tratabilidade

FORMULÁRIO PARA CRIAÇÃO E/OU REGULAMENTAÇÃO DE DISCIPLINA

1) Escolher e descrever um problema cuja resolução requeira a execução de algoritmos computacionais que não sejam triviais.

Prof. Marco Antonio M. Carvalho

Grafos COM11087-Tópicos Especiais em Programação II

Estruturas de Dados Grafos

Análise e Projeto de Algoritmos

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

Algoritmos para Automação e Sistemas

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

Pesquisa Operacional. Teoria dos Grafos

CES-11. Algoritmos e Estruturas de Dados

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

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.: Carlos Alberto Página da Disciplina:

PCC104 - Projeto e Análise de Algoritmos

INE5384 Estruturas de Dados. Sumário

Volmir Eugênio Wilhelm Departamento de Engenharia de Produção UFPR 45

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

ALGORITMOS E ESTRUTURAS DE DADOS I PROF. EDSON IFARRAGUIRRE MORENO

Estruturas de Dados Apresentação da Disciplina

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

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

Grafos Árvores Geradoras Mínimas

Teoria dos Grafos Aula 6

Estrutura de Dados. Ricardo José Cabeça de Souza Parte 2

Estruturas de Dados. Grafos VIII: Árvores Geradoras Mínimas. Prof. Ricardo J. G. B. Campello

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

SCC Modelagem Computacional em Grafos Introdução a Grafos

PLANO DE UNIDADE DIDÁTICA- PUD

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

MCTA001 Algoritmos e Estruturas de Dados I Apresentação e exercícios básicos

Transcrição:

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

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 Famoso livro de Niklaus Wirth: Algorithms + Data Structures = Programs Estar alfabetizado versus saber redigir

Algoritmo Informalmente, um algoritmo é qualquer q 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 adequada d Algoritmo incorreto Quando para com uma resposta indesejada Quando não para (ou seja, permanece em loop)

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 esses dados e analisá-los Inserção, eliminação e atualização dos dados Ordenação, classificação e pesquisa de informações Correlação entre os dados Cálculos científicos envolvendo grandes matrizes multidimensionais i i 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 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 de que 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 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 de dois fatores: Boa estruturação das informações Bons algoritmos que manipulem essas estruturas Principais modelos para visualizar, interpretar e armazenar dados: d 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 g 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 demais. 1 6 2 3 5 1,2,3,4 5,6,7 4 7 8,9 10 8 9 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, 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: 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 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 2 1 1 5 4 3 3 2 4 5 6 Grafo não orientado Árvore de custo 26 Árvore de custo 15 (mínimo) Aplicações: Redes de interconexão em geral

Plano do curso Primeiro Bimestre: Breve revisão 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

Avaliações individuais Em cada bimestre: 2 provas 3 laboratórios Pesos: Provas: 50% Média dos laboratórios: 50%

Premissas éticas nos laboratórios É permitido: 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 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 W. Celes, R. Cerqueira, J.L. Rangel Introdução a Estrutura de Dados P. Feofiloff Algoritmos em Linguagem C A. Drozdek Estrutura de Dados e Algoritmos em C++

Bibliografia complementar m T.H. Cormen, C.E. Leiserson, R.L. Rivest Introduction to Algorithms A. V. Aho, J. E. Hopcroft, J. D. Ullman Data Structures and Algorithms R. Sedgewick Algorithms [in C, C++, Java]

Bibliografia complementar m 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