Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére...

26
Análise e Projeto de Algoritmos Prof. Eduardo Barrére [email protected] www.barrere.ufjf.br www.ufjf.br/pgcc www.dcc.ufjf.br

Transcript of Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére...

Page 1: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Análise e Projeto de Algoritmos

Prof. Eduardo Barrére

[email protected]

www.ufjf.br/pgccwww.dcc.ufjf.br

Page 2: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

Complexidade de Algoritmos

Computabilidade: Um problema é computável se é solucionável numa

Máquina de TuringUma 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.

Page 3: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

Máquina de Turing

Alan Mathison Turing 1912-1954

Existem máquinas de Turing determinísticas e não-determiní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.

Page 4: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

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.

Page 5: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

Intratabilidade

“Algoritmo não eficiente” -> algoritmo de complexidade não polinomial

O(2n) -> grandes valores de n -> algoritmo intratável!

Algoritmos razoáveis: polinomiais Algoritmos não razoáveis: exponencial

Limite inferior polinomial e Limite superior exponencial ????

Page 6: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

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?

Page 7: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

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?

Page 8: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

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:

Page 9: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

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.

Page 10: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

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.

Page 11: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

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 ai no bin ativo aberto com o menor índice se o bin tiver espaço suficiente para ai. 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 ainesse bin extra.(b) Caso contrário feche o bin extra, se existir. Abra um novo bin para ai e definaeste bin como bin extra.

3. Se não há bin ativo aberto, crie um novo bin para ai, defina este novo bincomo bin ativo.

Page 12: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

Bin Packing

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

Page 13: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

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

Page 14: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

Bin Packing

1. .....2. Se houver um bin ativo aberto, coloque o item atual ai no bin ativo aberto com o menor índice se o bin

tiver espaço suficiente para ai. 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 ainesse bin extra.(b) Caso contrário feche o bin extra, se existir. Abra um novo bin para ai e definaeste bin como bin extra.

Page 15: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

Bin Packing

1. .....2. Se houver um bin ativo aberto, coloque o item atual ai no bin ativo aberto com o menor índice se o bin

tiver espaço suficiente para ai. 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 ainesse bin extra.(b) Caso contrário feche o bin extra, se existir. Abra um novo bin para ai e definaeste bin como bin extra.

Page 16: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

Bin Packing

1. .....2. Se houver um bin ativo aberto, coloque o item atual ai no bin ativo aberto com o menor índice se o bin

tiver espaço suficiente para ai. 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 ainesse bin extra.(b) Caso contrário feche o bin extra, se existir. Abra um novo bin para ai e definaeste bin como bin extra.

Page 17: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

Bin Packing

1. .....

2. Se houver um bin ativo aberto, coloque o item atual ai no bin ativo aberto com o menor índice se o bintiver espaço suficiente para ai. 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 ai, defina este novo bin como bin ativo.

Page 18: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

Bin Packing

1. .....2. Se houver um bin ativo aberto, coloque o item atual ai no bin ativo aberto com o menor índice se o bin

tiver espaço suficiente para ai. 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 ainesse bin extra.(b) Caso contrário feche o bin extra, se existir. Abra um novo bin para ai e definaeste bin como bin extra.

Page 19: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

Bin Packing

1. .....2. Se houver um bin ativo aberto, coloque o item atual ai no bin ativo aberto com o menor índice se o bin

tiver espaço suficiente para ai. 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 ainesse bin extra.(b) Caso contrário feche o bin extra, se existir. Abra um novo bin para ai e definaeste bin como bin extra.

Page 20: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

Bin Packing

1. .....

2. Se houver um bin ativo aberto, coloque o item atual ai no bin ativo aberto com o menor índice se o bintiver espaço suficiente para ai. 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 ai, defina este novo bin como bin ativo.

Page 21: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

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).

Page 22: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

Mochila - Enunciado

Um viajante deve levar consigo, apenas uma mochila. Essa mochilapossui 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.

Page 23: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

Mochila

Page 24: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

Problemas Difíceis FamososCaminhos 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).

Page 25: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

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 . . .

Page 26: Análise e Projeto de Algoritmos - UFJF · Análise e Projeto de Algoritmos Prof. Eduardo Barrére eduardo.barrere@ice.ufjf.br ... Problemas Difíceis Famosos “Bin Packing": ...

Programa de Pós-Graduação em Ciência da Computação – DCC – UFJF APA / Barrére

Caixeiro Viajante

Problema (n-1)!

Combinações possíveis:

1) 1 2 3 4 12) 1 2 4 3 13) 1 3 2 4 14) 1 3 4 2 15) 1 4 2 3 16) 1 4 3 2 1