Você está na página 1de 4

Fundamentos Tericos da Computao Lista de Exerccios II Departamento de Cincia da Computao Universidade Federal do Amazonas Marco Cristo Alunos: Kathlen

B. Maduro. Mat: 21003569 Renan Reis. Mat: 21003611 Mquinas de Turing 1) Construa uma MT com alfabeto de entrada {a, b} para realizar cada uma das operaes abaixo: a) Deslocar a entrada uma clula para a direita: BuB BBuB.

Descrio: A maquina l a entrada at o final , quando encontra o final (B), apaga-o e vai para a prxima clula (vazia), escreve B e volta uma clula, encontra a clula vazia e volta uma clula, caso encontre a ou b, apaga-a, vai para a direita, escreve a ou b e volta para a esquerda, anda mais uma casa para esquerda e continua o ciclo at encontrar B, vai para a direita e escreve B.
b) Eliminar todos os b da entrada: BabbbababaB BaaaaB.

Descrio: A mquina l B na fita de entrada, escreve B na fita de sada, e vai para a direita em cada uma. A cada leitura de a, escreve a na fita de sada, a cada leitura de b apenas apaga b e vai para a direita na fita de entrada, sem mover a fita de sada, at encontrar B e escrever B na fita de sada. c) Concatenar uma cpia do reverso da string de entrada direita da mesma: BuB BuuR B.

Descrio: A mquina l B na fita de entrada, escreve B na fita de sada, e vai para a direita em cada uma. A cada leitura de a ou b escreve na fita de sada, at encontrar B e volta para a esquerda na fita de entrada, ento l a ou b na fita de entrada, escreve na fita de -o sada vai para a esquerda na de entrada e para a direita na e sada at chegar ao inicio e escreve B na fita de sada. 2) Construa uma MT com alfabeto de entrada {a, b} que aceite as seguintes linguagens por estado final: a) {ambn | m > n}

Ler palavra do{ Trocar o primeiro a por lambda Se palavra est vazia entao {palavra aceita; break;} senao { troca o ultimo b por lambda volta para o comeo da palavra } }while(true); b) Strings com o mesmo nmero de a s e b s.

Ler palavra do{ Se palavra est vazia entao {palavra aceita; break;} senao { Se palavra = ab entao palavra aceita senao{ para cada a lido, a removido e um removido volta para o comeo da palavra} } }while(true); Teoria da Complexidade 3) Dado o algoritmo de multiplicao de matrizes (em pseudo-python), determine seu custo absoluto e complexidade assinttica:
def mult(matrix1, matrix2): # se numero de colunas de matrix1 == numero de linhas de matrix2 if len(matrix1[0]) == len(matrix2): for i from 0 to len(matrix1) - 1: for j from 0 to len(matrix2[0]) - 1: for k from 0 to len(matrix2) - 1: new_matrix[i][j] += matrix1[i][k]*matrix2[k][j] return new_matrix

Cnomplexidade Assintotica : polinomial O(n3). Custo: Linhas_M1 * Colunas_M2 * Linhas_M2

4) Dado o algoritmo de busca ternria (em pseudo-python) abaixo, responda:


def ternarySearch(f, left, right, absolutePrecision): # left e right so os limites atuais; if (right - left) < absolutePrecision: return (left + right)/2

# atualiza limites leftThird = (2*left + right)/3 rightThird = (left + 2*right)/3 # atualiza limites if f(leftThird) < f(rightThird): return ternarySearch(f, leftThird, right, absolutePrecision) return ternarySearch(f, left, rightThird, absolutePrecision)

a) Qual o seu custo absoluto e a sua complexidade assinttica? Complexidade Assinttica: Sublinear O(log n) Custo: log3 (n+1) b) Como ele se compara com o algoritmo de Busca Binria dado em sala de aula? Qual dos dois o melhor? O Algoritmo de busca binria tem a mesma complexidade assinttica que a ternria Sublinear O(log n). Mas o custo da busca ternria mais baixo, ou seja, melhor.

Você também pode gostar