Programação II Aula 07

Documentos relacionados
Comportamento assintótico

Complexidade Assintótica de Programas Letícia Rodrigues Bueno

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

Comportamento Assintótico. Algoritmos e Estruturas de Dados Flavio Figueiredo (

ANÁLISE DE ALGORITMOS: PARTE 1. Prof. André Backes. Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa

Complexidade de Algoritmos

Análise de Algoritmos Estrutura de Dados II

Aula 1. Teoria da Computação III

ANÁLISE DE ALGORITMOS: PARTE 3

3. ANÁLISE DE COMPLEXIDADE PESSIMISTA

Análise de Complexidade para algoritmos iterativos e recursivos

Complexidade de Algoritmos

Análise e Projeto de Algoritmos

Breve Introdução à Complexidade Assintótica de Algoritmos Letícia Rodrigues Bueno

Elementos de Análise Assintótica

André Vignatti DINF- UFPR

Projeto e Análise de Algoritmos

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

Algoritmos de Ordenação

Complexidade de Algoritmos. Edson Prestes

Estruturas de Dados 2

ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS

Estruturas de Dados Algoritmos

Aula 02 Notação Assintótica p. 4. Usodanotação O. Notação O. Notação O, Ω, ΘeExemplos. Intuitivamente... O(f(n)) funções que não crescem mais

Complexidade de algoritmos Notação Big-O

Melhores momentos AULA 1. Algoritmos p.38/86

Técnicas de Projeto de Algoritmos

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

Algoritmos de Ordenação

Construção de Algoritmos II Aula 06

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

Métodos de Ordenação

ALGORITMOS AVANÇADOS Lista de Exercícios 01. Luiz Leão

Complexidade de Algoritmos

ALGORITMOS AVANÇADOS UNIDADE I Análise de Algoritmo - Notação O. Luiz Leão

BCC202 - Estrutura de Dados I

Projeto e Análise de Algoritmos

Análise de algoritmos

MC102 - Algoritmos e programação de computadores. Aula 16: Busca e Ordenação em vetores

2. Ordenação por Seleção

Análise de algoritmos

2. Complexidade de Algoritmos

Análise do desempenho computacional dos métodos Inserção Direta, Bolha, ShellSort e ComboSort

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

Análise de algoritmos. Parte I

Algoritmos de Ordenação. Cota inferior. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

Algoritmos e Programação

BCC202 - Estrutura de Dados I

ALGORITMOS DE ORDENAÇÃO

Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo

FACULDADE CAMPO LIMPO PAULISTA BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto a Análise de Algoritmos I Lista de Exercícios 1

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

Análise de Algoritmos. Prof. Sérgio Carlos Portari Júnior

Introdução à Análise Algoritmos

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Teoria da computabilidade Indecidíveis Decidíveis

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

Tópico 5 Algoritmos de Ordenação. Parte I - métodos de ordenação: inserção, mergesort, heapsort e quicksort.

Teoria dos Grafos Aula 7

Análise de algoritmos

MÉTODOS DE CLASSIFICAÇÃO EM MEMÓRIA PRIMÁRIA. George Gomes Cabral

BCC202 - Estrutura de Dados I

Algoritmos 3/17/ Algoritmos como área de estudo e investigação

Estrutura de Dados Conceitos Iniciais

ANÁLISE DE ALGORITMOS

Universidade Federal de Alfenas

Carlos Eduardo Batista. Centro de Informática - UFPB

BUSCA EM ARRAYS. Prof. André Backes. Ato de procurar por um elemento em um conjunto de dados

ESTRUTURAS DE REPETIÇÃO - PARTE 1

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

Análise e Complexidade de Algoritmos

ESTRUTURAS DE DADOS prof. Alexandre César Muniz de Oliveira

Análise de algoritmos

LISTA DE EXERCÍCIOS 1

Aula 12 Métodos de Classificação: - Classificação por Inserção Direta - Classificação por Seleção Direta

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

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

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

COMPLEXIDADE DE ALGORITMOS

Área que visa determinar a complexidade (custo) de um algoritmo, com isso é possível:

MCTA028 Programação Estruturada Aula 20 Exercícios de custos de um algoritmo

Álgebra Linear e Geometria Analítica Bacharelados e Engenharias Parte II Matrizes (continuação)

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

LISTA DE EXERCÍCIOS 1

15/03/2018. Professor Ariel da Silva Dias Algoritmo e Contagem de Instruções. Prof. Ariel da Silva Dias -

Algoritmo. Exemplo. Definição. Programação de Computadores Comparando Algoritmos. Alan de Freitas

Pesquisa: operação elementar

Teoria da Computação. Aula 3 Comportamento Assintótico 5COP096. Aula 3 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Métodos de Classificação

Classificação e Pesquisa Aula 6 Métodos de Ordenação: ShellSort e QuickSort. Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional

Introdução a Algoritmos Parte 09

Algoritmos e Estruturas de Dados I1 Prof. Eduardo 1

Métodos de Classificação

ALGORITMOS AVANÇADOS. UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão

Fabio G. Cozman, Thiago Martins 2017

Projeto e Análise de Algoritmos Análise de Complexidade. Prof. Luiz Chaimowicz

Métodos de ordenação. Bubble sort:

BCC202 - Estrutura de Dados I

MAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017

Transcrição:

Engenharias de Produção e Petróleo Programação II Aula 07 Adan Lucio P. Rodovia BR 101 Norte, Km. 60, Bairro Litorâneo, CEP 29932-540, São Mateus ES, Tel.: +55 (27) 3312-1511 - CEUNES

Métodos de Ordenação MÉTODO POR EXTRACÇÃO Este método consiste em percorrer o vector, da primeira à última posição, à procura do menor elemento e colocá-lo na primeira posição; em seguida começa na segunda posição e percorre o resto do vector à procura do próximo menor elemento e colocao na segunda posição, e assim sucessivamente até à última posição.

MÉTODO POR EXTRACÇÃO

MÉTODO DE ORDENAÇÃO POR INSERÇÃO Este método percorre todos os elementos do vector e, sempre que encontrar um elemento menor do que algum dos anteriores, coloca-o na posição correta.

MÉTODO DE ORDENAÇÃO POR INSERÇÃO

MÉTODO DE ORDENAÇÃO DA BOLHA Este método faz a comparação, da esquerda para a direita do vector, de cada elemento com o seu elemento anterior até que não seja necessário trocar mais vezes, ficando assim ordenado.também se pode percorrer o vector da direita para a esquerda..

MÉTODO DE ORDENAÇÃO DA BOLHA

MergeSort entrada 7 5 2 4 1 6 3 0 saída 0 1 2 3 4 5 6 7 7 5 2 4 1 6 3 0 Dividir 7 5 2 4 1 6 3 0 2 4 5 7 0 1 3 6 Combinar 5 7 2 4 1 6 0 3 7 5 2 4 1 6 3 0 7 5 2 4 1 6 3 0 11

Complexidade Métodos Empíricos - O tempo de execução é obtido através da execução propriamente dita do algoritmo, considerando-se entradas diversas. (Depende fortemente de tecnologia.) Métodos Analíticos O tempo de execução é expresso através de expressões matemáticas que traduzem o comportamento do algoritmo em termos do tamanho da entrada. Entre entradas de mesmo tamanho que usam tempos de execução diferentes, considera-se sempre o pior caso.

Complexidade

Exemplo de Análise de Complexidade Algoritmo Somatório(A: array de inteiros, tam=n) Início soma = 0; i = n; Tempo constante repetir os comandos soma = soma + A[i]; i = i - 1; até que i = 0; output (soma) Fim Tempo constante Trecho realizado algumas vezes. Quantas? n Tempo execução = Cte. + (t som +t atr +t sub +t comp ) * n Cte.2

Algoritmo Inversão de seqüência Entrada: Elementos armazenados no vetor S[i], i=1..n. Saída: Sequência invertida dos elementos de S[i]. Início Para i = 1.. n/2 faça temp = S[i] i 1 2 3 4 S[i] = S[n i+1] n i+1 n n-1 n-2 n-3 S[n i+1] = temp Fim Outro Exemplo de Análise Laço é executado n/2 vezes. A cada iteração é feita uma troca. Ao final a seqüência está invertida. Tempo de execução: (t operações ) * n/2.

Observando os Tempos de Execução Gostaríamos de substituir as funções encontradas por uma função mais simples, que tenha o mesmo crescimento assintótico. C1 + C2 * n n C3 * n / 2 n Se a função tem termos de ordem diferente, gostaríamos de capturar o termo de mais alta ordem: 6 n 3 + 4n + 9 n 3

Notação Em complexidade computacional usamos uma notação que em funções do tipo C1 + C2 * n ou C3 * n/2 ignora as constantes - Aditivas (como C1) - Multiplicativas (como C2, C3 e 1/2) Ex: Se número de passos = 3n dizemos que o tempo de execução é O(n).

Notação Em complexidade computacional usamos uma notação que em funções do tipo C1 + C2 * n ou C3 * n/2 ignora as constantes - Aditivas (como C1) - Multiplicativas (como C2, C3 e 1/2) Ex: Se número de passos = 3n dizemos que o tempo de execução é O(n).

Notação Esta notação também despreza termos de ordem menor. Ex: Se número de passos = n 2 + n dizemos que o tempo de execução é O(n 2 ). O objetivo é ressaltar o termo que domina a curva da função.

A Notação Simétrica Ω Definição (notação ): Sejam f e h funções positivas de variável inteira n. Diz-se que f é (h), escrevendo-se f = (h), quando existirem - Uma constante c > 0 e - Um valor inteiro n 0, tais que: n > n 0 f(n) c. h(n) Uso da notação Ω: Limite inferior para o tempo de execução. O problema X requer pelo menos tempo h.

A Notação Ω Ex: f = n 2 1 f = (n 2 ) f = (n) f = (1) Mas não vale: f = (n 3 )

A Notação Θ Se f = O(h) e f = Ω(h), dizemos que f = Θ(h), ou seja, f é da ORDEM EXATA de h. e Algoritmo A executa em tempo no máximo h. O problema X requer pelo menos tempo h. Logo, o tempo de execução é ótimo.

Pior Caso Muitas vezes o tempo de execução de um algoritmo não depende apenas do tamanho da entrada, mas depende também do conteúdo da entrada. Se um algoritmo toma tempos diferentes para entradas do mesmo tamanho, em geral consideramos sempre o pior caso, ou seja, o tempo que o algoritmo gasta na pior entrada de tamanho n.