89
MAC5722 Complexidade Computacional Complexidade Computacional – p. 1

MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Embed Size (px)

Citation preview

Page 1: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

MAC5722

Complexidade Computacional

Complexidade Computacional – p. 1

Page 2: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

MAC5722 Complexidade Computacional

“Qual é o seu problema?”http://qwiki.stanford.edu/wiki/Complexity_ZooComplexidade Computacional – p. 2

Page 3: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Administração

Professores: Zé Augusto e Coelho

Página da disciplina: http://paca.ime.usp.br/

cadastro na paca

código de inscrição: complexidade2010

apresentação

critério: provas, listas de exercícios, plágio. . .

fórum

Complexidade Computacional – p. 3

Page 4: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Texto principalSi = Michael Sipser,Introduction to the Theory of Computation

Si = Michael Sipser,Introdução à Teoria da ComputaçãoTradução

Complexidade Computacional – p. 4

Page 5: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Outros livrosGJ = Michael Randolph Garey e David Stifler Johnson,Computers and Intractability: A Guide to the Theory ofNP-completeness

Pa = Christos Harilaos Papadimitriou,Computational complexity

Complexidade Computacional – p. 5

Page 6: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Pausa para os nossos comerciais

Recepção dos alunos novos de mestrado e doutorado

Na sexta-feira, dia 12/3, às 12h00, haverá a usual recepçãodos alunos de pós.

O evento ocorre na Anfiteatro Antonio Gilioli.Haverá sanduíche de metro e refrigerantes financiadospelo departamento.

A organização está sendo tocada pelos representantesdiscentes da CCP Jihan e Alexandre.

Complexidade Computacional – p. 6

Page 7: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Pré-requisitos

Prática em programação é bem-vinda

É recomendável alguma experiência em análise assintóticade algoritmos

MAC0338 Análise de algoritmos

MAC5711 Análise de algoritmos

ou algum conhecimento em modelos computacionais

MAC0414 Linguagens formais e autômatos

MAC4722 Linguagens, autômatos e computabilidade

Complexidade Computacional – p. 7

Page 8: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

AULA 0

Complexidade Computacional – p. 8

Page 9: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Autômatos, Computabilidade e Complexidade

MS 0.1, GJ 1.1

Complexidade Computacional – p. 9

Page 10: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Questão central

Quais são as capacidades e limitações fundamentais decomputadores?

Complexidade Computacional – p. 10

Page 11: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

AutômatosModelo computacional usado em processamento de texto,compiladores . . .FINITE-AUTOMATON-MATCHER e KMP-MATCHER (CLRS)

q1

q0 q2

0 1

2 1

2 0

0

2

1

MAC4722 Linguagens, Autômatos e ComputabilidadeComplexidade Computacional – p. 11

Page 12: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

ComputabilidadeO que computadores podem fazer?

10o.̄ problema de Hilbert (1900): projetar um algoritmopara decidir se um dado polinômio de coeficientes inteirostem uma raiz inteira.

Exemplos:

10x2y + 10yz + 5z tem raiz inteira x = 3, y = 1 e z = −6

x2 − 5 não tem raiz inteira.

Como definir algoritmo?

MAC4722 Linguagens, Autômatos e Computabilidade

Complexidade Computacional – p. 12

Page 13: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

ComplexidadePergunta central:

O que faz alguns problemas computacionalmentedifíceis e outros fáceis?

O que computadores podem fazer eficientemente?

Complexidade Computacional – p. 13

Page 14: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

ComplexidadePergunta central:

O que faz alguns problemas computacionalmentedifíceis e outros fáceis?

O que computadores podem fazer eficientemente?

Não se sabe a resposta . . .

mas há esquemas para se classificar os problemas deacordo com sua dificuldade.

Complexidade Computacional – p. 13

Page 15: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Ordenação

A[1 . . n] é crescente se A[1] ≤ · · · ≤ A[n].

Problema: Rearranjar um vetor A[1 . . n] de modo que elefique crescente.

Entra:

1 n

33 55 33 44 33 22 11 99 22 55 77

Complexidade Computacional – p. 14

Page 16: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Ordenação

A[1 . . n] é crescente se A[1] ≤ · · · ≤ A[n].

Problema: Rearranjar um vetor A[1 . . n] de modo que elefique crescente.

Entra:

1 n

33 55 33 44 33 22 11 99 22 55 77

Sai:

1 n

11 22 22 33 33 33 44 55 55 77 99

Complexidade Computacional – p. 14

Page 17: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Escalonamento de máquinas idênticasDados: m máquinas

t tarefasduração d[i] da tarefa i (i = 1, . . . , t)

um escalonamento é uma partição {M [1], . . . ,M [m]}de {1, . . . , t}

tarefas máquinas

Complexidade Computacional – p. 15

Page 18: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Exemplo 1m = 3 t = 7

1 2 3 4 5 6 7 8 9 10 11 12 13 14

d[1] d[2] d[3] d[4] d[5] d[6] d[7]1 223 5 67

M [1]

M [2]

M [3]

{{1, 4, 7}, {2, 5}, {3, 6}} ⇒ Tempo de conclusão = 13

Complexidade Computacional – p. 16

Page 19: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Exemplo 2m = 3 t = 7

1 2 3 4 5 6 7 8 9 10 11 12 13 14

d[1] d[2] d[3] d[4] d[5] d[6] d[7]1 223 5 67

M [1]

M [2]

M [3]

{{1, 2, 3}, {4, 5}, {6, 7}} ⇒ Tempo de conclusão = 12

Complexidade Computacional – p. 17

Page 20: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

ProblemaEncontrar um escalonamento com tempo de conclusãomínimo.

1 2 3 4 5 6 7 8 9 10 11 12 13 14

d[1] d[2] d[3] d[4] d[5] d[6] d[7]1 223 5 67

M [1]

M [2]

M [3]

{{1, 4}, {2, 3}, {5, 6, 7}} ⇒ Tempo de conclusão = 9

Complexidade Computacional – p. 18

Page 21: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Orientador

“I can’t find an efficient algorithm, I guess I’m just too dumb.”

GJ 1.1

Complexidade Computacional – p. 19

Page 22: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Orientador

“I can’t find an efficient algorithm, because no suchalgorithm is possible.”

Complexidade Computacional – p. 19

Page 23: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Orientador

“I can’t find an efficient algorithm, but neither can all thesefamous people.”

Complexidade Computacional – p. 19

Page 24: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

EmparelhamentosProblema: Dado um grafo bipartido encontrar umemparelhamento perfeito.

X

Y

G

Complexidade Computacional – p. 20

Page 25: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

EmparelhamentosProblema: Dado um grafo bipartido encontrar umemparelhamento perfeito.

X

Y

G

Complexidade Computacional – p. 20

Page 26: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

EmparelhamentosProblema: Dado um grafo bipartido encontrar umemparelhamento perfeito.

X

Y

G

NÃO existe! Certificado?

Complexidade Computacional – p. 21

Page 27: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

EmparelhamentosProblema: Dado um grafo bipartido encontrar umemparelhamento bipartido.

X

Y

G

NÃO existe! Certificado: S ⊆ X tal que |S| > |vizinhos(S)|.Teorema de Hall: G tem um emparelhamento perfeito se esomente se

|S| ≤ |vizinhos(S)|, para todo S ⊆ X.

Complexidade Computacional – p. 21

Page 28: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Arthur e Merlin

Complexidade Computacional – p. 22

Page 29: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Grafos hamiltonianosProblema: Dado um grafo encontrar um ciclo hamiltoniano.

G

Complexidade Computacional – p. 23

Page 30: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Grafos hamiltonianosProblema: Dado um grafo encontrar um ciclo hamiltoniano.

G

Complexidade Computacional – p. 23

Page 31: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Grafos hamiltonianosProblema: Dado um grafo encontrar um ciclo hamiltoniano.

G

NÃO existe! Certificado? Hmmm . . . Complexidade Computacional – p. 24

Page 32: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

CompostoProblema: Dado um número inteiros positivo n, encontrarnúmeros inteiros k > 1 e m > 1 tais que

n = k ×m.

Exemplo:

n = 44003111, k = 4651 m = 9461

n = 1544824079, k = 37493 m = 41203 fazem o serviço

n = 27644437, não existem n e m

Complexidade Computacional – p. 25

Page 33: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Solução café-com-leite

Considere o seguinte algoritmo que recebe um númeronatural n e devolve 0 se n é primo ou um fator não-trivial kde n.

FATOR (n)1 para k ← 2 até n− 1 faça2 se resto(n/k) = 03 devolva k4 devolva 0

O consumo de tempo do algoritmo FATOR no pior caso éproporcional a n.

Complexidade Computacional – p. 26

Page 34: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Solução café-com-leite

Considere o seguinte algoritmo que recebe um númeronatural n e devolve 0 se n é primo ou um fator não-trivial kde n.

FATOR (n)1 para k ← 2 até n− 1 faça2 se resto(n/k) = 03 devolva k4 devolva 0

O consumo de tempo do algoritmo FATOR no pior caso éproporcional a n.

Não é considerado eficiente.

Complexidade Computacional – p. 26

Page 35: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Que bagunça!

Vimos exemplo de problemas:

não podem ser resolvidos por computador (Hilbert)

sabemos resolver eficientemente (ordenação)

não sabemos resolver eficientemente (escalonamento)

sabemos verificar a resposta eficientemente(emparelhamento)

não sabemos verificar a resposta eficientemente(hamiltoniano)

sabemos verificar a resposta eficientemente, mas nãosabemos encontrar a resposta eficientemente(composto)

Complexidade Computacional – p. 27

Page 36: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

IntratabilidadeA descoberta da intratabilidade de um problema é apenaso começo do trabalho.

Busca por algoritmos eficientes ganha baixa prioridade.

Podemos nos concentrar em objetivos menos pretenciosos.Encontrar algoritmos:

eficientes para casos particulares;

freqüentemente eficientes;

eficientes que encontram bons candidatos a solução;

. . .

Complexidade Computacional – p. 28

Page 37: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

IntratabilidadeA descoberta da intratabilidade de um problema é apenaso começo do trabalho.

Busca por algoritmos eficientes ganha baixa prioridade.

Podemos nos concentrar em objetivos menos pretenciosos.Encontrar algoritmos:

eficientes para casos particulares;

freqüentemente eficientes;

eficientes que encontram bons candidatos a solução;

. . .

Problema intratáveis são os preferidos pela galera decriptografia (sistema criptográfico RSA, composto, Pa 12).

Complexidade Computacional – p. 28

Page 38: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

MAC5722

MAC5722 Complexidade Computacional:

é uma disciplina básica e tradicional em teoria dacomputação

busca a compreensão das limitações do modelocomputacional e da dificuldade inerente para resolverproblemas computacionais algoritmicamente

classifica problemas computacionais baseado naquantidade de recursos (tempo e espaço) necessáriospara resolvê-los e investiga a relação entre estasclasses.

Complexidade Computacional – p. 29

Page 39: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Principais tópicosmáquinas de Turing

variantes de máquinas de Turing

definição de algoritmos

tese de Church-Turing

complexidade de tempo

a classe P.

as classes NP e coNP

NP-completude

problemas NP-completos

complexidade de espaço

teorema de Savitch

classe PSPACE

as classes L e NL

NL-completude

NL e coNL.

Complexidade Computacional – p. 30

Page 40: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

AULA 1

Complexidade Computacional – p. 31

Page 41: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Cadeias e linguagens

MS 0.2

Complexidade Computacional – p. 32

Page 42: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

CadeiasPara resolver um problema usando um computador énecessário descrever os dados do problema através deuma seqüência de símbolos retirados de algum alfabeto .

Este alfabeto pode ser, por exemplo, o conjunto desímbolos ASCII ou o conjunto {0, 1}.

Qualquer seqüência dos elementos de um alfabeto échamada de uma cadeia .

Não é difícil codificar objetos tais como racionais, vetores,matrizes, grafos e funções como cadeias.

O comprimento de uma cadeia w, denotado por |w| é onúmero de símbolos usados em w, contandomultiplicidades. O comprimento do racional ‘123/567’ é 7.

Complexidade Computacional – p. 33

Page 43: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Exemplo 1

Grafo

G

a b

c d

e f

g

h

i

j

Cadeia:

({a, b, c, d, e, f , g, h, i, j}, {{bd}, {eg}, {ac}, {hi}, {ab}, {ef}, {bc}}

Comprimento da cadeia: 59

Complexidade Computacional – p. 34

Page 44: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Exemplo 2

Função

G

a b

c d

e f

g

h

i

j3/2

00

2

7

1 −3

Cadeia:

(({bd}, 2), ({eg}, 1), ({ac}, 0), ({hi},−3), ({ab}, 3/2), ({ef}, 7), ({bc}, 0))

Comprimento da cadeia: 67

Complexidade Computacional – p. 35

Page 45: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Alfabeto, símbolos e cadeiasUm alfabeto é conjunto finito não vazio.

Os elementos de um alfabeto são chamados de símbolos .

Exemplos:

Σ1 = {0, 1}

Σ2 = {a, b, . . . , z}

Complexidade Computacional – p. 36

Page 46: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Alfabeto, símbolos e cadeiasUm alfabeto é conjunto finito não vazio.

Os elementos de um alfabeto são chamados de símbolos .

Exemplos:

Σ1 = {0, 1}

Σ2 = {a, b, . . . , z}

Uma cadeia sobre um alfabeto é uma sequência finita desímbolos do alfabeto.

Exemplos:

0 1 0 0 1 é uma cadeia sobre Σ1

a b r a c a d a b r a é uma cadeia sobre Σ2.

Complexidade Computacional – p. 36

Page 47: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Comprimento de cadeiasO comprimento de uma cadeia w sobre um alfabeto Σ,denotado por |w|, é o número de símbolos em w, contandomultiplicidades.

Exemplos:

0 1 0 0 1 tem comprimento 5

a b r a c a d a b r a tem comprimento 11

A cadeia vazia é denotada por ε e tem comprimento zero .

Se w tem comprimento n escrevemos

w = w1w2 . . . wn,

onde cada wi está em Σ.Complexidade Computacional – p. 37

Page 48: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Concatenação de cadeias

A concatenação das cadeias x e y é a cadeia xy.

Exemplo: se x = a b r a e y = c a d a b r a, então

xy = a b r a c a d a b r a

Para k é um inteiro, denotamos xk a concatenação de xcom ele mesmo k − 1 vezes.

Exemplo: se x = a b r a, então

x4 = a b r a a b r a a b r a a b r a

Complexidade Computacional – p. 38

Page 49: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Subcadeiasz1 . . . zk é subcadeia de x1 . . . xm

se existe um índice i tal que

z1 = xi . . . zk = xi+k−1

EXEMPLOS:

5 9 2 7 é subseqüência de 9 5 5 9 2 7 3 7

A C A D A é subcadeia de A B R A C A D A B R A

A C A D A| | | | |

A B R A C A D A B R A

Complexidade Computacional – p. 39

Page 50: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Reverso e ordem lexicográficaSe w = w1 w2 . . . wn o reverso de w, denotado por wR, é

wn wn−1 . . . w1.

A ordem lexicográfica de cadeias é a mesma dodicionário, exceto que cadeias menores precedem cadeiasmaiores.

Exemplo: a ordem lexicográfica das cadeias sobre {0, 1} é

ε 0 1 0 0 0 1 1 0 1 1 0 0 0 . . .

Complexidade Computacional – p. 40

Page 51: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Linguagem

Uma linguagem é um conjunto de cadeias sobre umalfabeto.

Exemplos:

conjunto das cadeias que codificam grafos

conjunto das cadeias que codificam grafos bipartidosque possuem um emparelhamento perfeito

conjunto das cadeias que codificam grafoshamiltonianos

conjunto de cadeias da forma w#wR para algumacadeia w sobre Σ

. . .

Complexidade Computacional – p. 41

Page 52: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Operações

Se L e L′ são linguagens então

União : L ∪ L′ = {x : x ∈ L ou x ∈ L′}.

Concatenação : L ◦ L′ = {xy : x ∈ L e y ∈ L′}.

Estrela : L∗ = {x1x2 . . . xk : k ≥ 0 e cada xi ∈ L}.

Note que, para qualquer L, ε ∈ L∗.

Σ∗ = conjunto de todas as cadeias sobre Σ

Complexidade Computacional – p. 42

Page 53: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Máquinas de Turing

MS 3.1

Complexidade Computacional – p. 43

Page 54: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Modelo de computaçãoÉ uma descrição abstrata e conceitual de um computadorque será usado para executar um algoritmo.

Um modelo de computação especifica as operaçõeselementares um algoritmo pode executar e o critérioempregado para medir a quantidade de tempo que cadaoperação consome.

No critério uniforme supõe-se que cada operaçãoelementar consome uma quantidade de tempo constante.

Complexidade Computacional – p. 44

Page 55: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Máquinas de Turing

controlecabeça

fita de leitura e escrita

aaa bb c ε ⊔⊔⊔⊔

Componentes:

1. controle

2. cabeça

3. fita

Complexidade Computacional – p. 45

Page 56: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Sobre os componentes

Componentes de uma máquina de Turing:

Controle : possui um conjunto finito de estados, dentreseles há 3 estados especiais: inicial, aceitação erejeição;

Cabeça: pode ler o símbolo na posição sobre a qual está,escrever um símbolo nessa posição e mover umaposição para a direita ou esquerda;

Fita: infinita à direita, possui brancos ⊔ nas posições nãoutilizadas.

Complexidade Computacional – p. 46

Page 57: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Exemplo de computação

0 0 1 0 1 0 1 ⊔ ⊔ ⊔ ⊔

Complexidade Computacional – p. 47

Page 58: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Exemplo de computação

0 0 1 0 1 0 1 ⊔ ⊔ ⊔ ⊔

0 0 1 0 1 0 1 ⊔ ⊔ ⊔ ⊔

Complexidade Computacional – p. 47

Page 59: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Exemplo de computação

0 0 1 0 1 0 1 ⊔ ⊔ ⊔ ⊔

0 0 1 0 1 0 1 ⊔ ⊔ ⊔ ⊔

0 0 1 0 1 0 0 ⊔ ⊔ ⊔ ⊔

Complexidade Computacional – p. 47

Page 60: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Exemplo de computação

0 0 1 0 1 0 1 ⊔ ⊔ ⊔ ⊔

0 0 1 0 1 0 1 ⊔ ⊔ ⊔ ⊔

0 0 1 0 1 0 0 ⊔ ⊔ ⊔ ⊔

0 0 1 0 1 0 0 1 ⊔ ⊔ ⊔

Complexidade Computacional – p. 47

Page 61: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Exemplo de computação

0 0 1 0 1 0 1 ⊔ ⊔ ⊔ ⊔

0 0 1 0 1 0 1 ⊔ ⊔ ⊔ ⊔

0 0 1 0 1 0 0 ⊔ ⊔ ⊔ ⊔

0 0 1 0 1 0 0 1 ⊔ ⊔ ⊔

0 0 1 0 1 0 0 1 ⊔ ⊔ ⊔

Complexidade Computacional – p. 47

Page 62: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Ainda sobre os componentes

Inicialmente:

Controle : está em um estado inicial;

Cabeça: está sobre a primeira posição da fita;

Fita: infinita contém a cadeia representando a entrada doproblema nas primeiras posições, as demais posiçõescontém brancos ⊔.

Complexidade Computacional – p. 48

Page 63: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Exemplo de máquina de TuringDescrição alto nível de uma máquina de Turing que decidese uma dada cadeia w está na linguagem

{x#x : x ∈ {0, 1}∗}.

M1 = “Com entrada w:

0 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 49

Page 64: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

0 0 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 50

Page 65: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

0 0 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

1 × 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 50

Page 66: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

0 0 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

1 × 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

2 × 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 50

Page 67: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

0 0 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

1 × 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

2 × 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

3 × 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 50

Page 68: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

4 × 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 51

Page 69: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

4 × 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

5 × 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 51

Page 70: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

4 × 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

5 × 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

6 × 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 51

Page 71: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

4 × 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

5 × 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

6 × 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

7 × 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 51

Page 72: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

8 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 52

Page 73: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

8 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

9 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 52

Page 74: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

8 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

9 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

10 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 52

Page 75: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

8 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

9 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

10 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

11 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 52

Page 76: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

12 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 53

Page 77: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

12 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

13 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 53

Page 78: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

12 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

13 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

14 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 53

Page 79: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

12 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

13 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

14 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

15 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 53

Page 80: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

16 × × 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 54

Page 81: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

16 × × 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

17 × × 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 54

Page 82: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

16 × × 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

17 × × 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

18 × × 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 54

Page 83: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

16 × × 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

17 × × 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

18 × × 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

19 × × 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 54

Page 84: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

20 × × 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 55

Page 85: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

20 × × 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

21 × × 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 55

Page 86: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

20 × × 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

21 × × 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

22 × × 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 55

Page 87: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo

20 × × 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

21 × × 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

22 × × 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

23 × × 1 0 0 0 # × × 1 0 0 0 ⊔ . . .

Complexidade Computacional – p. 55

Page 88: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Simulação deM 1

passo conteúdo da fita

0 0 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

1 × 1 1 0 0 0 # 0 1 1 0 0 0 ⊔ . . .

8 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

15 × 1 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

16 × × 1 0 0 0 # × 1 1 0 0 0 ⊔ . . .

60 × × × × × × # × × × × × × ⊔ . . .

aceita

Complexidade Computacional – p. 56

Page 89: MAC5722 Complexidade Computacional - IME-USPcoelho/mac5722-2010/aulas/aula01.pdf · Cadeias Para resolver um problema usando um computador é necessário descrever os dados do problema

Exemplo de máquina de TuringDescrição alto nível de uma máquina de Turing que decidese uma dada cadeia w está na linguagem

{x#x : x ∈ {0, 1}∗}.

M1 = “Com entrada w:

1. Vá e volte na fita em torno de # verificando se posiçõescorrespondentes contém o mesmo símbolo. Casonegativo, ou no caso em que # não é encontrado,rejeite. Marque os símbolos já verificados.

2. quando todos os símbolos à esquerda de # foramverificados, examine se sobraram símbolos do ladodireito de #. Se sobrou algum símbolo, rejeite; senão,aceite.”

Complexidade Computacional – p. 57