Teoria da Computação. Computabilidade e complexidade computacional

Documentos relacionados
Aula 10: Tratabilidade

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

Aula 1. Teoria da Computação III

Medida do Tempo de Execução de um Programa

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Uma forma de classificação

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000)

Teoria da computabilidade Indecidíveis Decidíveis

Análise de complexidade

Complexidade computacional

Universidade Federal de Alfenas

Algoritmos 3/17/ Algoritmos como área de estudo e investigação

4º 20/10/2003. ÍNDICE

Universidade Federal de Alfenas

Complexidade de Algoritmos. Edson Prestes

Aula 10: Decidibilidade

Complexidade de Algoritmos

Análise de algoritmos

INTRATABILIDADE e NP-COMPLETUDE

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

Agenda. Complexidade Não Determinista A classe NP. A classe Co-NP Reduções de tempo polinomial. Definida por. Exemplos em:

Máquina de Turing. Teoria da Computação. Teoria da Computação. Histórico da Computação:

Linguagens Formais e Autômatos 02/2015. LFA Aula 02. introdução 28/09/2015. Celso Olivete Júnior.

Análise de algoritmos. Parte I

Complexidade de algoritmos Notação Big-O

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Projeto e Análise de Algoritmos

Linguagens Formais. Aula 01 - Conceitos Básicos. Prof. Othon Batista Mestre em Informática

ANÁLISE DE ALGORITMOS: PARTE 3

Capítulo 2: Procedimentos e algoritmos

Draft-v0.1. Máquinas de Turing Máquinas de Turing

Máquina de Turing. Controle finito

TEORIA DE COMPLEXIDADE

Teoria de Linguagens 2 o semestre de 2015 Professor: Newton José Vieira Primeira Lista de Exercícios Entrega: até 16:40h de 15/9.

Apostila 01 Fundamentação da Teoria da Computação e Linguagens Formais

Linguagens Regulares. Prof. Daniel Oliveira

BCC242. Auômato Finito Determinístico

Universidade Federal de Uberlândia Mestrado em Ciência da Computação

a n Sistemas de Estados Finitos AF Determinísticos

BC1424 Algoritmos e Estruturas de Dados I Aula 05 Custos de um algoritmo e funções de complexidade

Aula 9: Máquinas de Turing

Juliana Kaizer Vizzotto. Universidade Federal de Santa Maria. Disciplina de Teoria da Computação

LINGUAGENS FORMAIS E AUTÔMATOS

Máquinas de Turing 3

Projeto de máquina de Turing com múltiplas fitas reconhecedora de número primo

Linguagens Livres de Contexto

Teoria da Complexidade Computacional

Teoria da Computação. Máquinas Universais Máquina com Pilhas

Faculdade de Computação

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão

Universidade Federal de Alfenas

Lista de Exercícios 6: Soluções Funções

PLANO DE ENSINO. CURSO: Bacharelado em Sistemas de Informação MODALIDADE: PRESENCIAL ( X ) OBRIGATÓRIA ( ) OPTATIVA DEPARTAMENTO: DEINFO

Autômatos com Pilha: Reconhecedores de LLCs

SCC Capítulo 4 Máquinas de Turing e a Teoria da Computabilidade

Conceitos Básicos. Vocabulário Cadeias Linguagens Expressões Regulares Problema X Linguagem

IME, UFF 7 de novembro de 2013

Máquina de Turing e máquina de Turing universal

7. Introdução à Complexidade de Algoritmos

INE5317 Linguagens Formais e Compiladores AULA 5: Autômatos Finitos

Linguagens Formais e Autômatos (BBC242) Professor: Anderson Almeida Ferreira DECOM-UFOP

Buscas Informadas ou Heurísticas - Parte II

Quantidade de memória necessária

Licenciatura em Engenharia Informática DEI/ISEP Linguagens de Programação 2006/07

SIMULAÇÃO DE MÁQUINA DE REGISTRADORES COM MÁQUINA DE TURING MULTIFITA

Autómatos de Pilha. Cada transição é caracterizada pelo estado, símbolo que está ser lido e o elemento no topo da pilha. dados de entrada.

Alfabeto, Cadeias, Operações e Linguagens

CT-200 Fundamentos de Linguagens Formais e Automata - Aula 01 - In...

2 Teoria da Informação

Autômatos Finitos Determinís3cos (AFD)

03 Análise de Algoritmos (parte 3) SCC201/501 - Introdução à Ciência de Computação II

MT como calculadoras de funções parciais

Fundamentos de Programação

Busca com informação e exploração. Capítulo 4 Russell & Norvig Seção 4.2 e 4.3

2. DISCIPLINA REQUISITO (RECOMENDAÇÃO) 3. INDICAÇÃO DE CONJUNTO (BCC) Obrigatória TEORIA: 60 LABORATÓRIO: 30

LINGUAGENS FORMAIS E AUTÔMATOS

a complexidade no desempenho de algoritmos

Limites da Computação Algorítmica: Problemas Indecidíveis

AULA 24. Algoritmos p.856/905

Instituto de Matemática e Estatística, UFF Março de 2011

Aula 3: Autômatos Finitos

a n Sistemas de Estados Finitos AF Determinísticos (H&U, 1979) e (H;M;U, 2001)

Teoria da Computação. Exercícios. 1 Máquinas de Registos Ilimitados 2013/2014

Computabilidade: uma introdução

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

Capítulo. Análise de Algoritmos. 6.1 Complexidade de Algoritmos 6.1

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA

Terceira Lista de Exercícios 2004/2...

Área que visa determinar a complexidade (custo) de um algoritmo, com isso é possível:

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO II Campus Rio Pomba

Máquinas de Turing. Juliana Kaizer Vizzotto. Disciplina de Teoria da Computação. Universidade Federal de Santa Maria

5COP096 TeoriadaComputação

Conceitos Básicos. Vocabulário Cadeias Linguagens Problema

Máquinas de Turing (MT)

Expressões Regulares. Processamento Estatístico da Linguagem Natural. Expressões Regulares. Mais Expressões Regulares. Mais Expressões Regulares

Conceitos Básicos de Algoritmos

Técnicas de projeto de algoritmos: Indução

Introdução à Análise de Algoritmos

Transcrição:

Teoria da Computação Computabilidade e complexidade computacional 1

Computabilidade e Complexidade Computabilidade: verifica a existência de algoritmos que resolva uma classe de linguagens trata a possibilidade da sua construção Dadoumproblema se existe uma MT capaz de resolvê-lo logo o computador também resolverá- computável caso contrário o problema é dito incomputável (insolúvel) MT não é capaz de resolvê-lo Como verificar? Problemade decisão cuja resposta é SIM ou NÃO computável sem resposta incomputável 2

Computabilidade - Visão geral Quais problemas os computadores conseguem efetivamente resolver? Como isso pode ser verificado? Concentra-se nos problemas com respostas binárias (problemas sim/não ou problemas de decisão). Universo de Todos os Problemas Solucionáveis Não-Solucionáveis Parcialmente Solucionáveis Completamente Insolúveis Computáveis Não-Computáveis 3

Computabilidade e Complexidade A computabilidade é verificada através de uma MT que sempre para classe de problemas decidíveis. MT também fornece uma maneira de classificar problemas computáveis de acordo com a quantidade de trabalho necessário para se executar o algoritmo Acomplexidadedeumproblemaéoconsumodetempodeumalgoritmo ótimo ideal para solucionar o problema. O consumo é medido em função do tamanho n da instância (cadeia de entrada). Um algoritmo resolve um problema de decisão em tempo O(T(n)) se, dada uma entrada de tamanho n, o algoritmo produz a solução em, no máximo, T(n). 4

Computabilidade e Complexidade Computabilidade: verifica a existência de algoritmos que resolva uma classe de linguagens trata a possibilidade da sua construção Complexidade: trata da eficiência da computação (dos algoritmos) em computadores existentes Complexidade temporal: tempo de processamento exigido Complexidade espacial: espaço de armazenamento exigido 5

Complexidade computacional O conjunto das linguagens decidíveis pode ser dividida em classes de complexidade, que caracterizam os limites dos recursos computacionais usados para as decidir. Uma classe de complexidade é especificada por um modelo de computação por exemplo, uma MT com computação determinística ou não determinística. Questões a serem consideradas: recursos: tempo ou espaço 6

Universo de problemas Apresenta uma solução polinomial Problemas tratáveis Problemas intratáveis nenhum algoritmo de tempo polinomial pode resolvê-lo 7

Crescimento de funções de complexidade 8

Complexidade computacional Uma classe de complexidade é um conjunto C(f(n)) definido por: C(f(n)) = {L L é decidida por uma MT M de modo adequado, tal que para qualquer x, e x = n, M gasta no máximo f( x ) unidades do respectivo recurso} tempo ou espaço 9

Complexidade computacional Uma função f(n) para ser limite de complexidade temdesertotalenãodecrescente. No caso, de funções de complexidade temporal deve ainda ser tal que exista uma MT M de k-fitas que, para quaisquer dados x, pare em exatamente f( x ) passos. Esta característica permite a simulação de relógios em MT s quantidade de transições percorridas até a MT parar Restrições semelhantes se impõem para funções de complexidade de espaço. 10

Complexidade computacional em uma Máquina de Turing 11

Complexidade computacional A complexidade de tempo de uma computação mede quantidade de trabalho gasto pela computação. O tempo de uma computação de uma MT é quantificado pelo número de transições processadas (passos) quando a MT pára. 12

Complexidade computacional em uma MT Exemplo de MT M1= aceita palíndromos sobre o alfabeto Σ ={a,b} 13

Complexidade computacional em uma MT 14

Complexidade computacional em uma MT O número de transições em uma computação depende da cadeia de entrada quantidade de trabalho difere para cadeias de mesmo comprimento. Ao invés de tentar determinar o número exato de transições para cada cadeia de entrada, a complexidade de tempo de uma MT é medida pelo trabalho necessário para cadeias de um comprimento fixo. 15

Complexidade computacional em uma MT Definição: Seja M uma MT. A complexidade de tempo (tempo gasto para execução) de M é dada pela função ct M:NN tal que ct M (n) é o número máximo de transições processadas por uma computação de M quando iniciada com uma cadeia de entrada de comprimento n, independente de M aceitar ou não. 16

Complexidade computacional em uma MT Considerações: Quando se avalia a complexidade de tempo de uma máquina de Turing, assume-se que a computação termina para toda cadeia de entrada Linguagens Decidíveis. Não faz sentido discutir a eficiência de uma computação que permanece em loop(problema de decisão sem resposta). AcomplexidadedetempodáaperformancedepiorcasodaMT. 17

Complexidade computacional em uma MT A máquina M1 que aceita os palíndromos sobre o alfabeto Σ={a,b} é usada para demonstrar o processo de determinar a complexidade de tempodeumamt. Uma computação de M1 termina quando toda a cadeia de entrada foi substituída por brancos ou o primeiro par de símbolos não previsto é descoberto. Como a complexidade de tempo mede a performance do pior caso, há necessidade de se preocupar apenas com as cadeias cujas computações fazemcomqueamáquinafaçaomaiornúmeropossíveldeciclosachae-apaga(substitui por Branco) Esta condição é satisfeita quando a entrada é aceita por M1. 18

Complexidade computacional em uma MT Usando estas observações, pode-se obter os valores iniciais da função ct M1 das computações da tabela. ct M1 (0)=2 ct M1 (1)=3 ct M1 (2)=7 ct M1 (3)=10 Quando M processa uma cadeia de comprimento par, a computação alterna entre sequências de movimentos a direita e a esquerda da máquina. 19

Inicialmente a cabeça é posicionada na extremidade esquerda da fita: Movimentos à direita: a máquina se move à direita, apagando (substitui por B) o símbolo não-branco mais à esquerda. O resto da cadeia é lida e a máquina entra no estadoq4ouq7.istorequerk+1transições,ondekéocomprimentodaporçãonãobranca da cadeia. Movimentos à esquerda: M se move para a esquerda, apagando o símbolo correspondente, e continua através da porção não-branca da fita. Isto requer k transições. As ações acima reduzem o comprimento da porção não-branca da fita por dois. Ociclodecomparaçõesesubstituições(porB)érepetidoatéqueafita esteja completamente em branco. 20

Complexidade computacional em uma MT Como observado, a performance do pior caso para uma cadeia de comprimento par ocorre quando M1 aceita a entrada. A computação que aceita uma cadeia de comprimento n requer n/2 iterações do loop anterior. 21

Complexidade computacional em uma MT O número máximo de transições em uma computação de uma cadeia de comprimento par n é a soma dos primeiros n+1 números naturais. Uma análise de cadeias de comprimento ímpar produz o mesmo resultado. Consequentemente, a complexidade de tempo de M1 é dada pela função: 22

Complexidade computacional em uma MT Exemplo 2: MT2 com 2 fitas que aceita a linguagem dos palíndromos sobre o alfabeto Σ ={a,b} Uma computação de M2 percorre a entrada fazendo uma cópianafita2. Acabeçadafita2édepoismovidaàposiçãoinicial. Então,ascabeçassemovemaolongodaentrada,fita1para a esquerda e fita 2 para a direita, comparando os símbolos dasfitas1e2. 23

Complexidade computacional em uma MT Se as cabeças encontrarem símbolos diferentes, a entrada não é um palíndromo e a computação para em um estado de não-aceitação. Quando a entrada é um palíndromo, a computação para e aceita quando brancos são simultaneamente lidos nas fitas 1 e 2. Para uma entrada de comprimento n, o número máximo de transições ocorre quando a cadeia é um palíndromo(pior caso). Uma aceitação requer três passos completos: 1. acópia, 2. avoltae 3. a comparação. Contando onúmerodetransiçõesem cadapasso,vê-sequeacomplexidadedetempode M2é ct M2 (n)=3(n+1)+1. 24

Complexidade computacional em uma MT A definição da complexidade de tempo ct M é baseada nas computações da máquina M e não na linguagem aceita pela máquina. Diferentes máquinas podem ser construídas para aceitar a mesma linguagem, cada qual com diferentes complexidades de tempo. Diz-se que uma linguagem L é aceita em tempo determinístico f(n) se houver uma MT determinística M qualquercomct M (n) f(n)paratodon N. 25

Complexidade computacional em uma MT A máquina M1 mostrou que o conjunto de palíndromos sobre Σ={a,b}éaceitoemtempo(n 2 +3n+2)/2 Enquanto que a máquina de duas fitas M2 exibiu aceitação notempo3n+4. ct M2 (n) = 3(n + 1) + 1. 26

Complexidade computacional em uma MT Uma transição de uma máquina de duas fitas utiliza mais informação e realizaumaoperaçãomaiscomplicadadoqueamáquinadeumafita. A estrutura adicional da transição de duas fitas permitiu a redução no número de transições de M2 necessárias para processar uma cadeia em relaçãoàmáquinadeumafitam1. Portanto, vê-se um equilíbrio entre a complexidade das transições e o número que deve ser processado. Há formas de acelerar uma máquina que aceita uma linguagem L para produzirumanovamáquinaqueaceitalemumtempomenor. 27

Complexidade computacional em uma MT Como sempre é possível melhorar uma máquina para que aceite a linguagem num tempo menor, é interessante representar a complexidade de tempo por uma taxa de crescimento ao invés de uma função. 28

Taxa de crescimento A taxa de crescimento de uma função mede o aumento dos valores da função quando a entrada se torna arbitrariamente grande. Intuitivamente, a taxa de crescimento é determinada pelo contribuinte mais significativo ao crescimento da função. A contribuição de termos individuais aos valores de uma função pode ser vista examinando o crescimento das funções n 2 en 2 +2n+5. 29

Taxa de crescimento Acontribuiçãoden 2 àn 2 +2n+5émedidapelarazãodos valores da função na última linha. Os termos linear e constante da função n 2 + 2n + 5 são chamados de termos de ordem mais baixa. 30

Considerações sobre eficiência Estes termos influenciam os valores iniciais da função, mas à medida em que n aumenta, estes termos não contribuem significativamente para o crescimento dos valores da função. Paranpequeno(até25),otermo20n+500produzumresultadomaiorquen 2, poisadiferençaentren 2 enépequena.amedidaemquencresce,otermon 2 domina o termo 20n. Dessa forma, para n grande, o tempo necessário para a aceitaçãoéquaseproporcionalàn 2. Para essa tendência de uma função tornar-se proporcional a outra à medida em queaumenta,éditoser daordem dafunção.

Considerações sobre eficiência: notação O Definição:Dadasduasfunções,f(n)eg(n),diz-sequef(n)édaordem deg(n)ouquef(n)éo(g(n)),seexistireminteirospositivosaebtais quef(n) a*g(n)paratodon b. Por exemplo, se f(n) = n 2 + 100n e g(n) = n 2, f(n) é O(g(n)), uma vez quen 2 +100némenorouiguala2n 2 paratodon 100.Nessecaso,aé iguala2ebéiguala100. Essamesmaf(n)étambémO(n 3 ),jáquen 2 +100némenorouiguala 2n 3 paratodonmaiorouiguala8. Dada uma função f (n), podem existir várias funções g(n) tais que f(n) sejao(g(n)). 32

Considerações sobre eficiência: notação O Tabela1:f(n)=O(g(n))paraa=2eb=100,pois f(n) a*g(n)paratodon b 33

Considerações sobre eficiência Hierarquia da notação O 34

Considerações sobre eficiência: notação O Algoritmos exponenciais são, em geral, simples: variações de pesquisa exaustiva no espaço de soluções(força bruta). Algoritmos polinomiais são obtidos através de um entendimento mais profundo da estrutura do problema. Veja como exemplo a descoberta em agosto de 2002 de um algoritmo polinomial para o Problema de Verificar se um número é Primo. (http://www.cin.ufpe.br/~tg/2009-2/abc-proposta.pdf) Um problema é considerado intratável se não existe um algoritmo polinomial para resolvê-lo. Um problema é considerado bem resolvido/tratável se existe um algoritmo polinomial para o problema. Tais problemas são considerados eficientes. 35

Considerações sobre eficiência Apresenta uma solução polinomial Problemas tratáveis Problemas intratáveis nenhum algoritmo de tempo polinomial pode resolvê-lo 36

Crescimento de funções de complexidade 37

Algoritmos polinomais e não-polinomiais A eficiência de um algoritmo é caracterizada por sua taxa de crescimento. Um algoritmo em tempo polinomial, ou simplesmente um algoritmo polinomial, tem sua complexidade de tempo polinomialmente limitada. Portanto, ct M = O(n r ) para algum r N, onde M é uma MT padrão que computa o algoritmo. A distinção entre algoritmos polinomiais e não polinomiais é aparente quando se considera o número de transições de uma computação quando o comprimento da entrada aumenta. 38

Algoritmos polinomais e não-polinomiais Número de transições de máquina com complexidade de tempo ct M com entrada de comprimento n. 39

Computabilidade e Complexidade Computabilidade: verifica a existência de algoritmos que resolva uma classe de linguagens trata a possibilidade da sua construção Complexidade: trata da eficiência da computação (dos algoritmos) em computadores existentes Complexidade temporal: tempo de processamento exigido Complexidade espacial: espaço de armazenamento exigido Custo computacional 40

Referências bibliográficas Rosa, João Luis. Teoria da Computação e Linguagens Formais. Notas de Aula. Ciências de Computação. Instituto de Ciências Matemáticas e de Computação. Universidade de São Paulo, 2007. Hopcroft, John E.,1939. Introdução à teoria de autômatos, linguagens e computação. Rio de Janeiro: Campus, 2003. 41

Exercícios 1. Defina e exemplifique a análise de complexidade por tempo. 2. Defina e exemplifique os seguintes termos: a) Ordem de complexidade de melhor caso. b) Ordem de complexidade de caso médio. c) Ordem de complexidade de pior caso. 3. ConstruaumaMT quedecidealinguagema={w w contém o mesmo número de 0 s e 1 s} e dê a complexidade de tempo. 42