noções básicas sobre complexidade

24
EA869 Complexidade Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato 1

Upload: buimien

Post on 13-Feb-2017

234 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Noções básicas sobre complexidade

EA869Complexidade

Faculdade de Engenharia Elétrica e de Computação (FEEC)Universidade Estadual de Campinas (UNICAMP)

Prof. Levy Boccato1

Page 2: Noções básicas sobre complexidade

IntroduçãoProblema Crio um procedimento para encontrar sua solução

Este procedimento é finito? O problema é computável!

AlgoritmoSim

Mas será que o computador é capaz de executar estealgoritmo e nos mostrar a solução em tempo razoável? Para respondermos a esta pergunta, precisamosconhecer o conceito de complexidade de algoritmos.

2

computável!

Page 3: Noções básicas sobre complexidade

Introdução Exemplo: produto de matrizes

nnn

n

nnn

n

nnn

n

cc

cc

bb

bb

aa

aa

1

111

1

111

1

111.

Cada elemento cij requer n multiplicações e n-1 adições. Como as matrizes são n×n, ao todo serão necessárias n3 multiplicaçõese n2(n-1) adições. Supondo que um computador precise de alguns microssegundos parafazer operações de soma e multiplicação, é possível prever quantotempo ele levará para computar o resultado dada a dimensão n dasmatrizes.

tempo = n3 × tm + n2(n-1) × ta Este algoritmo é viável mesmo para um n grande?

3

Page 4: Noções básicas sobre complexidade

Introdução Não basta assegurar a existência de um algoritmo que solucione oproblema de interesse. É preciso que sua execução se dê em umtempo aceitável. Intuitivamente, portanto, podemos esperar que dentre todos osproblemas computáveis, existam aqueles para os quais ainda nãosão conhecidos algoritmos viáveis.

Todos os problemas

A complexidade de um algoritmo serve para indicar suaviabilidade. 4

Problemas computáveisProblemas computáveis em tempo hábil

Todos os problemas

Page 5: Noções básicas sobre complexidade

Complexidade A complexidade de um algoritmo está relacionada ao seudesempenho com respeito ao uso de recursoscomputacionais, tais como o tempo de execução e o espaçoocupado de memória, em função de características dosdados de entrada. Para conhecer o tempo de execução de um algoritmo, épreciso conhecer sua ordem de complexidade. No exemplo do produto de matrizes, o tempo de execuçãoesperado dependia essencialmente de n3.

5

Page 6: Noções básicas sobre complexidade

Complexidade Suponha que um determinado problema possa ser resolvido por meiode quatro algoritmos diferentes que possuem as seguintescomplexidades em função do tamanho da entrada.

Algoritmo 1: Logarítmica – log2nAlgoritmo 2: Linear – nAlgoritmo 3: Polinomial quadrática – n2Algoritmo 4: Exponencial – 2n

6

tamanho da entrada(n dígitos)log2 n(segundos) n(segundos) n2(segundos) 2n(segundos)

10 0,003 0,01 0,1 1100 0,006 0,1 10 1017 séculos

1.000 0,009 1 17 minutos ...10.000 0,013 10 28 horas ...100.000 0,016 100 116 dias ...

Comparação entre ordens de complexidade (tempo para 1 operação é de 1 ms)

Page 7: Noções básicas sobre complexidade

Complexidade Fica evidente que, dependendo da ordem de complexidadedo algoritmo, algumas soluções só são factíveis para um nmuito pequeno. Como expressar a ordem de complexidade de umalgoritmo?algoritmo?

Basta conhecer a complexidade assintótica da função, ou seja,como ela se comporta no caso limite em que n →ꝏ. Esta complexidade será expressa através da notação O(∙).

7

Page 8: Noções básicas sobre complexidade

Complexidade Notação O(∙) (big O):

Seja T(n) o número de operações em função da dimensãoda entrada.T(n) = O(f(n)) se existirem um inteiro m e uma constante dtais que T(n) ≤ d.f(n) para qualquer n > m.tais que T(n) ≤ d.f(n) para qualquer n > m.

Isto quer dizer que para valores de n suficientementegrandes, T(n) não cresce mais rapidamente do que f(n). Em outras palavras, O(f(n)) estabelece o pior caso (limitesuperior) para o crescimento da função T(n).

8

Page 9: Noções básicas sobre complexidade

Complexidade Exemplos de uso da notação O(∙):

T(n) = n2 + 8n e f(n) = n2 – para d = 3n T(n) = n2 + 8n 3n21 9 32 20 123 33 27

No caso do algoritmo de multiplicação de matrizes, suacomplexidade assintótica será O(n3). 9

3 33 274 48 485 65 75

m = 5 T(n) ≤ d.f(n) para n > mEntão, dizemos que T(n) é O(f(n)) = O(n2)

Page 10: Noções básicas sobre complexidade

Complexidade Para optarmos por um dentre vários algoritmos possíveisque resolvem um determinado problema, é necessário ternoção do crescimento assintótico de funções.

Menor complexidade Notação NomeO(1) Ordem constante

O(log n) Ordem logarítmica

10Maior complexidade

O(log n) Ordem logarítmicaO([log n]c) Ordem poli-logarítmica

O(n) Ordem linearO(n ∙ log n) Ordem linear-logarítmica

O(n2) Ordem quadráticaO(n3) Ordem cúbicaO(nc) Ordem polinomialO(cn) Ordem exponencialO(n!) Ordem fatorial

Page 11: Noções básicas sobre complexidade

Complexidade Visualmente:

11

Page 12: Noções básicas sobre complexidade

Complexidade Resumindo:

1. Apesar de todo algoritmo ser um procedimento finito que leva auma solução, nem sempre seu tempo de execução é factível.2. Por este motivo, é importante conhecer a complexidade de umalgoritmo ao utilizá-lo em um computador.3. A complexidade de um algoritmo depende do tamanho dos dadosde entrada e pode ser expresso através da sua ordem dede entrada e pode ser expresso através da sua ordem decomplexidade.4. Algoritmos de ordem de complexidade maiores que polinomial sãofactíveis apenas para entradas muito pequenas.

12

Como decidir se um algoritmo é ou não uma solução eficiente para resolver um determinado problema?

Para isso, é necessário classificar os problemas conforme a melhor solução conhecidade seus algoritmos.

Problemas P, NP e NPC

Page 13: Noções básicas sobre complexidade

Problemas P, NP e NPC Exemplo:

Suponha que desejemos saber se existe um determinadonúmero em uma lista ordenada de valores.

135

Lista Qual a complexidade desse problema?

Problemas polinomiais (P): aqueles cuja melhor soluçãodemanda algoritmos com complexidade (assintótica) de ordematé polinomial O(nc) 13

35679101215

Solução trivial: O(n)É a melhor solução?

Busca binária: O(log2 n)

Ela contém o número 8?

Page 14: Noções básicas sobre complexidade

Problemas P, NP e NPC Problema do Caixeiro Viajante: Dado um mapa com n cidades e adistância entre cada par de cidades, é possível obter um percurso paraum vendedor de modo que ele o complete dentro de uma dadaquilometragem, visitando cada cidade uma única vez e retornando aoponto de partida?

JCJaguariúna JC JH JH JI JI

Qual é a rota de menor custo?

14

CIHJCampinas

HortolândiaItatiba

CHIJ

HICJ

HCIJ

ICHJ

IHCJRotas

Custo

nós (n-1)!4 610 362880

Qual é a ordem de complexidade?Exponencial: O(cn)

É a melhor solução encontrada?Nunca se comprovou!

Problema Não-deterministicamentePolinomial (NP)

15 km

93 90 90 93 93 93A solução é obtida analisando-se as (n-1)! possibilidades.

Page 15: Noções básicas sobre complexidade

Problemas P, NP e NPC Problemas não-deterministicamente polinomiais (NP): aquelescuja melhor solução conhecida demanda algoritmos comcomplexidade (assintótica) de ordem exponencial Ο(cn).

Contudo, ainda não se sabe se esta é, de fato, a melhor solução quepode ser alcançada. Se for provado que um algoritmo de ordem O(cn) representa amelhor solução possível para o problema, dizemos que estamosmelhor solução possível para o problema, dizemos que estamosdiante de um problema não-tratável.

15

Problemas tratáveis: aqueles cuja solução demanda um algoritmode ordem polinomial ou menor E aqueles que ainda não seprovou que a melhor solução demanda algoritmos de ordemexponencial ou maior.Problemas não-tratáveis: já se comprovou que a melhor soluçãopossível demanda um algoritmo de ordem exponencial ou aindamais custoso.

Page 16: Noções básicas sobre complexidade

Problemas P, NP e NPC Problema da Torre de Hanoi:

Dado um conjunto de n discos dispostos em ordem decrescente detamanho, o objetivo é mover a pilha para outro pino usando umterceiro como auxiliar. Restrições:

Somente um disco pode ser movido a cada instante. Cada movimento consiste em retirar o disco do topo de uma pilha e movê-lo ao topo de outra pilha. Nenhum disco pode ser colocado sobre outro que seja menor do que ele. 16

Page 17: Noções básicas sobre complexidade

Problemas P, NP e NPC Problema da Torre de Hanoi:

Exemplo: 3 discosInício

1

4

5

Caso geral: o número mínimo de movimentos é igual a 2n – 1. 17

1

2

3

5

6

7

Page 18: Noções básicas sobre complexidade

Problemas P, NP e NPC Questão: Será que os problemas pertencentes à classe NPsão, na verdade, problemas P para os quais ainda nãoconseguimos descobrir algoritmos que nos deem umasolução em tempo polinomial? Em outras palavras, P = NP? Em outras palavras, P = NP? Esta questão é um dos maiores desafios não resolvidos daciência da computação – um dos sete problemas valendo 1milhão de dólares (Millenium Prize Problems, ClayMathematics Institute). Alguns problemas NP, contudo, são de especial importânciae podem ser úteis na tentativa de solucionar esta questão. 18

Page 19: Noções básicas sobre complexidade

Problemas P, NP e NPC Problema da mochila (knapsack): é um problema de otimizaçãocombinatória. O objetivo é que se preencha uma mochila com umconjunto de itens tal que se atinja o maior valor total, não ultrapassando opeso máximo suportado.

É interessante observar que diversos outros problemas se reduzem ao problema

Desta forma, se encontrarmos uma solução em tempo polinomial para o

19

Problema cuja melhor solução conhecida demanda um algoritmo de ordem exponencialProblema NP

se reduzem ao problema da mochila

- Investimento de capitais- Corte e empacotamento- Orçamento- Criptografia de chave pública

polinomial para o problema da mochila, teremos uma solução O(nc) para todos os outros problemas da mesma classe.

O problema da Mochila é NP-Completo

Page 20: Noções básicas sobre complexidade

Problemas P, NP e NPC Problemas NP-Completos (NPC): subconjunto de NP formado porcertos problemas tais que todos os demais problemas em NP sãoredutíveis a eles em tempo polinomial. Os problemas NPC podem ser muito úteis na investigação da questãoP = NP.

Caso seja provado que P = NP, então inúmeros problemas para os Caso seja provado que P = NP, então inúmeros problemas para osquais hoje só se vislumbram algoritmos exponenciais ou ainda demaior complexidade, na verdade, têm solução de menorcomplexidade (P). Caso seja demonstrado que P ≠ NP, então não hárazão para buscar estes algoritmos. Ponto importante: obter um algoritmo eficiente (polinomial) paraqualquer problema NPC implicará que um algoritmo eficiente(polinomial) terá sido obtido para toda esta classe de problemas(NPC). E, consequentemente, para NP. Com isto terá sido provadoque P = NPC e, equivalentemente, que P=NP. 20

Page 21: Noções básicas sobre complexidade

Problemas P, NP e NPC Mas o que significa dizer que um problema é redutível aoutro?

Redução é a transformação de um problema em outro. Por exemplo, um problema de decisão Y é redutível a umproblema de decisão X se existe um algoritmo que transformaproblema de decisão X se existe um algoritmo que transformaqualquer instância y1 de Y em uma instância x1 de X, tal quey1 é verdadeira se e somente se x1 for verdadeira.Informalmente, Y é redutível a X se Y for um subproblema oucaso particular de X. Se um problema Y pode ser reduzido a X, uma solução para Xoferece uma solução para Y. Deste modo, resolver Y não podeser mais custoso do que resolver X (ou seja, não pode exigirtempo maior).

21

Page 22: Noções básicas sobre complexidade

Problemas P, NP e NPC Mas o que significa dizer que um problema é redutível aoutro?

Exemplo: o problema do quadrado-perfeito (Y) épolinomialmente redutível ao problema de equação de 2º grauinteira (X).Quadrado perfeito: dada uma entrada n, número natural, é Quadrado perfeito: dada uma entrada n, número natural, épreciso decidir se existe um natural j tal que j2 = n.

Equação de 2º grau inteira: dada uma entrada compostapelos inteiros a, b e c, é preciso decidir se existe um inteiro xtal que ax2 + bx + c = 0. Escolhendo a = 1, b = 0 e c = -n, ao resolver o problema deequação de 2º grau, teremos resolvido o problema doquadrado perfeito.

22

Page 23: Noções básicas sobre complexidade

Problemas P, NP e NPCTodos os problemas computáveis

Melhor solução demanda complexidade até polinomialProblemas Polinomiais (P)NT

Melhor solução comprovada demanda complexidade pelo menos exponencialProblemas Não Tratáveis (NT)

NP

NP

23

P Problemas Polinomiais (P)

Melhor solução encontrada é de ordem exponencial, mas não se sabe se é, de fato, a melhor solução possívelProblemasNão-deterministicamentePolinomiais (NP)

NPC

Problemas NP tais que todos os outros são redutíveis a eles em tempo polinomialProblemas NP-Completo (NPC)

NP

NPNP

NP

Page 24: Noções básicas sobre complexidade

Créditos Este material está baseado nas notas de aula elaboradas peloProf. Léo Pini e pelo aluno de doutorado Tiago Novaes.

24