Teoria da Computação: Aplicações e Problemas de Investigação. Marco Antonio de Castro Barbosa

Documentos relacionados
SIMPÓSIO BRASILEIRO DE PESQUISA OPERACIONAL 8 a 11 de novembro de 2002, Rio de Janeiro/RJ A PESQUISA OPERACIONAL E AS CIDADES

ANAC UMA FERRAMENTA PARA APOIO AO ENSINO DE COMPLEXIDADE DE ALGORITMOS. Marco Antonio de Castro Barbosa, Laira Vieira Toscani, Leila Ribeiro

Mecanismos de Interrupção e de Exceção, Barramento, Redes e Sistemas Distribuídos. Sistemas Operacionais, Sistemas

Algoritmos para Automação e Sistemas

FACULDADE LEÃO SAMPAIO

PLANO DE UNIDADE DIDÁTICA- PUD

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 32. Instituto de C

Linguagens de Programação Aula 3

Eng. Alimentos PROGRAMA DE DISCIPLINA IDENTIFICAÇÃO CÓDIGO DISCIPLINA PRÉ-REQUISITOS

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

EA876 - Introdução a Software de Sistema

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

Elementos básicos das linguagens de programação

Linguagem de Programação I Prof. Tiago Eugenio de Melo.

BCC Projeto e Análise de Algoritmos Aula 0: Apresentação

Análise Sintática II: Analisadores Descendentes Preditivos

Lista de Ementas. Nível I

1º Semestre. Algoritmos e Programação Orientada a Objetos I. Fundamentos de Teoria da Computação. Introdução à Administração

Figura 4.2: Matriz Curricular

Ementário das disciplinas do curso de Engenharia de Software

SCC-501 Introdução à Ciência de Computação II

ao paradigma imperativo

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S.

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

FOLHA DE PROVA. Descreva e ilustre, com um exemplo, o algoritmo de minimização de um autômato.

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

Teoria da Computação e Algoritmos. Introdução à Linguagem Pascal. ALGORITMO <Nome do algoritmo>; <definições>; INÍCIO <Comandos>; FIM.

TEORIA: 60 LABORATÓRIO: 0

Desenho e Análise de Algoritmos

Projeto e Análise de Algoritmos

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores

Compiladores. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 38

Linguagens Formais e Autômatos

SCC-201 Introdução à Ciência de Computação II

Bacharelado em Ciência da Computação 4/606 Turno Manhã Lista de Ementas

Ementário das disciplinas do curso de Engenharia da Computação. - Núcleo Básico -

V.2 Especificação Sintática de Linguagens de Programação

Compiladores 02 Analise léxica

BACHARELADO EM SISTEMAS DE INFORMAÇÃO MATEMÁTICA DISCRETA Aula 1 - Apresentação da disciplina

Construção de Algoritmos II Aula 06

Compiladores. Análise Léxica

FERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS

Lógica de Hoare. Abordagem que usaremos: aplicar o método de Hoare sobre uma linguagem de programação imperativa simplificada.

Linguagens de Programação. Fluxo de Controle. Carlos Bazilio

Paradigmas de Programação

Paradigmas de Projetos de Algoritmos

SEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end.

Programa Analítico de Disciplina SIN213 Projeto de Algoritmos

Lógica de Programação Completo

Algoritmos Combinatórios: Introdução

Compiladores. Prof. Bruno Moreno Aula 8 02/05/2011

Sistemas de Computação Algébrica (SCA)

Uma gramática é ambígua se existe alguma cadeia para qual ela tem mais de uma árvore sintática

Análise e Complexidade de Algoritmos

FACULDADE DE CIÊNCIA DE ENGENHARIA DE SOFTWARE MATRIZ CURRICULAR DO CURSO DE ENGENHARIA DE SOFTWARE PRIMEIRO PERÍODO SEGUNDO PERÍODO

CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista ( )

Introdução Paradigmas

Compiladores. Fabio Mascarenhas

Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia

Valdex Santos. 09 de junho de 2011

Compiladores - Especificando Sintaxe

Pontifícia Universidade Católica do Rio Grande Do Sul Faculdade de Informática Bacharelado em Ciência da Computação - 4/606 Turno Manhã

Programação de Computadores:

CP Compiladores I Prof. Msc.. Carlos de Salles

Técnicas de Concepção de Algoritmos: Branch and Bound

EMENTÁRIO CURSO DE CIÊNCIA DA COMPUTAÇÃO MATRIZ 2013

Compiladores. Introdução à Compiladores

Compiladores. Prof. Bruno Moreno

Teoria da computabilidade Indecidíveis Decidíveis

n Professor n Duas Avaliações prático-teóricas: n Componente Teórico: 20 pontos n Componente Prático: 15 pontos

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos

Linguagem de Programação e Compiladores

A Matemática como Serviço a Ciência da Computação. Prof. Dr. Carlos Eduardo de Barros Paes Coordenador do Curso de Ciência da Computação

Compiladores - Gramáticas

CURSO DE GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO MATRIZ CURRICULAR MATUTINO Fase N.

Linguagens de Programação. Introdução. Carlos Bazilio

Compiladores - Análise Léxica

Projeto de Compiladores

UMA PROPOSTA DE FERRAMENTA PARA SIMPLIFICAR A DEPURAÇÃO DE CÓDIGOS EM C, POR ALUNOS INICIANTES

Análise semântica. Função, interação com o compilador Tabela de símbolos Análise semântica. Prof. Thiago A. S. Pardo

I.2 Introdução a Teoria da Computação

Conceitos de Linguagens de Programação

INTRODUÇÃO AOS SISTEMAS LÓGICOS

Programa Analítico de Disciplina INF333 Programação Competitiva

ALGORITMOS AVANÇADOS UNIDADE I Análise de Algoritmo - Notação O. Luiz Leão

INTRODUÇÃO À COMPUTAÇÃO - EPET006 Aula 3

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Teoria da Computação (BBC244)

PCC104 - Projeto e Análise de Algoritmos

Tópicos Avançados em Algoritmos

Transcrição:

Teoria da Computação: Aplicações e Problemas de Investigação Marco Antonio de Castro Barbosa marco.cb@gmail.com mbarbosa@utfpr.edu.br

Objetivos: Apresentar pesquisas realizadas; Identificar questões de investigação em aberto; Elencar tópicos e áreas de interesse de investigação.

Tamanho da entrada do problema Escolha da operação fundamental Contagem do número de execuções desta operação Exemplo: 1. maior vet[1] ; 2. para i de 2 até n faça 3. se maior < vet[i] então 4. maior vet[i]; 4. fim_para ; 5. retorne-saída(maior) Complexidade no pior caso = 0(n) (ou (n))

O protótipo ANAC O ANAC (ANAlisador de Complexidade) é um analisador léxicosintático; Recebe um algoritmo escrito numa linguagem fonte Pascal-like pré-estabelecida e gera a análise da complexidade do algoritmo; Permite a visualização de algumas etapas do processo intermediário de análise do algoritmo e do resultado final na forma de uma expressão simplificada, se possível, em ordem assintótica de complexidade; Gera os resultados no Pior Caso;

Metodologia de cálculo de complexidade para estruturas algorítmicas. [TOS 90] Linguagem de programação Java. Simplificação da equação obtida fornecendo ao usuário uma solução mais fácil de ser analisada. Analise algoritmos não recursivos.

top-down Quando uma estrutura algorítmica é identificada a equação de complexidade referente a ela é definida. árvore-sintática correspondente. Notação: x i = complexidade da estrutura x i ; S i = representa as S i s estruturas presentes no algoritmo. p(x) = probabilidade da variável x ser verdadeira;

Programa Análise do programa Árvore da Estrutura Atribuição program atrib; x1 = c (a := b) + x2 = 1 + x2 begin x2 = c (end) = 0; a:=b x1 a := b; x1 = 1 + 0 = 1 end. 0(1) end x2

Programa Análise do programa Program atrib; x1 = C ( a<=b ) + x2 + x3 begin x2 = C ( menor := a ) + x4 = 1 + x4 if a <= b then x4 = C ( menor := b ) + x5 = 1 + x5 menor := a; x5 = C ( endif ) = 0 else x4 = 1 + 0 = 1 menor := b; x2 = 1 + 1 = 2 endif; x3 = C ( end ) = 0 end. x1 = 1 + 2 + 0 = 1 O ( 1 )

j i c(for k = i to j do a)(n) = k 0 c(a)( t k ( n)) Programa Análise do programa Program itera; x1 = c (for i:= 1 to n do x2) + x3 = [SUM( i=1, n) x2] + x3 begin x2 = c (a:=b ) + x4 = 1 + x4 for i := 1 to n do x4 = c (endfor) = 0 a := b; x2 = 1 + 0 = 0 endfor; x3 = c (end) = 0 end. x1 = [SUM(i=1,n) 0] + 0 = n + 0 = n O(n)

c(while a do b)(n) = c( a)( t k ( n)) k 1 i 0 ( c( a) c( b))( t i ( n)) Programa Análise do programa Program itecon; x1 = C( while a < b do x2 ) + x3 = C ( a<b ) + [ n.x2 ] + x3 begin x2 = C ( c := d ) + x4 = 1 + x4 while a < b do x4 = C ( endwhile ) = 0 a := b; x2 = 1 + 0 = 1 endwhile; x3 = C ( end ) = 0 end. x1 = 1 + [ n.1 ] + 0 = n O ( n )

Programa Análise do programa If a < b then x1 = c(a<b) + x2 + x3 = x1 = 1 + x2 + x3 vet[i] := a; x2 = c(vet[i] := a ) + x4 = 1 + x4 else x4 = c(vet[i] := b ) + x5 = 1 + x5 vet[i] := b; x5 = c (endif) = 0 endif; x4 = 1 + 0 = 1 for i:=1 to n do x2 = 1 + 1 = 2 vet[i] := 0; x3 = c (for i:= 1 to n do x6 ) + x7 x3 = [ SUM( i=1, n) x6 ] + x7 endfor; x6 = c(vet[i] := 0 ) + x8 = 1 + x8 end. x8 = c (endfor) = 0 x6 = 1 + 0 = 1 x7 = c (end) = 0 x3 = [ SUM( i=1, n) 1 ] + 0 = x3 = n + 0 = n x1 = 1 + 2 + n = n O (n)

Reformulação do código; Melhor tratamento de erros; compiladores Análise de algoritmos no caso médio; Maple?, Matlab?,... Análise de algoritmos recursivos. Equações de recorrência, Maple?, Matlab?, Prolog?,...

SBIE CLEI CNMAC SBPO

Tese: Specification and Refinement of Software Connectors

Novos desafios para a área de Métodos Formais/Engenharia de Software; Modelagem de sistemas complexos; Modelos massivamente paralelos; Desenvolvimento de software voltado para a internet

Especificação formal de componentes de software; Especificação formal de conectores de software; Desenvolvimento de um cálculo para se raciocinar sobre os modelos desenvolvidos Noções de igualdade e refinamento de conectores.

Modelo relacional sem estado Modelo Coalgébrico com estado Espeficação e comportamento de interfaces de software Noção formal de configuração Protótipo de animação na linguagem Haskell

Extensão do modelo para tratamento de reconfiguração dinâmica; -calculus? Prototipação em linguagem Java; Metodologia de cálculo de desempenho para arquitetura de software.

Journal of Universal Computer Science (2) Science of Computer Programming Simpósio Brasileiro de Linguagens de programação (2) Lecture Notes in Computer Science (2) Eletronic Notes in Computer Science (3)

Tratamento de Problemas NP-Completo, NP- Hard; Problemas de Otimização Combinatória; Métodos Heurísticos, algoritmos exatos e aproximados; Paradigmas de Projetos de Algoritmos Programação Dinâmica, Divisão-e-conquista, Método Guloso

Problema do Caixeiro Viajante; Problema de Roteamento de Veículos: Frota Homogênea; Frota Heterogênea; Com janela de tempo; Problema da Máxima Cobertura; Problema da Árvore Geradora Mínima Generalizado

Obrigado! Dúvidas? Perguntas? Comentários?