Complexidade de Algoritmos. Edson Prestes



Documentos relacionados
Complexidade de Algoritmos. Edson Prestes

Complexidade de Algoritmos. Edson Prestes

Teoria dos Grafos. Edson Prestes

Softwares Aplicativos Banco de Dados

Análise e Complexidade de Algoritmos

Dificuldades de Modelos de PNL. Onde está a solução ótima? Outro exemplo: Condição ótima Local vs. Global Quinta-feira, 25 de abril

Projeto e Análise de Algoritmos Projeto de Algoritmos Introdução. Prof. Humberto Brandão humberto@dcc.ufmg.br

Teoria dos Grafos. Edson Prestes

Complexidade de Algoritmos. Edson Prestes

BCC204 - Teoria dos Grafos

2 Problema das p-medianas

1. Método Simplex. Faculdade de Engenharia Eng. Celso Daniel Engenharia de Produção. Pesquisa Operacional II Profa. Dra. Lílian Kátia de Oliveira

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

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.

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

Uma Heurística para o Problema de Redução de Padrões de Corte

Resolução de sistemas lineares

Dadas a base e a altura de um triangulo, determinar sua área.

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

Inteligência de Enxame: ACO

A Otimização Colônia de Formigas

Computação Paralela. Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho.

Inteligência Computacional Aplicada a Engenharia de Software

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

Figura 1 Busca Linear

5COP096 TeoriadaComputação

Projeto e Análise de Algoritmos. Profa. Juliana Kaizer Vizzotto. Projeto e Análise de Algoritmos - Aula 1

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS Os Programas de Avaliação

Representação de Dados

Programação Dinâmica. Programa do PA. Técnicas Avançadas de Projeto. Aulas Anteriores. Introdução. Plano de Aula. Técnicas de Projeto de Algoritmos

Programação de Computadores I Fluxogramas PROFESSORA CINTIA CAETANO

ESTRUTURAS DE DADOS II

APLICAÇÃO DE MÉTODOS HEURÍSTICOS EM PROBLEMA DE ROTEIRIZAÇÃO DE VEICULOS

Sistemas Operacionais e Introdução à Programação. Vetores e matrizes

Quinta-feira, 14 de março. Introdução aos Fluxos de Rede Handouts: Notas de Aula

6. Geometria, Primitivas e Transformações 3D

Introdução Paradigmas

Projeto e Análise de Algoritmos

Respostas dos Exercícios Cap. 2 Russell & Norvig

Estrutura de Dados Básica

Algoritmos Genéticos

OTIMIZAÇÃO VETORIAL. Formulação do Problema

ALGORITMOS E FLUXOGRAMAS

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

Métodos de Pesquisa em Memória Primária

Análise e Projeto de Algoritmos

Sistemas Distribuídos: Princípios e Algoritmos Introdução à Análise de Complexidade de Algoritmos

Teoria dos Grafos. Edson Prestes

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

Técnicas de Computação Paralela Capítulo III Design de Algoritmos Paralelos

computador-cálculo numérico perfeita. As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem:

Figura 1: Exemplo de arredondamento com arestas retas.

BCC202 - Estrutura de Dados I

Estruturas de Dados Pilhas, Filas e Deques

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

Orientação a Objetos

BUSCA LOCAL ITERADA (ILS ITERATED LOCAL SEARCH)

Resolução do Problema de Roteamento de Veículos com Frota Heterogênea via GRASP e Busca Tabu.

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.

Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro. Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br

Método de Eliminação de Gauss. Eduardo Camponogara

Tópicos Especiais em Redes: Introdução a Teoria dos Jogos com Aplicações a Redes de Computadores

As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem:

Introdução a Algoritmos Parte 04

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

UFSM Prof. Ghendy Cardoso Junior

Arquitetura de Rede de Computadores

Técnicas para Programação Inteira e Aplicações em Problemas de Roteamento de Veículos 14

Filtragem. pixel. perfil de linha. Coluna de pixels. Imagem. Linha. Primeiro pixel na linha

Vetores Lidando com grandezas vetoriais

Aprendizagem de Máquina

Pesquisa Operacional Programação em Redes

Árvores Binárias e Busca. Jeane Melo

Problemas onde a busca da solução depende da avaliação de diversas combinações (ORDEM) dos elementos considerados

Morfologia Matemática Binária

Ciclos hamiltonianos e o problema do caixeiro viajante

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS

Deadlocks. Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

3 Método de Monte Carlo

DICAS PARA CÁLCULOS MAIS RÁPIDOS ARTIGO 07

MLP (Multi Layer Perceptron)

Pedro Ribeiro 2014/2015

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

Prof. Rafael Gross.

3 Sistemas de Numeração:

CTC-17 Inteligência Artificial Problemas de Busca. Prof. Paulo André Castro

REVISÃO E AVALIAÇÃO DA MATEMÁTICA

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO PROGRAMA DE EDUCAÇÃO TUTORIAL - MATEMÁTICA PROJETO FUNDAMENTOS DE MATEMÁTICA ELEMENTAR

Teste de Software. Ricardo Argenton Ramos Engenharia de Software I

O Problema do Troco Principio da Casa dos Pombos. > Princípios de Contagem e Enumeração Computacional 0/48

Algoritmos em Javascript

Faculdade de Computação

2. Representação Numérica

Algoritmos Genéticos (GA s)

Acumuladores. Paradigma de Programação Funcional. Marco A L Barbosa

Transcrição:

Edson Prestes

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:

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

O algoritmo recebe como entrada Um grafo orientado valorado G com fonte v 0 e uma matriz de custos fornece como saída Um vetor dist (com os custos dos melhores caminhos a partir de v 0 ). Consideremos um grafo orientado G com conjunto V = { v 0, v 1,, v n } de vértices. As operações fundamentais do algoritmo são as manipulações com conjuntos (de vértices) e matrizes; e para o tamanho da entrada o número n de vértices não fonte.

O desempenho do Algoritmo tem contribuições dadas por suas componentes: inicialização, iteração e finalização. Inicialização A inicialização fornece valores iniciais às variáveis. Portanto, temos Logo,

A iteração executa n vezes a seleção, remoção e inclusão de um elemento na resposta parcial se viável. } As variáveis p e dist variam da seguinte maneira Iteração

No ínicio da i-ésima iteração, p i = n - i + 1 O desempenho da iteração é dado pela soma das contribuições das linhas de 4 a 5 e das linhas de 6 a 9. As cotas superiores para as linhas 4 e 5 são Iteração Logo,

As cotas superiores para o desempenho das linhas 7 e 8 são Logo, temos Iteração O desempenho do corpo da iteração na i-ésima iteração é

A iteração repete n vezes o corpo da iteração, logo o seu desempenho é

O desempenho do algoritmo é dado predominantemente pelo desempenho da inicialização e da iteração. Assim, temos A complexidade pessimista do algoritmo é

A complexidade pessimista de um algoritmo guloso é A complexidade pessimista da iteração é dada por

Programação Dinâmica A programação dinâmica costuma ser aplicada a problemas de otimização resultando, em geral, em algoritmos mais eficientes que os mais diretos. Esse método é útil quando não é fácil chegar a uma seqüência ótima de decisões sem testar todas as seqüências possíveis para então escolher a melhor. A cada passo são eliminadas subsoluções que certamente não farão parte da solução ótima do problema. Ele reduz drasticamente o número total de seqüências viáveis através de um mecanismo que evita aquelas seqüências que sabidamente não podem resultar em seqüências ótimas.

Em alguns casos, o algoritmo direto tem complexidade exponencial, enquanto que o algoritmo desenvolvido por programação dinâmica é polinomial. Outras vezes, a complexidade continua exponencial, mas de ordem mais baixa. A programação dinâmica pode ser aplicada em diversos problemas : - multiplicação de várias matrizes; - caminhos de custo mínimo em grafos orientados; - projeto de sistemas confiáveis; - casamento de strings; - problema do caixeiro viajante; - problema de linha de montagem; - extração de eixo de rodovias em processamento de imagens aéreas, entre outros

Problema de Multiplicação de Matrizes Consiste em determinar a seqüência ótima de multiplicações de n matrizes Sabemos que Este cálculo exige p.q.r multiplicações. Considere o seguinte exemplo

1a. Maneira A quantidade de operações é dada por = 218000 operações 2a. Maneira A quantidade de operações é dada por = 18150 operações

Para este caso, o algoritmo direto tem complexidade exponencial no número de matrizes Usando a programação dinâmica encontramos um algoritmo de complexidade polinomial. Multiplicação de Matrizes Série de Fibonacci

Multiplicação de Matrizes

Como minimizar ou reduzir a redundância de trabalho? Devemos resolver os problemas menores e utilizá-los para resolver os maiores

Dado o problema Considere o subproblema (ou subseqüência) Com 1 i <j n e custo mínimo dado por i m j.. Considere i m i =0, para i=1,, n

A matriz 2 M 3 é uma matriz 3 x 40, ou seja, b 1 x b 3 Portanto, uma matriz i M j é uma matriz b i-1 x b j

O cálculo de i M j com custo mínimo i m j pode ser decomposto em dois subproblemas. Considere i k<j, logo Onde i M k tem custo mínimo i m k e dimensões b i-1 x b k (k+1) M j tem custo mínimo (k+1) m j e dimensões b k x b j O custo associado ao cálculo de i M k x (k+1) M j, é dado por ( i m k + (k+1) m j ) + ( b i-1 x b k x b j ). O custo mínimo é dado por

Considere o produto das seguintes matrizes Inicialmente temos, i m i =0, para i=1,2 e 3. O produto de 2 matrizes pode ser feito das seguintes maneiras 1 m 2 =2 x 30 x 20 =1200 2 m 3 =30 x 20 x 5=3000

O produto de 3 matrizes pode ser feito das seguintes maneiras Vimos que o custo mínimo é dado por Temos 2 valores possíveis para k, k=1 e k=2. Para k=1 temos 1 m 3 = 1 m 1 + 2 m 3 + 2 x 30 x 5 =300+3000 = 3300 Para k=2 temos 1 m 3 = 1 m 2 + 3 m 3 +2 x 20 x 5 =1200+200 =1400

Este processo assemelha-se ao preenchimento de uma matriz =3300 =1400