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

Documentos relacionados
Teoria da computabilidade Indecidíveis Decidíveis

Introdução à Computação: Máquinas Multiníveis

Noções de Algoritmos

PROGRAMAÇÃO I. Introdução

Paradigmas de Programação

HORÁRIO ESCOLAR - CIÊNCIA DA COMPUTAÇÃO 2016 Atualizado 26/01/2016 INGRESSANTES A PARTIR DE 2010

Licenciatura em Matemática

A computação aplicada à resolução de sistemas lineares

SEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end.

SERVIÇO PÚBLICO FEDERAL INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO AMAPÁ IFAP CÂMPUS MACAPÁ

Administração Central Unidade de Ensino Médio e Técnico - CETEC. Plano de Trabalho Docente 2012

Funcionamento do computador. Conceito e definição de algoritmos. Prof. Alex Camargo

ESCOLA SECUNDÁRIA DE LOUSADA

PPM CONTEÚDO. Lógica de programação Programação para manufatura Sistemas supervisorios PROGRAMAÇÃO PARA MANUFATURA 05/03/2009

AULA: Introdução à Informática I

1/ 36. Computação 1 - Python Aula 1 - Teórica: Introdução

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Centro Universitário do Triângulo

PESQUISA OPERACIONAL. UNIDADE 1 Introdução à Pesquisa Operacional. Prof. Me. Carlos Guimarães

Currículo do Curso de Engenharia de Produção

Pesquisa Operacional. Evanivaldo Castro Silva Júnior

LINGUAGEM DE PROGRAMAÇÃO COMO FERRAMENTA PARA O CONHECIMENTO COMPUTACIONAL NAS ESCOLAS PÚBLICAS DE RIACHÃO PB

Disciplinas do Curso Superior em Engenharia Civil. CEFET-MG / Unidade Curvelo

Unidade 2: Algoritmos e programação

BCC202 - Estrutura de Dados I

Bruno Ribeiro da Silva. A adaptação de um sistema operacional para a execução em uma diferente arquitetura

Apostila 01 Fundamentação da Teoria da Computação e Linguagens Formais

BC1424 Algoritmos e Estruturas de Dados I Aula 05 Custos de um algoritmo e funções de complexidade

LICENCIATURA EM ENGENHARIA DE REDES DE COMUNICAÇÃO E INFORMAÇÃO EQUIVALÊNCIAS ENTRE PLANOS CURRICULARES. Plano Curricular

Working 03 : Conceitos Básicos II

Aula 02. MC Algoritmos e Programação de Computadores. Algoritmos: Definição e Exemplos.

ALGORITMOS AULA 1. Profª Amanda Gondim

Vença o relógio Redes de Ordenação

Orientações de Inscrição nas Unidades Curriculares. da Licenciatura em Informática

Algoritmos 2 - Introdução

INFORMÁTICA APLICADA AULA 05 ALGORITMOS

NÍVEL DE ENSINO: CARGA HORÁRIA: PROBABILIDADE EST PROFESSOR-AUTOR:

Linguagens Formais e Autômatos P. Blauth Menezes

Grade Curricular do Curso de Graduação em Engenharia de Computação

A palavra ALGORITMO teve origem com um Matemático Persa, al. Khawarizmi. O seu trabalho mais famoso foi Al-jabr walmuquabalah,

Pesquisa Operacional. Definição. Sumário 2/23/2016

Introdução a Computação

Lógica de Programação

Introdução a Algoritmos Aula 1

Matriz Curricular Curso de Licenciatura em Computação Habilitação: Licenciatura em Computação

BCC402 Algoritmos e Programação Avançada. Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Tóffolo 2011/1

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 06

Desenvolvimento de programas. Análise do problema. Análise do problema. Análise do problema. Desenvolvimento do algoritmo. Codificação do programa

COMPLEMENTAÇÃO DE CARGA HORÁRIA: 1 aula de 1h40min PLANO DE ENSINO

Programação de Computadores III

Técnicas de Programação III Análise de Algoritmos (Continuação)

Computação na Biologia Molecular e Bionanotecnologia: Computação Biológica

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO PRÓ-REITORIA DE ENSINO DE GRADUAÇÃO

Pesquisa Operacional. Introdução à Pesquisa Operacional

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO 9º PERÍODO. Profª Danielle Casillo

PESQUISA OPERACIONAL APLICADA A LOGÍSTICA

LÓGICA DE PROGRAMAÇÃO. Prof. Welber Ribeiro da Silva

Aula 10: Tratabilidade

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO. Prof. Angelo Augusto Frozza, M.Sc.

Conceitos Básicos INTRODUÇÃO À COMPUTAÇÃO E SUAS APLICAÇÕES

COMPLETA. Verão no Campus 2016 Programa CIÊNCIAS FisicUM

Algoritmos e Estruturas de Dados

Lógica de Programação. Profas. Simone Campos Camargo e Janete Ferreira Biazotto

P L A N O D E E N S I N O A N O D E ÁREA / DISCIPLINA: CIÊNCIAS DA NATUREZA / MÁTEMÁTICA

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

Aula 7: Portas Lógicas: AND, OR, NOT, XOR, NAND e NOR

Árvore Binária de Busca Ótima

Administração Central Unidade de Ensino Médio e Técnico - CETEC. Ensino Técnico ETEC ETEC PAULINO BOTELHO

Árvores (ordenadas) Departamento de Ciência de Computadores da FCUP MC Aula 11 1

Correção Ortográfica. Processamento Estatístico da Linguagem Natural. Correção de Erros. Distância Mínima de Edição. Distância Mínima de Edição

04 Recursão SCC201/501 - Introdução à Ciência de Computação II

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

MÉTODO PARA AVALIAÇÃO DA USABILIDADE DE WEB SITES BANCÁRIOS

Ivanovitch Medeiros Dantas da Silva. Natal, 01 de setembro de 2011

ADIAMENTO DO CONCURSO DA ÁREA DE DESIGN DE MODA, DO NÚCLEO DE DESIGN, DO CENTRO ACADÊMICO DO AGRESTE.

PROJETO DO CURSO TÉCNICO DE NÍVEL MÉDIO INTEGRADO EM INFORMÁTICA

Seleção de pessoal. Para julgar com eficácia esses dois aspectos, é necessária, então, a coleta de dados do candidato sobre seus/suas:

Universidade Federal do Espírito Santo Departamento de Informática 1 o Trabalho de Algoritmos Numéricos I - 14/2 Sistemas Lineares

Ano Letivo 2015/2016. Datas dos Exames das Épocas de Recurso e Especial. Unidades Curriculares do DM

PLANO DE ENSINO e APRENDIZAGEM Álgebra Linear

Inteligência Artificial

DISCIPLINA Turmas DIA TURNO Períodos SALA ÁLGEBRA II LM11 2 N ALGORITMOS E PROGRAMAÇÃO EC11 EP11 6 N ALGORITMOS E PROGRAMAÇÃO

Agrupamento de Escolas do Fundão

Grafos Hamiltonianos e o Problema do Caixeiro Viajante. Prof. Ademir Constantino Departamento de Informática Universidade Estadual de Maringá

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE SERGIPE CENTRO DE CIÊNCIAS EXATAS E TECNOLOGIA

Exercícios Cap I. 1.1, 1.2, 1.3 (somente letras (a), (b) e (c)) , 1.8 e 1.12 IC - UFF

Prof. Adriano Maranhão COMPILADORES

UNIVERSIDADE SÃO JUDAS TADEU

CURSO: ENGENHARIA DE CONTROLE E AUTOMAÇÃO EMENTAS º PERÍODO

UNIVERSIDADE SÃO JUDAS TADEU

Medição e Erro. Aminadabe dos Santos Pires Soares ¹. Prof. Adenauer Yamin ². Universidade Católica de Pelotas

Planificação a médio e longo prazo. Matemática B. 11º Ano de escolaridade. Total de aulas previstas: 193. Ano letivo 2015/2016

Português Língua Estrangeira Área de Integração Educação Física Tec. de Inf. e Comunicação

Unidade: Pesquisa Operacional e a Tomada de

EDUARDO DA SILVA SARDÃO 0981/00-4 IGOR RODRIGO MACHADO DE MENEZES 1422/98-1 TRABALHO FINAL ÁRVORES B+

Tecnologias de Desenvolvimento de Páginas web

ção de Computadores II

Fig.1: Ilustração de Lógica Fonte: Internet

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 12 PROFª BRUNO CALEGARO

Transcrição:

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

Projeto e Análise de Algoritmos Eu penso que o projeto de algoritmos eficientes é de algum modo o núcleo da ciência da computação. Está no centro de nossa área. Donald Knuth Objetivo do curso: Enfatizar a eficiência como critério para projeto de algoritmos. Referência: CORMEM, T. H., Leiserson, C. E., Rivest, R. L. e Stein, C. (2001). Algoritmos: Teoria e Prática. Editora Campus 2

Conteúdo Veremos, nesta introdução, os seguintes tópicos: O que é algoritmos. Como devemos avaliar algoritmos. O que é análise de algoritmos Exemplos de medidas de eficiência. Comparação de medidas (funções). 3

O que é algoritmo? Problema: é simplesmente uma tarefa a ser executada; Problema computável (problema decidível). Algoritmo: é uma seqüência finita de instruções computáveis, sem ambiguidade, que transformam um conjunto de valores iniciais satisfazendo condições específicas de um problema. 4

Algoritmo X Programa Algoritmo é uma idéia que pode ser escrita em linguagem natural (Português, Inglês, etc.) juntamente com notações matemáticas. Programa é uma instanciação de um algoritmo em uma linguagem computacional (C, Pascal, Java, python, etc.). 5

Algoritmos X Programas Programas são escritos em com notação específica para que computadores a processem: # Pascal, C, C++, Java, PHP, etc... Algoritmos são escritos para que humanos os entendam mas que possam ser codificados em alguma linguagem de programação... # ensinar as crianças a somar dois números inteiros. 6

Algoritmos X Programas Análise de Algorimos estuda o comportamento de ALGORITMOS e não de PROGRAMAS. Para saber se um algoritmo está correto, utiliza-se técnicas matemáticas. Para saber se um programa está correto, utiliza-se testes (exemplo: teste de mesa).

Algoritmo X Programação No contexto da computação, a programação é uma ação que gera um produto. Ações: Tipo 1: Gerar um algoritmo ou um modelo para solucionar um problema; Produto: Algoritmo ou Modelo; Técnicas: programação dinâmica, programação linear, grafos, Tipo 2: Codificar o algoritmo ou modelo em uma linguagem computacional (C, Pascal, Java, AMPL, ) Produto: programa de computador. Técnicas: programação estruturada, programação por evento, programação orientada a objetos,...

Algoritmo X Programação Portanto, PROGRAMAÇÃO não é apenas uma habilidade ou destreza com uma determinada linguagem de programação. Programação também está relacionada com a habilidade de utilização de técnicas corretas (ação do tipo 1) para solucionar problemas por algoritmos eficientes. Grafos é uma dessas dessas técnicas. Algoritmos eficientes é resultado da aplicação de Análise de algoritmos.

Como avaliar um algoritmo? Temos 3 (três) critérios para avaliar um algoritmo: Simplicidade; Corretude; Eficiência. 10

Como avaliar um algoritmo? Simplicidade: Um algoritmo é simples se puder ser facilmente entendido, implementado e mantido. Não se conhece técnicas formais para isto! Corretude: Um algoritmo está correto se para toda entrada específica a saída correta é produzida. Testes servem apenas para provar que um algoritmo tem erros, nunca para provar que está correto (Dijkstra) 11

Como avaliar um algoritmo? Eficiência: A eficiência de um algoritmo está relacionada com uma medida quantitativa definida como a inversa da quantidade de recursos requeridos para o seu funcionamento. Que recursos são estes? tempo; memória; etc. 12

Como medir a eficiência? Método experimental realizar várias implementações completas; executar um grande número de vezes; Análise (estatística) dos resultados; Obs: esta técnicas é utilizada em último caso. Método Analítico. A idéia é construir um modelo matemático do algoritmo. A comparação de eficiência dos algoritmos se dá a partir da compação desses modelos. 13

O que é Análise de Algoritmos? Analisar um algoritmo significa prever os recursos de que o algoritmo necessitará (Cormen, et al. 2001). A análise de algoritmos pode definida como o estudo da eficiência dos algoritmos. Análise de algoritmos significa, também, estimar o grau de dificuldade dos problemas. 14

O que é visto em Análise de Algoritmos? Ferramentas matemáticas utilizadas: Análise Combinatória; Teoria das probabilidades; Destreza matemática: Indução Matemática; Séries e Produtórios; Potências e Logaritmos, etc. 15

Quando é utilizada a Análise de Algoritmos para projetar algoritmos mais eficientes; para saber se suas implementações são viáveis do ponto de vista prático; para saber qual é o melhor algoritmo para a resolução de um problema; para saber o grau de dificuldade de um problema (Teoria da Complexidade). 16

Como Medir a Eficiência? Quando analisamos um algoritmo nós desejamos saber o quanto ele é eficiente. Para medir a eficiência nós necessitamos: prever a quantidade de recursos: a quantidade de memória (complexidade de espaço); o tempo de execução (complexidade de tempo); do modelo de tecnologia adotado para a sua implementação modelo de computação. 17

Modelo de Computação Ao invés de escolher uma máquina particular, em relação a qual a eficiência dos algoritmos seria avaliada, é certamente mais conveniente utilizar-se de um modelo matemático de um computador. Modelo adotado: (modelo RAM) 1.as operações são todas executadas sequencialmente; 2.a execução de toda e qualquer operação toma uma unidade de tempo; 3.a memória é infinita. 18

Final Bom estudo! Capítulo 1 Apêndice A Capítulo 2 19