1 / 31

Informática Teórica Engenharia da Computação

Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO. A escolha do modelo não afeta o poder : todos são equivalentes: MT de uma única fita MT multifita MT não-determinística Mas afeta a complexidade de tempo MT multifita O(t(n)) → MT única fita O(t 2 (n))

Download Presentation

Informática Teórica Engenharia da Computação

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Informática Teórica Engenharia da Computação

  2. COMPLEXIDADE DE TEMPO • A escolha do modelo não afeta o poder: todos são equivalentes: • MT de uma única fita • MT multifita • MT não-determinística • Mas afeta a complexidade de tempo • MT multifita O(t(n)) → MT única fita O(t2(n)) • MT não-determinísticaO(t(n)) → MT única fita 2O(t(n))

  3. COMPLEXIDADE DE TEMPO • Diferenças polinomiais serão consideradas pequenas • MT multifita e MT com uma fita • Polinomialmente equivalentes • Mas diferenças exponenciais serão tomadas como grandes • MT não-determinística e MT com uma fita

  4. COMPLEXIDADE DE TEMPO • Algoritmos exponenciais • Raramente são úteis • Em geral surgem numa busca por força bruta • Exemplo: fatoração • Algoritmos polinomiais • Rápidos para muitos propósitos • Computadores reais • Vários modelos computacionais são polinomialmente equivalentes

  5. COMPLEXIDADE DE TEMPO • Já desprezamos fatores constantes • Notação O-grande • Iremos desprezar diferenças polinomiais • Nossa teoria não dependerá de um modelo de computação específico • São importantes, mas queremos olhar por uma perspectiva diferente

  6. CLASSE P DEFINIÇÃO • P é a classe de linguagens que são decidíveis em tempo polinomial por uma MT determinística de uma única fita

  7. CLASSE P • P é matematicamente robusta • Invariante para os modelos de computação equivalentes à MT determinística de uma fita • P é relevante de um ponto de vista prático • Problemas realisticamente solúveis em um computador

  8. CLASSE P – DESCRIÇÃO DOS ALGORITMOS • Algoritmos serão descritos em alto nível • Não nos prenderemos em detalhes de um modelo computacional específico • Evitaremos detalhes relativos a fitas e movimentos de cabeças • Descrição dos estágios • Estágios serão enumerados (como antes) • Um estágio em geral vai requerer muitos passos numa MT

  9. CLASSE P – DESCRIÇÃO DOS ALGORITMOS • Análise quanto à polinomialidade • Entrada de comprimento n • Dar um limitante superior polinomial para o número de estágios que o algoritmo roda em função de n • Cada estágio deve ser implementável em tempo polinomial num modelo determinístico razoável • Se os critérios acima forem respeitados, então o algoritmo executa em tempo polinomial • A composição de polinômios é um polinômio

  10. CLASSE P – DESCRIÇÃO DOS ALGORITMOS • Codificação da entrada • Continuamos com • A codificação e a decodificação dos objetos devem ser polinomiais (razoáveis) • Exemplos: codificações que temos usados para autômatos e grafos • Grafos • Matriz de adjacência: (i,j) é 1 sse existe aresta do nó i para j • Tempo calculado em função do número de nós

  11. CLASSE P – PROBLEMAS • CAM = {<G,s,t> | G é um grafo direcionado que tem um caminho de s para t }

  12. CLASSE P – PROBLEMAS TEOREMA • CAM ∈ P • Estratégia força bruta • Examina todos os caminhos potenciais em G • Determinar se algum é um caminho direcionado de s para t • Caminho potencial: sequência de nós em G tendo um comprimento de no máximo |V| • Há aproximadamente |V||V| caminhos potenciais • Tempo exponencial

  13. CLASSE P – PROBLEMAS • IDÉIA DA PROVA: usar um método de busca no grafo para evitar a força bruta. • Busca em largura: marcamos sucessivamente todos os nós que são atingíveis a partir de s por caminhos de comprimento 1, depois 2, em seguida 3 etc. • Mostrar que a estratégia é polinomial • PROVA: o algoritmo seguinte M decide CAM em tempo polinomial

  14. CLASSE P – PROBLEMAS • M = “Sobre a entrada <G, s, t> onde G é um grafo direcionado com nós s e t: • 1. Marque o nó s. • 2. Repita o passo seguinte até que nenhum nó adicional seja marcado • 3. Para cada aresta (a,b) de G: se a for um nó marcado e b não estiver marcado, marque b. • 4. Se t estiver marcado, aceite. Senão, rejeite.”

  15. CLASSE P – PROBLEMAS • Número de passos de M • Os passos 1 e 4 executam apenas uma vez • O passo 3 executa no máximo |V| vezes: no pior caso, apenas um nó é marcado a cada vez, exceto a última • Complexidade dos passos de M • Os passos 1 e 4 são facilmente implementados em tempo polinomial • O passo 3 varre cada aresta e executa um teste para ver se um nó está marcado

  16. CLASSE P – PROBLEMAS • Conclusão da prova • M executa uma quantidade de passos polinomial na entrada • Todos os passos de M rodam em tempo polinomial na entrada • Logo, M é polinomial • CAM ∈ P • Exercício do livro: 7.8

  17. CLASSE P – PROBLEMAS • PRIM-ES = {<x, y> | x e y são primos entre si} • Dois números são primos entre si quando 1 é o maior inteiro que divide ambos • <10, 21> ∈ PRIM-ES • <10, 22> ∉ PRIM-ES

  18. CLASSE P – PROBLEMAS TEOREMA • PRIM-ES ∈ P • Estratégia força bruta • Procurar entre todos os possíveis divisores de ambos os números • Aceita se o único divisor comum entre eles for 1 • A magnitude de um número representado em qualquer base maior ou igual a 2 é exponencial no comprimento da representação • Então a busca é feita entre um número exponencial de potenciais divisores

  19. CLASSE P – PROBLEMAS • IDÉIA DA PROVA: usar o algoritmo de Euclides para computar o máximo divisor comum • Calcular o MDC de x e y • Se o resultado for 1, x e y são primos entre si • Função mod: retorna o resto da divisão do primeiro número pelo segundo • 10 mod 3 = 1 • 28 mod 4 = 0

  20. CLASSE P – PROBLEMAS • PROVA: definiremos o algoritmo E para computar o MDC. Em seguida, definiremos o algoritmo R para decidir PRIM-ES

  21. CLASSE P – PROBLEMAS • E = “Sobre a entrada <x, y>, onde x e y são números naturais em binário: • 1. Repita até que y = 0: • 2. x := xmody • 3. Troque os valores de x e y • 4. Retorne x” • R = “Sobre a entrada <x, y>, onde x e y são números naturais em binário: • 1. Execute E sobre <x, y> • 2. Se E retornou 1, aceite. Senão, rejeite.”

  22. CLASSE P – PROBLEMAS • Complexidade de E • O passo 2 reduz o valor de x no mínimo pela metade (exceto possivelmente na 1ª vez: se x ≤ y) • Após o passo 2 temos x < y e depois do passo 3 temos x > y: a cada iteração do loop, um valor é reduzido no mínimo pela metade e o outro não • Então o número máximo de execuções do loop é o mínimo entre 2log2x e 2log2y • Como x e y são representados em binário, a quantidade de passos de E é O(n) • Os passos de E são facilmente implementáveis em tempo polinomial. Logo, o algoritmo é polinomial

  23. CLASSE P – PROBLEMAS • Complexidade de R • R = “Sobre a entrada <x, y>, onde x e y são números naturais em binário: • 1. Execute E sobre <x, y> • 2. Se E retornou 1, aceite. Senão, rejeite.” • Como E roda em tempo polinomial, então R também é polinomial • Exercícios do livro: 7.3 e 7.12

  24. CLASSE P – PROBLEMAS • AGLC = {<G, w> | G é uma GLC que gera a cadeia w } • Uma MT que decide AGLC • S = “Sobre a entrada <G, w>, onde G é uma GLC e w uma cadeia de comprimento n: • 1. Converta G para a forma normal de Chomsky • 2. Liste todas as derivações com 2n-1 passos (se n = 0, liste todas as derivações com 1 passo) • 3. Se alguma derivação gerou w, aceite. Senão, rejeite.”

  25. CLASSE P – PROBLEMAS • S roda em tempo polinomial? • Qualquer derivação de uma cadeia |w| = n tem 2n-1 passos (se a gramática está na forma normal de Chomsky) • S tenta todas as derivações com 2n-1 passos para verificar se alguma gera w • Como o número de derivações com k passos pode ser exponencial em k, S não é polinomial • Logo, S não prova que aceitação de LLC é polinomial • Existe algum algoritmo polinomial para aceitação de LLC?

  26. CLASSE P – PROBLEMAS TEOREMA • IDÉIA DA PROVA • Utilizar programação dinâmica: guardar informações sobre subproblemas menores • Subproblema: determinar se cada variável da GLC gera cada subcadeia de w • Usar uma tabela n x n para guardar as soluções dos subproblemas • (i, j): se i ≤ j, então a célula guarda as variáveis que geram a subcadeiawiwi+1...wj. As posições com i > j não serão utilizadas • Preenche a tabela para as subcadeias de comprimento 1, depois 2, ... Até a de tamanho n

  27. CLASSE P – PROBLEMAS • IDÉIA DA PROVA (continuação) • Suponha que o algoritmo já tenha resolvido o problema para todas as subcadeias de tamanho k • Para saber se alguma variável A gera uma subcadeia específica de tamanho k+1: • Dividir a subcadeia de tamanho k+1 em duas partes não vazias (há k possibilidades de divisão) • Para cada divisão, o algoritmo passa por cada regra do tipo A → BC • Se B gera a primeira subcadeia e C gera a segunda, então A gera a subcadeia de tamanho k+1 • Adicionamos A à entrada associada da tabela • Iniciamos com as cadeias de tamanho 1 e analisando as regras do tipo A→ b

  28. CLASSE P – PROBLEMAS TEOREMA • PROVA: algoritmo que recebe uma gramática na forma normal de Chomsky e uma cadeia w (S é a variável inicial da gramática) • D = “Sobre a entrada w = w1w2...wn • 1. Se w = εe S → ε for uma regra, aceite • 2. Para i=1 até n: • 3. Para cada variável A: • 4. Teste se A→ wi é uma regra • 5. Se for, adicione A em tabela(i, i)

  29. CLASSE P – PROBLEMAS • D (continuação) • 6. Para l = 2 até n [l é o comprimento da subcadeia] • 7. Para i=1 até n-l-1[ié a posição inicial da subcadeia] • 8. j := i+l-1 [j é a posição final da subcadeia] • 9. Para k=i até j-1 [k é onde ocorre a divisão] • 10. Para cada regra A → BC • 11. Se tabela(i, k) contém B e tabela (k+1,j) contém C • Coloque A em tabela(i, j) • 12. Se S estiver em tabela(1, n), aceite. Senão, rejeite

  30. CLASSE P – PROBLEMAS • Complexidade de D • Todo os passos são implementados em tempo polinomial • A quantidade de passos é polinomial: O(n3) + O(n) = O(n3) • O passo 1 roda apenas uma vez • Os passos 4 e 5 rodam no máximo n*v (onde v é o número de variáveis): O(n) • O passo 6 roda no máximo n vezes • Para cada vez que o 6º roda, o passo 7 roda no máximo n vezes • Para cada vez que o 7º roda, os passos 8 e 9 rodam no máximo n vezes • Cada execução do 9º, o passo 10 roda r vezes (onde r é uma constante fixa) • Logo, o passo 11 roda O(n3) vezes • Exercício do livro: 7.4

  31. Informática Teórica Engenharia da Computação

More Related