5COP096 TeoriadaComputação



Documentos relacionados
Sobre o Professor Dr. Sylvio Barbon Junior

Sumário. 5COP096 Teoria da Computação Aula 8 Pesquisa em Memória Primária

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

Programação Dinâmica: Algoritmo de Bellman-Ford

Complexidade de Algoritmos. Edson Prestes

5COP096 TeoriadaComputação

Disciplina de Projetos e Análise de Algoritmos. Aula 1 - Apresentação aos Algoritmos Computacionais

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

Web site. Objetivos gerais. Introdução. Profa. Patrícia Dockhorn Costa

5COP096 TeoriadaComputação

Análise e Complexidade de Algoritmos

Hashing. Estruturas de Dados. Motivação

Universidade Federal de Alfenas

Fluxo Máximo a Custo Mínimo

Universidade Federal do Vale do São Francisco. Estruturas de Dados. Professor: Marcelo Santos Linder

Árvores de Suporte de Custo Mínimo

Pesquisa Sequencial e Binária. Introdução à Programação SI2

Projeto e Análise de Algoritmos Projeto de Algoritmos Heurísticas e Algoritmos Aproximados

Respostas dos Exercícios Cap. 2 Russell & Norvig

Teoria da Computação. Aula 9 Pesquisa em Memória Secundária 5COP096. Aula 9 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Teoria dos Grafos. Edson Prestes

Online Survivable Network Design

PPD: Balanceamento de Carga e Scheduling 2

PROBLEMAS FÁCEIS E DIFÍCEIS. Prof. André Vignatti DINF - UFPR

Hashing. Rafael Nunes LABSCI-UFMG

BCC204 - Teoria dos Grafos

O Problema do Fluxo Máximo de Custo Mínimo e suas Aplicações no Transporte de Recursos em Sistemas Distribuídos

Pesquisa Sequencial e Binária

CI165 Introdução. André Vignatti. 31 de julho de 2014

ESTRUTURAS DE DADOS II

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

Lógica Computacional Descrição do Projeto

Estrutura de dados. Link do Google Drive: ED Apresentação Luiz Gonçalves Última revisão 8/12/14

BUSCA LOCAL ITERADA (ILS ITERATED LOCAL SEARCH)

Inteligência de Enxame: ACO

Complexidade de Algoritmos

(P AA) 2 PACOTE DE APOIO A APRENDIZAGEM DE PROJETO E ANÁLISE DE ALGORITMOS: IMPLEMENTAÇÃO EM JAVA

Problemas de Satisfação de Restrições

Universidade Federal de Mato Grosso do Sul Faculdade de Computação Disciplina de Verão: Algoritmos e Programação II

Métodos de Física Teórica II Prof. Henrique Boschi IF - UFRJ. 1º. semestre de 2010 Aula 2 Ref. Butkov, cap. 8, seção 8.2

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

Algoritmos de Ordenação: Cota Inferior

Análise e Projeto de Algoritmos

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

Complexidade de Algoritmos

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

Universidade Federal de Alfenas

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

Título: Sistemas Lineares no CAp UFRJ: Interpretações Algébrica e Gráfica

Ficha da Unidade Curricular (UC)

Árvores Binárias de Busca

The Stable Matching Problem

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

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

Análise de Algoritmos: Melhor caso, pior caso, caso médio

Complexidade de Algoritmos. Edson Prestes

Processamento e Otimização de Consultas

Aula 5 Distribuição amostral da média

BCC204 - Teoria dos Grafos

Relatório Trabalho Prático 2 : Colônia de Formigas para Otimização e Agrupamento

Algoritmos e Estrutura de Dados III. Árvores

Batalha Naval Algoritmos de Busca. Correlações curriculares Matemática: Números: maior que, menor que, iguais a.

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

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

3 Método de Monte Carlo

A Otimização Colônia de Formigas

Introdução. Introdução. Objetivos da Aula. Bases Computacionais da Ciência(BC-0005)

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

a 1 x a n x n = b,

Estruturas de Dados. Grafos VIII: Árvores Geradoras Mínimas. Prof. Ricardo J. G. B. Campello

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

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

6. Programação Inteira

PLANO DE ENSINO. DISCIPLINA: (06241) Algoritmos e Estruturas de Dados. PRÉ-REQUISITOS: Matemática Discreta e Introdução a Programação

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

Busca em Espaço de Estados

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

2 Problema das p-medianas

Programação para Computação

BCC202 - Estrutura de Dados I

Computadores de Programação (MAB353)

Estabilidade. Carlos Alexandre Mello. Carlos Alexandre Mello 1

Hashing Letícia Rodrigues Bueno

Algoritmos em Grafos: Caminho Mínimo

Estrutura de Dados Básica

PROBLEMA DO CARTEIRO CHINÊS

Análise Dimensional Notas de Aula

Classes de Complexidade e NP-Completude

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

BC-0005 Bases Computacionais da Ciência. Modelagem e simulação

Recursos. Um recurso é ou um dispositivo físico (dedicado) do hardware, ou Solicitar o recurso: esperar pelo recurso, até obtê-lo.

Variáveis Aleatórias Contínuas e Distribuição de Probabilidad

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Estruturas de Dados para Conjuntos Disjuntos: Union-find Letícia Rodrigues Bueno

Simulação Estocástica

CAP5: Amostragem e Distribuição Amostral

Programação e Scheduling

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

PESQUISA OPERACIONAL -PLANO DE ENSINO. Prof. Angelo Augusto Frozza, M.Sc.

B-tree. B-Trees. Estrutura do nodo da B-tree. Balanceamento. Disposição dos elementos ordenados na B-tree. Exemplo de uma B-tree de ordem 3

Transcrição:

Sylvio 1 Barbon Jr barbon@uel.br 5COP096 TeoriadaComputação Aula 14 Prof. Dr. Sylvio Barbon Junior

Sumário - Problemas Exponenciais - Algoritmos Exponenciais usando Tentativa e Erro - Heurísticas para Problemas NP-Completo - Algoritmos Aproximados para Problemas NP-Completo

É desejável resolver instâncias grandes de problemas de otimização em tempo razoável. Os melhores algoritmos para problemas NP-completo têm comportamento de pior caso exponencial no tamanho da entrada. Para um algoritmo que execute em tempo proporcional a 2 N, não é garantido obter resposta para todos os problemas de tamanho N 100. Independente da velocidade do computador, ninguém poderia esperar por um algoritmo que leva 2100 passos para terminar sua tarefa. Um supercomputador poderia resolver um problema de tamanho N = 50 em 1 hora, ou N = 51 em 2 horas, ou N = 59 em um ano. Mesmo um computador paralelo contendo um milhão de processadores, (sendo cada processador um milhão de vezes mais rápido que o melhor processador que possa existir) não seria suficiente para chegar a N = 100.

Como resolver problemas exponenciais? 1) Usar algoritmos exponenciais eficientes aplicando técnicas de tentativa e erro; 2) Usar algoritmos aproximados. Acham uma resposta que pode não ser a solução ótima, mas é garantido ser próxima dela; 3) Concentrar no caso médio. Buscar algoritmos melhores que outros neste quesito e que funcionem bem para as entradas de dados que ocorrem usualmente na prática. Existem poucos algoritmos exponenciais que são muito úteis na prática. Exemplo: Simplex (programação linear). Complexidade de tempo exponencial no pior caso, mas muito rápido na prática. Tais exemplos são raros. A grande maioria dos algoritmos exponenciais conhecidos não é muito útil.

Um Ciclo Hamiltoniano é um ciclo que permite passar por todos os vértices de um grafo G, não repetindo nenhum, ou, seja, passar por todos uma e uma só vez por cada. Um ciclo Euleriano é um ciclo em um grafo que visita cada aresta apenas uma vez. Um grafo é Eureliano se e somente se todos os vértices em G possuem grau par e se G é o grafo soma de ciclos disjuntos em arestas

Algoritmos Exponenciais usando Tentativa e Erro Ex.: encontrar um ciclo de Hamilton em um grafo. Obter algoritmo tentativa e erro a partir de algoritmo para caminhamento em um grafo. O algoritmo para caminhamento em um grafo faz uma busca em profundidade no grafo em tempo O( V + A ).

Algoritmos Exponenciais usando Tentativa e Erro Árvore de caminhamento é:

Algoritmos Exponenciais usando Tentativa e Erro Opção Tentativa e Erro com Poda: Árvore de caminhamento obtida: Diminuir número de chamadas a Visita fazendo poda na árvore de caminhamento. No exemplo, cada ciclo é obtido duas vezes, caminhando em ambas as direções. Insistindo que o nó 2 apareça antes do 0 e do 1, não precisamos chamar Visita para o nó 1 a não ser que o nó 2 já esteja no caminho. Entretanto, esta técnica não é sempre possível de ser aplicada. Neste caso, a técnica de eliminar simetrias não funciona porque não sabemos a priori se um caminho leva a um ciclo ou não.

Algoritmos Exponenciais usando Tentativa e Erro Opção Branch-and-Bound: - A ideia é cortar a pesquisa tão logo se saiba que não levará a uma solução. - Corta chamadas tão logo se chegue a um custo para qualquer caminho que seja maior que um caminho solução já obtido.

Heurísticas para Problemas NP-Completo Heurística: algoritmo que pode produzir um bom resultado (ou até a solução ótima), mas pode também não obter solução ou obter uma distante da ótima. Uma heurística pode ser determinista ou probabilística. Pode haver instâncias em que uma heurística (probabilística ou não) nunca vai encontrar uma solução. A principal diferença entre uma heurística probabilística e um algoritmo Monte Carlo é que o algoritmo Monte Carlo tem que encontrar uma solução correta com uma certa probabilidade (de preferência alta) para qualquer instância do problema.

Algoritmos Aproximados para Problemas NP-Completo Para projetar algoritmos polinomiais para resolver um problema de otimização NP-completo é necessário relaxar o significado de resolver. Removemos a exigência de que o algoritmo tenha sempre de obter a solução ótima. Procuramos algoritmos eficientes que não garantem obter a solução ótima, mas sempre obtêm uma próxima da ótima. Tal solução, com valor próximo da ótima, é chamada de solução aproximada. Um algoritmo aproximado para um problema Π é um algoritmo que gera soluções aproximadas paraπ. Para ser útil, é importante obter um limite para a razão entre a solução ótima e a produzida pelo algoritmo aproximado

Referências Ziviani, Nivio. Projeto de algoritmos: com implementações em Java e C. Thomson Learning, 2007. Leiserson, Charles E., Ronald L. Rivest, and Clifford Stein. Introduction to algorithms. Ed. Thomas H. Cormen. The MIT press, 2001.