Algoritmos 2 - Introdução

Documentos relacionados
DAINF - Departamento de Informática

CI165 Introdução. André Vignatti. 31 de julho de 2014

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

Projeto e Análise de Algoritmos

Á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

ALGORITMOS E ESTRUTURAS DE DADOS CES-11

Estruturas de Dados Apresentação

PCC104 - Projeto e Análise de Algoritmos

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Introdução à Computação II (Noturno) BCC Unesp Rio Claro/SP 2015 em PDF via Moodle: Escolha apenas 5 exercícios para entrega Exercício 01 (Pilhas)

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

ANHANGUERA ESTRUTURA DE DADOS AULA 02 O QUE É ESTRUTURA DE DADOS? Prof. Thomás da Costa

1. Faça um programa que leia uma string digitada pelo usuário e salve em um arquivo em branco.

1. Selecione a Estrutura de Dados que melhor representa os diretórios ou pastas de arquivos do computador.

Algoritmos em Grafos

Teoria dos Grafos Aula 8

Departamento de Engenharia de Produção UFPR 22

Exercícios: Árvores. Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de estrutura de dados em linguagem C

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

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

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

Grafos: aplicações. Grafos: árvore geradora mínima

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

ÁRVORE BINÁRIA DE BUSCA TDA-ABB

A única diferença entre o difícil e o impossível é que o último demora um pouco mais de tempo para ser alcançado..

Algoritmos e Estruturas de Dados I

Introdução a Programação

Heaps. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35

BCC202 - Estrutura de Dados I

Pseudocódigo e Visualg

Complexidade de Tempo e Espaço

Árvores: Conceitos Básicos e Árvore Geradora

Algoritmos Fundamento e Prática

Análise e Projeto de Algoritmos

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

4ª Lista de Exercícios de Programação I

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE

Informações Importantes! INF TURMA A

Algoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA DISCUSSÃO DOS EXERCÍCIOS E EXERCÍCIOS EXTRAS

PLANO DE UNIDADE DIDÁTICA- PUD

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

GRAFOS BUSCAS E MENOR CAMINHO. Prof. André Backes

4ª Lista de Exercícios de Programação I

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

Estruturas de Dados Grafos

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

PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação

Estruturas de Dados. Prof.: Carlos Alberto Página da Disciplina:

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

Cap. 2 Conceitos Básicos em Teoria dos Grafos

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

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

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

Grafos: Busca. SCE-183 Algoritmos e Estruturas de Dados 2. Thiago A. S. Pardo Maria Cristina

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

UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Departamento de Ciências de Computação

Projeto e Análise de Algoritmos

PLANIFICAÇÃO ANUAL. 1. Introdução à Programação e Algoritmia. Tempos letivos previstos (45) Período escolar

PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação

Complexidade computacional

Variáveis, Expressões Aritméticas e Entrada e Saída de Dados

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

Lógica para computação - Propriedades Semânticas da Lógica Proposicional (parte 2/2) Alfabeto Simplificado e Formas Normais

Comandos de desvio de fluxo. Expressões lógicas.

AVALIAÇÃO DE CONHECIMENTO ESPECÍFICO

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

Aula 05: - Recursão (parte 1)

Transcrição:

DAINF - Departamento de Informática Algoritmos 2 - Introdução Prof. Alex Kutzke (http://alex.kutzke.com.br/courses) 19 de Agosto de 2015 Slides adaptados do material produzido pelo Prof. Rodrigo Minetto (http://www.dainf.ct.utfpr.edu.br/~rminetto/)

Plano de ensino Objetivos Capacitar o aluno a analisar problemas e a determinar quais estruturas de dados e algoritmos são adequados para uma ou mais soluções. Ementa Introduzir o Conceito de Tipos Abstratos de Dados e suas utilizações práticas. Introduzir os algoritmos clássicos de classificação e pesquisa para as estruturas de dados estudadas. Capacitar o aluno a analisar problemas e a determinar quais estruturas de dados e algoritmos são adequados para uma ou mais soluções

Conteúdo programático Plano de ensino Introdução às Estruturas de Dados Noção geral de Listas, Pilhas e Filas. Manipulação de Estruturas de Dados Inserção e Remoção em listas; Inserção e Remoção em filas; Inserção e Remoção em pilhas. Métodos de ordenação e busca Ordenação, pelo método bolha, sobre uma sequência. Noções de Árvores Introdução a Árvores Binárias de pesquisa; Pesquisa e operações de atualização em Árvores binárias. Introdução aos Grafos Introdução às estruturas de dados para Grafos. Cadeia de caracteres - Strings Operações sobre cadeia de caracteres;

Mas afinal, o que veremos na disciplina? Introdução ao conceito de tipos abstratos de dados (TAD): Fila; Lista; Pilha; Árvore; Grafos (talvez); Introdução aos algoritmos clássicos de classificação e pesquisa; Análise de algoritmos (complexidade); Algoritmos de ordenação.

Avaliação 3 Provas 1 Trabalho APS (Trabalho) Nota final = (2. 5P 1+2.5 P 2 +2.5 P 3 +1.5 T 1 +APS) 10

O que é um algoritmo? Informalmente, um algoritmo é um procedimento computacional bem definido que: recebe um conjunto de valores como entrada. produz um conjunto de valores como saída.

Equivalentemente, um algoritmo é uma ferramenta para resolver um problema computacional. Este problema define a relação precisa que deve existir entre a entrada e a saída do algoritmo.

Exemplos de problemas Problema: Determinar se um número é primo. Entrada: 9411461 Saída: É um número primo. Entrada: 8411461 Saída: Não é um número primo.

Exemplos de problemas Problema: rearranjar um vetor A[0... n 1] de modo que fique ordenado crescentemente. Definição: A[0... n 1] é crescente se A[0] A[n 1]. Entrada: A = Saída: A = 0 n-1 55 33 33 44 33 0 n-1 33 33 33 44 55

Exemplos de problemas Problema: Encontrar uma árvore geradora mínima de um grafo G = (V, E) com custos nas arestas. Entrada: Saída:

Uma instância de um problema é um conjunto de valores que serve de entrada para esse.

Onde se encontra aplicações para o uso e desenvolvimento de algoritmos? Projeto genoma; Web; Comércio eletrônico; Planejamento da produção de indústrias; Logística de distribuição; Games e filmes. Motivação: é preciso ter uma base MUITO BOA em algoritmos para ser um bom profissional em Computação!

Infelizmente, existem certos problemas para os quais não se conhece algoritmos eficientes capazes de resolvê-los. Eles são chamados problemas N P-completos. Curiosamente, não foi provado que tais algoritmos não existem! Interprete isso como um desafio para inteligência humana.

Problemas N P-completos tem a característica notável de que se um deles admitir um algoritmo eficiente então todos daquela classe admitem algoritmos eficientes. Por que devo me preocupar com problemas N P-sei-lá-o-quê? Problemas dessa classe surgem em inúmeras situações práticas!

Exemplos de problemas N P-completos: Vehicle routing problem: calcular rotas de veículos de entrega de uma distribuidora, minimizando a distância percorrida; Bin packing 3D problem: calcular o número mínimo de containers para transportar um conjunto de caixas com produtos; Facility location problem: calcular a localização e o número mínimo de antenas de celulares para garantir a cobertura de uma certa região geográfica.

Além disso, problemas práticos semanticamente diferentes correspondem ao mesmo problema computacional (traveling salesman problem): encontre a rota de menor distância a ser percorrida para uma equipe de técnicos que irá inspecionar um conjunto de semáforos de uma cidade; calcule o comprimento mínimo de ligações metálicas necessárias em um circuito integrado para conectar um conjunto de pontos que devem ter a mesma tensão elétrica.

Motivação: é importante saber indentificar quando estamos lidando com um problema N P-completo.

O que é importante analisar em um algoritmo? Finitude: o algoritmo pára? Corretude: o algoritmo faz o que promete? Complexidade de tempo: quantas intruções são necessárias no pior caso para resolver o problema?

Questões: Introdução Qual a diferença entre um algoritmo e um programa? Qual a relação entre um algoritmo e um tipo abstrato de dados (TAD)?

Qual a diferença entre um algoritmo e um programa? Um programa é uma formulação concreta de um algoritmo abstrato, baseado em representações de dados específicas; Os programas são feitos em alguma linguagem que pode ser entendida e seguida pelo computador: Linguagem de máquina; Linguagem de alto nível (uso de compilador).

Qual a relação entre um algoritmo e um tipo abstrato de dados (TAD)? Estruturas de Dados e Algoritmos estão intimamente ligados; Em geral, algoritmos trabalham sobre estruturas de dados;

Laboratório 1) Escreva um programa que leia n registros (número esse definido em tempo de execução pelo usuário) com os seguintes dados: Primeiro nome RG Salário armazene esses dados em vetor struct (dinâmico). 2) Crie uma função para imprimir esses dados. 3) Crie uma função para modificar o salário de uma determinada pessoa e imprima novamente para verificar a atualização.