Classes de Complexidade e NP-Completude

Tamanho: px
Começar a partir da página:

Download "Classes de Complexidade e NP-Completude"

Transcrição

1 Classes de Complexidade e NP-Completude E. C. Xavier e F. K. Miyazawa Instituto de Computação/Unicamp 8 de outubro de 2009 E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude 8 de outubro de / 19

2 Mais Sobre Complexidade Devemos estabelecer bem que problema estamos considerando durante provas de NP-Completude. Considere o problema 2CNF-SAT: Temos uma fórmula escrita na CNF onde cada cláusula possui até 2 literais. 2CNF-SAT = { f : f é uma fórmula na 2CNF e possui atribuição verdadeira } E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude 8 de outubro de / 19

3 Mais Sobre Complexidade Teorema Seja f uma fórmula na 2CNF. Existe um algoritmo polinomial que decide se f possui ou não atribuição verdadeira. Prova. Exercício. Com isso mostramos que 2CNF-SAT pertence a P. Mas considere o problema MAX-2CNF-SAT: MAX-2CNF-SAT = { f : f é uma fórmula na 2CNF e possui uma atribuição que deixa pelo menos k cláusulas verdadeiras } E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude 8 de outubro de / 19

4 Mais Sobre Complexidade Teorema MAX-2CNF-SAT é NP-Completo. Vamos fazer uma redução do problema Vertex-Cover (VC) para o MAX-2CNF-SAT. Seja G, k uma instância para o VC com n vértices. Para cada vértice x i de G criamos um literal x i. Também inserimos a cláusula x i na fórmula f. Para cada aresta (x i, x j ) de G acrescentamos n 3 cláusulas (x i x j ) na fórmula f. E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude 8 de outubro de / 19

5 Continuação da prova É claro que f pode ser construída em tempo polinomial. Consideramos a instância f, k para o MAX-2CNF-SAT onde k = n 3 E + n k. Ida: Seja V V uma cobertura de tamanho k. Para cada vértice x u V faça x u = 1 em f. Para os demais vértices, deixe os valores das variáveis em zero. Como V é uma cobertura então todas as cláusulas correspondentes as arestas serão satisfeitas. Além disso, das n cláusulas correspondentes aos vértices, k não serão satisfeitas. Portanto n 3 E + n k cláusulas são satisfeitas E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude 8 de outubro de / 19

6 Volta: Continuação da prova Suponha que pelo menos E n 3 + n k cláusulas sejam satisfeitas em f. Primeiramente note que é impossível satisfazer todas as cláusulas de arestas e vértices ao mesmo tempo. Note que se não satisfizermos alguma cláusula de aresta deixamos pelo menos n 3 cláusulas não satisfeitas. E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude 8 de outubro de / 19

7 Continuação da prova Logo para haver E n 3 + n k cláusulas satisfeitas, todas as cláusulas de aresta devem estar satisfeitas. Do total de n cláusulas de vértices, teremos n k satisfeitas, e portanto existem k literais x i com valores em 1. Os vértices correspondentes a estes literais devem formar um cobertura pois todas as cláusulas de arestas estão satisfeitas. E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude 8 de outubro de / 19

8 Complexidade de Espaço Da mesma forma como avaliamos algoritmos em termos de tempo, podemos avalia-los em termos de espaço utilizado. Definição O espaço (memória) utilizado por um algoritmo determinístico corresponde ao número de células (bits) que este acessa durante sua execução. Definição O espaço utilizado por um algoritmo não-determinístico é o número de células acessadas em um ramo mais curto de execução da árvore até o estado aceita. E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude 8 de outubro de / 19

9 Complexidade de Espaço Definição SPACE(f (n)) = {L : L é uma linguagem decidida deterministicamente em espaço O(f (n))} Definição NSPACE(f (n)) = {L : L é uma linguagem decidida não-deterministicamente em espaço O(f (n))} Podemos mostrar por exemplo que linguagens em NP gastam espaço polinomial. E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude 8 de outubro de / 19

10 Complexidade de Espaço Definição PSPACE são as linguagens que podem ser decididas por algoritmos determinísticos que usam espaço polinomial:. Definição PSPACE = k SPACE(n k ) para constante k NPSPACE são as linguagens que podem ser decididas por algoritmos não-determinísticos que usam espaço polinomial:. NPSPACE = k NSPACE(n k ) para constante k E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude 8 de outubro de / 19

11 Complexidade de Espaço Teorema Teorema de Savitch: Para qualquer função f : N R NSPACE(f (n)) SPACE(f 2 (n)) O teorema nos diz que as linguagens decididas por algoritmos não-determinísticos com f (n) de espaço podem ser decididas por algoritmos determinísticos com espaço f 2 (n). E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude 8 de outubro de / 19

12 Complexidade de Espaço Teorema PSPACE = NPSPACE. Prova. É claro que PSPACE NPSPACE. Se L NPSPACE então ela é decidida não deterministicamente em espaço O(n k ) para uma constante k. Pelo teo. de Savitch L pode ser decidida por alg. determinístico com espaço O(n 2k ) que é polinomial. E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude 8 de outubro de / 19

13 Complexidade de Espaço Sabemos que existe a seguinte relação entre as classes: P NP PSPACE = NPSPACE E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude 8 de outubro de / 19

14 Indecibilidade Até então temos nos preocupado com o esforço necessário que um algoritmo tem para resolver um problema. Mas existem problemas insolúveis por algoritmos como temos usado!!! Tais problemas são ditos indecidíveis pois não há algoritmo que decide o problema. Mesmo que o algoritmo não seja polinomial! E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude 8 de outubro de / 19

15 Indecibilidade Definição Problema da Parada: Dado uma string s e um algoritmo A, deve-se decidir se A aceita ou não s. Vamos mostrar que este problema é indecidível. Uma idéia que poderíamos ter é a de criar um algoritmo A que simule A sobre a entrada s. Mas não sabemos se A para ou não!! Quando decidir que A não aceita s? E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude 8 de outubro de / 19

16 Indecibilidade Teorema O problema da Parada é indecidível. Prova. Vamos fazer uma prova por contradição. Suponha que haja um algoritmo H que decida o problema. H( A, s ) = { aceita rejeita se A aceita s se A não aceita s E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude 8 de outubro de / 19

17 Continuação da Prova Vamos montar um outro algoritmo H 2 que usa H como subrotina. Este algoritmo recebe como parâmetro apenas um algoritmo e testa se o algoritmo aceita ou não o próprio algoritmo. { aceita se A aceita A (se H( A, A ) = 1) H 2 ( A ) = rejeita se A não aceita A (se H( A, A ) = 0) E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude 8 de outubro de / 19

18 Continuação da Prova Vamos considerar agora um novo algoritmo H 3 que faz o contrário de H 2. { aceita se A não aceita A (se H( A, A ) = 0) H 3 A ) = rejeita se A aceita A (se H( A, A ) = 1) O que acontece se passarmos o algoritmo H 3 como entrada para ele mesmo?? E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude 8 de outubro de / 19

19 Continuação da Prova Se passarmos H 3 como parâmetro para H 3 teremos: { aceita se H 3 não aceita H 3 H 3 ( H 3 ) = rejeita se H 3 aceita H 3 O que é uma contradição pois H 3 aceita ele próprio quando ele rejeita ele próprio! E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude 8 de outubro de / 19

Complexidade de Algoritmos

Complexidade de Algoritmos Complexidade de Algoritmos Classes de Complexidades de Problemas Prof. Osvaldo Luiz de Oliveira Estas anotações devem ser complementadas por apontamentos em aula. Tempo polinomial Um algoritmo A, com entrada

Leia mais

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Seção 5.1 Problemas indecidíveis. Slides originais gentilmente cedidos pela Profa. Ariane Machado Lima

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Seção 5.1 Problemas indecidíveis. Slides originais gentilmente cedidos pela Profa. Ariane Machado Lima ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO Seção 5.1 Problemas indecidíveis Slides originais gentilmente cedidos pela Profa. Ariane Machado Lima 1 Na aula passada... A MT é indecidível (usando diagonalização)

Leia mais

Eduardo C. Xavier. 24 de fevereiro de 2011

Eduardo C. Xavier. 24 de fevereiro de 2011 Reduções Eduardo C. Xavier Instituto de Computação/Unicamp 24 de fevereiro de 2011 Eduardo C. Xavier (IC/Unicamp) Reduções 24 de fevereiro de 2011 1 / 23 Programação Linear (PL) Vimos que na tentativa

Leia mais

Análise e Complexidade de Algoritmos

Análise e Complexidade de Algoritmos Análise e Complexidade de Algoritmos Uma visão de Intratabilidade, Classes P e NP - redução polinomial - NP-completos e NP-difíceis Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com http://www.bolinhabolinha.com

Leia mais

Faculdade de Computação

Faculdade de Computação UNIVERSIDADE FEDERAL DE UBERLÂNDIA Faculdade de Computação Disciplina : Teoria da Computação Professora : Sandra Aparecida de Amo Lista de Exercícios n o 2 Exercícios sobre Modelos de Máquinas de Turing

Leia mais

Complexidade de Algoritmos. Edson Prestes

Complexidade de Algoritmos. Edson Prestes Edson Prestes Um problema pode ser resolvido através de diversos algoritmos; O fato de um algoritmo resolver um dado problema não significa que seja aceitável na prática. Na maioria das vezes, a escolha

Leia mais

Criptografia e Teoria da Complexidade

Criptografia e Teoria da Complexidade Denise Goya (dhgoya@ime.usp.br) Joel Uchoa (joelsu@ime.usp.br) DCC - IME - USP MAC 5722 - Complexidade Computacional Prof. José Augusto Ramos Soares Seminário - novembro/2008 Sumário Introdução 1 Introdução

Leia mais

CI165 Introdução. André Vignatti. 31 de julho de 2014

CI165 Introdução. André Vignatti. 31 de julho de 2014 Introdução 31 de julho de 2014 Antes de mais nada... Os slides de 6 aulas (introdução, insertion sort, mergesort, quicksort, recorrências e limitantes de ordenação) foram originalmente feitos pelos Profs.

Leia mais

Online Survivable Network Design

Online Survivable Network Design Fonte: Artigo de Gupta, Krishnaswamy e Ravi. 06 de abril de 2011, IC-Unicamp. Problema de Survivable Network Design Problema de construir uma rede com tolerância a falhas. Podemos considerar falhas nos

Leia mais

Faculdade de Computação

Faculdade de Computação UNIVERSIDADE FEDERAL DE UBERLÂNDIA Faculdade de Computação Disciplina : Teoria da Computação Professora : Sandra de Amo Solução da Lista de Exercícios n o 6 - Problemas Indecidiveis Exercicio 7-5.5 do

Leia mais

Lógica Computacional

Lógica Computacional Lógica Computacional A Resolução como Regra de Inferência O Sistema de Dedução R P Coerência e Completude do Sistema R P 13 Novembro 2013 Lógica Computacional 1 Resolução - O algoritmo Horn-SAT é coerente

Leia mais

Ementas das disciplinas:

Ementas das disciplinas: SERVIÇO PÚBLICO FEDERAL UNIVERSIDADE FEDERAL DO MATO GROSSO DO SUL UNIVERSIDADE FEDERAL DE GOIÁS DOUTORADO EM CIÊNCIA DA COMPUTAÇÃO Ementas das disciplinas: Álgebra para Computação: Ementa: Números inteiros:

Leia mais

Que tipo de problemas são insolúveis por computador? Todos eles são teóricos?? A resposta é não!

Que tipo de problemas são insolúveis por computador? Todos eles são teóricos?? A resposta é não! Que tipo de problemas são insolúveis por computador? Todos eles são teóricos?? A resposta é não! Por exemplo, se dermos como entrada para um processo de verificação da corretude de programas um programa

Leia mais

Universidade Federal de Alfenas

Universidade Federal de Alfenas Universidade Federal de Alfenas Projeto e Análise de Algoritmos Aula 02 Um pouco da história da computação humberto@bcc.unifal-mg.edu.br Última aula... Fundamentos de Matemática; Medida do Tempo de Execução

Leia mais

Análise e Projeto de Algoritmos

Análise e Projeto de Algoritmos Análise e Projeto de Algoritmos Prof. Eduardo Barrére www.ufjf.br/pgcc www.dcc.ufjf.br eduardo.barrere@ice.ufjf.br www.barrere.ufjf.br Complexidade de Algoritmos Computabilidade: Um problema é computável

Leia mais

Algoritmos de Aproximação Segundo Semestre de 2012

Algoritmos de Aproximação Segundo Semestre de 2012 Algoritmos de Aproximação Segundo Semestre de 2012 Aproximação p. 1 Bin Packing Dados: n itens ([n] = {1,...,n}) Dados: comprimento a[i] do item i (i = 1,...,n) Aproximação p. 2 Bin Packing Dados: n itens

Leia mais

2. Execução do algoritmo de Huffman para construção de uma árvore binária (árvore de Huffman).

2. Execução do algoritmo de Huffman para construção de uma árvore binária (árvore de Huffman). MC202 - Estruturas de Dados IC UNICAMP Prof.: Neucimar J. Leite Monitor: Lucas Bueno Laboratório Nō 6 1 Códigos de Huffman Uma das aplicações interessantes de árvores binárias é a compactação de arquivos

Leia mais

Reduções de Problemas Difíceis

Reduções de Problemas Difíceis Reduções de Problemas Difíceis André Vignatti DINF- UFPR Reduções de Problemas Difíceis Na figura abaixo, esquema das reduções que vamos (tentar) ver. Todos problemas NP CIRCUIT SAT SAT 3SAT INDEPENDENT

Leia mais

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

Teoria da Complexidade

Teoria da Complexidade handout.pdf June 5, 0 Teoria da Complexidade Cid C. de Souza / IC UNICAMP Universidade Estadual de Campinas Instituto de Computação o semestre de 0 Revisado por Zanoni Dias Autor Prof. Cid Carvalho de

Leia mais

Os limites da computação algorítmica

Os limites da computação algorítmica Capítulo 12 Os limites da computação algorítmica 12.1. Problemas que não podem ser resolvidos pelas MT. 12.2. Problemas indecidíveis para LRE 12.3. Problema da correspondência de Post 12.4. Problemas indecidíveis

Leia mais

UM TEOREMA QUE PODE SER USADO NA

UM TEOREMA QUE PODE SER USADO NA UM TEOREMA QUE PODE SER USADO NA PERCOLAÇÃO Hemílio Fernandes Campos Coêlho Andrei Toom PIBIC-UFPE-CNPq A percolação é uma parte importante da teoria da probabilidade moderna que tem atraído muita atenção

Leia mais

Computabilidade 2012/2013. Sabine Broda Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto

Computabilidade 2012/2013. Sabine Broda Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto Computabilidade 2012/2013 Sabine Broda Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto Capítulo 1 Computabilidade 1.1 A noção de computabilidade Um processo de computação

Leia mais

Algoritmos e Programação de Computadores

Algoritmos e Programação de Computadores Algoritmos e Programação de Computadores Algoritmos Estrutura Sequencial Parte 1 Professor: Victor Hugo L. Lopes Agenda Etapas de ação do computador; TDP Tipos de Dados Primitivos; Variáveis; Constantes;

Leia mais

Introdução à classe de problemas NP- Completos

Introdução à classe de problemas NP- Completos Introdução à classe de problemas NP- Completos R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes FEUP, MIEIC, CAL, 2010/2011 1 Introdução Considerações Práticas Em alguns casos práticos, alguns

Leia mais

Conceitos básicos da linguagem C

Conceitos básicos da linguagem C Conceitos básicos da linguagem C 2 Em 1969 Ken Thompson cria o Unix. O C nasceu logo depois, na década de 70. Dennis Ritchie, implementou-o pela primeira vez usando o sistema operacional UNIX criado por

Leia mais

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com Objetivos Compreender os conceitos de lógica de programação e de algoritmos. Conhecer

Leia mais

Aula 2 Variáveis. Precisamos armazenar os tipos de dados da aula anterior (inteiros, reais, literais e lógicos) em memória. Como fazer?

Aula 2 Variáveis. Precisamos armazenar os tipos de dados da aula anterior (inteiros, reais, literais e lógicos) em memória. Como fazer? Aula 2 Variáveis 1. Introdução Computadores precisam manipular informações. Por conseguinte, precisam armazená-las em sua memória. Para isso, usamos a abstração de variáveis. 2. Sistemas de numeração Explicar

Leia mais

9 Comandos condicionais

9 Comandos condicionais 9 Comandos condicionais Um comando condicional é uma instrução empregada quando se deseja criar um desvio, isto é, a opção de executar-se ou não um determinado trecho de código, segundo uma condição. Em

Leia mais

Complexidade de Algoritmos. Edson Prestes

Complexidade de Algoritmos. Edson Prestes Edson Prestes O limite superior de complexidade de um problema refere-se ao melhor algoritmo que o resolve. nlog 2 n é um limite superior para o problema de classificação. O limite inferior de um problema

Leia mais

CTC-17 Inteligência Artificial Problemas de Busca. Prof. Paulo André Castro pauloac@ita.br

CTC-17 Inteligência Artificial Problemas de Busca. Prof. Paulo André Castro pauloac@ita.br CTC-17 Inteligência Artificial Problemas de Busca Prof. Paulo André Castro pauloac@ita.br www.comp.ita.br/~pauloac Sala 110, IEC-ITA Sumário Agentes que buscam soluções para problemas: Exemplo Tipos de

Leia mais

28 de agosto de 2015. MAT140 - Cálculo I - Derivação Impĺıcita e Derivadas de Ordem Superior

28 de agosto de 2015. MAT140 - Cálculo I - Derivação Impĺıcita e Derivadas de Ordem Superior MAT140 - Cálculo I - Derivação Impĺıcita e Derivadas de Ordem Superior 28 de agosto de 2015 Derivação Impĺıcita Considere o seguinte conjunto R = {(x, y); y = 2x + 1} O conjunto R representa a reta definida

Leia mais

Problemas insolúveis. Um exemplo simples e concreto

Problemas insolúveis. Um exemplo simples e concreto Surge agora uma outra questão. Viemos buscando algoritmos para resolver problemas. No entanto, será que sempre seria possível achar esses algoritmos? Colocando de outra forma: será que, para todo problema,

Leia mais

Bem, produto interno serve para determinar ângulos e distâncias entre vetores e é representado por produto interno de v com w).

Bem, produto interno serve para determinar ângulos e distâncias entre vetores e é representado por produto interno de v com w). Produto Interno INTRODUÇÃO Galera, vamos aprender agora as definições e as aplicações de Produto Interno. Essa matéria não é difícil, mas para ter segurança nela é necessário que o aluno tenha certa bagagem

Leia mais

Problema do Carteiro Chinês

Problema do Carteiro Chinês CENTRO DE CIÊNCIAS EXATAS DEPARTAMENTO DE COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Problema do Carteiro Chinês Alunos: André Ricardo Gonçalves Luiz Gustavo Andrade dos Santos Paulo Roberto Silla Profa. Linnyer

Leia mais

5COP096 TeoriadaComputação

5COP096 TeoriadaComputação Sylvio 1 Barbon Jr barbon@uel.br 5COP096 TeoriadaComputação Aula 13 Prof. Dr. Sylvio Barbon Junior Sumário - Problemas NP-Completo Algoritmos Não-deterministas; Classes NP-Completo e NP-Dificil; Teorema

Leia mais

Karine Nayara F. Valle. Métodos Numéricos de Euler e Runge-Kutta

Karine Nayara F. Valle. Métodos Numéricos de Euler e Runge-Kutta Karine Nayara F. Valle Métodos Numéricos de Euler e Runge-Kutta Professor Orientador: Alberto Berly Sarmiento Vera Belo Horizonte 2012 Karine Nayara F. Valle Métodos Numéricos de Euler e Runge-Kutta Monografia

Leia mais

5COP096 TeoriadaComputação

5COP096 TeoriadaComputação Sylvio 1 Barbon Jr barbon@uel.br 5COP096 TeoriadaComputação Aula 14 Prof. Dr. Sylvio Barbon Junior Sumário - Problemas Exponenciais - Algoritmos Exponenciais usando Tentativa e Erro - Heurísticas para

Leia mais

Lógica para a Programação - 1º semestre AULA 01 Prof. André Moraes

Lógica para a Programação - 1º semestre AULA 01 Prof. André Moraes Pág 4 Lógica para a Programação - 1º semestre AULA 01 Prof. André Moraes 1 APRESENTAÇÃO DA UNIDADE CURRICULAR A unidade curricular de Lógica para a programação tem como objetivo promover o estudo dos principais

Leia mais

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis.

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis. 3. Tabelas de Hash As tabelas de hash são um tipo de estruturação para o armazenamento de informação, de uma forma extremamente simples, fácil de se implementar e intuitiva de se organizar grandes quantidades

Leia mais

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.1. Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.1. Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005. Agenda Análise e Técnicas de Algoritmos Jorge Figueiredo Conceitos básicos Classes de de Complexidade P NP Redução Problemas NPC NP-Completude Introdução Existem alguns problemas computacionais que são

Leia mais

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

Máquinas de Turing. Juliana Kaizer Vizzotto. Disciplina de Teoria da Computação. Universidade Federal de Santa Maria Universidade Federal de Santa Maria Disciplina de Teoria da Computação Roteiro Definição Formal de Máquina de Turing Mais exemplos Definição Formal de Máquina de Turing Uma máquina de Turing é uma 7-upla,

Leia mais

x0 = 1 x n = 3x n 1 x k x k 1 Quantas são as sequências com n letras, cada uma igual a a, b ou c, de modo que não há duas letras a seguidas?

x0 = 1 x n = 3x n 1 x k x k 1 Quantas são as sequências com n letras, cada uma igual a a, b ou c, de modo que não há duas letras a seguidas? Recorrências Muitas vezes não é possível resolver problemas de contagem diretamente combinando os princípios aditivo e multiplicativo. Para resolver esses problemas recorremos a outros recursos: as recursões

Leia mais

Teoria dos Grafos. Edson Prestes

Teoria dos Grafos. Edson Prestes Edson Prestes Complemento de Grafos Mostre que para qualquer Grafo G com 6 pontos, G ou possui um triângulo Considere um vértice v de V(G). Sem perda de generalidade, podemos assumir v é adjacente a outros

Leia mais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais Notas da Aula 17 - Fundamentos de Sistemas Operacionais 1. Gerenciamento de Memória: Introdução O gerenciamento de memória é provavelmente a tarefa mais complexa de um sistema operacional multiprogramado.

Leia mais

Programação: Tipos, Variáveis e Expressões

Programação: Tipos, Variáveis e Expressões Programação de Computadores I Aula 05 Programação: Tipos, Variáveis e Expressões José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/56 Valores Valor é uma entidade

Leia mais

Curso: Desenvolvendo Jogos 2d Com C# E Microsoft XNA. Mostrar como funciona a programação orientada a objetos

Curso: Desenvolvendo Jogos 2d Com C# E Microsoft XNA. Mostrar como funciona a programação orientada a objetos META Curso: Desenvolvendo Jogos 2d Com C# E Microsoft XNA Conteudista: André Luiz Brazil Aula 3: CRIANDO A CLASSE ESPAÇONAVE Mostrar como funciona a programação orientada a objetos OBJETIVOS Ao final da

Leia mais

Implementando uma Classe e Criando Objetos a partir dela

Implementando uma Classe e Criando Objetos a partir dela Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 04 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 2 Prof. Cristóvão Cunha Implementando uma Classe

Leia mais

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO Capítulo 1 INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO 1.1 Histórico de Linguagens de Programação Para um computador executar uma dada tarefa é necessário que se informe a ele, de uma maneira clara, como ele

Leia mais

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis 1. TIPOS DE DADOS Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem ser classificadas em dois tipos: As instruções, que

Leia mais

PC Fundamentos Revisão 4

PC Fundamentos Revisão 4 exatasfepi.com.br PC Fundamentos Revisão 4 André Luís Duarte...mas os que esperam no Senhor renovarão as suas forças; subirão com asas como águias; correrão, e não se cansarão; andarão, e não se fatigarão.is

Leia mais

Algoritmos e Programação _ Departamento de Informática

Algoritmos e Programação _ Departamento de Informática 5 TIPOS DE DADOS Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. De um modo geral estas informações podem ser classificadas em dois tipos:

Leia mais

UNIVERSIDADE FEDERAL DE CAMPINA GRANDE - UFCG CENTRO DE ENGENHARIA ELÉTRICA E INFORMÁTICA - CEEI COPIN. Monografia

UNIVERSIDADE FEDERAL DE CAMPINA GRANDE - UFCG CENTRO DE ENGENHARIA ELÉTRICA E INFORMÁTICA - CEEI COPIN. Monografia UNIVERSIDADE FEDERAL DE CAMPINA GRANDE - UFCG CENTRO DE ENGENHARIA ELÉTRICA E INFORMÁTICA - CEEI COORDENAÇÃO DE PÓS-GRADUAÇÃO EM INFORMÁTICA - COPIN Monografia COMPUTAÇÃO PROBABILÍSTICA: MÁQUINA DE TURING

Leia mais

O MÉTODO HÚNGARO PARA RESOLUÇÃO DE PROBLEMAS DE OTIMIZAÇÃO

O MÉTODO HÚNGARO PARA RESOLUÇÃO DE PROBLEMAS DE OTIMIZAÇÃO O MÉTODO HÚNGARO PARA RESOLUÇÃO DE PROBLEMAS DE OTIMIZAÇÃO João Cesar Guirado Universidade Estadual de Maringá E-mail: jcguirado@gmail.com Márcio Roberto da Rocha Universidade Estadual de Maringá E-mail:

Leia mais

Exercícios Adicionais

Exercícios Adicionais Exercícios Adicionais Observação: Estes exercícios são um complemento àqueles apresentados no livro. Eles foram elaborados com o objetivo de oferecer aos alunos exercícios de cunho mais teórico. Nós recomendamos

Leia mais

Teoria dos Grafos. Cobertura, Coloração de Arestas, Emparelhamento

Teoria dos Grafos. Cobertura, Coloração de Arestas, Emparelhamento Teoria dos Grafos Valeriano A. de Oliveira Socorro Rangel Silvio A. de Araujo Departamento de Matemática Aplicada antunes@ibilce.unesp.br, socorro@ibilce.unesp.br, saraujo@ibilce.unesp.br Cobertura, Coloração

Leia mais

Projeto e Desenvolvimento de Algoritmos

Projeto e Desenvolvimento de Algoritmos Projeto e Desenvolvimento de Algoritmos Variáveis Adriano Cruz e Jonas Knopman Índice Objetivos Introdução Modelo de Memória Armazenamento de Dados Numéricos Dados Inteiros Dados Reais Armazenamento de

Leia mais

ALP Algoritmos e Programação. . Linguagens para Computadores

ALP Algoritmos e Programação. . Linguagens para Computadores ALP Algoritmos e Programação Iniciação aos computadores. Linguagens para Computadores. Compiladores, Interpretadores. Ambientes de Programação 1 Linguagens para Computadores. Linguagem binária: Dispositivos

Leia mais

FAT32 ou NTFS, qual o melhor?

FAT32 ou NTFS, qual o melhor? FAT32 ou NTFS, qual o melhor? Entenda quais as principais diferenças entre eles e qual a melhor escolha O que é um sistema de arquivos? O conceito mais importante sobre este assunto, sem sombra de dúvidas,

Leia mais

ILP - Introdução à Linguagem de Programação. Plano de estudo: - Constantes e variáveis. - Atribuindo valores às variáveis.

ILP - Introdução à Linguagem de Programação. Plano de estudo: - Constantes e variáveis. - Atribuindo valores às variáveis. Plano de estudo: -. - Atribuindo valores às variáveis. - Expressões Na maioria das vezes, precisamos armazenar dados para manipulá-los. Por exemplo, em um escritório de contabilidade, armazenamos os dados

Leia mais

Algoritmos e Complexidade para Dois Jogos de Blocos

Algoritmos e Complexidade para Dois Jogos de Blocos Algoritmos e Complexidade para Dois Jogos de Blocos André Castro Ramos 1, Rudini Sampaio 1 Departamento de Computação, Universidade Federal do Ceará {andrecr,rudini}@lia.ufc.br Resumo É de conhecimento

Leia mais

Estruturas Discretas INF 1631

Estruturas Discretas INF 1631 Estruturas Discretas INF 1631 Thibaut Vidal Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro Rua Marquês de São Vicente, 225 - Gávea, Rio de Janeiro - RJ, 22451-900, Brazil

Leia mais

Algoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados)

Algoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados) Algoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados) Os algoritmos são descritos em uma linguagem chamada pseudocódigo. Este nome é uma alusão à posterior implementação

Leia mais

Algoritmos Computacionais ( Programas )

Algoritmos Computacionais ( Programas ) Algoritmos Computacionais ( Programas ) A partir deste tópico, consideramos a utilização do universo Computacional na solução de problemas. Para tanto devemos lembrar que a transposição de problemas do

Leia mais

Programação Dinâmica. Programa do PA. Técnicas Avançadas de Projeto. Aulas Anteriores. Introdução. Plano de Aula. Técnicas de Projeto de Algoritmos

Programação Dinâmica. Programa do PA. Técnicas Avançadas de Projeto. Aulas Anteriores. Introdução. Plano de Aula. Técnicas de Projeto de Algoritmos Programação Dinâmica Técnicas de Projeto de Algoritmos Aula 13 Alessandro L. Koerich Pontifícia Universidade Católica do Paraná (PUCPR) Ciência da Computação 7 o Período Engenharia de Computação 5 o Período

Leia mais

4.1. Introdução. 4.2. Layout do DNS

4.1. Introdução. 4.2. Layout do DNS MIT 18.996 Tópico da Teoria da Ciência da Computação: Problemas de Pesquisa na Internet Segundo Trimestre 2002 Aula 4 27de fevereiro de 2002 Palestrantes: T. Leighton, D. Shaw, R. Sudaran Redatores: K.

Leia mais

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS Orientando: Oliver Mário

Leia mais

O modelo do computador

O modelo do computador O modelo do computador Objetivos: Mostrar como é o funcionamento dos computadores modernos Mostrar as limitações a que estamos sujeitos quando programamos Histórico Os primeiros computadores são da década

Leia mais

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

Introdução ao Paradigma Orientado a Objetos. Principais conceitos Introdução ao Paradigma Orientado a Objetos Principais conceitos Paradigmas de Programação PROGRAMAÇÃO ESTRUTURADA X PROGRAMAÇÃO ORIENTADA A OBJETOS Paradigma Programação estruturada Na programação estrutura

Leia mais

Introdução Processamento Paralelo

Introdução Processamento Paralelo Introdução Processamento Paralelo Esbel Tomás Valero Orellana Bacharelado em Ciência da Computação Departamento de Ciências Exatas e Tecnológicas Universidade Estadual de Santa Cruz evalero@uesc.br 23

Leia mais

Esboço de Gráficos (resumo)

Esboço de Gráficos (resumo) Esboço de Gráficos (resumo) 1 Máximos e Mínimos Definição: Diz-se que uma função tem um valor máximo relativo (máximo local) em c se existe um intervalo ( a, b) aberto contendo c tal que f ( c) f ( x)

Leia mais

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES CAPÍTULO 5 5 VETORES E MATRIZES 5.1 Vetores Um vetor armazena uma determinada quantidade de dados de mesmo tipo. Vamos supor o problema de encontrar a média de idade de 4 pessoas. O programa poderia ser:

Leia mais

Casamento de Cadeias. Introdução. Introdução. Estrutura de Dados. Cadeia de caracteres: sequência de elementos denominados caracteres.

Casamento de Cadeias. Introdução. Introdução. Estrutura de Dados. Cadeia de caracteres: sequência de elementos denominados caracteres. Introdução de Cadeias Estrutura de Dados II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM 1 Cadeia

Leia mais

Introdução às Linguagens de Programação

Introdução às Linguagens de Programação Introdução às Linguagens de Programação Histórico de Linguagens de Programação O computador não faz nada sozinho Precisamos informar, de forma clara, como ele deve executar as tarefas Ou seja, o computador

Leia mais

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem

Leia mais

AV1 - MA 12-2012. (b) Se o comprador preferir efetuar o pagamento à vista, qual deverá ser o valor desse pagamento único? 1 1, 02 1 1 0, 788 1 0, 980

AV1 - MA 12-2012. (b) Se o comprador preferir efetuar o pagamento à vista, qual deverá ser o valor desse pagamento único? 1 1, 02 1 1 0, 788 1 0, 980 Questão 1. Uma venda imobiliária envolve o pagamento de 12 prestações mensais iguais a R$ 10.000,00, a primeira no ato da venda, acrescidas de uma parcela final de R$ 100.000,00, 12 meses após a venda.

Leia mais

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:

Leia mais

Lista 1 para a P2. Operações com subespaços

Lista 1 para a P2. Operações com subespaços Lista 1 para a P2 Observação 1: Estes exercícios são um complemento àqueles apresentados no livro. Eles foram elaborados com o objetivo de oferecer aos alunos exercícios de cunho mais teórico. Nós sugerimos

Leia mais

Linguagem Lógica Prolog

Linguagem Lógica Prolog Linguagem Lógica Prolog Linguagens de Programação Departamento de Computação Universidade Federal de Sergipe Conteúdo O que é diferente na Programação Lógica Cláusulas, Fatos, Regras e Predicado Objetos

Leia mais

Modelamento e simulação de processos

Modelamento e simulação de processos Modelamento e simulação de processos 4. Método de Monte Carlo Prof. Dr. André Carlos Silva 1. INTRODUÇÃO O Método de Monte Carlo (MMC) é um método estatístico utilizado em simulações estocásticas com diversas

Leia mais

O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2

O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2 3.2 O Espaço Nulo de A: Resolvendo Ax = 0 11 O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2 Esta seção trata do espaço de soluções para Ax = 0. A matriz A pode ser quadrada ou retangular. Uma solução imediata

Leia mais

A resposta para este problema envolve a partição do conjunto de arestas de tal forma que arestas adjacentes não pertençam a um mesmo conjunto.

A resposta para este problema envolve a partição do conjunto de arestas de tal forma que arestas adjacentes não pertençam a um mesmo conjunto. 7 - Coloração de Arestas e Emparelhamentos Considere o seguinte problema: Problema - Ao final do ano acadêmico, cada estudante deve fazer um exame oral com seus professores. Suponha que existam 4 estudantes

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Introdução à Engenharia de Computação

Introdução à Engenharia de Computação Introdução à Engenharia de Computação Tópico: O Computador como uma Multinível José Gonçalves - Introdução à Engenharia de Computação Visão Tradicional Monitor Placa-Mãe Processador Memória RAM Placas

Leia mais

Consequências Interessantes da Continuidade

Consequências Interessantes da Continuidade Consequências Interessantes da Continuidade Frederico Reis Marques de Brito Resumo Trataremos aqui de um dos conceitos basilares da Matemática, o da continuidade no âmbito de funções f : R R, mostrando

Leia mais

OPERADORES LÓGICOS E RELACIONAIS UDERSON LUIS

OPERADORES LÓGICOS E RELACIONAIS UDERSON LUIS Sumario: Este artigo descreve a manipulação dos dados de operadores lógicos relacionais, descrevendo a utilização destes operadores. Sobre o Autor: Uderson Luis Fermino, formado em Ciências da Computação

Leia mais

Projeto e Análise de Algoritmos. Profa. Juliana Kaizer Vizzotto. Projeto e Análise de Algoritmos - Aula 1

Projeto e Análise de Algoritmos. Profa. Juliana Kaizer Vizzotto. Projeto e Análise de Algoritmos - Aula 1 Projeto e Análise de Algoritmos Profa. Juliana Kaizer Vizzotto Projeto e Análise de Algoritmos - Aula 1 Roteiro Introdução Exemplo: ordenação Introdução Análise de Algoritmos Estudo teórico da performance

Leia mais

O Teorema da Função Inversa e da Função Implícita

O Teorema da Função Inversa e da Função Implícita Universidade Estadual de Maringá - Departamento de Matemática Cálculo Diferencial e Integral: um KIT de Sobrevivência c Publicação eletrônica do KIT http://www.dma.uem.br/kit O Teorema da Função Inversa

Leia mais

Segue-se o estudo da forma como os computadores armazenam e acedem às informações contidas na sua memória.

Segue-se o estudo da forma como os computadores armazenam e acedem às informações contidas na sua memória. 4. Variáveis Para a execução de qualquer tipo de programa o computador necessita de ter guardados os diferentes tipos de dados, já estudados. Esses dados estão guardados na sua memória. Segue-se o estudo

Leia mais

Resoluções comentadas de Raciocínio Lógico e Estatística - SEPLAG-2010 - APO

Resoluções comentadas de Raciocínio Lógico e Estatística - SEPLAG-2010 - APO Resoluções comentadas de Raciocínio Lógico e Estatística - SEPLAG-010 - APO 11. O Dia do Trabalho, dia 1º de maio, é o 11º dia do ano quando o ano não é bissexto. No ano de 1958, ano em que o Brasil ganhou,

Leia mais

Arquitetura e Organização de Computadores Aula 5 Consolidando Conhecimentos de Desempenho e Resumindo Prof. Julio Saraçol

Arquitetura e Organização de Computadores Aula 5 Consolidando Conhecimentos de Desempenho e Resumindo Prof. Julio Saraçol Universidade Federal do Pampa Campus-Bagé Arquitetura e Organização de Computadores Aula 5 Consolidando Conhecimentos de Desempenho e Resumindo Prof. Julio Saraçol juliosaracol@gmail.com Slide1 AULA 5:

Leia mais

Exercícios Teóricos Resolvidos

Exercícios Teóricos Resolvidos Universidade Federal de Minas Gerais Instituto de Ciências Exatas Departamento de Matemática Exercícios Teóricos Resolvidos O propósito deste texto é tentar mostrar aos alunos várias maneiras de raciocinar

Leia mais

Paulo Guilherme Inça. 7 de dezembro de 2016

Paulo Guilherme Inça. 7 de dezembro de 2016 Coloração de grafos é NP-Difícil Paulo Guilherme Inça 7 de dezembro de 2016 Sumário 1 Introdução 1 2 O Problema da Coloração de Grafos 2 3 3-Coloração é NP-Completo 3 4 Generalizações e Restrições 6 5

Leia mais

3 Classes e instanciação de objectos (em Java)

3 Classes e instanciação de objectos (em Java) 3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem

Leia mais

Exercícios de Lógica para Programação

Exercícios de Lógica para Programação Exercícios de Lógica para Programação Ana Cardoso-Cachopo Maio de 2014 CONTEÚDO 1 Conteúdo 1 Argumentos e Validade 5 2 Lógica Proposicional Sistema de Dedução Natural 17 3 Lógica Proposicional Tabelas

Leia mais

Análise de Arredondamento em Ponto Flutuante

Análise de Arredondamento em Ponto Flutuante Capítulo 2 Análise de Arredondamento em Ponto Flutuante 2.1 Introdução Neste capítulo, chamamos atenção para o fato de que o conjunto dos números representáveis em qualquer máquina é finito, e portanto

Leia mais

Sistemas de Numerações.

Sistemas de Numerações. Matemática Profº: Carlos Roberto da Silva; Lourival Pereira Martins. Sistema de numeração: Binário, Octal, Decimal, Hexadecimal; Sistema de numeração: Conversões; Sistemas de Numerações. Nosso sistema

Leia mais

Nome: Calcule a probabilidade de que os dois alunos sorteados falem Inglês e. Análise Quantitativa e Lógica Discursiva - Prova B

Nome: Calcule a probabilidade de que os dois alunos sorteados falem Inglês e. Análise Quantitativa e Lógica Discursiva - Prova B 1. Uma escola irá sortear duas pessoas dentre os seus 20 melhores alunos para representá-la em um encontro de estudantes no Canadá, país que possui dois idiomas oficiais, Inglês e Francês. Sabe-se que,

Leia mais

Programa Olímpico de Treinamento. Aula 9. Curso de Combinatória - Nível 2. Tabuleiros. Prof. Bruno Holanda

Programa Olímpico de Treinamento. Aula 9. Curso de Combinatória - Nível 2. Tabuleiros. Prof. Bruno Holanda Programa Olímpico de Treinamento Curso de Combinatória - Nível Prof. Bruno Holanda Aula 9 Tabuleiros Quem nunca brincou de quebra-cabeça? Temos várias pecinhas e temos que encontrar uma maneira de unir

Leia mais

EFICIÊNCIA DE ALGORITMOS E

EFICIÊNCIA DE ALGORITMOS E AULA 2 EFICIÊNCIA DE ALGORITMOS E PROGRAMAS Medir a eficiência de um algoritmo ou programa significa tentar predizer os recursos necessários para seu funcionamento. O recurso que temos mais interesse neste

Leia mais