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

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

Análise de Algoritmos

Medida do Tempo de Execução de um Programa

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

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

Preliminares. Profa. Sheila Morais de Almeida. agosto

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

Aula 1. Teoria da Computação III

Estruturas de Dados Algoritmos

Análise e Projeto de Algoritmos

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

Análise de algoritmos

Teoria dos Grafos. Fluxo Máximo em Redes

BCC202 - Estrutura de Dados I

ANÁLISE DE ALGORITMOS: PARTE 3

Análise de algoritmos. Parte I

Interpolação Polinomial. Ana Paula

Análise de algoritmos. Parte I

Teoria dos Grafos AULA 2

ANÁLISE DE ALGORITMOS

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

Projeto e Análise de Algoritmos

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

Análise de Algoritmos

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

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

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

Teoria dos Grafos Aula 7

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

Análise de algoritmos

Quantidade de memória necessária

Projeto e Análise de Algoritmos

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

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

Complexidade de Tempo e Espaço

PROGRAMAÇÃO E ALGORITMOS (LEII) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017

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

Complexidade de Algoritmos

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

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

COMPLEXIDADE DE ALGORITMOS

4º 20/10/2003. ÍNDICE

Técnicas de Projeto de Algoritmos

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

Otimização Combinatória - Parte 4

Melhores momentos AULA PASSADA. Complexidade Computacional p. 205

Otimização Linear. Profª : Adriana Departamento de Matemática. wwwp.fc.unesp.br/~adriana

Teoria dos Grafos. Árvores

Teoria dos Grafos AULA

Resolução de sistemas de equações lineares: Método de eliminação de Gauss - estratégias de pivotamento

Bacharelado em Ciência da Computação Matemática Discreta

Teoria dos Grafos. Coloração de Vértices

Complexidade de Algoritmos

Construção de Algoritmos II Aula 06

Análise de Algoritmos

2. Complexidade de Algoritmos

André Vignatti DINF- UFPR

Luís Fernando Schultz Xavier da Silveira. 12 de maio de 2010

Análise e Projeto de Algoritmos

COMPLEXIDADE DE ALGORITMOS COMPLEXIDADE DE ALGORITMOS

Análise e Projeto de Algoritmos P R O F : L O A N A T. N O G U E I R A

ESTRUTURA DE DADOS CIÊNCIA E TECNOLOGIA DO RIO. Curso de Tecnologia em Sistemas para Internet

Poliedros na forma padrão

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

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Aula 25

Teoria dos Grafos. Cobertura, Coloração de Arestas, Emparelhamento

EXPRESSÕES ARITMÉTICAS PARTE 1

Análise de Algoritmos

Programação Procedimental

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

INF 1010 Estruturas de Dados Avançadas

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

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

Análise de algoritmos Parte I

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

Introdução à Análise de Algoritmos

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

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

Melhores momentos AULA 1. Algoritmos p.38/86

Pontos extremos, vértices e soluções básicas viáveis

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013

5COP096 TeoriadaComputação

Nem todos os problemas algorítmicos que podem ser resolvidos em princípio podem ser resolvidos na prática: os recursos computacionais requeridos

MATRIZES - PARTE Mais exemplos Multiplicação de duas matrizes AULA 26

Melhores momentos AULA 24. Algoritmos p.906/953

AULA 24. Algoritmos p.856/905

AULA 17. Algoritmos p.662/695

Complexidade computacional

Resposta da pergunta 2: Θ(n 3 ). Resposta da pergunta 8: 1. 7 O(n). Sim. 22. n log n O(1). Não. 3. n + 7 O(n). Sim. 4. n + 7 O(1). Não.

PUC-Rio Departamento de Informática Prof. Marcus Vinicius S. Poggi de Aragão Período: Horário: 4as-feiras de 13 às 16 horas - Sala 520L

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

ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS

Introdução à Programação

Notas de Aula de Cálculo Numérico

PESQUISA OPERACIONAL

BCC202 - Estrutura de Dados I

Algoritmos de Ordenação: Tempo Linear

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

Teoria dos Grafos. Árvores Geradoras

Transcrição:

Teoria dos Grafos Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada antunes@ibilce.unesp.br, socorro@ibilce.unesp.br Grafos e Algoritmos Preparado a partir do texto: Rangel, Socorro. Teoria do Grafos, Notas de aula, IBILCE, Unesp, 2002-2013.

Algoritmos e contagem do número de Operações Problemas de otimização e problemas computacionais em geral são resolvidos por meio de algoritmos. De uma forma vaga, podemos dizer que um algoritmo é um conjunto de finito de instruções do tipo usado em linguagens de programação tais como: operações aritméticas, instruções condicionais, instruções de leitura e escrita. O tempo de execução de um algoritmo depende de vários fatores, entre eles: boa prática de programação, codificação das instruções de forma inteligente, estrutura de dados, equipamento onde esta sendo executado. Apesar da importância destes fatores, estamos interessados em avaliar a qualidade de um algoritmo independentemente da forma em que está codificado ou da máquina onde esta sendo executado. Teoria dos Grafos (Antunes&Rangel) 2

Uma maneira de avaliar o desempenho computacional de um algoritmo independentemente de uma implementação particular é calcular aproximadamente o número de operações (aritméticas, condicionais, etc) que o mesmo executa. Esta prática é em geral satisfatória, apesar de desconsiderar que operações com números inteiros de poucos dígitos são menos trabalhosas que operações envolvendo números reais de alta precisão, ou números inteiros de muitos dígitos. Um cálculo mais preciso considera também os dados do problema. Neste curso, iremos considerar apenas os dados relativos à dimensão do problema. Um tratamento mais detalhado sobre a avaliação do desempenho computacional de um algoritmo pode ser encontrado em [1], [2] e [3]. Teoria dos Grafos (Antunes&Rangel) 3

Exemplo 1 - Produto Escalar entre dois vetores (Algoritmo 1) Calcula o produto escalar p entre os vetores v,w R n. início p = v(1) w(1) Para i = 2 até n faça p = p+v(i) w(i) fim escreva p fim Teoria dos Grafos (Antunes&Rangel) 4

Exemplo 2 - Produto de duas matrizes (Algoritmo 2) Calcula o produto C de duas matrizes A R m n, B R n p. início para i = 1 até m faça para j = 1 até p faça c(i,j) = a(i,1) b(1,j) para k = 2 até n c(i,j) = c(i,j)+a(i,k) b(k,j) fim fim fim fim Teoria dos Grafos (Antunes&Rangel) 5

Contagem do número de operações Note que no Algoritmo 1 temos n multiplicações e n 1 adições totalizando 2n 1 operações. O algoritmo 2 calcula os elementos c(i,j) da matriz C fazendo o produto escalar entre a linha i da matriz A e a coluna j da matriz B. Isto é, são calculado m p produtos escalares que por sua vez requerem 2n 1 operações, totalizando m p(2n 1) operações. Para os algoritmos 1 e 2 foi possível fazer a contagem exata do número de operações que cada um executa. Porém, nem sempre a contagem do número de operações é trivial. Procura-se então fazer uma estimativa do crescimento do número de operações em função dos parâmetros que definem o problema. Assim, para o Algoritmo 1 é suficiente dizer que o número de operações executadas é uma função linear de n, enquanto que o número de operações do Algoritmo 2 é uma função cúbica de n,m e p. Teoria dos Grafos (Antunes&Rangel) 6

Contagem do número de operações Para maior precisão na estimativa do número de operações é utilizada a expressão ordem de magnitude, Definida 1. Definição 1: Sejam f e g : R n R + + dizemos que: a) f(n) é O(g(n)) (f é da ordem de g) se existirem constantes c, n o > 0 tal que f ( n) cg( n) para n no. (complexidade no pior caso) b) f(n) é Ω ( g( n)) (f é da ordem de g) se existirem constantes c, n o > 0 tal que f ( n) cg( n) para n no. (complexidade no melhor caso) c) f(n) é Θ ( g( n)) se f(n) é O(g(n)) e f(n) é Ω ( g( n)). (Complexidade exata)

Contagem do número de operações Exemplos: 1. f(p) = 3p 3 +2p 2 é da ordem de p 3, ou simplesmente f é O(p 3 ), pois para p 0 = 0 e c = 5, temos 3p 3 +2p 2 5p 3. 2. f(p) = (p+1) 2 é da ordem de O(p 2 ). Neste caso, para p 0 = 1 e c = 4, temos (p+1) 2 4p 2. 3. f(p) = 542 é O(1). 4. Observe que com esta definição as funções f(x) = 10 10 n 3 +n 2 e g(x) = n 3 +n 2 possuem complexidade O(n 3 ). Exercício: Verificar que: a) f(p) = 3p 3 +2p 2 +10 é Θ(n 3 ). b) f(n) = nlogn é O(n 2 ) e Ω(n). Teoria dos Grafos (Antunes&Rangel) 8

Como avaliar se a complexidade de um dado algoritmo é boa ou ruim? Suponha que possamos escolher entre dois algoritmos, A e B. O tempo de execução do algoritmo A é 10 n /100, isto é O(10 n ) (exponencial) e do algoritmo B é 10n 3, isto é O(n 3 ) (polinomial). Para valores bem pequenos de n, por exemplo n = 3, o algoritmo A é mais eficiente que o algoritmo B. Veja a tabela abaixo: n 10 n /100 10n 3 3 10 90 4 100 640 5 1000 1250 6 10000 2160 Teoria dos Grafos (Antunes&Rangel) 9

Mas o que acontece para valores maiores de n? Suponha que dispomos de uma máquina capaz de executar 10 7 operações aritmética por segundo, e que estamos dispostos a executar os dois algoritmos por 1000 segundos. Qual é a dimensão dos problemas que poderíamos resolver com cada um dos algoritmos dentro deste intervalo de tempo? Se a máquina executa 10 7 operações por segundo, o algoritmo A, executado nesta máquina pode realizar quantas operações em 1000 segundos? Teoria dos Grafos (Antunes&Rangel) 10

Uma simples regra de três: 1 s 10 7 1000 s 10 n /100 nos leva a seguinte equação: 10 n 100 = 107 1000 n = 12. Isto é, neste tempo o algoritmo A resolve problemas com n 12. Fazendo um raciocínio similar para o algoritmo B, temos que este resolve problemas com n 1000. Estes cálculos indicam que algoritmos polinomiais permitem a resolução de problemas maiores dentro de um mesmo intervalo de tempo. Teoria dos Grafos (Antunes&Rangel) 11

De uma maneira geral algoritmos com complexidade computacional polinomial são considerados rápidos e eficientes enquanto que os algoritmos com complexidade exponencial são vistos como lentos e ineficientes. Este ponto de vista se justifica em muitas, mas não todas, situações. A otimização linear é um exemplo onde algoritmos exponenciais (baseados no método simplex) e algoritmos polinomiais (métodos de ponto interior) competem em pé de igualdade. O estudo de complexidade de algoritmos será útil para determinamos o grau de dificuldade de resolução de problemas em Grafos. Em geral as medidas de complexidade são feitas em função da dimensão do problema. No caso de grafos em função do número de vértices, n, e do número de arestas, m. Teoria dos Grafos (Antunes&Rangel) 12