Complexidade de Algoritmos. Edson Prestes



Documentos relacionados
Complexidade de Algoritmos. Edson Prestes

Teoria dos Grafos. Edson Prestes

Algoritmos e Estrutura de Dados III. Árvores

Grafos Msc. Daniele Carvalho Oliveira. Doutoranda em Computação UFU Mestre em Computação - UFU Bacharel em Computação - UFJF 1

Árvores Binárias e Busca. Jeane Melo

Árvores. Algoritmos e Estruturas de Dados 2005/2006

BCC204 - Teoria dos Grafos

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

Teoria dos Grafos. Edson Prestes

Teoria dos Grafos. Edson Prestes

Árvores Binárias de Busca

FATEC Zona Leste. Teoria dos Gráfos. Métodos Quantitativos de Gestão MQG

Algoritmos e Estruturas de Dados II. Trabalho Prático 2

Resolução de problemas por meio de busca. Capítulo 3 Russell & Norvig Seções 3.1, 3.2 e 3.3

Pesquisa Operacional Programação em Redes

Respostas dos Exercícios Cap. 2 Russell & Norvig

Busca. Pesquisa sequencial

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos

Árvores Binárias de Busca

Inteligência Artificial. Metodologias de Busca

Árvores de Suporte de Custo Mínimo

Pesquisa em Memória Primária. Prof. Jonas Potros

A Otimização Colônia de Formigas

Inteligência de Enxame: ACO

GEADA. Gerador de Expressões Algébricas em Digrafos Acíclicos. para versão 1.0, de agosto/2008. Autor: Márcio Katsumi Oikawa

[a11 a12 a1n 4. SISTEMAS LINEARES 4.1. CONCEITO. Um sistema de equações lineares é um conjunto de equações do tipo

4 Implementação e Resultados Experimentais

Estruturas de Dados Pilhas, Filas e Deques

Projeto e Análise de Algoritmos

Universidade de São Paulo São Carlos, SP Instituto de Ciências Matemáticas e de Computação. SSC0206 1/2010 Introdução à Compilação

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

CAPÍTULO 2. Grafos e Redes

Inteligência Computacional Aplicada a Engenharia de Software

IA Colônia de Formigas. Prof. Ricardo Britto DIE-UFPI

PESQUISA OPERACIONAL TEORIA DOS GRAFOS

Online Survivable Network Design

Pedro Vasconcelos DCC/FCUP. Programação Funcional 15 a Aula Árvores de pesquisa

Solução de problemas por meio de busca (com Python) Luis Martí DEE/PUC-Rio

BC-0506: Comunicação e Redes Algoritmos em Grafos

Arquitetura de Rede de Computadores

Teoria dos Grafos Aula 5

Tabela de roteamento

Linguagem C: Árvores Binarias

Prof. Yandre Maldonado - 1 PONTEIROS. Prof. Yandre Maldonado e Gomes da Costa

GRAFOS Aula 08 Árvore Geradora Mínima: Algoritmos de Kruskal e Prim-Jarnik Max Pereira

Dicas Logycware Como utilizar o módulo de Estoques. Copyright Logycware Sistemas de Informática 2008 Todos os Direitos Reservados

Grafos: árvores geradoras mínimas. Graça Nunes

O método de Monte Carlo: algumas aplicações na Escola Básica

Estruturas de Dados I

IPv6. Problema do espaço de endereços do IPv4 Outros problemas abordados

Roteamento em Redes de Computadores

Fila de Prioridade. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC Estruturas de Dados

Faculdade de Engenharia Optimização. Prof. Doutor Engº Jorge Nhambiu

Trabalho Computacional

Figura 1 Busca Linear

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

PROBLEMA DE ROTEAMENTO DE VEÍCULOS COM JANELA DE TEMPO

Tabelas Hash. Jeane Melo

HelpAndManual_unregistered_evaluation_copy Manual de Instalação do VisualControl

ESTRUTURAS DE DADOS II

Manual AGENDA DE BACKUP

Organizaçãoe Recuperaçãode Informação GSI521. Prof. Dr. Rodrigo Sanches Miani FACOM/UFU

Complemento da Versão 2.3 Categorização Pagina 1 Fone: (17) Agenda Hoken Versão 2.

Memória Cache. Prof. Leonardo Barreto Campos 1

Teoria dos Grafos. Aulas 3 e 4. Profa. Alessandra Martins Coelho

MANUAL DO ADMINISTRADOR LOCAL. Entidade Municipal

Análise e Complexidade de Algoritmos

Aula 03 Limite assintótico para a ordenação, Ordenação em tempo linear

Estruturas de Dados Aula 15: Árvores 17/05/2011

Processamento e Otimização de Consultas

4 O Workflow e a Máquina de Regras

ELETROTÉCNICA ELM ROTEIRO DA AULA PRÁTICA 01 A LEI DE OHM e AS LEIS DE KIRCHHOFF

Aula 04 Ordenação parcial

Pointer Jumping. odg(v) e idg(v): graus de saída e entrada do vértice v V. um vértice r tal que. O vértice r é dita raíz de T

9 Comandos condicionais

A nova funcionalidade tem a finalidade de gerenciar o Plano de Cuidados de cada

DAP. 1. Pré-Faturamento automático Filtros Configurações Finalizar...27

Manual AGENDA DE BACKUP

OTIMIZAÇÃO DE FLUXO EM GRAFOS

Árvores Árvores Geradoras de Custo Mínimo 0/16

Prof. Daniela Barreiro Claro

Manual SAGe Versão 1.2 (a partir da versão )

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

Árvore Binária de Busca

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2.

Lista de Exercícios. Vetores

Aprendizagem de Máquina

Engenharia de Software

Sistemas Distribuídos: Conceitos e Projeto Eleição de Coordenador

Sistemas Operacionais

Importação de Itens através de Planilha de Dados

7 - Análise de redes Pesquisa Operacional CAPÍTULO 7 ANÁLISE DE REDES. 4 c. Figura Exemplo de um grafo linear.

MEDICINA VETERINÁRIA. Disciplina: Genética Animal. Prof a.: D rd. Mariana de F. Gardingo Diniz

ESTRUTURAS DE DADOS AVANÇADAS (INF 1010) (a) Seja um TAD definido por uma lista circular implementada em um vetor.

Aula 03 Custos de um algoritmo e funções de complexidade

Transcrição:

Edson Prestes

Idéias básicas Um algoritmo guloso seleciona, a cada passo, o melhor elemento pertencente a entrada. Verifica se ele é viável - vindo a fazer parte da solução ou não. Após uma seqüência de decisões, a solução do problema é alcançada. Na seqüência de decisões, nenhum elemento é examinado mais de uma vez: ou ele fará parte da saída, ou será descartado. No caso da intercalação, verifica sempre o par de listas de menor custo!

Estrutura geral do método guloso

A estratégia gulosa possui a seguinte estrutura geral Inicialização ; Iteração ; Finalização. A Inicialização prepara a entrada (muitas vezes a entrada é classificada) e inicializa a saída. A Iteração seleciona um elemento conforme uma função gulosa, marca-o para não considerá-lo novamente no futuro, atualiza a entrada, examina o elemento selecionado quanto sua viabilidade e decide a sua participação ou não na solução. A finalização recupera a saída.

A estrutura algorítmica do método guloso é dada pelo seguinte programa abstrato.

Intercalação ótima de listas x Algoritmo Guloso

A árvore geradora (ou de espalhamento) mínima Uma árvore geradora (ou de espalhamento) de um grafo G é um subgrafo acíclico que contém todos os vértices do grafo. Usando as idéias básicas do método guloso 1. Inicialmente, as arestas são ordenadas em ordem crescente de seus custos; e cada vértice é considerado uma árvore distinta. Isto gera uma floresta de árvores. 2. A cada passo, seleciona-se uma aresta de custo mínimo (ainda não examinada). 3. Se a inclusão desta aresta na configuração de árvores corrente criar um ciclo, ela é descartada; caso contrário, ela é incluída nesta configuração de tal forma que ligue duas árvores da floresta.

Considere um grafo não orientado G = < V, E > com - V = { a, b, c, d, e, f }; - E={( a, b ),( a, e ), ( a, f ), ( b, c ), ( b, d ), ( b, f ), ( c, d ), ( d, e ), ( d, f ), ( e, f )};

A construção da árvore espalhada mínima para G é como segue Custo(b,c)=5 Custo(b,d)=6 Custo(a,e)=9 Custo(c,d)=10 Custo(b,f)=11 Custo(d,f)=14 Custo(a,b)=16 Custo(d,e)=18 Custo(a,f)=21 Custo(e,f)=33 C=({a},{b},{c},{d},{e},{f}) C=({a},{b,c},{d},{e},{f}) C=({a},{b,c,d},{e},{f}) C=({a,e},{b,c,d},{f})

Custo(b,c)=5 Custo(b,d)=6 Custo(a,e)=9 Custo(c,d)=10 Custo(b,f)=11 Custo(d,f)=14 Custo(a,b)=16 Custo(d,e)=18 Custo(a,f)=21 Custo(e,f)=33 C=({a,e},{b,c,d},{e},{f}) C=({a,e},{b,c,d,f}) C=({a,e},{b,c,d,f}) C=({a,b,c,d,e,f})

Inicialização Iteração Finalização

Caminhos de custo mínimo em grafo orientado Este problema consiste em determinar um caminho de custo mínimo a partir de um vértice fonte a cada vértice do grafo. Considere um grafo orientado G = < V, E > com 5 vértices: V = {a, b, c, d, e} e 6 arestas com a seguinte matriz de custos:

O algoritmo constrói incrementalmente um conjunto I de vértices intermediários e o usa para calcular os caminhos de custo mínimo a partir do vértice fonte. A cada passo, seleciona-se um novo vértice intermediário cuja distância em relação ao vértice fonte seja mínima. Este novo vértice é utilizado para atualizar o custo associado aos demais vértices em relação ao vértice fonte. Quando I contiver todos os vértices do grafo então teremos calculados todos os caminhos com custo mínimo a partir do vértice fonte.

Considere que o vértice fonte é o vértice a Inicialmente, o conjunto I de vértices intermediários é vazio e o vetor de distâncias é inicializado com a primeira linha da matriz de custos. A cada passo, seleciona-se um vértice que tenha a menor distância em relação a fonte. Em seguida, atualiza-se a distância deste vértice em relação aos demais.

Algoritmo: Custo mínimo de caminhos a partir de fonte em grafo orientado Inicialização [v 0,v i ] Iteração Finalização

Complexidade de intercalação ótima de listas O algoritmo efetua operações sobre o multiconjunto L, portanto a complexidade do algoritmo pode variar conforme a estrutura de dados escolhida para representar L. O multiconjunto L é uma lista encadeada, em que cada elemento guarda tanto uma lista quanto seu tamanho. Assumiremos que para determinar as duas menores listas, a L é percorrida, com complexidade O(n); para remoção a complexidade é O(n); para a inclusão a complexidade é constante.

Complexidade: Intercalação Ótima de Listas Inicialização Iteração Finalização

O Algoritmo recebe como entrada n listas (com seus comprimentos) fornece como saída o par (intercalação das n listas em L, número mínimo de comparações). A operação fundamental é a comparação entre elementos das listas e o tamanho da entrada é o par formado pelo tamanho n do multiconjunto L e pelo comprimento m da maior lista em L.

O desempenho do algoritmo tem contribuições dadas por suas componentes: Inicialização, Iteração e Finalização. Inicialização Como a inicialização e a finalização não envolvem comparações. Logo, desemp[ Inicialização] = 0 desemp[ Finalizacão] = 0. Finalização

A cada iteração As duas menores listas em L são substituídas por sua intercalação O tamanho de L diminui de 1. Iteração A iteração é executada para L variando de n a 1

No ínicio da i-ésima iteração, L i = n - i +1. Portanto temos Sendo m' i e m" i os tamanhos das duas listas selecionadas na i-ésima iteração, temos

O desempenho da iteração é

Tomando m como o máximo dos comprimentos das n listas em L, temos Pq?

O desempenho de Interc_Suc_Lst é