Teoria dos Grafos Aula 7

Documentos relacionados
Análise de algoritmos. Parte I

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

ANÁLISE DE ALGORITMOS: PARTE 3

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

Medida do Tempo de Execução de um Programa

Análise de Algoritmos

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

INF 1010 Estruturas de Dados Avançadas

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos

BCC202 - Estrutura de Dados I

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

André Vignatti DINF- UFPR

Aula 1. Teoria da Computação III

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

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

Complexidade de Algoritmos

Melhores momentos AULA 1. Algoritmos p.38/86

Complexidade de algoritmos Notação Big-O

Análise de Algoritmos Estrutura de Dados II

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

Análise de Algoritmos

2. Complexidade de Algoritmos

Análise de Algoritmos

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

7. Introdução à Complexidade de Algoritmos

Elementos de Análise Assintótica

Quantidade de memória necessária

Análise de Complexidade de Algoritmos. mario alexandre gazziro

ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS

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

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

INF 1010 Estruturas de Dados Avançadas

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

MCTA028 Programação Estruturada Aula 19 Custos de um algoritmo e funções de complexidade

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

Análise de complexidade

Análise e Projeto de Algoritmos

7. Introdução à Complexidade de Algoritmos

Análise de algoritmos Parte I

COMPLEXIDADE DE ALGORITMOS

BCC202 - Estrutura de Dados I

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

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

5. Análise de Complexidade de Algoritmos. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006)

Projeto e Análise de Algoritmos

COMPLEXIDADE DE ALGORITMOS COMPLEXIDADE DE ALGORITMOS

BCC202 - Estrutura de Dados I

4º 20/10/2003. ÍNDICE

Algoritmos e Estruturas de Dados I Aula 06 Custos de um algoritmo

ANÁLISE DE ALGORITMOS

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

Comportamento assintótico

Algoritmo de Dijkstra Estudo e Implementação

Complexidade Assintótica

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

ANÁLISE DE ALGORITMOS: PARTE 4

Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia

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

Técnicas de Projeto de Algoritmos

André Vignatti DINF- UFPR

Complexidade Assintótica de Programas Letícia Rodrigues Bueno

Lista de exercícios sobre contagem de operações Prof. João B. Oliveira

Algoritmos Avançados Análise de Complexidade

Análise de Complexidade de Algoritmos

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

1 a Lista Professor: Claudio Fabiano Motta Toledo Estagiário PAE: Jesimar da Silva Arantes

Otimização em Grafos

1 a Lista de Exercícios

Análise e Projeto de Algoritmos

Análise de Algoritmos e Estruturas de Dados

Lista de Exercícios 6: Soluções Funções

Programação II. Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio

Módulo 7. Complexidade de Algoritmos. Algoritmos e Estruturas de Dados II C++ Rone Ilídio

Teoria dos Grafos Aula 8

Análise de Algoritmos e Estruturas de Dados

Projeto e Análise de Algoritmos

LIMITES E CONTINIDADE

MATEMÁTICA I LIMITE. Profa. Dra. Amanda L. P. M. Perticarrari

Lista 1. 8 de abril de Algorithms: Capítulo 0, exercícios 1 e 2. Tardos: Todos exercícios do cap 2 do livro texto, exceto 7 e 8 letra b.

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

Transcrição:

Teoria dos Grafos Aula 7 Aula passada Implementação BFS DFS, implementação Complexidade Aplicações Aula de hoje Classe de funções e notação Propriedades da notação Funções usuais Tempo de execução

Comparando Quantidades Como comparar quantidades? sem considerar detalhes, comparação aproximada Ordem de grandeza Ordem de grandeza é a parte interia de log 10 x, onde x é a quantidade Muito usada na academia (físicos, etc)

Ordem de Grandeza Número de pessoas no planeta? ~ 10 10 Número de páginas web? PIB dos EUA? Peso de uma célula humana? Massa de Saturno é duas ordens de grandeza maior do que a Terra ~ 10 11 ~ 10 13 dólares ~ 10-12 Kg Escala poderosa (potência de 10) Fácil comparação entre quantidades (grandes e pequenas)

Comparando Crescimento Como comparar crescimento? sem considerar detalhes, comparação aproximada Classe de funções Notação Muito usada na Computação (e algumas outras áreas)

Comparando Crescimento Idéia: capturar o quão rápido (ou devagar) uma quantidade cresce Tipos de crescimento? Linear, quadrático, logarítmico, exponencial, polinomial, etc. Como formalizar este conceito?

Comparando Crescimento Seja f(x) = x 2 - x, g(x) = 10x + 10, x > 0 Qual cresce mais rápido? Comparação para valores grandes de x Seja f(x) = x 2 - x, g(x) = 10x² + 10, x > 0 Qual cresce mais rápido? Comparação de primeira ordem, crescimento igual

Notação O Seja f(n) uma função positiva, n > 0 Dizemos que f(n) é O de g(n) se f(n) é limitada superiormente por uma constante vezes g(n) para todo n grande suficiente Ou seja, se existe constante c > 0, n 0 > 0, tal que para todo n > n 0, f(n) <= c g(n) Dizemos neste caso que f(n) é O(g(n)) ou f(n) = O(g(n)) ou f(n) pertence a O(g(n)) Importante: c não pode depender de n

Notação O O(g(n)) define uma classe de funções Qual classe? Todas as funções menores ou iguais a g(n) Todas as funções f(n) tal que exista c >0 e n 0 > 0, tal que para todo n > n 0 f(n) <= c g(n) Limitante superior assintótico para f(n)

Exemplos Seja f(n) = 7n² + 10n + 2, para n > 0 f(n) é O(n²)? f(n) = 7n² + 10n + 2 < 7n² + 10n² + 2n² = 19n² Com c = 19, n 0 = 1, temos que f(n) <= c n² para todo n > n 0 f(n) é O(n³)? f(n) é O(n)?

Notação Complementar a notação O limitante inferior assintótico Seja f(n) uma função positiva, n > 0 Dizemos que f(n) é omega de g(n) se f(n) é ao menos uma constante vezes g(n) para todo n grande suficiente Ou seja, se existe constante c > 0, n 0 > 0, tal que para todo n > n 0, f(n) >= c g(n) Importante: c não pode depender de n

Notação (g(n)) define uma classe de funções Qual classe? Todas as funções maiores ou iguais a g(n) Todas as funções f(n) tal que exista c >0 e n 0 > 0, tal que para todo n > n 0 f(n) >= c g(n) Limitante inferior assintótico para f(n)

Exemplos Seja f(n) = 7n² + 10n + 2, para n > 0 f(n) é (n²)? f(n) = 7n² + 10n + 2 > 7n² Com c = 7, n 0 = 1, temos que f(n) >= c n² para todo n > n 0 f(n) é (n³)? f(n) é (n)?

Notação Captura crescimento exato limitante superior e inferior, simultaneamente Seja f(n) uma função positiva, n > 0 Dizemos que f(n) é (g(n)) se f(n) é cresce igual a g(n) ao menos de uma constante multiplicativa para todo n grande suficiente Ou seja, se f(n) = O(g(n)) e f(n) = (g(n)), com duas constantes c 1 e c 2, e dois n 1 e n 2

Notação (g(n)) define uma classe de funções Qual classe? Todas as funções iguais a g(n) Todas as funções f(n), tal que f(n) = O(g(n)) e f(n) = (g(n)) Limitante assintótico apertado (tight bound) para f(n)

Exemplos Seja f(n) = 7n² + 10n + 2, para n > 0 f(n) é (n²)? Sim, pois f(n) = (n²) e f(n) = (n²) f(n) é (n³)? f(n) é (n)?

Limite e Notação Notação pode ser calculada como limite Seja f(n) e g(n) duas funções positivas Se lim n f n g n =c 0 Então f(n) = (g(n)) Definição de limite atende as definições de O e para as funções

Propriedades de Considere as funções positivas f(n), g(n), h(n) Transitividade Se f = O(g) e g = O(h), então f = O(h) Se f = (g) e g = (h), então f = (h) Se f = (g) e g = (h), então f = (h) Provar estas propriedades duas primeiras implicam a terceira

Propriedades de Considere as funções positivas f(n), g(n), h(n) Soma de funções Se f = O(h) e g = O(h), então f + g = O(h) Vale também para número fixo de parcelas de funções Se f = (g) então f + g = (g) Provar este resultado interessante

Polinômios Considere o polinômio f n =a d n d a d 1 n d 1... a 0 Crescimento assintótico dado pelo termo de mais alta ordem (que determina seu grau) Temos que f(n) = O(n d ) Temos ainda que f(n) = (n d ) Prova desta propriedade?

Logaritmo Lembrando log b n é o número x, tal que b x = n Logaritmo cresce muito devagar log (número de átomos no universo) ~ 60 Mais devagar do que qualquer polinômio Para todo b > 1 e qualquer x > 0, temos log b n = O(n x ) Não precisa informar a base em O(log n) mudança de base é multiplicação por constante

Exponencial Lembrando f(n) = r n com r > 1 Crescem muito rápido expoente é n (e não fixo, como polinômio) Mais rápido do que qualquer polinômio Para todo r > 1 e todo d > 0, temos n d = O(r n ) Diferente de logaritmo, cada exponencial (base) define sua família Seja r > s > 1 Então nunca é o caso de r n = (s n ) Prova?

Tempo de Execução n é o tamanho da entrada número de elementos na entrada Tempo de execução típico em função de n para diferentes funções de crescimento

Tempo de Execução Típico Logarítmico, O(log n) encontrar um valor em um vetor ordenado (busca binária) percorrer uma árvore balanceada Linear, O(n) calcular valor máximo em um vetor imprimir valores de uma lista BFS, DFS (onde n aqui é vértices + arestas) O(n log n) ordenar um vetor com merge-sort Dijkstra

Tempo de Execução Típico Quadrático, O(n²) Ordernação com quicksort (pior caso) Encontrar o par de pontos mais próximos Dijkstra (sem heap) Cúbico, O(n³) multiplicação de matrizes Exponencial, O(r n ) TSP, problema do caxeiro viajante muitos outros em grafos