Análise e Projeto de Algoritmos



Documentos relacionados
Análise e Complexidade de Algoritmos

Problema de Otimização Combinatória

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

PROGRAMAÇÃO INTEIRA. Prof. Gustavo Peixoto Silva Departamento de Computação Univ. Federal de Ouro Preto 5 modelos

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

Utilização do SOLVER do EXCEL

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

MÉTODOS DE RESOLUÇÃO DE PROBLEMAS EM IA. Busca em espaço de estados. Estados e Operadores. Jogo dos 8. Sumário. Exemplo: jogo dos 8

Organização e Arquitetura de Computadores I. de Computadores

Faculdade Alagoana de Administração FAA Ciência da Computação. (Resolução de Problemas em) Espaço de Estados

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

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

Manejo Florestal Sustentável: Dificuldade Computacional e Otimização de Processos

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

Lista 2 - Modelos determinísticos

Algoritmos de Aproximação Segundo Semestre de 2012

Limitações dos Computadores

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

Análise e Projeto de Algoritmos

BCC204 - Teoria dos Grafos

Pesquisa Operacional. 4x1+3x2 <=1 0 6x1 - x2 >= 20 X1 >= 0 X2 >= 0 PESQUISA OPERACIONAL PESQUISA OPERACIONAL PESQUISA OPERACIONAL PESQUISA OPERACIONAL

Teoria dos Grafos. Edson Prestes

Máquinas de Turing. Juliana Kaizer Vizzotto. Disciplina de Teoria da Computação. Universidade Federal de Santa Maria

Eduardo C. Xavier. 24 de fevereiro de 2011

Sistema de Arquivos. Ambientes Operacionais. Prof. Simão Sirineo Toscani

LISTA SOBRE MODELAGEM DE PROBLEMAS DE PROGRAMAÇÃO INTEIRA

5COP096 TeoriadaComputação

Complexidade de Algoritmos

Introdução às Máquinas de Turing (TM)

Resolução de problemas e desenvolvimento de algoritmos

Um Esquema de Aproximação Eficiente para o Problema do Bin Packing Unidimensional

Uma Heurística Gulosa para o Problema de Bin Packing Bidimensional

CURSO SPED PIS COFINS CONTRIBUIÇOES MATÉRIA

Aula 03 - Modelagem em PPLIM

ESTRUTURAS DE DADOS II

BlackBerry Mobile Voice System

Planejando o aplicativo

Complexidade de Algoritmos. Edson Prestes

ESTRATÉGIAS DE RESOLUÇÃO DE PROBLEMAS DE PESQUISA OPERACIONAL

Classes de Complexidade e NP-Completude

Memória Cache. Prof. Leonardo Barreto Campos 1

BC Sistemas Operacionais Sistema de Arquivos (aula 10 Parte 2) Prof. Marcelo Z. do Nascimento

2 Problema das p-medianas

Sistemas Operacionais. Prof. André Y. Kusumoto

CRIANDO TEMPLATES E LEGENDAS

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

Organização e Arquitetura de Computadores I

Resolução da Lista 2 - Modelos determinísticos

Arquitetura de Computadores. Sistemas Operacionais IV

PCC104 - Projeto e Análise de Algoritmos

Fundamentos da Matemática

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

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

Prof.: Roberto Franciscatto. Capítulo 1.2 Aspectos Gerais

ECO039 Linguagens Formais

Aula 26: Arquiteturas RISC vs. CISC

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

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Introdução à Programação e Algoritmos. Aécio Costa

BC1424 Algoritmos e Estruturas de Dados I. Aula 16: Árvores (introdução) Prof. Jesús P. Mena-Chalco. jesus.mena@ufabc.edu.br

Notas de aula número 1: Otimização *

ORIENTAÇÕES SOBRE A PROVA DISCURSIVA

CAPACITORES. Vestibular1 A melhor ajuda ao vestibulando na Internet Acesse Agora!

AULA 5 Sistemas Operacionais

Algoritmos e Estrutura de Dados III. Árvores

Programação de Sistemas

1.1. Organização de um Sistema Computacional

BCC204 - Teoria dos Grafos

COMPETÊNCIAS BÁSICAS EM TIC NAS EB1

INVESTIGAÇÃO OPERACIONAL. Programação Linear. Exercícios

Capítulo 5: Aplicações da Derivada

Investigação Operacional

Manual Rápido de Utilização

Complexidade de Algoritmos. Edson Prestes

Etapa 1: Limpar o computador e executar o Windows Update

Problemas insolúveis. Um exemplo simples e concreto

Conceitos Importantes:

Sagômetro Digital. Manual de Instalação e Operação

Contagem. Prof. Dr. Leandro Balby Marinho. Matemática Discreta. Fundamentos Inclusão/Exclusão Princípio da Casa dos Pombos Permutações Combinações

CAP. I ERROS EM CÁLCULO NUMÉRICO

Aplicações de Otimização em Processos Industriais

Fazer Backup de Dados e Informação no Windows ÍNDICE RECOMENDAÇÕES:... 2

Princípios de funcionamento dos computadores

CÁLCULO DE ZEROS DE FUNÇÕES REAIS

SERVIÇO DE ANÁLISE DE REDES DE TELECOMUNICAÇÕES APLICABILIDADE PARA CALL-CENTERS VISÃO DA EMPRESA

Escaneando seu computador com o Avira AntiVir 10

Este material traz a teoria necessária à resolução das questões propostas.

IW10. Rev.: 02. Especificações Técnicas

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

TRABALHO COM GRANDES MONTAGENS

Programação Estruturada Linguagem C

Algoritmos. Objetivo principal: explicar que a mesma ação pode ser realizada de várias maneiras, e que às vezes umas são melhores que outras.

Pesquisa Operacional Programação em Redes

Java Mail Server. Manual do Utilizador

Faculdade de Computação

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco

Tomada de Decisão e Distribuições de Probabilidade. Lupércio França Bessegato

Prof. JUBRAN. Aula 1 - Conceitos Básicos de Sistemas de Informação

O AMBIENTE DE TRABALHO DO WINDOWS

Transcrição:

Análise e Projeto de Algoritmos Prof. Eduardo Barrére www.ufjf.br/pgcc www.dcc.ufjf.br eduardo.barrere@ice.ufjf.br www.barrere.ufjf.br

Complexidade de Algoritmos Computabilidade: Um problema é computável se é solucionável numa Máquina de Turing Uma máquina de Turing pode ser pensada como uma fita infinita de papel, dividida em pequenas casas, e um lápis/borracha especial que pode seguir instruções. Essas instruções são bastante simples: o lápis pode ler um símbolo na fita e, analisando-o, pode apagá-lo e escrever por cima do símbolo lido e, mudando de estado, pode se mover para a direita ou para a esquerda para analisar um novo símbolo, ou simplesmente parar.

Máquina de Turing Existem máquinas de Turing determinísticas e nãodeterminísticas. As determinísticas são aquelas que quando estão em um certo estado, lendo um certo dado, podem se movimentar de um único modo rumo à próxima configuração. As não-determinísticas podem se mover para diversas configurações, a partir do dado lido e da configuração interna atual. Evidentemente as máquinas determinísticas formam uma subclasse das não-determinísticas. Alan Mathison Turing 1912-1954

Limite de Complexidade de um Problema Limite Superior: melhor algoritmo que o resolve (complexidade no pior caso) Limite Inferior: melhor complexidade possível (algumas vezes é um resultado teórico). Técnica mais simples: Contar as entradas e saídas produzidas Diferença entre os limites ou a diminuição do limite inferior são os desafios. Sem diferença: complexidade mínina.

Intratabilidade Algoritmo não eficiente -> algoritmo de complexidade não polinomial O(2 n) -> grandes valores de n -> algoritmo intratável! Algoritmos razoáveis: polinomiais Algoritmos não razoáveis: exponencial Limite inferior polinomial e Limite superior exponencial????

Problemas de Otimização vs. Problemas de Decisão A resolução de um problema de otimização consiste na seleção da melhor solução para outro problema. Arvore Geradora Mnima (Ot.): escolher a melhor solução (i.e. de menor peso) para o problema da determinação de uma arvore geradora (qualquer). A cada problema de optimização esta normalmente associado um problema de decisão, i.e., um problema cuja solução e uma resposta sim/não: Arvore Geradora Mínima (Dec.): dado um valor k, existirá alguma árvore geradora para G com peso k?

Problemas Difíceis Famosos Coloracão de um Grafo G = (V;E): e uma funcão C : V S, com S um conjunto finito de cores, verificando a restrição: (v, w) pertence a E -> C(v) C(w) (vertices adjacentes são coloridos com cores diferentes) Problema de Otimização: Dado G, determinar uma coloração C tal que o numero de cores usadas é mínimo. Problema Decisão: Dado G e k inteiro, haverá alguma coloracão de G usando no máximo k cores?

Coloração de Grafos Aplicação: problemas de escalonamento, por exemplo o problema de para determinar horários dos exames de um conjunto de disciplinas ( V ) sujeito a incompatibilidades (pares de disciplinas cujos exames não podem acontecer em simultâneo - E). Qual o número de slots de tempo necessários? Exemplo:

Coloração de Grafos Solução ótima: 3 cores Desafios: determinar soluções para instâncias deste problema sobre grafos maiores... escrever um algoritmo para resolver o problema.

Problemas Difíceis Famosos Bin Packing": Dados n objetos de dimensões s1,..., sn, com 0 < si 1, Problema Otimização: Quantas gavetas de dimensão 1 serão necessárias para arrumá-los? (E qual a disposição dos objetos correspondente?) Problema Decisão: Dado um inteiro k, será possível arrumar os n objetos em k gavetas? Aplicações: Sistemas Operacionais: dispor programas em páginas de memória; dispor dados em palavras de tamanho fixo; Investigação Operacional: problemas de corte de componentes (ex. tecido) em peças de dimensão normalizada.

Bin Packing Entrada: lista de itens L. Saída : empacotamento de L nos bins. 1. Coloque cada item grande em um bin. Indexe os bins em uma ordem arbitrária. Defina estes bins como ativos. Organize os itens pequenos como segue. 2. Se houver um bin ativo aberto, coloque o item atual a i no bin ativo aberto com o menor índice se o bin tiver espaço suficiente para a i. Caso contrário feche este bin ativo e considere o bin extra: (a) Se exite um bin extra aberto e há espaço suficiente para ai, então coloque ai nesse bin extra. (b) Caso contrário feche o bin extra, se existir. Abra um novo bin para a i e defina este bin como bin extra. 3. Se não há bin ativo aberto, crie um novo bin para a i, defina este novo bin como bin ativo.

Bin Packing Entrada: lista de itens L. Saída : empacotamento de L nos bins.

Bin Packing 1. Coloque cada item grande em um bin. Indexe os bins em uma ordem arbitrária. Defina estes bins como ativos. Organize os itens pequenos

Bin Packing 1.... 2. Se houver um bin ativo aberto, coloque o item atual a i no bin ativo aberto com o menor índice se o bin tiver espaço suficiente para a i. Caso contrário feche este bin ativo e considere o bin extra: (a) Se exite um bin extra aberto e há espaço suficiente para ai, então coloque ai nesse bin extra. (b) Caso contrário feche o bin extra, se existir. Abra um novo bin para a i e defina este bin como bin extra.

Bin Packing 1.... 2. Se houver um bin ativo aberto, coloque o item atual a i no bin ativo aberto com o menor índice se o bin tiver espaço suficiente para a i. Caso contrário feche este bin ativo e considere o bin extra: (a) Se exite um bin extra aberto e há espaço suficiente para ai, então coloque ai nesse bin extra. (b) Caso contrário feche o bin extra, se existir. Abra um novo bin para a i e defina este bin como bin extra.

Bin Packing 1.... 2. Se houver um bin ativo aberto, coloque o item atual a i no bin ativo aberto com o menor índice se o bin tiver espaço suficiente para a i. Caso contrário feche este bin ativo e considere o bin extra: (a) Se exite um bin extra aberto e há espaço suficiente para ai, então coloque ai nesse bin extra. (b) Caso contrário feche o bin extra, se existir. Abra um novo bin para a i e defina este bin como bin extra.

Bin Packing 1.... 2. Se houver um bin ativo aberto, coloque o item atual a i no bin ativo aberto com o menor índice se o bin tiver espaço suficiente para a i. Caso contrário feche este bin ativo e considere o bin extra:... 3. Se não há bin ativo aberto, crie um novo bin para a i, defina este novo bin como bin ativo.

Bin Packing 1.... 2. Se houver um bin ativo aberto, coloque o item atual a i no bin ativo aberto com o menor índice se o bin tiver espaço suficiente para a i. Caso contrário feche este bin ativo e considere o bin extra: (a) Se exite um bin extra aberto e há espaço suficiente para ai, então coloque ai nesse bin extra. (b) Caso contrário feche o bin extra, se existir. Abra um novo bin para a i e defina este bin como bin extra.

Bin Packing 1.... 2. Se houver um bin ativo aberto, coloque o item atual a i no bin ativo aberto com o menor índice se o bin tiver espaço suficiente para a i. Caso contrário feche este bin ativo e considere o bin extra: (a) Se exite um bin extra aberto e há espaço suficiente para ai, então coloque ai nesse bin extra. (b) Caso contrário feche o bin extra, se existir. Abra um novo bin para a i e defina este bin como bin extra.

Bin Packing 1.... 2. Se houver um bin ativo aberto, coloque o item atual a i no bin ativo aberto com o menor índice se o bin tiver espaço suficiente para a i. Caso contrário feche este bin ativo e considere o bin extra:... 3. Se não há bin ativo aberto, crie um novo bin para a i, defina este novo bin como bin ativo.

Problemas Difíceis Famosos Mochila": Dada uma mochila de capacidade C e n objetos de dimensões s1,...,sn e valores p1,..., pn, Problema Otimização: Determinar o valor máximo dos objetos que se consegue colocar na mochila (e a lista desses objetos). Problema Decisão: Dado um inteiro k, existira um conjunto de objetos que caiba na mochila e corresponda a um valor k? Aplicações: Planejamento econômico; investimentos (tamanhos correspondem a capital investido, valor corresponde a lucro esperado).

Mochila - Enunciado Um viajante deve levar consigo, apenas uma mochila. Essa mochila possui uma capacidade limitada e deve ser carregada apenas com objetos que serão úteis durante a viagem. Cada objeto é único e possui um peso e um determinado valor. Que objetos dever ser levados pelo viajante de forma a maximizar o valor da mochila? Um contêiner com capacidade limitada deve ser carregado com diversos produtos de pesos e tamanhos diferentes. Como deve-se proceder para carregar o máximo possível de produtos, desperdiçando o mínimo possível de espaço. Um computador está sobrecarregado de arquivos e os mesmos devem ser transferidos para mídias em CD, e sabe-se que será necessário mais de um CD. Como deve-se proceder para carregar o máximo possível de arquivos em cada CD, desperdiçando o mínimo possível de espaço em cada mídia.

Mochila

Problemas Difíceis Famosos Caminhos e Circuitos de Hamilton: Num grafo G, um caminho de Hamilton é um caminho que passa por cada vértice exatamente uma vez. Um circuito de Hamilton é qualquer ciclo que seja um caminho de Hamilton. Problema Decisão: Decidir se G contem ou não um caminho de Hamilton (ou um circuito).

Problemas Difíceis Famosos Caixeiro Viajante: Dado um grafo G, com seus respectivos pesos, Problema Otimização: Determinar o circuito de Hamilton de peso mínimo. Problema Decisão: Para um inteiro k, haverá algum circuito de Hamilton em G, com peso k? Aplicações: O caixeiro viajante pretende minimizar a distância total percorrida para passar por todas as cidades que deve visitar. Mas também: circuito ótimo para recolha de lixo ou entrega de correio numa cidade...

Caixeiro Viajante Problema (n-1)! Combinações possíveis: 1) 1 2 3 4 1 2) 1 2 4 3 1 3) 1 3 2 4 1 4) 1 3 4 2 1 5) 1 4 2 3 1 6) 1 4 3 2 1