A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele.

Apresentações semelhantes


Apresentação em tema: "Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele."— Transcrição da apresentação:

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

2 COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele pode não ser solúvel na prática se a solução requer uma quantidade grande de tempo ou memória. Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele pode não ser solúvel na prática se a solução requer uma quantidade grande de tempo ou memória.

3 COMPLEXIDADE DE TEMPO Exemplo: Uma MT para aceitar {a n b n | n 0} Exemplo: Uma MT para aceitar {a n b n | n 0} M1 = Sobre a cadeia de entrada w: M1 = Sobre a cadeia de entrada w: 1. Faça uma varredura na fita e rejeite se um a for encontrado à direita de um b. 1. Faça uma varredura na fita e rejeite se um a for encontrado à direita de um b. 2. Repita se ambos as e bs ainda estão na fita: 2. Repita se ambos as e bs ainda estão na fita: 3. Faça uma varredura, cortando um único a e um único b. 3. Faça uma varredura, cortando um único a e um único b. 4. Se as ainda permanecerem após todos os bs tiverem sido cortados,ou vice-versa, rejeite. Caso contrário, aceite. 4. Se as ainda permanecerem após todos os bs tiverem sido cortados,ou vice-versa, rejeite. Caso contrário, aceite.

4 COMPLEXIDADE DE TEMPO Analisamos o algoritmo para M1 decidindo A para determinar quanto tempo ela usa. Analisamos o algoritmo para M1 decidindo A para determinar quanto tempo ela usa. O no. de passos que um algoritmo usa sobre uma entrada específica pode depender de vários parâmetros. O no. de passos que um algoritmo usa sobre uma entrada específica pode depender de vários parâmetros. Por exemplo, se a entrada for um grafo, o número de passos pode depender do número de nós, do número de arestas, e do grau máximo do grafo, ou dalguma combinação desses e/ou de outros fatores. Por exemplo, se a entrada for um grafo, o número de passos pode depender do número de nós, do número de arestas, e do grau máximo do grafo, ou dalguma combinação desses e/ou de outros fatores.

5 COMPLEXIDADE DE TEMPO Por simplicidade computamos o tempo de execução de um algoritmo como uma função do comprimento da cadeia de entrada e não consideramos quaisquer outros parâmetros. Por simplicidade computamos o tempo de execução de um algoritmo como uma função do comprimento da cadeia de entrada e não consideramos quaisquer outros parâmetros. Na análise do pior caso, levamos em conta o tempo de execução mais longo de todas as entradas de um comprimento específico. Na análise do pior caso, levamos em conta o tempo de execução mais longo de todas as entradas de um comprimento específico. Na análise do caso médio, consideramos a média dos tempos de execução de entradas de um comprimento específico. Na análise do caso médio, consideramos a média dos tempos de execução de entradas de um comprimento específico.

6 COMPLEXIDADE DE TEMPO DEFINIÇÃO Seja M uma MT determinística que pára sobre todas as entradas. O tempo de execução ou complexidade de tempo de M é a função f :, onde f(n) é o no. máximo de passos que M usa sobre qualquer entrada de comprimento n. Seja M uma MT determinística que pára sobre todas as entradas. O tempo de execução ou complexidade de tempo de M é a função f :, onde f(n) é o no. máximo de passos que M usa sobre qualquer entrada de comprimento n. Se f(n) for o tempo de execução de M, dizemos que M roda em tempo f(n) e que M é uma MT de tempo f(n). Usamos n para representar o comprimento da entrada. Se f(n) for o tempo de execução de M, dizemos que M roda em tempo f(n) e que M é uma MT de tempo f(n). Usamos n para representar o comprimento da entrada.

7 NOTACÃO O-GRANDE E O-PEQUENO O tempo exato de execução de um algoritmo é uma expressão complexa frequentemente, então usualmente apenas o estimamos. O tempo exato de execução de um algoritmo é uma expressão complexa frequentemente, então usualmente apenas o estimamos. Numa forma conveniente de estimativa, chamada análise assintótica, buscamos entender o tempo de execução do algoritmo quando executado sobre entradas grandes. Numa forma conveniente de estimativa, chamada análise assintótica, buscamos entender o tempo de execução do algoritmo quando executado sobre entradas grandes. Consideramos apenas o termo de mais alta ordem da expressão do tempo de execução do algoritmo, Consideramos apenas o termo de mais alta ordem da expressão do tempo de execução do algoritmo, desconsiderando tanto o coeficiente daquele termo quanto quaisquer termos de ordem mais baixa, desconsiderando tanto o coeficiente daquele termo quanto quaisquer termos de ordem mais baixa, porque o de mais alta ordem domina os outros termos sobre entradas grandes. porque o de mais alta ordem domina os outros termos sobre entradas grandes.

8 NOTACÃO O-GRANDE E O-PEQUENO O tempo exato de execução de um algoritmo é uma expressão complexa frequentemente, então usualmente apenas o estimamos. O tempo exato de execução de um algoritmo é uma expressão complexa frequentemente, então usualmente apenas o estimamos. Numa forma conveniente de estimativa, chamada análise assintótica, buscamos entender o tempo de execução do algoritmo quando executado sobre entradas grandes. Numa forma conveniente de estimativa, chamada análise assintótica, buscamos entender o tempo de execução do algoritmo quando executado sobre entradas grandes. Consideramos apenas o termo de mais alta ordem da expressão do tempo de execução do algoritmo, Consideramos apenas o termo de mais alta ordem da expressão do tempo de execução do algoritmo, desconsiderando tanto o coeficiente daquele termo quanto quaisquer termos de ordem mais baixa, desconsiderando tanto o coeficiente daquele termo quanto quaisquer termos de ordem mais baixa, porque o de mais alta ordem domina os outros termos sobre entradas grandes. porque o de mais alta ordem domina os outros termos sobre entradas grandes.

9 NOTACÃO O-GRANDE E O-PEQUENO

10

11 Intuitivamente, f(n) = O(g(n)) significa que f é menor ou igual a g se desconsiderarmos diferenças até um fator constante. Intuitivamente, f(n) = O(g(n)) significa que f é menor ou igual a g se desconsiderarmos diferenças até um fator constante. Vc pode pensar em O como representando uma constante suprimida. Vc pode pensar em O como representando uma constante suprimida. Na prática, a maioria das funções f tem um termo óbvio de mais alta ordem h. Nesse caso, f(n) = O(g(n)), onde g é h sem seu coeficiente. Na prática, a maioria das funções f tem um termo óbvio de mais alta ordem h. Nesse caso, f(n) = O(g(n)), onde g é h sem seu coeficiente.

12 NOTACÃO O-GRANDE E O-PEQUENO

13

14

15

16

17 ANALISANDO ALGORITMOS Exemplo: Uma MT para aceitar {0 n 1 n | n 0} Exemplo: Uma MT para aceitar {0 n 1 n | n 0} M1 = Sobre a cadeia de entrada w: M1 = Sobre a cadeia de entrada w: 1. Faça uma varredura na fita e rejeite se um 0 for encontrado à direita de um Faça uma varredura na fita e rejeite se um 0 for encontrado à direita de um Repita se ambos 0s e 1s ainda estão na fita: 2. Repita se ambos 0s e 1s ainda estão na fita: 3. Faça uma varredura, cortando um único 0 e um único Faça uma varredura, cortando um único 0 e um único Se 0s ainda permanecerem após todos os 1s tiverem sido cortados,ou vice-versa, rejeite. Caso contrário, aceite. 4. Se 0s ainda permanecerem após todos os 1s tiverem sido cortados,ou vice-versa, rejeite. Caso contrário, aceite.

18 ANALISANDO ALGORITMOS Para analisar M1 vemos seus 4 estágios: Para analisar M1 vemos seus 4 estágios: No estágio 1, M1 varre a fita para verificar que a entrada é da forma 01. Realizar isso usa n passos. No estágio 1, M1 varre a fita para verificar que a entrada é da forma 01. Realizar isso usa n passos. Usamos n para representar o comprimento da entrada. Usamos n para representar o comprimento da entrada. Colocar a cabeça no começo da fita usa outros n passos. Colocar a cabeça no começo da fita usa outros n passos. Assim, o total usado nesse estágio é 2n passos. Esse estágio usa O(n) passos. Assim, o total usado nesse estágio é 2n passos. Esse estágio usa O(n) passos. Note que não mencionamos o reposicionamento da cabeça na descrição de M1. Note que não mencionamos o reposicionamento da cabeça na descrição de M1. Usando uma notação assintótica nos permite omitir detalhes da descrição da MT que afetam o tempo de execução por no máximo um fator constante. Usando uma notação assintótica nos permite omitir detalhes da descrição da MT que afetam o tempo de execução por no máximo um fator constante.

19 ANALISANDO ALGORITMOS

20

21 Podemos melhorar o tempo de execução cortando dois 0s e dois 1s em cada varredura? Podemos melhorar o tempo de execução cortando dois 0s e dois 1s em cada varredura? Fazendo isso, corta-se o número de varreduras pela metade. Mas isso melhora o tempo de execução apenas por um fator de 2 e não afeta o tempo de execução assintótico portanto. Fazendo isso, corta-se o número de varreduras pela metade. Mas isso melhora o tempo de execução apenas por um fator de 2 e não afeta o tempo de execução assintótico portanto.

22 ANALISANDO ALGORITMOS M2 = Sobre a cadeia de entrada w: M2 = Sobre a cadeia de entrada w: 1. Varra a fita e rejeite se um 0 for encontrado à direita de um Varra a fita e rejeite se um 0 for encontrado à direita de um Repita enquanto houver alguns 0s e 1s na fita: 2. Repita enquanto houver alguns 0s e 1s na fita: –3. Varra a fita, vendo se o no. de 0s e 1s restantes é par ou ímpar. Se for ímpar, rejeite. –4. Varra novamente a fita, cortando alternadamente um 0 não e outro sim começando com o primeiro 0, e então cortando alternadamente um 1 não e outro sim começando com o primeiro Se nenhum 0 e 1 estão na fita, aceite. Caso contrário, rejeite. 5. Se nenhum 0 e 1 estão na fita, aceite. Caso contrário, rejeite.

23 ANALISANDO ALGORITMOS M2 realmente decide A, veja-se: M2 realmente decide A, veja-se: Em toda varredura do estágio 4, o no. de 0s restantes é cortado pela metade e qualquer resto é descartado. Em toda varredura do estágio 4, o no. de 0s restantes é cortado pela metade e qualquer resto é descartado. Portanto, se começarmos com 13 0s, após o estágio 4 ser executado uma só vez apenas 6 0s permanecem. Portanto, se começarmos com 13 0s, após o estágio 4 ser executado uma só vez apenas 6 0s permanecem. Depois 3 0s, então 1, e depois nenhum permanece. Depois 3 0s, então 1, e depois nenhum permanece. Esse estágio tem o mesmo efeito sobre o no. de 1s. Esse estágio tem o mesmo efeito sobre o no. de 1s.

24 ANALISANDO ALGORITMOS Supomos começar com 13 as e 13 bs. Supomos começar com 13 as e 13 bs. A 1ª execução do estágio 3 acha um no. ímpar de 0s e de 1s (13). Em execuções subsequentes um no. par (6) ocorre, depois um ímpar (3), e outro ímpar (1). A 1ª execução do estágio 3 acha um no. ímpar de 0s e de 1s (13). Em execuções subsequentes um no. par (6) ocorre, depois um ímpar (3), e outro ímpar (1). Não executamos esse estágio sobre 0 0s ou 0 1s por causa da condição de repetição do estágio 2. Não executamos esse estágio sobre 0 0s ou 0 1s por causa da condição de repetição do estágio 2. Para a sequência de paridades encontradas (ímpar, par, ímpar, ímpar) se substituirmos as pares por 0s e as ímpares por 1s e revertermos a sequência, obtemos 1101, a representação binária de 13, ou o no. de 0s e 1s no início. A sequência de paridades sempre dá o reverso da representação binária. Para a sequência de paridades encontradas (ímpar, par, ímpar, ímpar) se substituirmos as pares por 0s e as ímpares por 1s e revertermos a sequência, obtemos 1101, a representação binária de 13, ou o no. de 0s e 1s no início. A sequência de paridades sempre dá o reverso da representação binária.

25 ANALISANDO ALGORITMOS Quando o estágio 3 verifica para determinar que o no. de 0s e 1s restantes é par, ele na verdade checa a concordância entre a paridade dos 0s com os 1s. Quando o estágio 3 verifica para determinar que o no. de 0s e 1s restantes é par, ele na verdade checa a concordância entre a paridade dos 0s com os 1s. Se estão de acordo, as representações binárias dos nos. de 0s e de 1s concordam, e portanto os dois nos. são iguais. Se estão de acordo, as representações binárias dos nos. de 0s e de 1s concordam, e portanto os dois nos. são iguais.

26 ANALISANDO ALGORITMOS

27 Podemos decidir a linguagem A em tempo O(n) (tempo linear) se a MT tiver 2 fitas: Podemos decidir a linguagem A em tempo O(n) (tempo linear) se a MT tiver 2 fitas: M3 = Sobre a cadeia de entrada w: M3 = Sobre a cadeia de entrada w: 1. Varra a fita e rejeite se um 0 for encontrado à direita de um Varra a fita e rejeite se um 0 for encontrado à direita de um Varra os 0s sobre a fita 1 até o 1º 1. Ao mesmo tempo, copie os 0s para a fita Varra os 0s sobre a fita 1 até o 1º 1. Ao mesmo tempo, copie os 0s para a fita Varra os 1s sobre a fita 1 até o final da entrada. 3. Varra os 1s sobre a fita 1 até o final da entrada. Para cada 1 lido sobre a fita 1, corte um 0 sobre a fita 2. Se todos os 0s estiverem cortados antes que todos os 1s sejam lidos, rejeite. Para cada 1 lido sobre a fita 1, corte um 0 sobre a fita 2. Se todos os 0s estiverem cortados antes que todos os 1s sejam lidos, rejeite. 4. Se todos os 0s tiverem agora sido cortados, aceite. Se algum 0 permanecer, rejeite. 4. Se todos os 0s tiverem agora sido cortados, aceite. Se algum 0 permanecer, rejeite.

28 ANALISANDO ALGORITMOS Essa MT é simples de analisar. Cada um dos 4 estágios usa O(n) passos, que é o tempo total de execução. Essa MT é simples de analisar. Cada um dos 4 estágios usa O(n) passos, que é o tempo total de execução. Esse tempo de execução é o melhor possível porque n passos são necessários somente para ler a entrada. Esse tempo de execução é o melhor possível porque n passos são necessários somente para ler a entrada. Produzimos uma MT de uma só fita M1 que decide A em tempo quadrático e outra mais rápida M2 que decide A em tempo O(n log n). Produzimos uma MT de uma só fita M1 que decide A em tempo quadrático e outra mais rápida M2 que decide A em tempo O(n log n). Exibimos uma MT de 2 fitas M3 que decide A em tempo O(n). Logo, a complexidade de tempo de A numa MT de uma só fita é O(n log n) e numa de 2 fitas é O(n). Exibimos uma MT de 2 fitas M3 que decide A em tempo O(n). Logo, a complexidade de tempo de A numa MT de uma só fita é O(n log n) e numa de 2 fitas é O(n). Portanto a complexidade de A depende do modelo de computação escolhido. Portanto a complexidade de A depende do modelo de computação escolhido.

29 ANALISANDO ALGORITMOS Isso destaca uma importante diferença entre as teorias da complexidade e da computabilidade. Isso destaca uma importante diferença entre as teorias da complexidade e da computabilidade. Na da computabilidade, a tese de Church-Turing implica que todos os modelos razoáveis de computação são equivalentes, i.e., decidem a mesma classe de linguagens. Na da computabilidade, a tese de Church-Turing implica que todos os modelos razoáveis de computação são equivalentes, i.e., decidem a mesma classe de linguagens. Na da complexidade, a escolha do modelo afeta a complexidade de tempo de linguagens. Na da complexidade, a escolha do modelo afeta a complexidade de tempo de linguagens. Linguagens que são decidíveis em, digamos, tempo linear em um modelo não são necessariamente decidíveis em tempo linear em um outro. Linguagens que são decidíveis em, digamos, tempo linear em um modelo não são necessariamente decidíveis em tempo linear em um outro.

30 ANALISANDO ALGORITMOS Na teoria da complexidade, classificamos problemas computacionais conforme sua complexidade de tempo. Na teoria da complexidade, classificamos problemas computacionais conforme sua complexidade de tempo. Mas com qual modelo medimos tempo? Mas com qual modelo medimos tempo? A mesma linguagem pode ter requisitos de tempo diferentes em modelos diferentes. A mesma linguagem pode ter requisitos de tempo diferentes em modelos diferentes. Felizmente, requisitos de tempo não diferem enormemente para modelos determinísticos típicos. Felizmente, requisitos de tempo não diferem enormemente para modelos determinísticos típicos. Assim, se nosso sistema de classificação não for muito sensível a diferenças pequenas em complexidade, a escolha do modelo determinístico não é crucial. Assim, se nosso sistema de classificação não for muito sensível a diferenças pequenas em complexidade, a escolha do modelo determinístico não é crucial.

31 RELACIONAMENTOS DE COMPLEXIDADE ENTRE MODELOS Aqui examinamos como a escolha do modelo computacional pode afetar a complexidade de tempo de linguagens. Consideramos 3 modelos: Aqui examinamos como a escolha do modelo computacional pode afetar a complexidade de tempo de linguagens. Consideramos 3 modelos: –a MT de uma só fita; –a MT multifita; e –a MT não-determinística.

32 RELACIONAMENTOS DE COMPLEXIDADE ENTRE MODELOS

33

34 TEOREMA Inicialmente, S coloca sua fita no formato que representa todas as fitas de M e então simula os passos de M. Inicialmente, S coloca sua fita no formato que representa todas as fitas de M e então simula os passos de M. Para simular um passo, S varre toda a fita para determinar os símbolos sob as cabeças das fitas de M. Para simular um passo, S varre toda a fita para determinar os símbolos sob as cabeças das fitas de M. Então S faz uma outra passagem sobre a fita para atualizar seu conteúdo e o das posições das cabeças. Então S faz uma outra passagem sobre a fita para atualizar seu conteúdo e o das posições das cabeças. Se uma das cabeças de M move para a direita sobre a porção não lida, S tem que aumentar a quantidade de espaço alocado para sua fita, deslocando uma porção de sua própria fita uma célula para a direita. Se uma das cabeças de M move para a direita sobre a porção não lida, S tem que aumentar a quantidade de espaço alocado para sua fita, deslocando uma porção de sua própria fita uma célula para a direita.

35 RELACIONAMENTOS DE COMPLEXIDADE ENTRE MODELOS TEOREMA Para cada passo de M, S faz 2 passagens sobre a porção ativa de sua fita. A 1ª obtem a informação necessária para determinar o próximo movimento e a 2ª o realiza. Para cada passo de M, S faz 2 passagens sobre a porção ativa de sua fita. A 1ª obtem a informação necessária para determinar o próximo movimento e a 2ª o realiza. O comprimento da porção ativa da fita de S determina quanto tempo S leva para varrê-la, então vamos determinar um limitante superior para esse comprimento. O comprimento da porção ativa da fita de S determina quanto tempo S leva para varrê-la, então vamos determinar um limitante superior para esse comprimento. Tomemos a soma dos comprimentos das porções ativas das k fitas de M. Tomemos a soma dos comprimentos das porções ativas das k fitas de M.

36 RELACIONAMENTOS DE COMPLEXIDADE ENTRE MODELOS TEOREMA Cada uma dessas porções ativas tem comprimento no máximo t(n) porque M usa t(n) células em t(n) passos se a cabeça move para a direita em todo passo e muito menos se uma cabeça move para a esquerda. Cada uma dessas porções ativas tem comprimento no máximo t(n) porque M usa t(n) células em t(n) passos se a cabeça move para a direita em todo passo e muito menos se uma cabeça move para a esquerda. Portanto, uma varredura da porção ativa da fita de S usa O(t(n)) passos. Portanto, uma varredura da porção ativa da fita de S usa O(t(n)) passos. Para simular cada um dos passos de M, S realiza 2 varreduras e possivelmente até k deslocamentos para a direita. Para simular cada um dos passos de M, S realiza 2 varreduras e possivelmente até k deslocamentos para a direita. Cada uma usa um tempo O(t(n)), portanto o tempo total para S simular um dos passos de M é O(t(n)). Cada uma usa um tempo O(t(n)), portanto o tempo total para S simular um dos passos de M é O(t(n)).

37 RELACIONAMENTOS DE COMPLEXIDADE ENTRE MODELOS

38 DEFINIÇÃO Seja N uma MT não-determinística que é um decisor. Seja N uma MT não-determinística que é um decisor. O tempo de execução de N é a função f : onde f(n) é o no. máximo de passos que N usa sobre qualquer ramo de sua computação sobre qualquer entrada de comprimento n. O tempo de execução de N é a função f : onde f(n) é o no. máximo de passos que N usa sobre qualquer ramo de sua computação sobre qualquer entrada de comprimento n.

39 RELACIONAMENTOS DE COMPLEXIDADE ENTRE MODELOS

40

41


Carregar ppt "Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO Mesmo quando um problema é decidível e, portanto, computacionalmente solúvel, ele."

Apresentações semelhantes


Anúncios Google