pcc104 - projeto e análise de algoritmos...teoria da complexidade computacional introdução...

41
PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 14 de novembro de 2019 Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 1 / 41

Upload: others

Post on 01-Aug-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

PCC104 - Projeto e Análise de Algoritmos

Marco Antonio M. Carvalho

Departamento de ComputaçãoInstituto de Ciências Exatas e Biológicas

Universidade Federal de Ouro Preto

14 de novembro de 2019

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 1 / 41

Page 2: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Avisos

Site da disciplina:I http://www.decom.ufop.br/marco/

Lista de e-mails:I [email protected]

Para solicitar acesso:I http://groups.google.com/group/pcc104

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 2 / 41

Page 3: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Na aula de hoje

1 Teoria da Complexidade ComputacionalMáquinas de TuringClasse PClasse NPP e NP

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 3 / 41

Page 4: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Avisos

Aviso LegalEste material é uma introdução à complexidade computacional e àNP-Completude.

Não há a intenção de ser completo tecnicamente e historicamente.

Este tópico pode estudado com profundidade na disciplina Fundamentos daTeoria da Computação.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 4 / 41

Page 5: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Teoria da Complexidade Computacional

IntroduçãoQuase todos algoritmos vistos até aqui possuem tempo polinomial: ementradas de tamanho n, o tempo de execução no pior caso é O(nk), paraalguma constante k.

Podemos pensar, intuitivamente, que todos os problemas podem serresolvidos em tempo polinomial.

Entretanto, a resposta é não. Há problemas que não podem ser resolvidospelo computador, e outros que podem, porém, não em tempo O(nk), paraalguma constante k.

Geralmente, designamos os problemas resolvíveis em tempo polinomialcomo tratáveis, ou fáceis.

Por outro lado, designamos os problemas resolvíveis apenas em temposupra polinomial como intratáveis, ou difíceis.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 5 / 41

Page 6: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Teoria da Complexidade Computacional

IntroduçãoUm problema é considerado indecidível caso não seja possível criar umalgoritmo qualquer para sua solução, e. g., o Problema da Parada:

“Dadas uma descrição de um programa e uma entrada finita, decida se oprograma termina de rodar ou rodará indefinidamente, dada essa entrada.”

Um problema é considerado intratável caso não haja algoritmo em tempopolinomial que o resolva deterministicamente.

Veremos alguns exemplos mais à frente.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 6 / 41

Page 7: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Teoria da Complexidade Computacional

IntroduçãoEm geral, consideramos que os problemas resolvíveis em tempo polinomialsão tratáveis, mas por razões filosóficas, e não matemáticas:I Embora seja razoável considerar intratável um problema que exige

tempo O(n100), um número muito pequeno de problemas práticosexigem tempo de ordem tão alta;

I Um problema que pode ser resolvido em tempo polinomial em ummodelo computacional pode também ser resolvido em tempopolinomial, para muitos modelos razoáveis de computação;

I A classe de problemas resolvíveis em tempo polinomial tempropriedades de fechamento interessantes, já que polinômios sãofechados por adição, multiplicação e composição.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 7 / 41

Page 8: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Teoria da Complexidade Computacional

IntroduçãoUma classe importante de problemas, denominada NP-completo, possuistatus desconhecido.

Não se desenvolveu nenhum algoritmo de tempo polinomial para nenhumproblema desta classe, porém, não se provou também a impossibilidade detal algoritmo existir – eis a famosa questão P vs. NP.

Vários problemas NP-completos são interessantes porque se parecem muitocom problemas fáceis:I Caminho mais curto vs. Caminho mais longo;I Ciclo Euleriano vs. Ciclo Hamiltoniano;I 2-SAT vs. 3-SAT.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 8 / 41

Page 9: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Teoria da Complexidade Computacional

Computabilidade e Teoria da Complexidade ComputacionalA Computabilidade e a Teoria da Complexidade Computacional estudam oslimites da computação:I Quais problemas jamais poderão ser resolvidos por um computador,

independente da sua velocidade ou memória?I Quais problemas podem ser resolvidos por um computador, mas

requerem um período tão extenso de tempo para completar a pontode tornar a solução impraticável?

I Em que situações pode ser mais difícil resolver um problema do queverificar cada uma das soluções manualmente?

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 9 / 41

Page 10: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Recapitulando...

Problema de DecisãoTipo de problema computacional em que a resposta para cada instância ésim ou não:

“Dadas uma lista de cidades e as distâncias entre todas, há uma rota quevisite todas as cidades e retorne à cidade original com distância total menordo que 500 km?”

Problema de OtimizaçãoTipo de problema computacional em que é necessário determinar a melhorsolução possível entre todas as soluções viáveis.

“Dadas uma lista de cidades e as distâncias entre todas, determine a menorrota que visite todas as cidades e retorne à cidade original.”

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 10 / 41

Page 11: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Teoria da Complexidade Computacional

Problemas de Decisão e OtimizaçãoGeralmente, os problemas de decisão não são mais difíceis que osproblemas de otimização.

Se pudermos caracterizar o problema de decisão como difícil, tambémestaremos caracterizando o problema de otimização relacionado comodifícil.

NP-CompletudeA teoria da NP-Completude, por conveniência, se aplica a problemas dedecisão.

A razão pela qual nos concentraremos nos problemas de decisão é apropriedade natural de codificação por linguagens formais.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 11 / 41

Page 12: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Teoria da Complexidade Computacional

CodificaçõesPara um programa de computador resolver um problema abstrato, temosde representar as instâncias de um problema de modo que o programaentenda.

Uma codificação consiste em um mapeamento de objetos abstratos paracadeias, por exemplo, binárias.

Dizemos que um algoritmo resolve um problem em tempo O(T (n)) se,dada uma instância i de comprimento n = |i|, o algoritmo gerar a soluçãoem tempo máximo T (n).

Utilizando o conceito de codificação, podemos criar uma codificação maisgeral e independente para problemas, denominadas linguagens formais.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 12 / 41

Page 13: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Teoria da Complexidade Computacional

Linguagens e Problemas de DecisãoComo mencionado, o foco em problemas de decisão permite utilizar osbenefícios da teoria das linguagens formais.

Os conceitos são os mesmos da linguística, que define uma linguagemformal como um conjunto de cadeias de caracteres com um conjunto deregras específicas.

LinguagensPara um conjunto finito de símbolos (ou alfabeto) Σ, denotamos por Σ* oconjunto de todas as cadeias finitas de símbolos de Σ.

Por exemplo, para Σ = {0, 1}, temos que Σ* é composto por ∅, 0, 1, 00,11, e todas as cadeias finitas de 0s e 1s.

Um subconjunto L de Σ* é chamado de linguagem sobre o alfabeto Σ.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 13 / 41

Page 14: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Teoria da Complexidade Computacional

Aceitação e RejeiçãoDizemos que um algoritmo A aceita uma cadeia x ∈ Σ∗ se dada a entradax, a saída do algoritmo é A(x) = 1.

O mesmo algoritmo A rejeita uma cadeia x se A(x) = 0.

A linguagem aceita por um algoritmo A é o conjunto de cadeiasL = {x ∈ {0, 1}∗ : A(x) = 1}.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 14 / 41

Page 15: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Teoria da Complexidade Computacional

DecisãoAinda que a linguagem L seja aceita por um algoritmo A, o algoritmo nãonecessariamente rejeitará uma cadeia x /∈ L dada como entrada.

Por exemplo, o algoritmo pode simplesmente entrar em loop infinito.

Uma linguagem L é decidida por um algoritmo A se toda cadeia em L éaceita por A e toda cadeia não pertencente a L é rejeitada por A.

Uma linguagem L é aceita em tempo polinomial por um algoritmo A se foraceita por A propriamente e se houver uma constante k tal que, paraqualquer cadeia x ∈ L de comprimento n, A aceita x em tempo O(nk).

Uma linguagem L é decidida em tempo polinomial por um algoritmo A sehouver uma constante k tal que, para qualquer cadeia x ∈ Σ∗ decomprimento n, A decide corretamente se x ∈ L em tempo O(nk).

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 15 / 41

Page 16: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Máquinas de Turing

Alan Mathison TuringI Matemático, lógico e criptoanalista inglês;I Participação importante na II Guerra Mundial;I Pai da Ciência da Computação

I Dedicou a vida à teoria da computabilidade;I Formalizou os conceitos de algoritmo e

computabilidade;I Aos 24 anos (1936), criou a Máquina de

Turing;I Parte de sua vida foi retratada no filme

Breaking the Code (1996) e no filme TheImitation Game (2014).

I Hoje o Prêmio Turing equivale ao Nobel daComputação.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 16 / 41

Page 17: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Máquinas de Turing

IntroduçãoA noção de algoritmos pode ser formalizada utilizando uma máquinauniversal chamada Máquina de Turing Determinística:I Funciona como computadores elementares, emulando a parte lógica;I Foi idealizada muitos anos antes dos computadores digitais;I O determinismo vem do fato de podermos predizer seu

comportamento;I Opera sobre linguagens.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 17 / 41

Page 18: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Máquinas de Turing

DefiniçãoUma máquina de Turing é composta por:I Uma fita infinita nos dois sentidos, dividida em células contíguas com

os dados de entrada, um símbolo por célula;I Um cabeçote de leitura e escrita na fita;I Um registrador de estados, que indica o estado atual da máquina;I Uma função de transição, que dados o símbolo lido na fita e o

estado atual, indica o que deve ser escrito, em qual direção o cabeçotedeve se mover e qual será seu novo estado.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 18 / 41

Page 19: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Máquinas de Turing

Implementação de uma máquina de Turing.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 19 / 41

Page 20: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Máquinas de Turing

Implementação de uma máquina de Turing.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 20 / 41

Page 21: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Máquinas de Turing

DefiniçãoUm programa para uma máquina de Turing especifica:

I Um conjunto finito Γ de símbolos da fita, incluindo os símbolos de Σ eo símbolo especial “em branco” b (ou �);

I Um conjunto finito Q de estados, incluindo o estado inicial q0 eestados finais qs e qn;

I Uma função de transição δ que, a partir do estado atual e o símbololido na fita, determina qual é o estado seguinte, qual símbolo deve serescrito na fita e em qual direção o cabeçote deve se movimentar:

δ : (Q− {qs, qn} × Γ→ Q× Γ× {−1,+1})

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 21 / 41

Page 22: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Máquinas de Turing

ExemploSuponhamos δ(q, s) = (q′, s′,∆).

No estado q, ao ler o símbolo s, a máquina de Turing vai para o estado q′,escreve s′ no lugar de s e se movimenta para a direita ou esquerda,dependendo do valor de ∆.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 22 / 41

Page 23: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Máquinas de Turing

DefiniçãoDada uma cadeia de símbolos de entrada, com início na célula número 1:I A partir do estado inicial, a execução é passo-a-passo:

I Se um estado final foi atingido, a computação terminou;I Caso contrário, existe algum símbolo a ser lido na fita;I Lido um símbolo, a função de transição informa, de acordo com o

estado atual, o que deve ser escrito, em qual posição o cabeçote devese mover e qual será seu novo estado.

Máquinas de Turing também podem ser representadas por diagramas deestados, em que todas as informações estão contidas.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 23 / 41

Page 24: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Máquinas de Turing

Exemplo em que Γ = {0, 1, b}, Σ = {0, 1} e Q = {q0, q1, q2, q3, qs, qn}.Compute x = 10100 e x = 111.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 24 / 41

Page 25: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Máquinas de Turing

Diagrama de estados para a tabela de transições anterior.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 25 / 41

Page 26: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Máquinas de Turing

Diagrama de estados e tabela de transições.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 26 / 41

Page 27: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Máquinas de Turing

DefiniçãoDizemos que um programa M com alfabeto Σ aceita x pertencente a Σ*se e somente se a computação termina no estado terminal (estado qs)quando a entrada é x.

A linguagem LM reconhecida pelo programa M é definida por todas ascadeias de símbolos x pertencentes a Σ* tal que M aceita x.

M não aceita todas as cadeias em Σ*, apenas aquelas pertencentes a LM

– as demais ou param no estado qn ou não param.

A correspondência entre aceitar uma linguagem e resolver problemas dedecisão é direta.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 27 / 41

Page 28: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Máquinas de Turing

AplicaçõesUma máquina de Turing possui basicamente três aplicações gerais:

1 Reconhecer linguagens;2 Calcular funções;3 Processar problemas de decisão.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 28 / 41

Page 29: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Máquinas de Turing

Máquina de Turing que decide se um número representado na base bináriaé par ou ímpar.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 29 / 41

Page 30: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Máquinas de Turing

Máquina de Turing que reconhece wwr | w é uma palavra de {a, b}+.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 30 / 41

Page 31: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Determinismo e Não Determinismo

DefiniçõesEm um algoritmo determinístico, podemos predizer o seu comportamento:para as mesmas entradas de um problema, teremos sempre as mesmassaídas.

Em um algoritmo não determinístico, existe um “adivinho” (ou “oráculo”):se existir uma solução, o algoritmo não determinístico simplesmente a“adivinha”.

Algoritmos não determinísticos também podem ser polinomiais no tamanhoda entrada, se a “adivinhação” levar tempo polinomial.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 31 / 41

Page 32: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Máquinas de Turing Não Determinísticas

DefiniçãoMáquinas de Turing Não Determinísticas podem ser vistas como asanteriores, com a adição de um módulo “adivinho”.

Antes da execução normal, arbitrariamente, o adivinho escreve a solução nafita.

Posteriormente, o cabeçote executa normalmente, verificando a validade dasolução e aceitando-a.

Os programas são especificados como antes, e o conceito de linguagemtambém é mantido.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 32 / 41

Page 33: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Máquinas de Turing Não Determinísticas

Máquina de Turing não determinística.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 33 / 41

Page 34: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Máquinas de Turing Não Determinísticas

RepresentaçãoA representação por diagramas de estados de uma máquina de Turing nãodeterminística é semelhante à anterior.

Porém, pode existir mais de uma transição para o mesmo símbolo a partirde um estado.

Nesse caso, o “adivinho” diz qual das transições para um determinadosímbolo deve ser utilizada.

A condição de aceitação é a mesma.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 34 / 41

Page 35: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Máquinas de Turing Não Determinísticas

Exemplo de Máquina de Turing não determinística.Em detalhe, as múltiplas transições dado um mesmo símbolo.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 35 / 41

Page 36: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Tempo Polinomial

DefiniçãoUm problema é solucionável em tempo polinomial determinístico se existiruma máquina de Turing determinística que o solucione em tempo limitadopor um polinômio em relação ao tamanho da entrada.

A máquina de Turing determinística equivale a um algoritmo determinístico.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 36 / 41

Page 37: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Classe P

DefiniçãoConsiste nos problemas que podem ser resolvidos deterministicamente emtempo polinomial no tamanho da entrada, ou seja, existem algoritmos decomplexidade O(nk) para k constante que os resolvam.

P é uma referência a tempo determinístico polinomial.

Exemplos: pesquisa, ordenação, busca em grafos, menor caminho emgrafos, fluxo máximo em grafos, detecção de árvores geradoras mínimas eclassificação de arestas e vértices.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 37 / 41

Page 38: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Classe NP

DefiniçãoConsiste nos problemas que são verificáveis em tempo polinomial. Dadauma solução para o problema, podemos verificar se é uma solução válidaem tempo polinomial.

NP é uma referência a Tempo Não Determinístico Polinomial.

Em geral, é mais difícil resolver um problema do que verificar uma dadasolução. Isto leva alguns teóricos a acreditarem que há problemas em NPque não estão em P.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 38 / 41

Page 39: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

P e NP

P vs. NPÉ possível verificar uma solução para um problema da classe P em tempopolinomial, logo, qualquer problema pertencente a P pertence a NP.

A questão é, P é ou não um subconjunto próprio de NP? Mais diretamente,P=NP?

Talvez a razão mais forte para que se acredite que P6=NP seja a existênciade problemas NP-Completos.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 39 / 41

Page 40: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

P e NP

Uma possível visão se P 6=NP.

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 40 / 41

Page 41: PCC104 - Projeto e Análise de Algoritmos...Teoria da Complexidade Computacional Introdução Quasetodosalgoritmosvistosatéaquipossuemtempopolinomial: em entradasdetamanhon,otempodeexecuçãonopiorcasoéO(nk

Dúvidas?

Marco Antonio M. Carvalho (UFOP) PCC104 14 de novembro de 2019 41 / 41