ESTRUTURAS DE DADOS E ALGORITMOS APRESENTAÇÃO DO CURSO E INTRODUÇÃO

Tamanho: px
Começar a partir da página:

Download "ESTRUTURAS DE DADOS E ALGORITMOS APRESENTAÇÃO DO CURSO E INTRODUÇÃO"

Transcrição

1 ESTRUTURAS DE DADOS E ALGORITMOS APRESENTAÇÃO DO CURSO E INTRODUÇÃO Adalberto Cajueiro ([email protected]) Departamento de Sistemas e Computação Universidade Federal de Campina Grande 1

2 APRESENTAÇÃO DO CURSO Créditos: 4 Carga-horária: 60h Pré-requisitos: Programação II, Laboratório de Programação II, Teoria dos Grafos Dependências: OAC, LOAC, PLP, ATAL Linhas gerais: estudo preliminar sobre algoritmos e avançado sobre estruturas de dados. 2

3 APRESENTAÇÃO DO CURSO Página do curso de EDA: edaufcg Página do curso de LEDA: edaufcg/ Para cada disciplina existe um grupo associado (acessível através da página da disciplina) Solicitem para serem adicionados nos grupos URGENTE! Use seu no domínio ccc.ufcg.edu.br para acessar o TST (tst-eda.splab.ufcg.edu.br)! 3

4 DICAS PARA A DISCIPLINA (EDA) Acompanhar os avisos no grupo da disciplina e acompanhar o site da disciplina constantemente. Não deixar o assunto acumular. Fazer os exercícios recomendados. Estudar também pelas referências. Fazer uso da monitoria (aulas e horários de atendimento aos alunos). Revisar a matemática necessária. Evitar fazer reposições. Conversar com a turma anterior. 4

5 DICAS PARA A DISCIPLINA (LEDA) Acompanhar os avisos no grupo da disciplina e acompanhar o site da disciplina constantemente. Não deixar o assunto acumular. Fazer os exercícios recomendados. Estudar também pelas referências. Fazer uso da monitoria (aulas e horários de atendimento aos alunos). Revisar a matemática necessária. Evitar fazer reposições. Conversar com a turma anterior. Crie suas implementações! Não as pegue pronta com o alguem do semestre anterior. 5

6 AVALIAÇÃO (INFORMAÇÃO NO SITE) EDA 3 provas teóricas LEDA 3 provas práticas roteiros Nota combinada 6

7 INICIANDO A CONVERSA O que é um algoritmo? Como podemos descrever algoritmos? Como devemos avaliar algoritmos? O que é análise de algoritmos? 7

8 O QUE É UM ALGORITMO? Procedimento que recebe valores a serem manipulados (entradas) e produz algum valor (ou valores) como saída. Uma sequencia finita de passos/instruções que transformam um conjunto de valores em uma dada situação inicial em uma situação final que satisfaz condições específicas. 8

9 EXEMPLOS DE ALGORITMOS Receita de bolo Descrição de como trocar o pneu de um carro Algoritmo para resolver equações quadráticas Algoritmo para calcular o MDC, MMC, raiz quadrada Métodos ensinados a crianças para somar, subtrair, multiplicar e dividir inteiros 9

10 PROGRAMAS X ALGORITMOS Algoritmo Idéia usada para computar alguma coisa Expresso em diversas linguagens naturais Programa Texto que descreve um sistema computacional Expresso em notacoes projetadas para computadores 10

11 ESCRITA DE ALGORITMOS Linguagem natural? Linguagem de Programação (código)? Pseudo-código? Linguagem Humana pseudo-código Código 11

12 EXEMPLO Faça um programa que calcula as médias acumuladas de um vetor V com n inteiros. A média deve ser armazenada em um vetor M de n reais. 12

13 EXEMPLO double[] calculamedia(int[] V){ 1: for i = 1..n 2: soma = 0 3: for j = 1..i 4: soma = soma + V[j] 5: M[i] = soma/i 6: return M } Como avaliar o algoritmo? 13

14 CRITÉRIOS DE AVALIAÇÃO Corretude Se para toda entrada especificada a saída correta é produzida Simplicidade Facilmente entendido, implementado e mantido Eficiência Inversa da quantidade de recursos requeridos para seu funcionamento 14

15 DE VOLTA AO EXEMPLO double [] calculamedia(int[] V 1: for i = 1..n 2: soma = 0 3: for j = 1..i 4: soma = soma + V[j] 5: M[i] = soma/i 6: return M } É correto? É simples? É eficiente? 15

16 CORRETUDE Garantir que em qualquer possível execução, cada bloco faz exatamente o que esperamos que faça Ações relacionadas a corretude: Identificar o que deve ser feito por cada bloco Identificar o estado antes do bloco executar Avaliar o efeito do bloco sobre o estado Caracterizar o estado após a execucao do bloco Provar corretude de algoritmos não é fácil! 16

17 SIMPLICIDADE Voce teria dificuldade em implementá-lo? Voce teria dificuldades em encontrar erros em uma implementação de outra pessoa? 17

18 EFICIÊNCIA Não basta dizer apenas se é eficiente mas quão eficiente! Como algoritmo é idéia, como avaliar os recursos que uma idéia consome? Abstrair detalhes de implementação. Refletir apenas o que é intrinseco de cada algoritmo. Comparação com algoritmos que resolvem o mesmo problema ajudam muito na prática. 18

19 EFICIÊNCIA A eficiência de um algoritmo é relevante? 19

20 EFICIÊNCIA Por que estudar eficiência? Os algoritmos ajudam a estudar a escalabilidade A eficiência geralmente descreve a linha entre: Tratável, intratável, insolúvel É a moeda da computação Qual é o melhor algoritmo para a solução de um problema? Complexidade x Eficiência 20

21 EFICIÊNCIA Método experimental várias implementações completas um grande número de execuções controladas medição cautelosa das variáveis de interesse análise (estatística) dos resultados Método analítico idéia: construir um modelo matemático do algoritmo. comparar algoritmos com base nos modelos 21

22 ABORDAGEM EXPERIMENTAL Executar os dois algoritmos Medir o tempo public static int arraymax(int[] A) {.. } long antes = System.nanoTime(); int x = arraymax(new int [] {4,5,6,1}); long depois = System.nanoTime(); long tempo = depois antes; 22

23 ABORDAGEM EXPERIMENTAL t (ms) medições Algoritmo n Tamanho da entrada 23

24 Quais fatores influenciam? 24

25 ABORDAGEM EXPERIMENTAL Fatores que influenciam Tamanho da entrada (n) Hardware Processador Memória Software Sistema Operacional Linguagem de Programação Compilador C/C++ 25

26 ABORDAGEM EXPERIMENTAL Limitações: Os experimentos são realizados em um número limitado de testes. Os dados podem não indicar a tendência dos valores não testados Os dois algoritmos devem ser testados no mesmo ambiente (hardware e software) Para analisar o tempo de execução, precisamos executar o algoritmo 26

27 Qual o desafio para comparar algoritmos sem executa-los? 27

28 Propor uma metodologia para analisar o tempo de execução dos algoritmos 28

29 OBJETIVOS Considerar todas as entradas Abstrair detalhes: analisar algoritmos independentemente de hardware e software Análise feita em alto nível (pseudo-código) Avaliar sem precisar rodar experimentos public boolean XYZ(int n, ) { } Algoritmos Análises f(n) Matemática 29

30 CONSIDERAÇÕES O tempo de execução de cada operação primitiva depende do hardware e software, mas de todo modo é constante Hipótese O tempo de cada operação primitiva é praticamente o mesmo 30

31 OPERAÇÕES PRIMITIVAS Atribuição: a = x Operação aritmética: a+1 Comparação de números: a>b Indexar array: a[i] Retorno de método: return x; Custo unitário: custo(primitiva) = 1 ou Custo constante: custo(primitiva) = c 31

32 CUSTO DAS OPERAÇÕES Instruções Consecutivas If then else Cmd1; Cmd2; custo(cmd1) + custo(cmd2) if (teste) {... // CustoIf } else {... // CustoElse } custo(teste) + max[custo(if),custo(else)] 32

33 CUSTO DE OUTRAS OPERAÇÕES Laço for (...) {... // CustoFor } Número de Iterações n * custofor Aninhamento de Laços tempo do laço interno x tempo do laço externo Recursão Mais complexo Veremos dois métodos (iterativo e mestre) 33

34 EXERCÍCIO 1 Quais as primitivas do algoritmo a seguir? public int max(int x, int y) { if (x > y) return x; else return y; } 34

35 EXERCÍCIO 1 Quais as primitivas do algoritmo a seguir? public int max(int x, int y) { if (x > y) return x; else return y; } 35

36 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? long potencia(int n) { long r = 1; for (int i=1; i<=n; i++) r=2*r; return r; } 36

37 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? long potencia(int n) { long r = 1; for (int i=1; i<=n; i++) r=2*r; return r; } 37

38 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? custo ( ) long potencia(int n) { long r = 1; for (int i=1; i<=n; i++) r=2*r; return r; } 38

39 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? custo ( long potencia(int n) { long r = 1; for (int i=1; i<=n; i++) r=2*r; return r; ) } 39

40 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? long potencia(int n) { long r = 1; for (int i=1; i<=n; i++) r=2*r; ) + return r; ) } custo ( ) + custo ( custo ( 40

41 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? custo ( custo ( long potencia(int n) { } c1 + for (int i=1; i<=n; i++) r=2*r; ) + return r; ) 41

42 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? long potencia(int n) { } c1 + for (int i=1; i<=n; i++) + r=2*r; return r; n*custo ( ) + custo ( ) 42

43 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? long potencia(int n) { } c1 + for ( c1 ; i<=n; i++) + r=2*r; return r; n*custo ( ) + custo ( ) 43

44 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? long potencia(int n) { } c1 + for ( c1 ; c2*n; i++) + r=2*r; return r; n*custo ( ) + custo ( ) 44

45 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? long potencia(int n) { } c1 + for ( c1 ; c2*n; c3*(n-1)) + r=2*r; return r; n*custo ( ) + custo ( ) 45

46 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? long potencia(int n) { } c1 + c1 + c2*n + c3*(n-1) + r=2*r; return r; n*custo ( ) + custo ( ) 46

47 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? custo ( long potencia(int n) { } c1 + c1 + c2*n + c3*(n-1) + n*c4 + ) return r; 47

48 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? long potencia(int n) { } c1 + c1 + c2*n + c3*(n-1) + n*c4 + c5 48

49 EXERCÍCIO 2 Quais as primitivas do algoritmo a seguir? long potencia(int n) { } c1 + c1 + c2*n + c3*(n-1) + n*c4 + c5 custo = 2*c1 + c2*n + c3*(n-1) + n*c4 + c5 49

50 TIPOS DE ANÁLISES Pior caso 6 tempo de execução (ms) tamanho da entrada Tempo médio Melhor caso 50

51 MELHOR, PIOR E CASO MÉDIO Pior Caso Mais comum T(n) = tempo máximo para um algoritmo com qualquer entrada de tamanho n Fácil de calcular (sem probabilidade) Caso Médio T(n) = tempo esperado sobre todas as entradas de tamanho n Precisa de uma hipótese da distribuição estatística das entradas Melhor Caso Não acrescenta muita informação Raramente ocorre na prática Logo, não é uma boa medida 51

52 EXERCÍCIO 4 Qual a expressão do tempo de execução de cada algoritmo? boolean primo(int n) { if (n==2) return true; for (int i=2; i<n; i++) if (n%i==0) return false; return true; } boolean primo(int n) { if (n==2) return true; for (int i=2; i<=n/2; i++) if (n%i==0) return false; return true; } 52

53 COMPLEXIDADE X HARDWARE Computador 10 7 instruções/seg Supercomputador 10 9 instruções/seg 50nlog 10 (n) Algoritmo de Ordenação 2n 2 53

54 ANÁLISE Quem ordenará mais rápido com n=10 6? 10 7 instr/s 50nlog 10 (n) log / segundos 10 9 instr/s 2n /10 9 = 2000 segundos 54

55 É importante não só ter uma máquina boa, mas também um algoritmo (tecnologia) eficiente! 55

Pra início de conversa... O que é um algoritmo? Exemplos de algoritmos. Como podemos descrever algoritmos? Como podemos descrever algoritmos?

Pra início de conversa... O que é um algoritmo? Exemplos de algoritmos. Como podemos descrever algoritmos? Como podemos descrever algoritmos? Pra início de conversa... O que é um algoritmo? Como podemos descrever algoritmos? avaliar algoritmos? Introdução à Análise de Algoritmos Prof. Cláudio E. C. Campelo http://claudiocampelo.com Derivado

Leia mais

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

CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches Bibliografia T.H. Cormen, C.E. Leiserson and R.L. Rivest Introduction to algorithms R. Sedgewick

Leia mais

Complexidade de algoritmos Notação Big-O

Complexidade de algoritmos Notação Big-O Complexidade de algoritmos Notação Big-O Prof. Byron Leite Prof. Tiago Massoni Engenharia da Computação Poli - UPE Motivação O projeto de algoritmos é influenciado pelo estudo de seus comportamentos Problema

Leia mais

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. Introdução. Prof. Ademir Constantino Universidade Estadual de Maringá Departamento de Informática 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

Leia mais

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Medida do Tempo de Execução de um Programa David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Medida do Tempo de Execução de um Programa O projeto de algoritmos é fortemente influenciado pelo

Leia mais

Medida do Tempo de Execução de um Programa. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Medida do Tempo de Execução de um Programa. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Medida do Tempo de Execução de um Programa Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Medida do Tempo de Execução de um Programa O projeto de algoritmos é fortemente influenciado pelo estudo

Leia mais

Análise de Algoritmos

Análise de Algoritmos Análise de Algoritmos Parte 1 Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 04 Algoritmos e Estruturas de Dados I Qual a diferença entre um algoritmo e um programa? Como escolher o algoritmo

Leia mais

Análise de algoritmos. Parte I

Análise de algoritmos. Parte I Análise de algoritmos Parte I 1 Recursos usados por um algoritmo Uma vez que um procedimento está pronto/disponível, é importante determinar os recursos necessários para sua execução Tempo Memória Qual

Leia mais

Teoria da computabilidade Indecidíveis Decidíveis

Teoria da computabilidade Indecidíveis Decidíveis Bacharelado em Ciência da Computação Disciplina: Algoritmos e Estruturas de Dados I Professor: Mário Luiz Rodrigues Oliveira Teoria da computabilidade Indecidíveis Decidíveis Teoria da complexidade Intratáveis:

Leia mais

Análise e Técnicas de Algoritmos

Análise e Técnicas de Algoritmos Análise e Técnicas de Algoritmos Prof. Jorge Figueiredo http://www.dsc.ufcg.edu.br/~abrantes/atal032.html Jorge Figueiredo Aula 1-1 Agenda Apresentação do curso Motivação Introdução informal Jorge Figueiredo

Leia mais

COMPLEXIDADE DE ALGORITMOS

COMPLEXIDADE DE ALGORITMOS COMPLEXIDADE DE ALGORITMOS Algoritmos Seqüência de instruções necessárias para a resolução de um problema bem formulado Permite implementação computacional COMPLEXIDADE DE ALGORITMOS Um algoritmo resolve

Leia mais

Análise de Algoritmos Estrutura de Dados II

Análise de Algoritmos Estrutura de Dados II Centro de Ciências Exatas, Naturais e de Saúde Departamento de Computação Análise de Algoritmos Estrutura de Dados II COM10078 - Estrutura de Dados II Prof. Marcelo Otone Aguiar [email protected]

Leia mais

Aula 3: Algoritmos: Formalização e Construção

Aula 3: Algoritmos: Formalização e Construção Aula 3: Algoritmos: Formalização e Construção Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Algoritmos: Formalização e Pseudo-Código Programação de

Leia mais

CES-11. Noções de complexidade de algoritmos. Complexidade de algoritmos. Avaliação do tempo de execução. Razão de crescimento desse tempo.

CES-11. Noções de complexidade de algoritmos. Complexidade de algoritmos. Avaliação do tempo de execução. Razão de crescimento desse tempo. CES-11 Noções de complexidade de algoritmos Complexidade de algoritmos Avaliação do tempo de execução Razão de crescimento desse tempo Notação O Exercícios COMPLEXIDADE DE ALGORITMOS Importância de análise

Leia mais

Aula 1. Teoria da Computação III

Aula 1. Teoria da Computação III Aula 1 Teoria da Computação III Complexidade de Algoritmos Um problema pode ser resolvido através de diversos algoritmos; O fato de um algoritmo resolver um dado problema não significa que seja aceitável

Leia mais

Complexidade de Tempo e Espaço

Complexidade de Tempo e Espaço Complexidade de Tempo e Espaço Profa. Sheila Morais de Almeida DAINF-UTFPR-PG junho - 2018 Sheila Almeida (DAINF-UTFPR-PG) Complexidade de Tempo e Espaço junho - 2018 1 / 43 Este material é preparado usando

Leia mais

Análise de Complexidade de Algoritmos. mario alexandre gazziro

Análise de Complexidade de Algoritmos. mario alexandre gazziro Análise de Complexidade de Algoritmos mario alexandre gazziro Definição A complexidade de um algoritmo consiste na quantidade de esforço computacional necessária para sua execução. Esse esforço é expresso

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação CP41F Aula 2 Prof. Daniel Cavalcanti Jeronymo Conceito de algoritmo. Raciocínio lógico na construção de algoritmos. Estrutura de algoritmos. Universidade Tecnológica Federal

Leia mais

Técnicas de análise de algoritmos

Técnicas de análise de algoritmos CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Técnicas de análise de algoritmos Algoritmos e Estruturas de Dados I Natália Batista https://sites.google.com/site/nataliacefetmg/ [email protected]

Leia mais

Programação: Vetores

Programação: Vetores Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia

Leia mais

2. Complexidade de Algoritmos

2. Complexidade de Algoritmos Introdução à Computação II 5952011 2. Complexidade de Algoritmos Prof. Renato Tinós Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 2.1. Introdução 2.1.1. Revisão de Pseudo-Código 2.1.2.

Leia mais

Introdução à Programação. Vanessa Braganholo

Introdução à Programação. Vanessa Braganholo Introdução à Programação Vanessa Braganholo [email protected] Processo de resolução de problemas (Princípios de Pólya) Definição dos requisitos do problema (fazer o programa certo) Entradas Cálculos Casos

Leia mais

Análise de Problemas Recursivos. Algoritmos e Estruturas de Dados Flavio Figueiredo (

Análise de Problemas Recursivos. Algoritmos e Estruturas de Dados Flavio Figueiredo ( Análise de Problemas Recursivos Algoritmos e Estruturas de Dados 2 2017-1 Flavio Figueiredo (http://flaviovdf.github.io) 1 Lembrando de Recursividade Procedimento que chama a si mesmo Recursividade permite

Leia mais

01 Análise de Algoritmos (parte 2) SCC201/501 - Introdução à Ciência de Computação II

01 Análise de Algoritmos (parte 2) SCC201/501 - Introdução à Ciência de Computação II 01 Análise de Algoritmos (parte 2) SCC201/501 - Introdução à Ciência de Computação II Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2010/2 Moacir

Leia mais

Construção de Algoritmos II Aula 06

Construção de Algoritmos II Aula 06 exatasfepi.com.br Construção de Algoritmos II Aula 06 André Luís Duarte Porque mil anos são aos teus olhos como o dia de ontem que passou, e como a vigília da noite. Salmos 90:4 Recursividade e complexidade

Leia mais

Introdução à Ciência da Computação II

Introdução à Ciência da Computação II Introdução à Ciência da Computação II Análise de Algoritmos: Parte I Prof. Ricardo J. G. B. Campello Este material consiste de adaptações e extensões de slides disponíveis em http://ww3.datastructures.net

Leia mais

Linguagem de Programação I Prof. Tiago Eugenio de Melo.

Linguagem de Programação I Prof. Tiago Eugenio de Melo. Linguagem de Programação I Prof. Tiago Eugenio de Melo [email protected] www.tiagodemelo.info 1 Sumário Introdução Conceitos preliminares Introdução Variáveis Comandos Condicionais 2 Por que aprender a

Leia mais

01 Análise de Algoritmos (parte 1) SCC201/501 - Introdução à Ciência de Computação II

01 Análise de Algoritmos (parte 1) SCC201/501 - Introdução à Ciência de Computação II 01 Análise de Algoritmos (parte 1) SCC201/501 - Introdução à Ciência de Computação II Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2010/2 Moacir

Leia mais

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Medida do Tempo de Execução de um Programa David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Classes de Comportamento Assintótico Se f é uma função de complexidade para um algoritmo F, então

Leia mais

Introdução à Ciência da Computação II

Introdução à Ciência da Computação II Introdução à Ciência da Computação II 2semestre/200 Prof Alneu de Andrade Lopes Apresentação com material gentilmente cedido pelas profas Renata Pontin Mattos Fortes http://wwwicmcuspbr/~renata e Graça

Leia mais

Bioinformática. Ney Lemke. Departamento de Física e Biofísica. logo

Bioinformática. Ney Lemke. Departamento de Física e Biofísica. logo Bioinformática Ney Lemke Departamento de Física e Biofísica 2009 Outline 1 Bibliografia 2 Introdução 3 Algoritmos 4 Aplicações 5 Algoritmos Recursivos 6 Tipos de Algoritmos Outline 1 Bibliografia 2 Introdução

Leia mais

COMPLEXIDADE DE ALGORITMOS COMPLEXIDADE DE ALGORITMOS

COMPLEXIDADE DE ALGORITMOS COMPLEXIDADE DE ALGORITMOS COMPLEXIDADE DE ALGORITMOS Algoritmos Seqüência de instruções necessárias para a resolução de um prolema em formulado Permite implementação computacional COMPLEXIDADE DE ALGORITMOS Um algoritmo resolve

Leia mais

ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS

ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS 1/18 ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS Algoritmos 2/18 Algoritmos Algoritmo - sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador)

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Leonardo Gresta Paulino Murta [email protected] Processo de resolução de problemas (Princípios de Pólya) Definição dos requisitos do problema (fazer o programa certo) Entradas

Leia mais

Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional

Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional Disciplina: Algoritmos e Estruturas de Dados Professor: Flávio Cardeal Lista de

Leia mais

É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser

É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser executado 1 Fazendo estimativas e simplificações... O número

Leia mais

Teoria da Computação Aula 8 Noções de Complexidade

Teoria da Computação Aula 8 Noções de Complexidade Teoria da Computação Aula 8 Noções de Complexidade Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional Motivação: Por que estudar algoritmos? Perguntas: - Por que estudar algoritmos se os computadores

Leia mais

Complexidade de Algoritmos

Complexidade de Algoritmos Complexidade de Algoritmos! Uma característica importante de qualquer algoritmo é seu tempo de execução! é possível determiná-lo através de métodos empíricos, considerando-se entradas diversas! é também

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição 1 Comando while Deseja-se calcular o valor de: 1 + 2 + 3 +... + N. Observação: não sabemos, a priori, quantos termos

Leia mais

Técnicas de Programação

Técnicas de Programação Técnicas de Programação Algoritmos Anderson Gomes Eleutério Lógica A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir

Leia mais

Introdução à Programação

Introdução à Programação INF1005: Programação 1 Introdução à Programação 08/03/10 (c) Paula Rodrigues 1 Tópicos Principais Modelo de um Computador Ciclo de Desenvolvimento 08/03/10 (c) Paula Rodrigues 2 Modelo de um Computador

Leia mais

TCC 00308: Programação de Computadores I Introdução

TCC 00308: Programação de Computadores I Introdução TCC 00308: Programação de Computadores I 2017.1 Introdução Processo de resolução de problemas Definição dos requisitos do problema (fazer o programa certo) Entradas Cálculos Casos especiais Saídas Desenvolvimento

Leia mais

Análise de complexidade

Análise de complexidade Introdução Algoritmo: sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador) Estratégia: especificar (definir propriedades) arquitectura

Leia mais

Estruturas de Repetição

Estruturas de Repetição Algoritmos e Estruturas de Dados I (DCC/003) Estruturas de Repetição Aula Tópico 4 (while, for) 1 Problema 10 Suponha que soma (+) e subtração (-) são as únicas operações disponíveis em C. Dados dois números

Leia mais

Teoria da Computação Aula 9 Noções de Complexidade

Teoria da Computação Aula 9 Noções de Complexidade Teoria da Computação Aula 9 Noções de Complexidade Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional Análise de um Algoritmo em particular Qual é o custo de usar um dado algoritmo para resolver um

Leia mais

Introdução à Análise Algoritmos

Introdução à Análise Algoritmos Introdução à Análise Algoritmos Notas de aula da disciplina IME 4-182 Estruturas de Dados I Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) abril/218 Ordenação por SELEÇÃO: Idéia: Dado um vetor

Leia mais

Aula 02: Custos de um algoritmo e funções de complexidade

Aula 02: Custos de um algoritmo e funções de complexidade MCTA028 Programação Estruturada Aula 02: Custos de um algoritmo e funções de complexidade Prof. Jesús P. Mena-Chalco [email protected] 3Q-20106 1 Linguagem C: Tipos de dados 2 Linguagem C: Tipos

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: Operadores relacionais e lógicos estruturas condicionais If...

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: Operadores relacionais e lógicos estruturas condicionais If... Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: Operadores relacionais e lógicos estruturas condicionais If... Else Switch Prof. Renato Pimentel 1 Operações relacionais Operações

Leia mais

Aula 02. Algoritmos e Pseudocódigo

Aula 02. Algoritmos e Pseudocódigo Aula 02 Algoritmos e Pseudocódigo Tópicos Principais Definição de Algoritmo Formas de representação Condicionais Repetições Definição de Algoritmo Um algoritmo é uma sequência de ações que resolve um problema.

Leia mais

ALGORITMOS CONCEITOS PRELIMINARES. Prof. Angelo Augusto Frozza, M.Sc.

ALGORITMOS CONCEITOS PRELIMINARES. Prof. Angelo Augusto Frozza, M.Sc. ALGORITMOS CONCEITOS PRELIMINARES Prof. Angelo Augusto Frozza, M.Sc. [email protected] INTRODUÇÃO O computador é uma máquina que executa instruções que resolvem problemas; Para a forma como estas

Leia mais

Paradigmas de Linguagem de Programação. Paradigma Imperativo

Paradigmas de Linguagem de Programação. Paradigma Imperativo Paradigmas de Linguagem de Programação Paradigma Imperativo Paradigma Imperativo Imperare Comandar É o mais antigo de todos; Baseado no modo de funcionamento do computador; São também chamadas de procedurais;

Leia mais

Técnicas de projeto de algoritmos: Indução

Técnicas de projeto de algoritmos: Indução Técnicas de projeto de algoritmos: Indução ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 08/2008

Leia mais

Arquitetura de Computadores II

Arquitetura de Computadores II Universidade Estadual de Maringá Centro de Tecnologia Departamento de Informática Arquitetura de Computadores II Prof. Flávio Rogério Uber Informações Úteis Professor: Flávio Rogério Uber Bloco C-56 Sala

Leia mais

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos Projeto e Análise de Algoritmos Aula 01 Complexidade de Algoritmos Edirlei Soares de Lima O que é um algoritmo? Um conjunto de instruções executáveis para resolver um problema (são

Leia mais

Fundamentos de Algoritmos (5175/31)

Fundamentos de Algoritmos (5175/31) UEM/CTC Departamento de Informática Curso: Ciência da Computação Professor: Flávio Rogério Uber Fundamentos de Algoritmos (5175/31) Material Original: Prof. Yandre Maldonado e Gomes da Costa (UEM/DIN)

Leia mais

O Que Veremos. Introdução. Introdução. Definindo Desempenho. Definindo Desempenho. Avaliando e Compreendendo o Desempenho

O Que Veremos. Introdução. Introdução. Definindo Desempenho. Definindo Desempenho. Avaliando e Compreendendo o Desempenho Ciência da Computação Arq. e Org. de Computadores Avaliando e Compreendendo o Desempenho O Que Veremos Avaliando e compreendendo o desempenho: Introdução Definindo desempenho Medindo o desempenho e seus

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação Linguagem C++: arrays - aula I Bruno Emerson Gurgel Gomes 1 1 Instituto Federal de Educação, Ciência e Tecnologia do RN (IFRN) 2012 Bruno Gomes (IFRN) Fundamentos de Programação

Leia mais

Complexidade de Algoritmos

Complexidade de Algoritmos Complexidade de Algoritmos O que é um algoritmo? Sequência bem definida e finita de cálculos que, para um dado valor de entrada, retorna uma saída desejada/esperada. Na computação: Uma descrição de como

Leia mais

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..

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.. Técnicas de Programação em Engenharia Elétrica I - Engenharia de Sistemas Embarcados - Introdução aos Algoritmos A única diferença entre o difícil e o impossível é que o último demora um pouco mais de

Leia mais

MC-102 Aula 01. Instituto de Computação Unicamp

MC-102 Aula 01. Instituto de Computação Unicamp MC-102 Aula 01 Introdução à Programação de Computadores Instituto de Computação Unicamp 2016 Roteiro 1 Por que aprender a programar? 2 Hardware e Software 3 Organização de um ambiente computacional 4 Algoritmos

Leia mais

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 13: Ordenação: MergeSort Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Website: www.decom.ufop.br/reifortes Email: [email protected]

Leia mais

Comportamento assintótico

Comportamento assintótico ANÁLISE DE ALGORITMOS: PARTE 2 Prof. André Backes 2 Na última aula, vimos que o custo para o algoritmo abaixo é dado pela função f(n) = 4n + 3 1 3 Essa é a função de complexidade de tempo Nos dá uma ideia

Leia mais

Lógica de Programação I

Lógica de Programação I Gilson de Souza Carvalho [email protected] 1 Comandos de repetição combinados com comandos de condição A utilização de comandos de repetição combinados com comandos de condição permite resolver

Leia mais

Introdução aos Algoritmos

Introdução aos Algoritmos Introdução aos Algoritmos Aula 05 Diogo Pinheiro Fernandes Pedrosa http://www2.ufersa.edu.br/portal/professor/diogopedrosa [email protected] Universidade Federal Rural do Semiárido Bacharelado

Leia mais

Técnicas de Projeto de Algoritmos

Técnicas de Projeto de Algoritmos UNIVERSIDADE NOVE DE JULHO - UNINOVE Pesquisa e Ordenação Técnicas de Projeto de Algoritmos Material disponível para download em: www.profvaniacristina.com Profa. Vânia Cristina de Souza Pereira 03 _ Material

Leia mais

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

Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches CT-234 2) Algoritmos recursivos Indução matemática, recursão, recorrências Indução matemática Uma

Leia mais

Aula 08 Introdução à Algoritmos. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Aula 08 Introdução à Algoritmos. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes Aula 08 Introdução à Algoritmos Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Agenda da Aula Introdução aos Algoritmos: Conceitos Iniciais; Programa

Leia mais

Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista ( )

Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista ( ) Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista (2.1-2.2) DECOM/UFOP 2013/1 5º. Período Anderson Almeida Ferreira Adaptado do material desenvolvido por Andréa Iabrudi

Leia mais

a complexidade no desempenho de algoritmos

a complexidade no desempenho de algoritmos capítulo 1 introdução Os algoritmos são o cerne da computação. Este capítulo introdutório procura ressaltar a importância da complexidade e dos métodos de projeto e análise de algoritmos. Partindo da ideia

Leia mais

ALGORITMOS AVANÇADOS UNIDADE II Recursividade. Luiz Leão

ALGORITMOS AVANÇADOS UNIDADE II Recursividade. Luiz Leão Luiz Leão [email protected] http://www.luizleao.com Conteúdo Programático 2.1 - Definições recursivas 2.2 - Como implementar recursividade 2.3 - Quando não usar recursividade 2.4 - Desenvolvendo algoritmos

Leia mais

Análise de Complexidade de Algoritmos

Análise de Complexidade de Algoritmos Análise de Complexidade de Algoritmos Algoritmos e Estruturas de Dados 2009/2010 Introdução Algoritmo: conjunto claramente especificado de instruções a seguir para resolver um problema Análise de algoritmos:

Leia mais

Disciplina de Algoritmos e Programação

Disciplina de Algoritmos e Programação Disciplina de Algoritmos e Programação Atividades Plano de ensino Conteúdos da disciplina, definição das datas, critérios de avaliação e bibliografias Início da matéria Conceito e definição de algoritmos

Leia mais

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

SEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end. SEMÂNTICA program simples = var x : int := 3 in x := x + 5 end. rode =? Rogério Rocha Roteiro Introdução Sintaxe Semântica Dinâmica (Métodos formais) Operacional Axiomática Denotacional Estática Conclusão

Leia mais