MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI...

191
MO417 — Complexidade de Algoritmos I Cid C. de Souza andida N. da Silva Orlando Lee 14 de agosto de 2018 Cid C. de Souza, Cˆ andida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Transcript of MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI...

Page 1: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

MO417 — Complexidade de Algoritmos I

Cid C. de Souza Candida N. da Silva Orlando Lee

14 de agosto de 2018

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 2: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Antes de mais nada. . .

Uma versao anterior deste conjunto de slides foi preparada porCid Carvalho de Souza e Candida Nunes da Silva para umainstancia anterior desta disciplina.

O que voces tem em maos e uma versao modificada preparadapara atender a meus gostos.

Nunca e demais enfatizar que o material e apenas um guia enao deve ser usado como unica fonte de estudo. Para issoconsultem a bibliografia (em especial o CLR ou CLRS).

Orlando Lee

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 3: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Agradecimentos (Cid e Candida)

Varias pessoas contribuıram direta ou indiretamente com apreparacao deste material.

Algumas destas pessoas cederam gentilmente seus arquivosdigitais enquanto outras cederam gentilmente o seu tempofazendo correcoes e dando sugestoes.

Uma lista destes “colaboradores” (em ordem alfabetica) edada abaixo:

Celia Picinin de MelloJose Coelho de PinaOrlando LeePaulo FeofiloffPedro RezendeRicardo DahabZanoni Dias

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 4: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Introducao

O que veremos nesta disciplina?

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 5: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Introducao

O que veremos nesta disciplina?

Como provar a “corretude” de um algoritmo

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 6: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Introducao

O que veremos nesta disciplina?

Como provar a “corretude” de um algoritmo

Estimar a quantidade de recursos (tempo, memoria) de umalgoritmo = analise de complexidade

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 7: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Introducao

O que veremos nesta disciplina?

Como provar a “corretude” de um algoritmo

Estimar a quantidade de recursos (tempo, memoria) de umalgoritmo = analise de complexidade

Tecnicas e ideias gerais de projeto de algoritmos:divisao-e-conquista, programacao dinamica, algoritmosgulosos etc

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 8: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Introducao

O que veremos nesta disciplina?

Como provar a “corretude” de um algoritmo

Estimar a quantidade de recursos (tempo, memoria) de umalgoritmo = analise de complexidade

Tecnicas e ideias gerais de projeto de algoritmos:divisao-e-conquista, programacao dinamica, algoritmosgulosos etc

Tema recorrente: natureza recursiva de varios problemas

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 9: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Introducao

O que veremos nesta disciplina?

Como provar a “corretude” de um algoritmo

Estimar a quantidade de recursos (tempo, memoria) de umalgoritmo = analise de complexidade

Tecnicas e ideias gerais de projeto de algoritmos:divisao-e-conquista, programacao dinamica, algoritmosgulosos etc

Tema recorrente: natureza recursiva de varios problemas

A dificuldade intrınseca de varios problemas: inexistencia desolucoes eficientes

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 10: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos

O que e um algoritmo?

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 11: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos

O que e um algoritmo?

Informalmente, um algoritmo e um procedimento computacionalbem definido que:

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 12: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos

O que e um algoritmo?

Informalmente, um algoritmo e um procedimento computacionalbem definido que:

recebe um conjunto de valores como entrada e

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 13: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos

O que e um algoritmo?

Informalmente, um algoritmo e um procedimento computacionalbem definido que:

recebe um conjunto de valores como entrada e

produz um conjunto de valores como saıda.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 14: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos

O que e um algoritmo?

Informalmente, um algoritmo e um procedimento computacionalbem definido que:

recebe um conjunto de valores como entrada e

produz um conjunto de valores como saıda.

Equivalentemente, um algoritmo e uma ferramenta para resolverum problema computacional. Este problema define a relacaoprecisa que deve existir entre a entrada e a saıda do algoritmo.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 15: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Exemplos de problemas: teste de primalidade

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 16: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Exemplos de problemas: teste de primalidade

Problema: determinar se um dado numero e primo.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 17: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Exemplos de problemas: teste de primalidade

Problema: determinar se um dado numero e primo.

Exemplo:

Entrada: 9411461

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 18: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Exemplos de problemas: teste de primalidade

Problema: determinar se um dado numero e primo.

Exemplo:

Entrada: 9411461

Saıda: E primo.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 19: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Exemplos de problemas: teste de primalidade

Problema: determinar se um dado numero e primo.

Exemplo:

Entrada: 9411461

Saıda: E primo.

Exemplo:

Entrada: 8411461

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 20: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Exemplos de problemas: teste de primalidade

Problema: determinar se um dado numero e primo.

Exemplo:

Entrada: 9411461

Saıda: E primo.

Exemplo:

Entrada: 8411461

Saıda: Nao e primo. (8411461 = 1913× 4397)

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 21: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Exemplos de problemas: ordenacao

Definicao: um vetor A[1 . . . n] e crescente se A[1] ≤ . . . ≤ A[n].

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 22: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Exemplos de problemas: ordenacao

Definicao: um vetor A[1 . . . n] e crescente se A[1] ≤ . . . ≤ A[n].

Problema: rearranjar um vetor A[1 . . . n] de modo que fiquecrescente.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 23: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Exemplos de problemas: ordenacao

Definicao: um vetor A[1 . . . n] e crescente se A[1] ≤ . . . ≤ A[n].

Problema: rearranjar um vetor A[1 . . . n] de modo que fiquecrescente.

Entrada:

1 n

33 55 33 44 33 22 11 99 22 55 77

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 24: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Exemplos de problemas: ordenacao

Definicao: um vetor A[1 . . . n] e crescente se A[1] ≤ . . . ≤ A[n].

Problema: rearranjar um vetor A[1 . . . n] de modo que fiquecrescente.

Entrada:

1 n

33 55 33 44 33 22 11 99 22 55 77

Saıda:

1 n

11 22 22 33 33 33 44 55 55 77 99

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 25: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Instancia de um problema

Uma instancia de um problema e um conjunto de valores que servede entrada para esse.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 26: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Instancia de um problema

Uma instancia de um problema e um conjunto de valores que servede entrada para esse.

Exemplo:Os numeros 9411461 e 8411461 sao instancias do problema deprimalidade.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 27: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Instancia de um problema

Uma instancia de um problema e um conjunto de valores que servede entrada para esse.

Exemplo:Os numeros 9411461 e 8411461 sao instancias do problema deprimalidade.

Exemplo:O vetor

1 n

33 55 33 44 33 22 11 99 22 55 77

e uma instancia do problema de ordenacao.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 28: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

A importancia dos algoritmos para a computacao

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 29: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

A importancia dos algoritmos para a computacao

Onde se encontra aplicacoes para o uso/desenvolvimento dealgoritmos “eficientes”?

projetos de genoma de seres vivos

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 30: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

A importancia dos algoritmos para a computacao

Onde se encontra aplicacoes para o uso/desenvolvimento dealgoritmos “eficientes”?

projetos de genoma de seres vivos

rede mundial de computadores

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 31: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

A importancia dos algoritmos para a computacao

Onde se encontra aplicacoes para o uso/desenvolvimento dealgoritmos “eficientes”?

projetos de genoma de seres vivos

rede mundial de computadores

comercio eletronico

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 32: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

A importancia dos algoritmos para a computacao

Onde se encontra aplicacoes para o uso/desenvolvimento dealgoritmos “eficientes”?

projetos de genoma de seres vivos

rede mundial de computadores

comercio eletronico

planejamento da producao de industrias

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 33: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

A importancia dos algoritmos para a computacao

Onde se encontra aplicacoes para o uso/desenvolvimento dealgoritmos “eficientes”?

projetos de genoma de seres vivos

rede mundial de computadores

comercio eletronico

planejamento da producao de industrias

logıstica de distribuicao

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 34: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

A importancia dos algoritmos para a computacao

Onde se encontra aplicacoes para o uso/desenvolvimento dealgoritmos “eficientes”?

projetos de genoma de seres vivos

rede mundial de computadores

comercio eletronico

planejamento da producao de industrias

logıstica de distribuicao

muitos outros. . .

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 35: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Dificuldade intrınseca de problemas

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 36: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Dificuldade intrınseca de problemas

Infelizmente, existem certos problemas para os quais nao seconhece algoritmos “eficientes” capazes de resolve-los.Eles sao chamados problemas NP-completos.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 37: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Dificuldade intrınseca de problemas

Infelizmente, existem certos problemas para os quais nao seconhece algoritmos “eficientes” capazes de resolve-los.Eles sao chamados problemas NP-completos.

Curiosamente, nao foi provado que tais algoritmos naoexistem!

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 38: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Dificuldade intrınseca de problemas

Infelizmente, existem certos problemas para os quais nao seconhece algoritmos “eficientes” capazes de resolve-los.Eles sao chamados problemas NP-completos.

Curiosamente, nao foi provado que tais algoritmos naoexistem!

Esses problemas tem a caracterıstica notavel de que se umdeles admitir um algoritmo “eficiente” entao todos admitemalgoritmos “eficientes”.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 39: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Dificuldade intrınseca de problemas

Infelizmente, existem certos problemas para os quais nao seconhece algoritmos “eficientes” capazes de resolve-los.Eles sao chamados problemas NP-completos.

Curiosamente, nao foi provado que tais algoritmos naoexistem!

Esses problemas tem a caracterıstica notavel de que se umdeles admitir um algoritmo “eficiente” entao todos admitemalgoritmos “eficientes”.

Por que devo me preocupar com problemas NP-completos?

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 40: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Dificuldade intrınseca de problemas

Infelizmente, existem certos problemas para os quais nao seconhece algoritmos “eficientes” capazes de resolve-los.Eles sao chamados problemas NP-completos.

Curiosamente, nao foi provado que tais algoritmos naoexistem!

Esses problemas tem a caracterıstica notavel de que se umdeles admitir um algoritmo “eficiente” entao todos admitemalgoritmos “eficientes”.

Por que devo me preocupar com problemas NP-completos?Problemas dessa classe surgem em inumeras situacoespraticas.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 41: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Dificuldade intrınseca de problemas

Exemplos:

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 42: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Dificuldade intrınseca de problemas

Exemplos:

calcular as rotas dos caminhoes de entrega de umadistribuidora de bebidas em Sao Paulo, minimizando adistancia percorrida. (vehicle routing)

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 43: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Dificuldade intrınseca de problemas

Exemplos:

calcular as rotas dos caminhoes de entrega de umadistribuidora de bebidas em Sao Paulo, minimizando adistancia percorrida. (vehicle routing)

calcular o numero mınimo de containers para transportar umconjunto de caixas com produtos. (bin packing 3D)

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 44: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Dificuldade intrınseca de problemas

Exemplos:

calcular as rotas dos caminhoes de entrega de umadistribuidora de bebidas em Sao Paulo, minimizando adistancia percorrida. (vehicle routing)

calcular o numero mınimo de containers para transportar umconjunto de caixas com produtos. (bin packing 3D)

calcular a localizacao e o numero mınimo de antenas decelulares para garantir a cobertura de uma certa regiaogeografica. (facility location)

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 45: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Dificuldade intrınseca de problemas

Exemplos:

calcular as rotas dos caminhoes de entrega de umadistribuidora de bebidas em Sao Paulo, minimizando adistancia percorrida. (vehicle routing)

calcular o numero mınimo de containers para transportar umconjunto de caixas com produtos. (bin packing 3D)

calcular a localizacao e o numero mınimo de antenas decelulares para garantir a cobertura de uma certa regiaogeografica. (facility location)

muito outros. . .

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 46: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Dificuldade intrınseca de problemas

Exemplos:

calcular as rotas dos caminhoes de entrega de umadistribuidora de bebidas em Sao Paulo, minimizando adistancia percorrida. (vehicle routing)

calcular o numero mınimo de containers para transportar umconjunto de caixas com produtos. (bin packing 3D)

calcular a localizacao e o numero mınimo de antenas decelulares para garantir a cobertura de uma certa regiaogeografica. (facility location)

muito outros. . .

E importante saber identificar quando estamos lidando com umproblema NP-completo.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 47: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos e tecnologia

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 48: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos e tecnologia

O mundo ideal: os computadores tem velocidade deprocessamento e memoria infinitas. Neste caso, qualqueralgoritmo e igualmente bom e esta disciplina e inutil!

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 49: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos e tecnologia

O mundo ideal: os computadores tem velocidade deprocessamento e memoria infinitas. Neste caso, qualqueralgoritmo e igualmente bom e esta disciplina e inutil!

O mundo real: computadores tem velocidade deprocessamento e memoria limitadas.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 50: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos e tecnologia

O mundo ideal: os computadores tem velocidade deprocessamento e memoria infinitas. Neste caso, qualqueralgoritmo e igualmente bom e esta disciplina e inutil!

O mundo real: computadores tem velocidade deprocessamento e memoria limitadas.

Neste caso faz muita diferenca ter um bom algoritmo.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 51: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos e tecnologia

Exemplo: ordenacao de um vetor de n elementos

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 52: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos e tecnologia

Exemplo: ordenacao de um vetor de n elementos

Suponha que os computadores A e B executam1G e 10M instrucoes por segundo, respectivamente.Ou seja, A e 100 vezes mais rapido que B .

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 53: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos e tecnologia

Exemplo: ordenacao de um vetor de n elementos

Suponha que os computadores A e B executam1G e 10M instrucoes por segundo, respectivamente.Ou seja, A e 100 vezes mais rapido que B .

Algoritmo 1: implementado na maquina A por um excelenteprogramador em linguagem de maquina (ultra-rapida).Executa 2n2 instrucoes.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 54: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos e tecnologia

Exemplo: ordenacao de um vetor de n elementos

Suponha que os computadores A e B executam1G e 10M instrucoes por segundo, respectivamente.Ou seja, A e 100 vezes mais rapido que B .

Algoritmo 1: implementado na maquina A por um excelenteprogramador em linguagem de maquina (ultra-rapida).Executa 2n2 instrucoes.

Algoritmo 2: implementado na maquina B por umprogramador mediano em linguagem de alto nıveldispondo de um compilador “mais-ou-menos”.Executa 50n log n instrucoes.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 55: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos e tecnologia

O que acontece quando ordenamos um vetor de um milhao(106) de elementos? Qual algoritmo e mais rapido?

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 56: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos e tecnologia

O que acontece quando ordenamos um vetor de um milhao(106) de elementos? Qual algoritmo e mais rapido?

Algoritmo 1 na maquina A:2.(106)2 instrucoes

109 instrucoes/segundo≈ 2000 segundos

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 57: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos e tecnologia

O que acontece quando ordenamos um vetor de um milhao(106) de elementos? Qual algoritmo e mais rapido?

Algoritmo 1 na maquina A:2.(106)2 instrucoes

109 instrucoes/segundo≈ 2000 segundos

Algoritmo 2 na maquina B :50.(106 log 106) instrucoes107 instrucoes/segundo

≈ 100 segundos

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 58: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos e tecnologia

O que acontece quando ordenamos um vetor de um milhao(106) de elementos? Qual algoritmo e mais rapido?

Algoritmo 1 na maquina A:2.(106)2 instrucoes

109 instrucoes/segundo≈ 2000 segundos

Algoritmo 2 na maquina B :50.(106 log 106) instrucoes107 instrucoes/segundo

≈ 100 segundos

Ou seja, B foi VINTE VEZES mais rapido do que A.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 59: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos e tecnologia

O que acontece quando ordenamos um vetor de um milhao(106) de elementos? Qual algoritmo e mais rapido?

Algoritmo 1 na maquina A:2.(106)2 instrucoes

109 instrucoes/segundo≈ 2000 segundos

Algoritmo 2 na maquina B :50.(106 log 106) instrucoes107 instrucoes/segundo

≈ 100 segundos

Ou seja, B foi VINTE VEZES mais rapido do que A.

Se o vetor tiver 10 milhoes (107) de elementos, esta razaosera de 2.3 dias para 20 minutos.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 60: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos e tecnologia – Conclusoes

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 61: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos e tecnologia – Conclusoes

O uso de um algoritmo adequado pode levar a ganhosextraordinarios de desempenho.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 62: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos e tecnologia – Conclusoes

O uso de um algoritmo adequado pode levar a ganhosextraordinarios de desempenho.

Isso pode ser tao importante quanto o projeto de hardware.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 63: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Algoritmos e tecnologia – Conclusoes

O uso de um algoritmo adequado pode levar a ganhosextraordinarios de desempenho.

Isso pode ser tao importante quanto o projeto de hardware.

A melhora obtida pode ser tao significativa que nao poderiaser obtida simplesmente com o avanco da tecnologia.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 64: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Problema da ordenacao

Problema da ordenacao.

Entrada: um vetor A[1 . . . n] de elementos comparaveis

Saıda: vetor A[1 . . . n] rearranjado em ordem crescente

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 65: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Problema da ordenacao

Problema da ordenacao.

Entrada: um vetor A[1 . . . n] de elementos comparaveis

Saıda: vetor A[1 . . . n] rearranjado em ordem crescente

Vamos comecar analisando o algoritmo de ordenacao baseado nometodo de insercao (Insertion sort).

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 66: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Problema da ordenacao

Problema da ordenacao.

Entrada: um vetor A[1 . . . n] de elementos comparaveis

Saıda: vetor A[1 . . . n] rearranjado em ordem crescente

Vamos comecar analisando o algoritmo de ordenacao baseado nometodo de insercao (Insertion sort).

Isto nos permitira destacar alguns dos aspectos mais importantesno estudo de algoritmos para esta disciplina.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 67: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Insercao em um vetor ordenado

1 j n

20 25 35 40 44 55 38 99 10 65 50

O subvetor A[1 . . . j − 1] esta ordenado.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 68: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Insercao em um vetor ordenado

1 j n

20 25 35 40 44 55 38 99 10 65 50

O subvetor A[1 . . . j − 1] esta ordenado.

Queremos inserir a chave = 38 = A[j ] em A[1 . . . j − 1] demodo que no final tenhamos:

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 69: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Insercao em um vetor ordenado

1 j n

20 25 35 40 44 55 38 99 10 65 50

O subvetor A[1 . . . j − 1] esta ordenado.

Queremos inserir a chave = 38 = A[j ] em A[1 . . . j − 1] demodo que no final tenhamos:

1 j n

20 25 35 38 40 44 55 99 10 65 50

Agora A[1 . . . j ] esta ordenado.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 70: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Como fazer a insercao

chave = 381 i j n

20 25 35 40 44 55 38 99 10 65 50

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 71: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Como fazer a insercao

chave = 381 i j n

20 25 35 40 44 55 38 99 10 65 50

1 i j n

20 25 35 40 44 55 99 10 65 50

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 72: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Como fazer a insercao

chave = 381 i j n

20 25 35 40 44 55 38 99 10 65 50

1 i j n

20 25 35 40 44 55 99 10 65 50

1 i j n

20 25 35 40 44 55 99 10 65 50

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 73: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Como fazer a insercao

chave = 381 i j n

20 25 35 40 44 55 38 99 10 65 50

1 i j n

20 25 35 40 44 55 99 10 65 50

1 i j n

20 25 35 40 44 55 99 10 65 50

1 i j n

20 25 35 40 44 55 99 10 65 50

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 74: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Como fazer a insercao

chave = 381 i j n

20 25 35 40 44 55 38 99 10 65 50

1 i j n

20 25 35 40 44 55 99 10 65 50

1 i j n

20 25 35 40 44 55 99 10 65 50

1 i j n

20 25 35 40 44 55 99 10 65 50

1 i j n

20 25 35 38 40 44 55 99 10 65 50

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 75: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Ordenacao por insercao

chave 1 j n

99 20 25 35 38 40 44 55 99 10 65 50

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 76: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Ordenacao por insercao

chave 1 j n

99 20 25 35 38 40 44 55 99 10 65 50

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 77: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Ordenacao por insercao

chave 1 j n

99 20 25 35 38 40 44 55 99 10 65 50

chave 1 j n

10 20 25 35 38 40 44 55 99 10 65 50

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 78: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Ordenacao por insercao

chave 1 j n

99 20 25 35 38 40 44 55 99 10 65 50

chave 1 j n

10 10 20 25 35 38 40 44 55 99 65 50

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 79: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Ordenacao por insercao

chave 1 j n

99 20 25 35 38 40 44 55 99 10 65 50

chave 1 j n

10 10 20 25 35 38 40 44 55 99 65 50

chave 1 j n

65 10 20 25 35 38 40 44 55 99 65 50

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 80: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Ordenacao por insercao

chave 1 j n

99 20 25 35 38 40 44 55 99 10 65 50

chave 1 j n

10 10 20 25 35 38 40 44 55 99 65 50

chave 1 j n

65 10 20 25 35 38 40 44 55 65 99 50

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 81: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Ordenacao por insercao

chave 1 j n

99 20 25 35 38 40 44 55 99 10 65 50

chave 1 j n

10 10 20 25 35 38 40 44 55 99 65 50

chave 1 j n

65 10 20 25 35 38 40 44 55 65 99 50

chave 1 j

50 10 20 25 35 38 40 44 55 65 99 50

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 82: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Ordenacao por insercao

chave 1 j n

99 20 25 35 38 40 44 55 99 10 65 50

chave 1 j n

10 10 20 25 35 38 40 44 55 99 65 50

chave 1 j n

65 10 20 25 35 38 40 44 55 65 99 50

chave 1 j

50 10 20 25 35 38 40 44 50 55 65 99

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 83: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Descricao de algoritmos

Podemos descrever um algoritmo de varias maneiras:

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 84: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Descricao de algoritmos

Podemos descrever um algoritmo de varias maneiras:

usando uma linguagem de programacao de alto nıvel: C,Pascal, Java etc

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 85: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Descricao de algoritmos

Podemos descrever um algoritmo de varias maneiras:

usando uma linguagem de programacao de alto nıvel: C,Pascal, Java etc

implementando-o em linguagem de maquina diretamenteexecutavel em hardware

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 86: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Descricao de algoritmos

Podemos descrever um algoritmo de varias maneiras:

usando uma linguagem de programacao de alto nıvel: C,Pascal, Java etc

implementando-o em linguagem de maquina diretamenteexecutavel em hardware

em portugues

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 87: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Descricao de algoritmos

Podemos descrever um algoritmo de varias maneiras:

usando uma linguagem de programacao de alto nıvel: C,Pascal, Java etc

implementando-o em linguagem de maquina diretamenteexecutavel em hardware

em portugues

em um pseudo-codigo de alto nıvel, como no livro do CLRS

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 88: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Descricao de algoritmos

Podemos descrever um algoritmo de varias maneiras:

usando uma linguagem de programacao de alto nıvel: C,Pascal, Java etc

implementando-o em linguagem de maquina diretamenteexecutavel em hardware

em portugues

em um pseudo-codigo de alto nıvel, como no livro do CLRS

Usaremos essencialmente as duas ultimas alternativas nestadisciplina.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 89: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Exemplo de pseudo-codigo

Algoritmo Insertion-Sort: rearranja um vetor A[1 . . . n] demodo que fique crescente.

Insertion-Sort(A, n)1 para j ← 2 ate n faca2 chave ← A[j ]3 ⊲ Insere A[j ] no subvetor ordenado A[1 . . . j − 1]4 i ← j − 15 enquanto i ≥ 1 e A[i ] > chave faca6 A[i + 1] ← A[i ]7 i ← i − 18 A[i + 1] ← chave

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 90: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Analise do algoritmo

O que e importante considerar?

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 91: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Analise do algoritmo

O que e importante considerar?

Corretude do algoritmo: mostrar que para qualquer instanciado problema, o algoritmo para e devolve uma resposta correta.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 92: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Analise do algoritmo

O que e importante considerar?

Corretude do algoritmo: mostrar que para qualquer instanciado problema, o algoritmo para e devolve uma resposta correta.

Complexidade de tempo do algoritmo: determinar o numerode intrucoes necessarias no pior caso para ordenar nelementos?

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 93: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

O algoritmo para

Insertion-Sort(A, n)1 para j ← 2 ate n faca

. . .4 i ← j − 15 enquanto i ≥ 1 e A[i ] > chave faca6 . . .7 i ← i − 18 . . .

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 94: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

O algoritmo para

Insertion-Sort(A, n)1 para j ← 2 ate n faca

. . .4 i ← j − 15 enquanto i ≥ 1 e A[i ] > chave faca6 . . .7 i ← i − 18 . . .

No laco enquanto na linha 5 o valor de i diminui a cada iteracaoe o valor inicial e i = j − 1 ≥ 1. Logo, a sua execucao para emalgum momento por causa do teste condicional i ≥ 1.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 95: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

O algoritmo para

Insertion-Sort(A, n)1 para j ← 2 ate n faca

. . .4 i ← j − 15 enquanto i ≥ 1 e A[i ] > chave faca6 . . .7 i ← i − 18 . . .

No laco enquanto na linha 5 o valor de i diminui a cada iteracaoe o valor inicial e i = j − 1 ≥ 1. Logo, a sua execucao para emalgum momento por causa do teste condicional i ≥ 1.

O laco na linha 1 evidentemente para pois o contador j atingira ovalor n + 1 apos n − 1 iteracoes.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 96: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

O algoritmo para

Insertion-Sort(A, n)1 para j ← 2 ate n faca

. . .4 i ← j − 15 enquanto i ≥ 1 e A[i ] > chave faca6 . . .7 i ← i − 18 . . .

No laco enquanto na linha 5 o valor de i diminui a cada iteracaoe o valor inicial e i = j − 1 ≥ 1. Logo, a sua execucao para emalgum momento por causa do teste condicional i ≥ 1.

O laco na linha 1 evidentemente para pois o contador j atingira ovalor n + 1 apos n − 1 iteracoes. (Por que j = n + 1?)

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 97: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

O algoritmo para

Insertion-Sort(A, n)1 para j ← 2 ate n faca

. . .4 i ← j − 15 enquanto i ≥ 1 e A[i ] > chave faca6 . . .7 i ← i − 18 . . .

No laco enquanto na linha 5 o valor de i diminui a cada iteracaoe o valor inicial e i = j − 1 ≥ 1. Logo, a sua execucao para emalgum momento por causa do teste condicional i ≥ 1.

O laco na linha 1 evidentemente para pois o contador j atingira ovalor n + 1 apos n − 1 iteracoes. (Por que j = n + 1?)

Portanto, o algoritmo para.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 98: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Corretude de Insertion-Sort

Insertion-Sort(A, n)1 para j ← 2 ate n faca2 chave ← A[j ]3 ⊲ Insere A[j ] no subvetor ordenado A[1 . . . j − 1]4 i ← j − 15 enquanto i ≥ 1 e A[i ] > chave faca6 A[i + 1] ← A[i ]7 i ← i − 18 A[i + 1] ← chave

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 99: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Corretude de Insertion-Sort

Insertion-Sort(A, n)1 para j ← 2 ate n faca2 chave ← A[j ]3 ⊲ Insere A[j ] no subvetor ordenado A[1 . . . j − 1]4 i ← j − 15 enquanto i ≥ 1 e A[i ] > chave faca6 A[i + 1] ← A[i ]7 i ← i − 18 A[i + 1] ← chave

E obvio que o Insertion-Sort funciona! (Certo??)

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 100: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Corretude de Insertion-Sort

Insertion-Sort(A, n)1 para j ← 2 ate n faca2 chave ← A[j ]3 ⊲ Insere A[j ] no subvetor ordenado A[1 . . . j − 1]4 i ← j − 15 enquanto i ≥ 1 e A[i ] > chave faca6 A[i + 1] ← A[i ]7 i ← i − 18 A[i + 1] ← chave

E obvio que o Insertion-Sort funciona! (Certo??)

Talvez, mas uma prova rigorosa deste fato exige um certoformalismo.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 101: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Corretude de Insertion-Sort

Insertion-Sort(A, n)1 para j ← 2 ate n faca2 chave ← A[j ]3 ⊲ Insere A[j ] no subvetor ordenado A[1 . . . j − 1]4 i ← j − 15 enquanto i ≥ 1 e A[i ] > chave faca6 A[i + 1] ← A[i ]7 i ← i − 18 A[i + 1] ← chave

E obvio que o Insertion-Sort funciona! (Certo??)

Talvez, mas uma prova rigorosa deste fato exige um certoformalismo.

Como provar que Insertion-Sort esta correto?

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 102: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Invariante de laco

Definicao:

Um invariante de um laco e uma propriedade que vale no inıcio decada iteracao do laco e relaciona as variaveis do algoritmo a umaexecucao completa do laco.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 103: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Invariante de laco

Definicao:

Um invariante de um laco e uma propriedade que vale no inıcio decada iteracao do laco e relaciona as variaveis do algoritmo a umaexecucao completa do laco.

O uso de um ou mais invariantes de laco permite provar (eentender) a corretude de um algoritmo.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 104: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Invariante de laco

Definicao:

Um invariante de um laco e uma propriedade que vale no inıcio decada iteracao do laco e relaciona as variaveis do algoritmo a umaexecucao completa do laco.

O uso de um ou mais invariantes de laco permite provar (eentender) a corretude de um algoritmo.

Em geral, e mais difıcil descobrir um invariante apropriado doque mostrar sua validade se ele for dado de bandeja. . .

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 105: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Invariante de laco

Insertion-Sort(A, n)1 para j ← 2 ate n faca2 chave ← A[j ]3 ⊲ Insere A[j ] no subvetor ordenado A[1 . . . j − 1]4 i ← j − 15 enquanto i ≥ 1 e A[i ] > chave faca6 A[i + 1] ← A[i ]7 i ← i − 18 A[i + 1] ← chave

Invariante do laco da linha 1: (i1)

No comeco de cada iteracao do laco para das linhas 1–8, osubvetor A[1 . . . j − 1] e uma permutacao ordenada do subvetororiginal A[1 . . . j − 1].

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 106: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Invariante de laco e corretude de Insertion-Sort

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 107: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Invariante de laco e corretude de Insertion-Sort

Invariante do laco da linha 1: (i1)

No comeco de cada iteracao do laco para das linhas 1–8, osubvetor A[1 . . . j − 1] e uma permutacao ordenada do subvetororiginal A[1 . . . j − 1].

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 108: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Invariante de laco e corretude de Insertion-Sort

Invariante do laco da linha 1: (i1)

No comeco de cada iteracao do laco para das linhas 1–8, osubvetor A[1 . . . j − 1] e uma permutacao ordenada do subvetororiginal A[1 . . . j − 1].

Suponha que o invariante vale.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 109: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Invariante de laco e corretude de Insertion-Sort

Invariante do laco da linha 1: (i1)

No comeco de cada iteracao do laco para das linhas 1–8, osubvetor A[1 . . . j − 1] e uma permutacao ordenada do subvetororiginal A[1 . . . j − 1].

Suponha que o invariante vale.

Entao a corretude do algoritmo e “evidente”. Por que?

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 110: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Invariante de laco e corretude de Insertion-Sort

Invariante do laco da linha 1: (i1)

No comeco de cada iteracao do laco para das linhas 1–8, osubvetor A[1 . . . j − 1] e uma permutacao ordenada do subvetororiginal A[1 . . . j − 1].

Suponha que o invariante vale.

Entao a corretude do algoritmo e “evidente”. Por que?

No ınicio da ultima iteracao temos j= n + 1. Assim, doinvariante segue que o (sub)vetor A[1 . . . n] esta ordenado!

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 111: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Prova de invariante

A estrategia para mostrar a validade de um invariante e mostrar osseguintes dois fatos:

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 112: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Prova de invariante

A estrategia para mostrar a validade de um invariante e mostrar osseguintes dois fatos:

1 Inicializacao: Mostre que o invariante vale no inıcio daprimeira iteracao do laco.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 113: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Prova de invariante

A estrategia para mostrar a validade de um invariante e mostrar osseguintes dois fatos:

1 Inicializacao: Mostre que o invariante vale no inıcio daprimeira iteracao do laco.

2 Manutencao: Se o invariante vale no inıcio de uma iteracaoqualquer, entao ele vale no ınicio da proxima iteracao.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 114: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Prova de invariante

A estrategia para mostrar a validade de um invariante e mostrar osseguintes dois fatos:

1 Inicializacao: Mostre que o invariante vale no inıcio daprimeira iteracao do laco.

2 Manutencao: Se o invariante vale no inıcio de uma iteracaoqualquer, entao ele vale no ınicio da proxima iteracao.

Note que (1) e (2) implicam que o invariante vale no inıcio dequalquer iteracao do algoritmo.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 115: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Prova de invariante

A estrategia para mostrar a validade de um invariante e mostrar osseguintes dois fatos:

1 Inicializacao: Mostre que o invariante vale no inıcio daprimeira iteracao do laco.

2 Manutencao: Se o invariante vale no inıcio de uma iteracaoqualquer, entao ele vale no ınicio da proxima iteracao.

Note que (1) e (2) implicam que o invariante vale no inıcio dequalquer iteracao do algoritmo.

Isto e similar ao metodo de inducao matematica ou inducao finita.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 116: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Invariante de laco

Invariante do laco da linha 1: (i1)

No comeco de cada iteracao do laco para das linhas 1–8, osubvetor A[1 . . . j − 1] e uma permutacao ordenada do subvetororiginal A[1 . . . j − 1].

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 117: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Invariante de laco

Invariante do laco da linha 1: (i1)

No comeco de cada iteracao do laco para das linhas 1–8, osubvetor A[1 . . . j − 1] e uma permutacao ordenada do subvetororiginal A[1 . . . j − 1].

Inicializacao: no inıcio temos j = 2 e o invariante diz que A[1 . . . 1]e uma permutacao ordenada subvetor original A[1 . . . 1], o que eclaramente verdadeiro.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 118: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Invariante de laco

Invariante do laco da linha 1: (i1)

No comeco de cada iteracao do laco para das linhas 1–8, osubvetor A[1 . . . j − 1] e uma permutacao ordenada do subvetororiginal A[1 . . . j − 1].

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 119: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Invariante de laco

Invariante do laco da linha 1: (i1)

No comeco de cada iteracao do laco para das linhas 1–8, osubvetor A[1 . . . j − 1] e uma permutacao ordenada do subvetororiginal A[1 . . . j − 1].

Manutencao: suponha que o invariante vale em uma iteracaoqualquer.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 120: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Invariante de laco

Invariante do laco da linha 1: (i1)

No comeco de cada iteracao do laco para das linhas 1–8, osubvetor A[1 . . . j − 1] e uma permutacao ordenada do subvetororiginal A[1 . . . j − 1].

Manutencao: suponha que o invariante vale em uma iteracaoqualquer.

Lembre-se de como o algoritmo trabalha.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 121: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Invariante de laco

Insertion-Sort(A, n)1 para j ← 2 ate n faca2 chave ← A[j ]3 ⊲ Insere A[j ] no subvetor ordenado A[1 . . . j − 1]4 i ← j − 15 enquanto i ≥ 1 e A[i ] > chave faca6 A[i + 1] ← A[i ]7 i ← i − 18 A[i + 1] ← chave

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 122: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Invariante de laco

Insertion-Sort(A, n)1 para j ← 2 ate n faca2 chave ← A[j ]3 ⊲ Insere A[j ] no subvetor ordenado A[1 . . . j − 1]4 i ← j − 15 enquanto i ≥ 1 e A[i ] > chave faca6 A[i + 1] ← A[i ]7 i ← i − 18 A[i + 1] ← chave

Argumento informal: O algoritmo empurra os elementos maioresque a chave para seus lugares corretos e ela e colocada no espacovazio (posicao i + 1).

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 123: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Invariante de laco

Insertion-Sort(A, n)1 para j ← 2 ate n faca2 chave ← A[j ]3 ⊲ Insere A[j ] no subvetor ordenado A[1 . . . j − 1]4 i ← j − 15 enquanto i ≥ 1 e A[i ] > chave faca6 A[i + 1] ← A[i ]7 i ← i − 18 A[i + 1] ← chave

Argumento informal: O algoritmo empurra os elementos maioresque a chave para seus lugares corretos e ela e colocada no espacovazio (posicao i + 1).

Uma demonstracao mais formal deste fato exige invariantesauxiliares para o laco interno da linha 5.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 124: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Analise de complexidade

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 125: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Analise de complexidade

Em geral, nao basta saber que um dado algoritmo para.Se ele for muito lento, tera pouca utilidade.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 126: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Analise de complexidade

Em geral, nao basta saber que um dado algoritmo para.Se ele for muito lento, tera pouca utilidade.

Queremos projetar/desenvolver algoritmos eficientes (rapidos).

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 127: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Analise de complexidade

Em geral, nao basta saber que um dado algoritmo para.Se ele for muito lento, tera pouca utilidade.

Queremos projetar/desenvolver algoritmos eficientes (rapidos).

Mas o que seria uma boa medida de eficiencia de umalgoritmo?

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 128: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Analise de complexidade

Em geral, nao basta saber que um dado algoritmo para.Se ele for muito lento, tera pouca utilidade.

Queremos projetar/desenvolver algoritmos eficientes (rapidos).

Mas o que seria uma boa medida de eficiencia de umalgoritmo?

Nao estamos interessados em quem programou, em quelinguagem foi escrito e nem qual maquina foi usada.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 129: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Analise de complexidade

Em geral, nao basta saber que um dado algoritmo para.Se ele for muito lento, tera pouca utilidade.

Queremos projetar/desenvolver algoritmos eficientes (rapidos).

Mas o que seria uma boa medida de eficiencia de umalgoritmo?

Nao estamos interessados em quem programou, em quelinguagem foi escrito e nem qual maquina foi usada.

Queremos um criterio uniforme para comparar algoritmos.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 130: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Modelo Computacional

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 131: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Modelo Computacional

Uma possibilidade e definir um modelo computacional de umamaquina.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 132: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Modelo Computacional

Uma possibilidade e definir um modelo computacional de umamaquina.

O modelo computacional estabelece quais os recursosdisponıveis, as instrucoes basicas e quanto elas custam(= tempo).

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 133: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Modelo Computacional

Uma possibilidade e definir um modelo computacional de umamaquina.

O modelo computacional estabelece quais os recursosdisponıveis, as instrucoes basicas e quanto elas custam(= tempo).

Dentre desse modelo, podemos estimar atraves de uma analisematematica o tempo que um algoritmo gasta em funcao dotamanho da entrada(= analise de complexidade).

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 134: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Modelo Computacional

Uma possibilidade e definir um modelo computacional de umamaquina.

O modelo computacional estabelece quais os recursosdisponıveis, as instrucoes basicas e quanto elas custam(= tempo).

Dentre desse modelo, podemos estimar atraves de uma analisematematica o tempo que um algoritmo gasta em funcao dotamanho da entrada(= analise de complexidade).

A analise de complexidade depende sempre do modelocomputacional adotado.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 135: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Maquinas RAM

Salvo mencionado o contrario, usaremos o Modelo Abstrato RAM(Random Access Machine):

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 136: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Maquinas RAM

Salvo mencionado o contrario, usaremos o Modelo Abstrato RAM(Random Access Machine):

simula maquinas convencionais (de verdade),

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 137: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Maquinas RAM

Salvo mencionado o contrario, usaremos o Modelo Abstrato RAM(Random Access Machine):

simula maquinas convencionais (de verdade),

possui um unico processador que executa instrucoessequencialmente,

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 138: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Maquinas RAM

Salvo mencionado o contrario, usaremos o Modelo Abstrato RAM(Random Access Machine):

simula maquinas convencionais (de verdade),

possui um unico processador que executa instrucoessequencialmente,

tipos basicos sao numeros inteiros e reais,

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 139: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Maquinas RAM

Salvo mencionado o contrario, usaremos o Modelo Abstrato RAM(Random Access Machine):

simula maquinas convencionais (de verdade),

possui um unico processador que executa instrucoessequencialmente,

tipos basicos sao numeros inteiros e reais,

ha um limite no tamanho de cada palavra de memoria: se aentrada tem “tamanho” n, entao cada inteiro e representadopor c log n bits para alguma constante c ≥ 1. (Isto garanteque e possıvel guardar o valor de n e indexar os elementosindividualmente.)

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 140: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Maquinas RAM

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 141: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Maquinas RAM

executa operacoes aritmeticas (soma, subtracao,multiplicacao, divisao, piso, teto), comparacoes,movimentacao de dados de tipo basico e fluxo de controle(teste if/else, chamada e retorno de rotinas) em tempoconstante,

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 142: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Maquinas RAM

executa operacoes aritmeticas (soma, subtracao,multiplicacao, divisao, piso, teto), comparacoes,movimentacao de dados de tipo basico e fluxo de controle(teste if/else, chamada e retorno de rotinas) em tempoconstante,

Certas operacoes caem em uma zona cinza, por exemplo,exponenciacao,

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 143: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Maquinas RAM

executa operacoes aritmeticas (soma, subtracao,multiplicacao, divisao, piso, teto), comparacoes,movimentacao de dados de tipo basico e fluxo de controle(teste if/else, chamada e retorno de rotinas) em tempoconstante,

Certas operacoes caem em uma zona cinza, por exemplo,exponenciacao,

veja maiores detalhes do modelo RAM no CLRS.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 144: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Tamanho da entrada

Problema: Primalidade

Entrada: inteiro n

Tamanho: ⌊log2 n⌋+ 1 ≈ log2 n

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 145: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Tamanho da entrada

Problema: Primalidade

Entrada: inteiro n

Tamanho: ⌊log2 n⌋+ 1 ≈ log2 n

Problema: Ordenacao

Entrada: vetor A[1 . . . n]

Tamanho: n lg2 U onde U e o maior numero em A[1 . . . n]Tamanho: n (e usual usar isto no problema de ordenacao)

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 146: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Tamanho da entrada

Problema: Primalidade

Entrada: inteiro n

Tamanho: ⌊log2 n⌋+ 1 ≈ log2 n

Problema: Ordenacao

Entrada: vetor A[1 . . . n]

Tamanho: n lg2 U onde U e o maior numero em A[1 . . . n]Tamanho: n (e usual usar isto no problema de ordenacao)

Informalmente, o tamanho da entrada e o numero de bitsnecessario para especificar a entrada.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 147: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Medida de complexidade e eficiencia de algoritmos

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 148: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Medida de complexidade e eficiencia de algoritmos

A complexidade de tempo (= eficiencia) de um algoritmo e onumero de instrucoes basicas que ele executa em funcao dotamanho da entrada.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 149: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Medida de complexidade e eficiencia de algoritmos

A complexidade de tempo (= eficiencia) de um algoritmo e onumero de instrucoes basicas que ele executa em funcao dotamanho da entrada.

Adota-se uma “atitude pessimista” e faz-se uma analise depior caso.Determina-se o tempo maximo necessario para resolver umainstancia de um certo tamanho.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 150: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Medida de complexidade e eficiencia de algoritmos

A complexidade de tempo (= eficiencia) de um algoritmo e onumero de instrucoes basicas que ele executa em funcao dotamanho da entrada.

Adota-se uma “atitude pessimista” e faz-se uma analise depior caso.Determina-se o tempo maximo necessario para resolver umainstancia de um certo tamanho.

Alem disso, a analise concentra-se no comportamento doalgoritmo para entradas de tamanho GRANDE = analiseassintotica.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 151: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Analise do InsertionSort

Insertion-Sort(A, n) Custo # execucoes

1 para j ← 2 ate n faca c1 ?2 chave ← A[j ] c2 ?3 ⊲ Insere A[j ] em A[1 . . . j − 1] 0 ?4 i ← j − 1 c4 ?5 enquanto i ≥ 1 e A[i ] > chave faca c5 ?6 A[i + 1] ← A[i ] c6 ?7 i ← i − 1 c7 ?8 A[i + 1] ← chave c8 ?

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 152: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Analise do InsertionSort

Insertion-Sort(A, n) Custo # execucoes

1 para j ← 2 ate n faca c1 ?2 chave ← A[j ] c2 ?3 ⊲ Insere A[j ] em A[1 . . . j − 1] 0 ?4 i ← j − 1 c4 ?5 enquanto i ≥ 1 e A[i ] > chave faca c5 ?6 A[i + 1] ← A[i ] c6 ?7 i ← i − 1 c7 ?8 A[i + 1] ← chave c8 ?

O valor ck representa o custo (tempo) de cada execucao da linha k .

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 153: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Analise do InsertionSort

Insertion-Sort(A, n) Custo # execucoes

1 para j ← 2 ate n faca c1 ?2 chave ← A[j ] c2 ?3 ⊲ Insere A[j ] em A[1 . . . j − 1] 0 ?4 i ← j − 1 c4 ?5 enquanto i ≥ 1 e A[i ] > chave faca c5 ?6 A[i + 1] ← A[i ] c6 ?7 i ← i − 1 c7 ?8 A[i + 1] ← chave c8 ?

O valor ck representa o custo (tempo) de cada execucao da linha k .

Denote por tj o numero de vezes que o teste no laco enquantona linha 5 e feito para aquele valor de j .

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 154: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Analise do InsertionSort

Insertion-Sort(A, n) Custo # execucoes

1 para j ← 2 ate n faca c1 n2 chave ← A[j ] c2 n − 13 ⊲ Insere A[j ] em A[1 . . . j − 1] 0 n − 14 i ← j − 1 c4 n − 15 enquanto i ≥ 1 e A[i ] > chave faca c5

∑nj=2 tj

6 A[i + 1] ← A[i ] c6∑n

j=2(tj − 1)

7 i ← i − 1 c7∑n

j=2(tj − 1)

8 A[i + 1] ← chave c8 n − 1

O valor ck representa o custo (tempo) de cada execucao da linha k .

Denote por tj o numero de vezes que o teste no laco enquantona linha 5 e feito para aquele valor de j .

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 155: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Tempo de execucao total

Logo, o tempo total de execucao T (n) de Insertion-Sorte asoma dos tempos de execucao de cada uma das linhas doalgoritmo, ou seja:

T (n) = c1n + c2(n − 1) + c4(n − 1) + c5∑n

j=2 tj+ c6

∑nj=2(tj − 1) + c7

∑nj=2(tj − 1).

+ c8(n − 1).

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 156: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Tempo de execucao total

Logo, o tempo total de execucao T (n) de Insertion-Sorte asoma dos tempos de execucao de cada uma das linhas doalgoritmo, ou seja:

T (n) = c1n + c2(n − 1) + c4(n − 1) + c5∑n

j=2 tj+ c6

∑nj=2(tj − 1) + c7

∑nj=2(tj − 1).

+ c8(n − 1).

Como se ve, entradas de tamanho igual (i.e., mesmo valor de n),podem apresentar tempos de execucao diferentes ja que o valor deT (n) depende dos valores dos tj .

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 157: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Melhor caso: tj = 1

Insertion-Sort(A, n) Custo # execucoes

1 para j ← 2 ate n faca c1 n2 chave ← A[j ] c2 n − 13 ⊲ Insere A[j ] em A[1 . . . j − 1] 0 n − 14 i ← j − 1 c4 n − 15 enquanto i ≥ 1 e A[i ] > chave faca c5

∑nj=2 tj

6 A[i + 1] ← A[i ] c6∑n

j=2(tj − 1)

7 i ← i − 1 c7∑n

j=2(tj − 1)

8 A[i + 1] ← chave c8 n − 1

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 158: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Melhor caso: tj = 1

Insertion-Sort(A, n) Custo # execucoes

1 para j ← 2 ate n faca c1 n2 chave ← A[j ] c2 n − 13 ⊲ Insere A[j ] em A[1 . . . j − 1] 0 n − 14 i ← j − 1 c4 n − 15 enquanto i ≥ 1 e A[i ] > chave faca c5

∑nj=2 tj

6 A[i + 1] ← A[i ] c6∑n

j=2(tj − 1)

7 i ← i − 1 c7∑n

j=2(tj − 1)

8 A[i + 1] ← chave c8 n − 1

O melhor caso de Insertion-Sort ocorre quando o vetor A jaesta ordenado. Para j = 2, . . . , n temos A[i ] ≤ chave na linha 5quando i = j − 1. Assim, tj = 1 para j = 2, . . . , n.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 159: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Melhor caso: tj = 1

Insertion-Sort(A, n) Custo # execucoes

1 para j ← 2 ate n faca c1 n2 chave ← A[j ] c2 n − 13 ⊲ Insere A[j ] em A[1 . . . j − 1] 0 n − 14 i ← j − 1 c4 n − 15 enquanto i ≥ 1 e A[i ] > chave faca c5 n − 16 A[i + 1] ← A[i ] c6 07 i ← i − 1 c7 08 A[i + 1] ← chave c8 n − 1

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 160: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Melhor caso: tj = 1

Insertion-Sort(A, n) Custo # execucoes

1 para j ← 2 ate n faca c1 n2 chave ← A[j ] c2 n − 13 ⊲ Insere A[j ] em A[1 . . . j − 1] 0 n − 14 i ← j − 1 c4 n − 15 enquanto i ≥ 1 e A[i ] > chave faca c5 n − 16 A[i + 1] ← A[i ] c6 07 i ← i − 1 c7 08 A[i + 1] ← chave c8 n − 1

Logo,

T (n) = c1n + c2(n − 1) + c4(n − 1) + c5(n − 1) + c8(n − 1)= (c1 + c2 + c4 + c5 + c8)n − (c2 + c4 + c5 + c8).

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 161: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Melhor caso: tj = 1

Insertion-Sort(A, n) Custo # execucoes

1 para j ← 2 ate n faca c1 n2 chave ← A[j ] c2 n − 13 ⊲ Insere A[j ] em A[1 . . . j − 1] 0 n − 14 i ← j − 1 c4 n − 15 enquanto i ≥ 1 e A[i ] > chave faca c5 n − 16 A[i + 1] ← A[i ] c6 07 i ← i − 1 c7 08 A[i + 1] ← chave c8 n − 1

Logo,

T (n) = c1n + c2(n − 1) + c4(n − 1) + c5(n − 1) + c8(n − 1)= (c1 + c2 + c4 + c5 + c8)n − (c2 + c4 + c5 + c8).

Este tempo de execucao e da forma an + b para constantes a e bque dependem apenas dos ci .

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 162: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Melhor caso: tj = 1

Insertion-Sort(A, n) Custo # execucoes

1 para j ← 2 ate n faca c1 n2 chave ← A[j ] c2 n − 13 ⊲ Insere A[j ] em A[1 . . . j − 1] 0 n − 14 i ← j − 1 c4 n − 15 enquanto i ≥ 1 e A[i ] > chave faca c5 n − 16 A[i + 1] ← A[i ] c6 07 i ← i − 1 c7 08 A[i + 1] ← chave c8 n − 1

Logo,

T (n) = c1n + c2(n − 1) + c4(n − 1) + c5(n − 1) + c8(n − 1)= (c1 + c2 + c4 + c5 + c8)n − (c2 + c4 + c5 + c8).

Este tempo de execucao e da forma an + b para constantes a e bque dependem apenas dos ci .

Portanto, no melhor caso, o tempo de execucao e uma funcaolinear no tamanho da entrada.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 163: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Pior caso: tj = j

Insertion-Sort(A, n) Custo # execucoes

1 para j ← 2 ate n faca c1 n2 chave ← A[j ] c2 n − 13 ⊲ Insere A[j ] em A[1 . . . j − 1] 0 n − 14 i ← j − 1 c4 n − 15 enquanto i ≥ 1 e A[i ] > chave faca c5

∑nj=2 tj

6 A[i + 1] ← A[i ] c6∑n

j=2(tj − 1)

7 i ← i − 1 c7∑n

j=2(tj − 1)

8 A[i + 1] ← chave c8 n − 1

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 164: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Pior caso: tj = j

Insertion-Sort(A, n) Custo # execucoes

1 para j ← 2 ate n faca c1 n2 chave ← A[j ] c2 n − 13 ⊲ Insere A[j ] em A[1 . . . j − 1] 0 n − 14 i ← j − 1 c4 n − 15 enquanto i ≥ 1 e A[i ] > chave faca c5

∑nj=2 tj

6 A[i + 1] ← A[i ] c6∑n

j=2(tj − 1)

7 i ← i − 1 c7∑n

j=2(tj − 1)

8 A[i + 1] ← chave c8 n − 1

Quando o vetor A esta em ordem decrescente, ocorre o pior casopara Insertion-Sort. Para inserir a chave em A[1 . . . j − 1],temos que compara-la com todos os elementos neste subvetor.Assim, tj = j para j = 2, . . . , n.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 165: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Pior caso: tj = j

Insertion-Sort(A, n) Custo # execucoes

1 para j ← 2 ate n faca c1 n2 chave ← A[j ] c2 n − 13 ⊲ Insere A[j ] em A[1 . . . j − 1] 0 n − 14 i ← j − 1 c4 n − 15 enquanto i ≥ 1 e A[i ] > chave faca c5

∑nj=2 j

6 A[i + 1] ← A[i ] c6∑n

j=2(j − 1)

7 i ← i − 1 c7∑n

j=2(j − 1)

8 A[i + 1] ← chave c8 n − 1

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 166: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Pior caso: tj = j

Insertion-Sort(A, n) Custo # execucoes

1 para j ← 2 ate n faca c1 n2 chave ← A[j ] c2 n − 13 ⊲ Insere A[j ] em A[1 . . . j − 1] 0 n − 14 i ← j − 1 c4 n − 15 enquanto i ≥ 1 e A[i ] > chave faca c5

∑nj=2 j

6 A[i + 1] ← A[i ] c6∑n

j=2(j − 1)

7 i ← i − 1 c7∑n

j=2(j − 1)

8 A[i + 1] ← chave c8 n − 1

Lembre-se que:

n∑

j=2

j =n(n + 1)

2− 1 e

n∑

j=2

(j − 1) =n(n − 1)

2.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 167: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Pior caso: tj = j

Insertion-Sort(A, n) Custo # execucoes

1 para j ← 2 ate n faca c1 n2 chave ← A[j ] c2 n − 13 ⊲ Insere A[j ] em A[1 . . . j − 1] 0 n − 14 i ← j − 1 c4 n − 15 enquanto i ≥ 1 e A[i ] > chave faca c5 n(n + 1)/2− 16 A[i + 1] ← A[i ] c6 n(n − 1)/27 i ← i − 1 c7 n(n − 1)/28 A[i + 1] ← chave c8 n − 1

Lembre-se que:

n∑

j=2

j =n(n + 1)

2− 1 e

n∑

j=2

(j − 1) =n(n − 1)

2.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 168: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Pior caso: tj = j

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 169: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Pior caso: tj = j

Logo,

T (n) = c1n + c2(n − 1) + c4(n − 1) + c5

(

n(n + 1)

2− 1

)

+ c6

(

n(n − 1)

2

)

+ c7

(

n(n − 1)

2

)

+ c8(n − 1)

=(c52

+c62

+c72

)

n2 +(

c1 + c2 + c4 +c52

−c62

−c72

+ c8

)

n

− (c2 + c4 + c5 + c8).

Este tempo de execucao e da forma an2 + bn + c onde a, b, c saoconstantes que dependem apenas dos ci .

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 170: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Pior caso: tj = j

Logo,

T (n) = c1n + c2(n − 1) + c4(n − 1) + c5

(

n(n + 1)

2− 1

)

+ c6

(

n(n − 1)

2

)

+ c7

(

n(n − 1)

2

)

+ c8(n − 1)

=(c52

+c62

+c72

)

n2 +(

c1 + c2 + c4 +c52

−c62

−c72

+ c8

)

n

− (c2 + c4 + c5 + c8).

Este tempo de execucao e da forma an2 + bn + c onde a, b, c saoconstantes que dependem apenas dos ci .

Portanto, no pior caso, o tempo de execucao e uma funcaoquadratica no tamanho da entrada.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 171: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Notacao assintotica

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 172: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Notacao assintotica

Ao analisarmos a complexidade de tempo (de pior caso) deInsertion-Sort, vimos que as constantes nao saoimportantes para determinar a sua taxa de crescimento.Ela e uma funcao quadratica an2 + bn + c para constantesa, b, c .

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 173: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Notacao assintotica

Ao analisarmos a complexidade de tempo (de pior caso) deInsertion-Sort, vimos que as constantes nao saoimportantes para determinar a sua taxa de crescimento.Ela e uma funcao quadratica an2 + bn + c para constantesa, b, c .

Uma funcao deste tipo e limitada superiormente por umafuncao quadratica dn2 para alguma constante d . Usandonotacao assintotica, dizemos que o algoritmoInsertion-Sort tem complexidade de tempo O(n2).

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 174: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Notacao assintotica

Ao analisarmos a complexidade de tempo (de pior caso) deInsertion-Sort, vimos que as constantes nao saoimportantes para determinar a sua taxa de crescimento.Ela e uma funcao quadratica an2 + bn + c para constantesa, b, c .

Uma funcao deste tipo e limitada superiormente por umafuncao quadratica dn2 para alguma constante d . Usandonotacao assintotica, dizemos que o algoritmoInsertion-Sort tem complexidade de tempo O(n2).

Mais adiante no curso discutiremos em detalhes o uso danotacao assintotica em analise de algoritmos.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 175: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Medida de complexidade e eficiencia de algoritmos

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 176: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Medida de complexidade e eficiencia de algoritmos

Um algoritmo e chamado eficiente se a funcao que mede suacomplexidade de tempo e limitada por um polinomio notamanho da entrada.Por exemplo: n, 3n − 7, 4n2, 143n2 − 4n + 2, n5.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 177: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Medida de complexidade e eficiencia de algoritmos

Um algoritmo e chamado eficiente se a funcao que mede suacomplexidade de tempo e limitada por um polinomio notamanho da entrada.Por exemplo: n, 3n − 7, 4n2, 143n2 − 4n + 2, n5.

Mas por que polinomios?

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 178: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Medida de complexidade e eficiencia de algoritmos

Um algoritmo e chamado eficiente se a funcao que mede suacomplexidade de tempo e limitada por um polinomio notamanho da entrada.Por exemplo: n, 3n − 7, 4n2, 143n2 − 4n + 2, n5.

Mas por que polinomios?

(Polinomios sao funcoes bem “comportadas”).

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 179: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Medida de complexidade e eficiencia de algoritmos

Um algoritmo e chamado eficiente se a funcao que mede suacomplexidade de tempo e limitada por um polinomio notamanho da entrada.Por exemplo: n, 3n − 7, 4n2, 143n2 − 4n + 2, n5.

Mas por que polinomios?

(Polinomios sao funcoes bem “comportadas”).

Assim, Insertion-Sort e um algoritmo eficiente nestesentido.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 180: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Exemplo: teste de primalidade ingenuo

NaivePrimalityCheck(n)1 se n = 2 devolva E primo.2 para i ← 2 ate n − 1 faca3 se n mod i = 04 entao devolva Nao e primo.5 devolva E primo.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 181: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Exemplo: teste de primalidade ingenuo

NaivePrimalityCheck(n)1 se n = 2 devolva E primo.2 para i ← 2 ate n − 1 faca3 se n mod i = 04 entao devolva Nao e primo.5 devolva E primo.

Complexidade: no pior caso sao executadas n − 2 iteracoes.A complexidade e 1 + (n − 2) + 1 = n.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 182: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Exemplo: teste de primalidade ingenuo

NaivePrimalityCheck(n)1 se n = 2 devolva E primo.2 para i ← 2 ate n − 1 faca3 se n mod i = 04 entao devolva Nao e primo.5 devolva E primo.

Complexidade: no pior caso sao executadas n − 2 iteracoes.A complexidade e 1 + (n − 2) + 1 = n.

Como o tamanho da entrada e lg n e n = 2lg n, o algoritmo NAO epolinomial no tamanho da entrada.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 183: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Vantagens do metodo de analise proposto

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 184: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Vantagens do metodo de analise proposto

O modelo RAM e robusto e permite prever o comportamentode um algoritmo para instancias GRANDES.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 185: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Vantagens do metodo de analise proposto

O modelo RAM e robusto e permite prever o comportamentode um algoritmo para instancias GRANDES.

O modelo permite comparar algoritmos que resolvem ummesmo problema.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 186: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Vantagens do metodo de analise proposto

O modelo RAM e robusto e permite prever o comportamentode um algoritmo para instancias GRANDES.

O modelo permite comparar algoritmos que resolvem ummesmo problema.

A analise e mais robusta em relacao as evolucoes tecnologicas.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 187: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Desvantagens do metodo de analise proposto

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 188: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Desvantagens do metodo de analise proposto

Fornece um limite de complexidade pessimista sempreconsiderando o pior caso.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 189: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Desvantagens do metodo de analise proposto

Fornece um limite de complexidade pessimista sempreconsiderando o pior caso.

Em uma aplicacao real, nem todas as instancias ocorrem coma mesma frequencia e e possıvel que as “instancias ruins”ocorram raramente.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 190: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Desvantagens do metodo de analise proposto

Fornece um limite de complexidade pessimista sempreconsiderando o pior caso.

Em uma aplicacao real, nem todas as instancias ocorrem coma mesma frequencia e e possıvel que as “instancias ruins”ocorram raramente.

Nao fornece nenhuma informacao sobre o comportamento doalgoritmo no caso medio.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I

Page 191: MO417 Complexidade de Algoritmos Ilee/mo417/introducao.pdf · MO417—ComplexidadedeAlgoritmosI CidC.deSouza CˆandidaN.daSilva OrlandoLee 14deagostode2018 CidC.deSouza,CˆandidaN.daSilva,OrlandoLee

Desvantagens do metodo de analise proposto

Fornece um limite de complexidade pessimista sempreconsiderando o pior caso.

Em uma aplicacao real, nem todas as instancias ocorrem coma mesma frequencia e e possıvel que as “instancias ruins”ocorram raramente.

Nao fornece nenhuma informacao sobre o comportamento doalgoritmo no caso medio.

A analise de complexidade de algoritmos no caso medio ebastante difıcil, principalmente, porque muitas vezes nao eclaro o que e o “caso medio”.

Cid C. de Souza, Candida N. da Silva, Orlando Lee MO417 — Complexidade de Algoritmos I