Projeto e Análise de Algoritmos

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

Download "Projeto e Análise de Algoritmos"

Transcrição

1 Projeto e Algoritmos Pontifícia Universidade Católica de Minas Gerais harison@pucpcaldas.br 26 de Maio de 2017

2 Sumário

3 A complexidade no desempenho de Quando utilizamos uma máquina boa, ela tende a ter melhor desempenho em de menor complexidade. Classes de complexidade (ordem crescente): 1. Constante: O(1) 2. Logarítmo: O(log n) 3. Linear: O(n) 4. O(nlog n) 5. Quadrático: O(n 2 ) 6. Cúbico: O(n 3 ) 7. Exponencial: O(2 n )

4 A complexidade no desempenho de Considerando uma máquina X e uma máquina Y que é 10 vezes mais rápida, a relação entre o tamanho máximo de problema resolvível nestas máquinas em relação à complexidade é a seguinte: (baseado em [Toscani e Veloso, 2012]) Complexidade Máquina lenta Máquina rápida log 2 n x 0 (x 0 ) 10 n x 1 10x 1 nlog 2 n x 2 10x 2 n 2 x 3 3, 16x 3 n 3 x 4 2, 15x 4 2 n x 5 x 5 + 3, 3

5 O estudo de pode levar a compreensão de boas técnicas a serem utilizadas em situações adequadas. Complexidade de Algoritmos de ordenação Técnicas para projeto de

6 Medida do tempo de Execução de um Programa Conteúdo baseado em [Ziviani, 2003]. Qual é o custo de usar um dado algoritmo para resolver um problema específico? Características que devem ser investigadas: Análise do número de vezes que cada parte do algoritmo deve ser executada Estudo da quantidade de memória necessária

7 Custo de um algoritmo Também é possível analisar em relação à classe do algoritmo: Determinando o menor custo possível para resolver problemas de uma classe, temos a medida da dificuldade inerente para resolver o problema. Quando o custo de um algoritmo é igual ao menor custo possível, o algoritmo é ótimo para a medida de custo considerada.

8 Exemplo i n t Max( TipoVetor A) { i n t i, Temp ; Temp = A [ 0 ] ; f o r ( i = 1 ; i < N; i ++) i f (Temp < A[ i ] ) Temp = A[ i ] ; r e t u r n Temp ; }

9 Melhor, Médio e Pior caso Um algoritmo pode ser analisado em relação aos seguintes casos: Melhor Médio Pior Pior caso Maior tempo de execução sobre todas as entradas de tamanho n. Geralmente é a análise utilizada.

10 Comportamento assintótico de funções A análise de é realizada para valores grandes de n. Fonte: [Ziviani, 2003].

11 Notações Notação O Dominação superior. Por exemplo, qualquer algoritmo é O(2 n ). Entretanto isto não diz muita coisa, pois procuramos a menor classe de complexidade que domina superiormente. Notação Θ Define a classe do algoritmo em si. Notação Ω Dominação inferior. Quer dizer que um algoritmo não pode ser melhor que esta classe. Por exemplo, os de ordenação são Ω(nlogn), pois não há de ordenação de complexidade linear ou logarítmica.

12 Operações Algumas das principais operações possíveis nestas notações são: 1. c x O(f(n)) = O(f(n)) com c constante 2. O(f(n)) + O(f(n)) = O(f(n)) 3. O(f(n)) + O(g(n)) = O(max(f(n), g(n))) Suponha três trechos cujos tempos são O(n), O(nlogn) e O(n 2 ). Neste programa então a complexidade é O(max(n, nlogn, n 2 )) = O(n 2 )

13 Questão do ENADE: Qual o valor de retorno da função a seguir, caso n = 27? i n t r e c ( i n t n ){ i f ( n <= 10){ r e t u r n n 2 ; } e l s e { r e t u r n r e c ( r e c ( n / 3 ) ) ; } } A) 8. B) 9. C) 12. D) 16. E) 18.

14 Os recursivos, muitas vezes, podem ser facilmente implementados e elegantes. Entretanto o desempenho não é dos melhores. Cálculo dos números de Fibonacci: f 0 = 1 e f 1 = 1 f n = f n 1 + f n 2 u n s i g n e d i n t FibRec ( u n s i g n e d i n t n ) { i f ( n < 2) r e t u r n n ; r e t u r n ( FibRec ( n 1) + FibRec ( n 2 ) ) ; }

15 O exemplo apresentado é extremamente ineficiente porque recalcula o mesmo valor várias vezes. Versão iterativa possível: u n s i g n e d i n t F i b I t e r ( u n s i g n e d i n t n ){ u n s i g n e d i n t i = 1, k, F = 0 ; f o r ( k = 1 ; k <= n ; k++){ F += i ; i = F i ; } r e t u r n F ; }

16 Evitar uso de recursividade quando existe solução óbvia por iteração. n Recursiva 1 seg 2 min 21 dias 10 9 anos Iterativa 1/3 ms 1/2 ms 3/4 ms 3/2 ms

17 Algoritmo de tentativa e erro () Algoritmos tentativa e erro não seguem regra fixa de computação: Passos em direção à solução final são tentados e registrados; Caso esses passos tomados não levem à solução final, eles podem ser retirados e apagados do registro.

18 : Passeio do cavalo v o i d Tenta ( ) { i n i c i a l i z a s e l e c a o de movimentos ; do{ s e l. proximo c a n d i d a t o ao movimento ; i f ( a c e i t a v e l ){ r e g i s t r a movimento ; i f ( t a b u l e i r o nao e s t a c h e i o ){ t e n t a novo movimento ; i f ( nao s u c e d i d o ){ apaga r e g i s t r o a n t e r i o r ; } } } } w h i l e (! ( movimento bem s u c e d i d o ) ou ( acabaram se os c a n d i d a t o s ) ) ; }

19 Passeio do Cavalo #d e f i n e N 8 / Tamanho do l a d o do t a b u l e i r o / #d e f i n e FALSE 0 #d e f i n e TRUE 1 i n t i, j, t [N ] [ N], a [N], b [N] ; s h o r t q ; i n t main ( i n t argc, c h a r a r g v [ ] ) { / programa p r i n c i p a l / a [ 0 ] = 2 ; a [ 1 ] = 1 ; a [ 2 ] = 1; a [ 3 ] = 2; b [ 0 ] = 1 ; b [ 1 ] = 2 ; b [ 2 ] = 2 ; b [ 3 ] = 1 ; a [ 4 ] = 2; a [ 5 ] = 1; a [ 6 ] = 1 ; a [ 7 ] = 2 ; b [ 4 ] = 1; b [ 5 ] = 2; b [ 6 ] = 2; b [ 7 ] = 1; f o r ( i = 0 ; i < N; i ++) f o r ( j = 0 ; j < N; j ++) t [ i ] [ j ] = 0 ; t [ 0 ] [ 0 ] = 1 ; / e s c o l h e m o s uma c a s a do t a b u l e i r o / Tenta ( 2, 0, 0, &q ) ; i f (! q ) { p r i n t f ( Sem s o l u c a o \n ) ; r e t u r n 0 ; } f o r ( i = 0 ; i < N; i ++) { f o r ( j = 0 ; j < N; j ++) p r i n t f ( %4d, t [ i ] [ j ] ) ; p u t c h a r ( \ n ) ; } r e t u r n 0 ; }

20 Passeio do Cavalo v o i d Tenta ( i n t i, i n t x, i n t y, s h o r t q){ i n t u, v ; i n t k = 1; short q1 ; / i n i c i a l i z a s e l e c a o de movimentos / do { ++k ; q1 = FALSE ; u = x + a [ k ] ; v = y + b [ k ] ; i f ( u >= 0 && u < N && v >= 0 && v < N) i f ( t [ u ] [ v ] == 0) { t [ u ] [ v ] = i ; i f ( i < N N) { / t a b u l e i r o nao e s t a c h e i o / / t e n t a novo movimento / Tenta ( i + 1, u, v, &q1 ) / nao s u c e d i d o apaga r e g i s t r o a n t e r i o r / i f (! q1 ) t [ u ] [ v ] = 0 ; } e l s e q1 = TRUE ; } } w h i l e (! ( q1 k == 7 ) ) ; q = q1 ; }

21 Divisão e conquista Definição Consiste em dividir o problema em partes menores, encontrar soluções para as partes, e combiná-las em uma solução global. Chamada para a metade inicial Chamada para a metade final

22 dinâmica Quando a divisão de um problema de tamanho n resulta em n subproblemas de tamanho n-1 então é provável que o algoritmo recursivo tenha complexidade exponencial. Nesse caso, a técnica de programação dinâmica pode levar a um algoritmo mais eficiente. dinâmica Calcula a solução para todos os subproblemas, partindo dos subproblemas menores para os maiores, armazenando os resultados em uma tabela.

23 dinâmica Multiplicação de n matrizes Considere o produto: M = M 1 [10, 20] M 2 [20, 50] M 3 [50, 1] M 4 [1, 100]. A avaliação M = M 1 (M 2 (M 3 M 4 )) requer operações, enquanto M = (M 1 (M 2 M 3 )) M 4 requer operações.

24 dinâmica Tentas todas as combinações para os parênteses é exponencial. Com programação dinâmica é possível obter um algoritmo cúbico. calcula os valores de m ij na ordem crescente de i e j. começa com m ii, depois m i,i+1 e assim por diante.

25 dinâmica m 11 = 0 m 22 = 0 m 33 = 0 m 44 = 0 m 12 = m 23 = m 34 = m 13 = m 24 = m 14 = 2.200

26 Algoritmo guloso O nome original (Greedy Algorithm) pode fazer mais sentido como Algoritmo Ganancioso, já que ele busca a melhor solução atual, desconsiderando a visão geral do problema. Exemplo com problema da mochila Exemplo com caixeiro viajante

27 Notação utilizada nos : Os trabalham sobre os registros de um arquivo. Cada registro possui uma chave utilizada para controlar a ordenação. Podem existir outros componentes em um registro. Considerações iniciais: Um método de ordenação é estável se a ordem relativa dos itens com chaves iguais não se altera durante a ordenação. Alguns dos métodos de ordenação mais eficientes não são estáveis.

28 A maioria dos métodos de ordenação é baseada em comparações das chaves. Existem métodos de ordenação que utilizam o princípio da distribuição. Exemplo do baralho.

29 por Seleção Selecione o menor item do vetor. Troque-o com o item da primeira posição do vetor. Repita essas duas operações com os n - 1 itens restantes, depois com os n - 2 itens, até que reste apenas um elemento.

30 Selection Sort Fonte: DevMedia.

31 Selection Sort Vantagens: Custo linar para o número de movimentos de registros. É o algoritmo a ser utilizado para arquivos com registros muito grandes. É muito interessante para arquivos pequenos. Desvantagens: O fato de o arquivo já estar ordenado não ajuda em nada, pois o custo continua quadrático. O algoritmo não é estável.

32 Insertion Sort Em cada passo a partir de i=2 faça: Selecione o i-ésimo item da seqüência fonte. Coloque-o no lugar apropriado na sequência destino de acordo com o critério de ordenação.

33 Insertion Sort Fonte: DevMedia.

34 Insertion Sort O número mínimo de comparações e movimentos ocorre quando os itens estão originalmente em ordem. O número máximo ocorre quando os itens estão originalmente na ordem reversa. É o método a ser utilizado quando o arquivo está quase ordenado. É um bom método quando se deseja adicionar uns poucos itens a um arquivo ordenado, pois o custo é linear. O algoritmo de ordenação por inserção é estável.

35 Shellsort Uma melhoria para o Insertion é evitar a troca entre elementos distantes. Isto é o proposto no Shellsort que precisa de um valor h para tornar a cada passo o registro h-ordenado.

36 Shellsort Fonte: [Ziviani, 2003].

37 Shellsort A sequência recomendada para os valores de h são: h(s) = 3h(s 1) + 1, para s > 1 h(s) = 1, para s = 1. h corresponde a 1, 4, 13, 40, 121, 364, 1.093,

38 Shellsort Vantagens: Shellsort é uma ótima opção para arquivos de tamanho moderado. Sua implementação é simples e requer uma quantidade de código pequena. Desvantagens: O tempo de execução do algoritmo é sensível à ordem inicial do arquivo. O método não é estável

39 Quicksort É o algoritmo de ordenação interna mais rápido que se conhece para uma ampla variedade de situações. A idéia básica é dividir o problema de ordenar um conjunto com n itens em dois problemas menores. Utiliza algoritmo de particionamento: todos elementos à esquerda do pivô são menores que ele e todos à direita são maiores. Os problemas menores são ordenados independentemente. Os resultados são combinados para produzir a solução final.

40 Quicksort Vantagens: É extremamente eficiente para ordenar arquivos de dados. Necessita de apenas uma pequena pilha como memória auxiliar. Requer cerca de n log n comparações em média para ordenar n itens. Desvantagens: Tem um pior caso O(n 2 ) comparações. Sua implementação é muito delicada e difícil O método não é estável.

41 Heapsort Algoritmo baseado no uso de filas de prioridades. Custo de construção linear - O(n). Custo de inserção, retirada, substituição e alteração logarítmico - O(log n).

42 Heap É uma sequência de itens com chaves c[1], c[2],..., c[n], tal que: c[i] >= c[2i], c[i] >= c[2i + 1] ou: [9, 7, 6, 4, 3, 1]

43 Problemas P e NP Problemas polinomiais Problemas exponenciais Propriedade Um problema da classe NP poderá ser resolvido em tempo polinomial se e somente se todos os outros problemas em NP também puderem.

44 Problemas P, NP Fonte: [Ziviani, 2003] Fácil: Existe um caminho de i até j com peso <= k? Há um algoritmo eficiente com complexidade de tempo O(A log V ), sendo A o número de arestas e V o número de vértices (algoritmo de Dijkstra). Difícil: Existe um caminho de i até j com peso >= k? Não existe algoritmo eficiente. É equivalente ao PCV em termos de complexidade.

45 Coloração de um grafo Definição Otimização de compiladores Artigo na Science

46 Ciclo de Hamilton É um caso especial do problema do caixeiro viajante. Fonte: [Ziviani, 2003] Exemplo de ciclo de Hamilton: Exemplo de caminho de Hamilton:

47 Cobertura de arestas e de vértices V = {3, 4, 5}.

48 Algoritmos deterministas Algoritmo determinista O resultado de cada operação é definido de forma única. Algoritmo não-determinista Capaz de escolher uma dentre as várias alternativas possíveis a cada passo

49 Pesquisa não-determinista

50 Problema da Satisfabilidade (SAT) Definição Complexidade exponencial para encontrar todas combinações

51 Caracterização das classes P e NP P Conjunto de todos os problemas que podem ser resolvidos por deterministas em tempo polinomial. NP Conjunto de todos os problemas que podem ser resolvidos por não-deterministas em tempo polinomial. Para mostrar que um determinado problema está em NP, basta apresentar um algoritmo não-determinista que execute em tempo polinomial para resolver o problema. Outra maneira é encontrar um algoritmo determinista polinomial para verificar que uma dada solução é válida.

52 Diferenças entre P e NP Não há definição. Consequências de P = NP e de P!= NP.

53 Transformação polinomial

54 Conjunto Independente de Vértices de um Grafo

55 Clique de um grafo

56 Problema NP-completo e NP-difícil

57 Teorema de Cook Satisfabilidade (SAT) está em P se e somente se P = NP. Ou seja, se existisse um algoritmo polinomial determinista para satisfabilidade, então todos os problemas em N P poderiam ser resolvidos em tempo polinomial.

58 Problemas NP Possível solução com exponenciais eficientes como o Simplex. Usar heurísticas.

59 [[Toscani e Veloso, 2012] ]Laira V. Toscani e Paulo A. S. Veloso (2012) Complexidade de. 3 edição. Série de livros didáticos informática UFRGS [[Ziviani, 2003] ]Nivio Ziviani (2003) Projeto de Algoritmos com implementações em Pascal e C Cengage Learning

Métodos de Ordenação

Métodos de Ordenação Métodos de Ordenação Conceitos básicos sobre ordenação Ordenar corresponde ao processo de rearranjar um conjunto de objetos em uma ordem específica. Objetivo da ordenação: facilitar a recuperação posterior

Leia mais

ANÁLISE DE ALGORITMOS: PARTE 3

ANÁLISE DE ALGORITMOS: PARTE 3 ANÁLISE DE ALGORITMOS: PARTE 3 Prof. André Backes 2 A notação grande-o é a forma mais conhecida e utilizada de análise Complexidade do nosso algoritmo no pior caso Seja de tempo ou de espaço É o caso mais

Leia mais

Quantidade de memória necessária

Quantidade de memória necessária Tempo de processamento Um algoritmo que realiza uma tarefa em 10 horas é melhor que outro que realiza em 10 dias Quantidade de memória necessária Um algoritmo que usa 1MB de memória RAM é melhor que outro

Leia mais

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Website: www.decom.ufop.br/reifortes Email: reifortes@iceb.ufop.br

Leia mais

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

03 Análise de Algoritmos (parte 3) SCC201/501 - Introdução à Ciência de Computação II 03 Análise de Algoritmos (parte 3) SCC201/501 - Introdução à Ciência de Computação II Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2010/2 Moacir

Leia mais

Técnicas de Programação III Análise de Algoritmos (Continuação)

Técnicas de Programação III Análise de Algoritmos (Continuação) Técnicas de Programação III Análise de Algoritmos (Continuação) Aula ministrada em: 23/08/2007 Prof. Mauro L. C. Silva 1/10 Objetivos da Aula Entender a Análise e a Complexidade de Algoritmos 2/10 Avaliação

Leia mais

Lista de exercícios sobre contagem de operações Prof. João B. Oliveira

Lista de exercícios sobre contagem de operações Prof. João B. Oliveira Lista de exercícios sobre contagem de operações Prof. João B. Oliveira 1. metodo m ( Vetor V ) int i, res = 0; para i de 1 a V.size res = res + V[i]; return res; Soma de elementos de um vetor, O( ). 2.

Leia mais

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

BC1424 Algoritmos e Estruturas de Dados I Aula 05 Custos de um algoritmo e funções de complexidade BC1424 Algoritmos e Estruturas de Dados I Aula 05 Custos de um algoritmo e funções de complexidade Prof. Jesús P. Mena-Chalco 1Q-2016 1 1995 2015 2 Custo de um algoritmo e funções de complexidade Introdução

Leia mais

Algoritmos Avançados Análise de Complexidade

Algoritmos Avançados Análise de Complexidade CCAE Centro de Ciências Aplicadas e Educação UFPB - Campus IV - Litoral Norte Algoritmos Avançados Análise de Complexidade COMPLEXIDADE DE ALGORITMOS Definição: A Complexidade de um Algoritmo consiste

Leia mais

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

Área que visa determinar a complexidade (custo) de um algoritmo, com isso é possível: Área que visa determinar a complexidade (custo) de um algoritmo, com isso é possível: Comparar algoritmos: existem algoritmos que resolvem o mesmo tipo de problema. Determinar se o algoritmo é ótimo :

Leia mais

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 14: Ordenação: QuickSort Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Website: www.decom.ufop.br/reifortes Email: reifortes@iceb.ufop.br

Leia mais

7. Introdução à Complexidade de Algoritmos

7. Introdução à Complexidade de Algoritmos 7. Introdução à Complexidade de Algoritmos Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 7. Introdução à Complexidade de Algoritmos Estruturas de Dados 1 / 1 Análise de Algoritmos

Leia mais

Método BubbleSort. Estrutura de Dados II Prof Jairo Francisco de Souza

Método BubbleSort. Estrutura de Dados II Prof Jairo Francisco de Souza Método BubbleSort Estrutura de Dados II Prof Jairo Francisco de Souza Introdução Ordenar corresponde ao processo de reorganizar um conjunto de objetos em uma ordem ascendente ou descendente Consiste em

Leia mais

Paradigmas de Projeto de Algoritmos

Paradigmas de Projeto de Algoritmos Paradigmas de Projeto de Algoritmos Última alteração: 2 de Setembro de 2010 Transparências elaboradas por Charles Ornelas Almeida, Israel Guerra e Nivio Ziviani Projeto de Algoritmos Cap.2 Paradigmas de

Leia mais

Quicksort Letícia Rodrigues Bueno

Quicksort Letícia Rodrigues Bueno Quicksort Letícia Rodrigues Bueno UFABC Quicksort Legenda: pivô; 1 a partição: ; 2 a partição: Quicksort Legenda: pivô; 1 a partição: ; 2 a partição: Quicksort Legenda: pivô; 1 a partição: ; 2 a partição:

Leia mais

Estrutura de Dados. Algoritmos de Ordenação. Prof. Othon M. N. Batista Mestre em Informática

Estrutura de Dados. Algoritmos de Ordenação. Prof. Othon M. N. Batista Mestre em Informática Estrutura de Dados Algoritmos de Ordenação Prof. Othon M. N. Batista Mestre em Informática Roteiro Introdução Ordenação por Inserção Insertion Sort Ordenação por Seleção Selection Sort Ordenação por Bolha

Leia mais

I. Correção de Algoritmos Não-Recursivos

I. Correção de Algoritmos Não-Recursivos I. Correção de Algoritmos Não-Recursivos Nos exercícios a seguir, você deverá demonstrar a correção dos algoritmos por meio dos conceitos vistos nos slides da Aula 03. 1) Prove que o seguinte algoritmo

Leia mais

Problema do Caminho Mais Curto. Problema do Caminho Mais Curto

Problema do Caminho Mais Curto. Problema do Caminho Mais Curto Problema do Caminho Mais Curto " Podemos afectar pesos" aos arcos de um grafo, por exemplo, para representar uma distância entre cidades numa rede ferroviária: ria: Chicago 650 600 700 Toronto 200 New

Leia mais

Sistemas Distribuídos: Princípios e Algoritmos Introdução à Análise de Complexidade de Algoritmos

Sistemas Distribuídos: Princípios e Algoritmos Introdução à Análise de Complexidade de Algoritmos Sistemas Distribuídos: Princípios e Algoritmos Introdução à Análise de Complexidade de Algoritmos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática

Leia mais

Aula 3 Listas Lineares Sequenciais Ordenadas. prof Leticia Winkler

Aula 3 Listas Lineares Sequenciais Ordenadas. prof Leticia Winkler Aula 3 Listas Lineares Sequenciais Ordenadas prof Leticia Winkler 1 Listas Lineares Sequenciais Ordenadas Elementos da lista estão dispostos num vetor (contíguos na memória) e ordenado de acordo com alguma

Leia mais

Memória secundária. Memória secundária

Memória secundária. Memória secundária introdução ordenação interna ordenação externa ordenar processo de rearranjar um conjunto de itens em uma ordem ascendente ou descendente visa facilitar a recuperação posterior de itens do conjunto ordenado

Leia mais

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

Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches CT-234 2) Algoritmos recursivos Indução matemática, recursão, recorrências Indução matemática Uma

Leia mais

Programação II Aula 07

Programação II Aula 07 Engenharias de Produção e Petróleo Programação II Aula 07 Adan Lucio P. Rodovia BR 101 Norte, Km. 60, Bairro Litorâneo, CEP 29932-540, São Mateus ES, Tel.: +55 (27) 3312-1511 - CEUNES Métodos de Ordenação

Leia mais

Problema da Mochila Booleana: Uma Solução Usando Programação Dinâmica. Gabriel Rosa Guilherme Alves

Problema da Mochila Booleana: Uma Solução Usando Programação Dinâmica. Gabriel Rosa Guilherme Alves Problema da Mochila Booleana: Uma Solução Usando Programação Dinâmica Gabriel Rosa Guilherme Alves Agenda O problema, definição e exemplo Construindo uma solução... Expressão recursiva Algoritmo recursivo

Leia mais

Aula 10: Tratabilidade

Aula 10: Tratabilidade Teoria da Computação DAINF-UTFPR Aula 10: Tratabilidade Prof. Ricardo Dutra da Silva Na aula anterior discutimos problemas que podem e que não podem ser computados. Nesta aula vamos considerar apenas problemas

Leia mais

Complexidade de Algoritmos

Complexidade de Algoritmos 60 Desempenho 50 40 30 20 Algoritmo1 Algoritmo2 Algoritmo3 10 0 Complexidade de Algoritmos INFORMÁTICA BÁSICA Prof. Demétrios Coutinho C a m p u s P a u d o s F e r r o s D i s c i p l i n a d e A l g

Leia mais

Teoria da computabilidade Indecidíveis Decidíveis

Teoria da computabilidade Indecidíveis Decidíveis Bacharelado em Ciência da Computação Disciplina: Algoritmos e Estruturas de Dados I Professor: Mário Luiz Rodrigues Oliveira Teoria da computabilidade Indecidíveis Decidíveis Teoria da complexidade Intratáveis:

Leia mais

Lista de Exercícios Programação Inteira. x 2 0 e inteiros.

Lista de Exercícios Programação Inteira. x 2 0 e inteiros. Lista de Exercícios Programação Inteira ) Resolva os problemas a seguir usando o método B&B a) Max z = 5 x + 2 y s.a x + y 2 x + y 5 x, y 0, x e y inteiros b) Max z = 2 x + y s.a x + 2y 0 x + y 25 x, y

Leia mais

Projeto de Algoritmos Introdução

Projeto de Algoritmos Introdução Projeto de Algoritmos Introdução Última alteração: 30 de Agosto de 2010 Transparências elaboradas por Charles Ornelas Almeida, Israel Guerra e Nivio Ziviani Projeto de Algoritmos Cap.1 Introdução 1 Conteúdo

Leia mais

Universidade da Madeira. 1. Recursão. 3. Busca. Profa. Dra. Laura Rodríguez Estruturas de dados e algoritmos 2

Universidade da Madeira. 1. Recursão. 3. Busca. Profa. Dra. Laura Rodríguez Estruturas de dados e algoritmos 2 Profa. Dra. Laura Rodríguez E-mail: lmrodrig@uma.pt Universidade da Madeira 1. Recursão 2. Ordenação 3. Busca Profa. Dra. Laura Rodríguez Estruturas de dados e algoritmos 2 1 1. Recursão 2. Ordenação 3.

Leia mais

Grafos Hamiltonianos e o Problema do Caixeiro Viajante. Prof. Ademir Constantino Departamento de Informática Universidade Estadual de Maringá

Grafos Hamiltonianos e o Problema do Caixeiro Viajante. Prof. Ademir Constantino Departamento de Informática Universidade Estadual de Maringá Grafos Hamiltonianos e o Problema do Caixeiro Viajante Prof. Ademir Constantino Departamento de Informática Universidade Estadual de Maringá Grafo Hamiltoniano Definição: Um circuito hamiltoniano em um

Leia mais

CAPÍTULO 4 - OPERADORES E EXPRESSÕES

CAPÍTULO 4 - OPERADORES E EXPRESSÕES CAPÍTULO 4 - OPERADORES E EXPRESSÕES 4.1 - OPERADORES ARITMÉTICOS Os operadores aritméticos nos permitem fazer as operações matemáticas básicas, usadas no cálculo de expressões aritméticas. A notação usada

Leia mais

FACULDADE CAMPO LIMPO PAULISTA BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto a Análise de Algoritmos I Lista de Exercícios 1

FACULDADE CAMPO LIMPO PAULISTA BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto a Análise de Algoritmos I Lista de Exercícios 1 FACULDADE CAMPO LIMPO PAULISTA BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO Projeto a Análise de Algoritmos I Lista de Exercícios 1 Prof. Osvaldo. 1. Descreva alguns problemas associados ao emprego de metodologias

Leia mais

Algoritmos e Estruturas de Dados I. Recursividade. Pedro O.S. Vaz de Melo

Algoritmos e Estruturas de Dados I. Recursividade. Pedro O.S. Vaz de Melo Algoritmos e Estruturas de Dados I Recursividade Pedro O.S. Vaz de Melo Problema Implemente uma função que classifique os elementos de um vetor em ordem crescente usando o algoritmo quicksort: 1. Seja

Leia mais

MC102 - Algoritmos e programação de computadores. Aula 16: Busca e Ordenação em vetores

MC102 - Algoritmos e programação de computadores. Aula 16: Busca e Ordenação em vetores MC102 - Algoritmos e programação de computadores Aula 16: Busca e Ordenação em vetores Busca Dada uma coleção de n elementos, pretende-se saber se um determinado elemento valor está presente nessa coleção.

Leia mais

Análise e Síntese de Algoritmos. Revisão CLRS, Cap. 7-10

Análise e Síntese de Algoritmos. Revisão CLRS, Cap. 7-10 Análise e Síntese de Algoritmos Revisão CLRS, Cap. 7-10 Contexto Revisão Algoritmos e complexidade Notação Fundamentos: somatórios, recorrências, etc. Exemplos de algoritmos Ordenação Procura Selecção

Leia mais

Teoria dos Grafos Aula 18

Teoria dos Grafos Aula 18 Teoria dos Grafos Aula 18 Aula passada Coloração Algoritmo guloso Número cromático Teorema das 4 cores Aula de hoje Clusterização (ou agrupamento) Algoritmo Variação Clusterização Coleção de objetos Agrupar

Leia mais

Algoritmos 2 - Introdução

Algoritmos 2 - Introdução DAINF - Departamento de Informática Algoritmos 2 - Introdução Prof. Alex Kutzke (http://alex.kutzke.com.br/courses) 19 de Agosto de 2015 Slides adaptados do material produzido pelo Prof. Rodrigo Minetto

Leia mais

Ordenação de Dados (III) HeapSort

Ordenação de Dados (III) HeapSort UFSC-CTC-INE INE53 - Estruturas de Dados Ordenação de Dados (III) Prof. Ronaldo S. Mello 00/ HeapSort HeapSort também é um método de seleção ordena através de sucessivas seleções do elemento correto a

Leia mais

4º 20/10/2003. ÍNDICE

4º 20/10/2003. ÍNDICE Universidade Federal de Juiz de Fora UFJF. Departamento de Ciência da Computação DCC. Curso de Ciência da Computação. Análise e Projeto de Algoritmos 4º período. Filippe Jabour. Atualizado em 20/10/2003.

Leia mais

5COP096 TeoriadaComputação

5COP096 TeoriadaComputação Sylvio 1 Barbon Jr barbon@uel.br 5COP096 TeoriadaComputação Aula 12 Prof. Dr. Sylvio Barbon Junior Sumário - Árvore Geradora Mínima - Teorema pare reconhecer arestas seguras; - Algoritmo de Prim; - Algoritmo

Leia mais

Mochila. Dados dois vetores x[1..n] e w[1..n], denotamos por x w o produto escalar

Mochila. Dados dois vetores x[1..n] e w[1..n], denotamos por x w o produto escalar Mochila Dados dois vetores x[1..n] e w[1..n], denotamos por x w o produto escalar w[1]x[1] + w[2]x[2] + + w[n]x[n]. Suponha dado um número inteiro não-negativo W e vetores positivos w[1..n] e v[1..n].

Leia mais

OBSERVAÇÕES: EXERCÍCIOS

OBSERVAÇÕES: EXERCÍCIOS OBSERVAÇÕES: 1. Esta lista de exercícios poderá ser resolvida individualmente ou em grupos de 2 pessoas. 2. A lista possui 25 exercícios, destes você deve responder os 5 primeiros exercícios e os outros

Leia mais

6. Pesquisa e Ordenação

6. Pesquisa e Ordenação 6. Pesquisa e Ordenação Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 1 / 30 Pesquisa de Informação A pesquisa eficiente de informação

Leia mais

Grafos. Notas. Notas. Notas. Notas. Caminhos mais curtos de única origem. Subestrutura ótima. Propriedades de caminhos mais curtos

Grafos. Notas. Notas. Notas. Notas. Caminhos mais curtos de única origem. Subestrutura ótima. Propriedades de caminhos mais curtos Grafos Caminhos mais curtos de única origem Conteúdo Subestrutura ótima Inicialização Propriedades de caminhos mais curtos Algoritmos Algoritmo de Bellman-Ford Caminhos mais curtos de única origem em gaos

Leia mais

Eduardo Camponogara. DAS-9003: Introdução a Algoritmos

Eduardo Camponogara. DAS-9003: Introdução a Algoritmos Caminhos Mínimos entre Todos os Vértices 1/ 48 Caminhos Mínimos entre Todos os Vértices Eduardo Camponogara Departamento de Automação e Sistemas Universidade Federal de Santa Catarina DAS-9003: Introdução

Leia mais

Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO

Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO Dados em Algoritmos Quando escrevemos nossos programas, trabalhamos com: Dados que nós fornecemos ao programa Dados

Leia mais

Existem duas categorias de algoritmos de ordenação: Os algoritmos de ordenação são avaliados de acordo com os seguintes critérios:

Existem duas categorias de algoritmos de ordenação: Os algoritmos de ordenação são avaliados de acordo com os seguintes critérios: MÉTODOS DE ORDENAÇÃO E PESQUISA ORDENAÇÃO: consiste em arranjar um conjunto de informações semelhantes numa ordem crescente ou decrescente; PESQUISA: consiste em executar uma pesquisa sobre a estrutura

Leia mais

ANÁLISE SOBRE ALGUNS MÉTODOS DE ORDENAÇÃO DE LISTAS: SELEÇÃO, INSERÇÃO E SHELLSORT

ANÁLISE SOBRE ALGUNS MÉTODOS DE ORDENAÇÃO DE LISTAS: SELEÇÃO, INSERÇÃO E SHELLSORT ANÁLISE SOBRE ALGUNS MÉTODOS DE ORDENAÇÃO DE LISTAS: SELEÇÃO, INSERÇÃO E SHELLSORT Analysis on some Sort of Methods of Lists: Select, Insert and Shellsort Andrew Carlos de Sene Dias, Nayara Almeida Vilela,

Leia mais

Algoritmos e Estruturas de Dados II. Ordenação

Algoritmos e Estruturas de Dados II. Ordenação Algoritmos e Estruturas de Dados II Ordenação Antonio Alfredo Ferreira Loureiro loureiro@dcc.ufmg.br http://www.dcc.ufmg.br/~loureiro UFMG/ICEx/DCC Algoritmos e Estruturas de Dados II 1 Sumário Introdução:

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

PESQUISA EM INFORMÁTICA - COMO ESCREVER UM TEXTO. Prof. Angelo Augusto Frozza, M.Sc.

PESQUISA EM INFORMÁTICA - COMO ESCREVER UM TEXTO. Prof. Angelo Augusto Frozza, M.Sc. PESQUISA EM INFORMÁTICA - COMO ESCREVER UM TEXTO Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza JUSTIFICATIVA A adoção de um método para escrever seus trabalhos ajuda a evitar uma série de

Leia mais

Compactação de Dados Letícia Rodrigues Bueno

Compactação de Dados Letícia Rodrigues Bueno Compactação de Dados Letícia Rodrigues Bueno UFABC Compactação de Dados: Introdução Objetivo: Compactação de Dados: Introdução Compactação de Dados: Introdução Objetivo: 1. minimizar espaço de memória

Leia mais

Lista de Exercícios 6 Funções

Lista de Exercícios 6 Funções UFMG/ICEx/DCC DCC Matemática Discreta Lista de Exercícios 6 Funções Ciências Exatas & Engenharias o Semestre de 06 Conceitos. Determine e justifique se a seguinte afirmação é verdadeira ou não para todas

Leia mais

O mais leve e o mais pesado Algoritmos de Ordenação

O mais leve e o mais pesado Algoritmos de Ordenação Atividade 7 O mais leve e o mais pesado Algoritmos de Ordenação Sumário Os computadores são muitas vezes utilizados para colocar listas em algum tipo de ordem, por exemplo, nomes em ordem alfabética, compromissos

Leia mais

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos Ano Lectivo de 2006/2007 2 o Semestre RESOLUÇÃO DO 2 o TESTE I. (2,0+2,0+2,0 = 6,0 val.) 1) Calcule o valor óptimo da função objectivo e o respectivo

Leia mais

SCC-503 Algoritmos e Estruturas de Dados II. Modificado por Moacir Ponti Jr, do original de:

SCC-503 Algoritmos e Estruturas de Dados II. Modificado por Moacir Ponti Jr, do original de: Árvores-B (Parte II) SCC-503 Algoritmos e Estruturas de Dados II Modificado por Moacir Ponti Jr, do original de: Thiago A. S. Pardo Cristina D. A. Ciferri Leandro C. Cintra M.C.F. de Oliveira Algoritmo:

Leia mais

Análise Sintática II. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 34

Análise Sintática II. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 34 Análise Sintática II Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Outubro, 2016 1 / 34 Sumário 1 Introdução 2 Ambiguidade 3 Análise sintática descendente 4

Leia mais

Aprendendo a Programar Programando numa Linguagem Algorítmica Executável (ILA)

Aprendendo a Programar Programando numa Linguagem Algorítmica Executável (ILA) Jaime Evaristo Sérgio Crespo Aprendendo a Programar Programando numa Linguagem Algorítmica Executável (ILA) Segunda Edição Capítulo 7 Versão 13052010 7. Pesquisa e Ordenação 7.1 Introdução Embora os problemas

Leia mais

INF 1010 Estruturas de Dados Avançadas

INF 1010 Estruturas de Dados Avançadas INF 1010 Estruturas de Dados Avançadas Listas de Prioridades e Heaps 1 Listas de Prioridades Em muitas aplicações, dados de uma coleção são acessados por ordem de prioridade A prioridade associada a um

Leia mais

Árvore Binária de Busca Ótima

Árvore Binária de Busca Ótima MAC 5710 - Estruturas de Dados - 2008 Referência bibliográfica Os slides sobre este assunto são parcialmente baseados nas seções sobre árvore binária de busca ótima do capítulo 4 do livro N. Wirth. Algorithms

Leia mais

3 Aprendizado por reforço

3 Aprendizado por reforço 3 Aprendizado por reforço Aprendizado por reforço é um ramo estudado em estatística, psicologia, neurociência e ciência da computação. Atraiu o interesse de pesquisadores ligados a aprendizado de máquina

Leia mais

Algoritmos de Ordenação e Pesquisa. Marco Antonio Moreira de Carvalho Algoritmos e Estrutura de Dados

Algoritmos de Ordenação e Pesquisa. Marco Antonio Moreira de Carvalho Algoritmos e Estrutura de Dados Algoritmos de Ordenação e Pesquisa Marco Antonio Moreira de Carvalho Algoritmos e Estrutura de Dados Bibliografia Básica l Cormen, Leiserson, Rivest. Introduction to Algorithms. 2nd edition. MIT Press,

Leia mais

Teoria dos Grafos Aula 23

Teoria dos Grafos Aula 23 Teoria dos Grafos Aula 23 Aula passada Apresentação de trabalhos Discussão da prova Subset sum Problema da mochila Aula de hoje Caminho mais curto entre todos os pares Algortimo de Floyd Warshall Programação

Leia mais

Noções de complexidade de algoritmos

Noções de complexidade de algoritmos Noções de complexidade de algoritmos 358 Tempo de Execução A avaliação de desempenho de um algoritmo quanto executado por um computador pode ser feita a posteriori ou a priori. Uma avaliação a posteriori

Leia mais

5. Expressões aritméticas

5. Expressões aritméticas 5. Expressões aritméticas 5.1. Conceito de Expressão O conceito de expressão em termos computacionais está intimamente ligado ao conceito de expressão (ou fórmula) matemática, onde um conjunto de variáveis

Leia mais

Matrizes esparsas: definição

Matrizes esparsas: definição Matrizes esparsas: definição o objetivo é mostrar os métodos de armazenamento e manipulação de matrizes esparsas esparsidade de uma matriz é a relação entre o número de elementos nulos de uma matriz e

Leia mais

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano CÁLCULO NUMÉRICO Profa. Dra. Yara de Souza Tadano yaratadano@utfpr.edu.br Aula 7 04/2014 Zeros reais de funções Parte 1 Objetivo Determinar valores aproximados para as soluções (raízes) de equações da

Leia mais

Teoria dos Grafos Aula 6

Teoria dos Grafos Aula 6 Teoria dos Grafos Aula 6 Aula passada Busca em grafos Busca em largura (BFS Breadth First Search) Propriedades Aula de hoje BFS implementação Complexidade Busca em profundidade (DFS) Conectividade, componentes

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

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO PRÓ-REITORIA DE ENSINO DE GRADUAÇÃO

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO PRÓ-REITORIA DE ENSINO DE GRADUAÇÃO UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO PRÓ-REITORIA DE ENSINO DE GRADUAÇÃO Rua Dom Manoel de Medeiros, s/n Dois Irmãos 52171-900 Recife-PE Fone: 0xx-81-332060-40 proreitor@preg.ufrpe.br PLANO DE ENSINO

Leia mais

Bacharelado em Ciência da Computação Matemática Discreta

Bacharelado em Ciência da Computação Matemática Discreta Bacharelado em Ciência da Computação Matemática Discreta Prof. Diego Mello da Silva Instituto Federal de Minas Gerais - Campus Formiga 27 de fevereiro de 2013 diego.silva@ifmg.edu.br (IFMG) Matemática

Leia mais

FACULDADE DE IMPERATRIZ - FACIMP BACHARELADO EM SISTEMAS DE INFORMAÇÃO ESTRUTURA DE DADOS 2. Vieira Lima Junior. Everson Santos Araujo

FACULDADE DE IMPERATRIZ - FACIMP BACHARELADO EM SISTEMAS DE INFORMAÇÃO ESTRUTURA DE DADOS 2. Vieira Lima Junior. Everson Santos Araujo 1 FACULDADE DE IMPERATRIZ - FACIMP BACHARELADO EM SISTEMAS DE INFORMAÇÃO ESTRUTURA DE DADOS 2 Vieira Lima Junior Everson Santos Araujo ALGORITMOS DE ORDENAÇÃO: estudo comparativo de diversos algoritmos

Leia mais

ANÁLISE DE ALGORITMOS (INF 1721)

ANÁLISE DE ALGORITMOS (INF 1721) PUC-Rio Departamento de Informática Prof. Marcus Vinicius S. Poggi de Aragão (3WA) Lorenza Moreno e David Sotelo (3WB) Horário: 2as. e 4as. 15-17hs (3WA), 3as. e 5as. 19-21 (3WB) 5 de abril de 2010 Período:

Leia mais

Universidade Federal do Espírito Santo

Universidade Federal do Espírito Santo Universidade Federal do Espírito Santo Eliezer de Souza da Silva Estudo Comparativo de Algoritmos de Ordenação SÃO MATEUS 2010 Universidade Federal do Espírito Santo Eliezer de Souza da Silva Estudo Comparativo

Leia mais

Estruturas de Dados. Revisão de Funções e Recursão. Agradecimentos

Estruturas de Dados. Revisão de Funções e Recursão. Agradecimentos Estruturas de Dados Revisão de Funções e Recursão Prof. Ricardo J. G. B. Campello Agradecimentos Parte dos slides a seguir são adaptações dos originais em Pascal gentilmente cedidos pelo Prof. Rudinei

Leia mais

Subsequência comum mais longa Em inglês, Longest Common Subsequence (LCS)

Subsequência comum mais longa Em inglês, Longest Common Subsequence (LCS) Programação Dinâmica Subsequência comum mais longa Em inglês, Longest Common Subsequence (LCS) Fernando Lobo Algoritmos e Estrutura de Dados II 1 / 23 Longest Common Subsequence (LCS) Dadas duas sequências,

Leia mais

Triangulação de Delauney

Triangulação de Delauney Triangulação de Delauney Um pedaço da superfície terrestre é chamado de terreno. Um terreno é uma superfície 2-dimensional em um espaço 3-dimensional com uma propriedade especial: cada linha vertical intercepta

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

Estruturas de Dados Pilhas, Filas, Listas

Estruturas de Dados Pilhas, Filas, Listas PMR2300 Escola Politécnica da Universidade de São Paulo Introdução Estruturas de dados são objetos que armazenam dados de forma eficiente, oferecendo certos serviços para o usuário (ordenação eficiente

Leia mais

Complexidade de Algoritmos. Edson Prestes

Complexidade de Algoritmos. Edson Prestes Edson Prestes Caminhos de custo mínimo em grafo orientado Este problema consiste em determinar um caminho de custo mínimo a partir de um vértice fonte a cada vértice do grafo. Considere um grafo orientado

Leia mais

Processamento de Produtos ( X )

Processamento de Produtos ( X ) Processamento de Produtos ( X ) Alternativas e suas estimativas de custo A: laço aninhado ( nested-loop ) A: laço aninhado com índice ( indexed nestedloop ) A: merge-junção ( balanced-line ou sortmerge

Leia mais

Variáveis, Tipos de Dados e Operadores

Variáveis, Tipos de Dados e Operadores ! Variáveis, Tipos de Dados e Operadores Engenharias Informática Aplicada 2.o sem/2013 Profa Suely (e-mail: smaoki@yahoo.com) VARIÁVEL VARIÁVEL É um local lógico, ligado a um endereço físico da memória

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

Introdução à Programação. Vanessa Braganholo

Introdução à Programação. Vanessa Braganholo Introdução à Programação Vanessa Braganholo vanessa@ic.uff.br Processo de resolução de problemas (Princípios de Pólya) Definição dos requisitos do problema (fazer o programa certo) Entradas Cálculos Casos

Leia mais

Aula 4 Expressões e Operadores Cleverton Hentz

Aula 4 Expressões e Operadores Cleverton Hentz Aula 4 Expressões e Operadores Cleverton Hentz Sumário de Aula } Expressões } Operadores } Linearização de Expressões 2 Expressões Uma expressão é composta por variáveis, constantes, ou qualquer combinação

Leia mais

Trabalho: Algoritmos de Busca e Ordenação. 1 Introdução. Prof. Bruno Emerson Gurgel Gomes IFRN - Câmpus Currais Novos. 31 de outubro de 2012

Trabalho: Algoritmos de Busca e Ordenação. 1 Introdução. Prof. Bruno Emerson Gurgel Gomes IFRN - Câmpus Currais Novos. 31 de outubro de 2012 Trabalho: Algoritmos de Busca e Ordenação Prof. Bruno Emerson Gurgel Gomes IFRN - Câmpus Currais Novos 31 de outubro de 2012 1 Introdução Os algoritmos de busca e de ordenação compreendem um conjunto de

Leia mais

OBI2012 Caderno de soluções

OBI2012 Caderno de soluções OBI2012 Caderno de soluções Modalidade Programação Nível 2, Fase 2 12 de maio de 2012 Promoção: Patrocínio: Olimpíada Brasileira de Informática OBI2012 1 Álbum de fotos Dado um retângulo X Y e dois retângulos

Leia mais

Python: Recursão. Claudio Esperança

Python: Recursão. Claudio Esperança Python: Recursão Claudio Esperança Recursão É um princípio muito poderoso para construção de algoritmos A solução de um problema é dividido em Casos simples: São aqueles que podem ser resolvidos trivialmente

Leia mais

Comparando, Distribuindo e Ordenando

Comparando, Distribuindo e Ordenando Capítulo 5 Comparando, Distribuindo e Ordenando Algoritmos de ordenação podem ser agrupados tendo-se como base o comportamento da sua função de custo: Quadrática, NlogN e Linear. Os algoritmos de custo

Leia mais

ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADAS. Cristina Boeres

ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADAS. Cristina Boeres ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADAS Cristina Boeres Árvore Binária - altura máxima Seja a árvore A formada com as seguintes inserções! 1, 2, 3, 4, 5, 6 e 7 1 2 3 4! Pior caso: O(n) 5 6

Leia mais

Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão

Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão MC3305 Algoritmos e Estruturas de Dados II Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 2Q-2015 1 Custo de um algoritmo

Leia mais

Arquivos Sequenciais Ordenados Fisicamente

Arquivos Sequenciais Ordenados Fisicamente Arquivos Sequenciais Ordenados Fisicamente Estrutura de Dados II Aula 05 UFS - DComp Adaptados a partir do material da Profa. Kenia Kodel Cox Arquivos Sequenciais Podem ser: 1. Desordenados 2. Ordenados,

Leia mais

Análise e Comparação de Algoritmos Implementados em Java

Análise e Comparação de Algoritmos Implementados em Java Análise e Comparação de Algoritmos Implementados em Java Jonathan S. Nascimento 1, Patricia M. Mozzaquatro 1, Rodrigo L. Antoniazzi 1 1 Departamento de Ciência da Computação Universidade de Cruz Alta (UNICRUZ)

Leia mais

IME, UFF 7 de novembro de 2013

IME, UFF 7 de novembro de 2013 em Lógica IME, UFF 7 de novembro de 2013 em Sumário Intermezzo sobre problemas. Intermezzo sobre algoritmos.. em : Val, Sat, Conseq, Equiv, Consist. Redução de problemas. em Um problema computacional é

Leia mais

Introdução aos Métodos Numéricos. Instituto de Computação UFF

Introdução aos Métodos Numéricos. Instituto de Computação UFF Introdução aos Métodos Numéricos Instituto de Computação UFF Conteúdo Erros e Aproximações Numéricas Sistemas de Equações Lineares. Métodos diretos Interpolação Ajuste de Curvas Zeros de Função Sistemas

Leia mais

Pesquisa sequencial e pesquisa binária

Pesquisa sequencial e pesquisa binária Pesquisa sequencial e pesquisa binária Armando Matos Departamento de Ciência de Computadores Universidade de Porto 2008 2 problemas importantes... Pesquisa: Procurar um valor numa lista ou, por exemplo,

Leia mais

Ajuste de mínimos quadrados

Ajuste de mínimos quadrados Capítulo 5 Ajuste de mínimos quadrados 5 Ajuste de mínimos quadrados polinomial No capítulo anterior estudamos como encontrar um polinômio de grau m que interpola um conjunto de n pontos {{x i, f i }}

Leia mais

Grafos: caminhos (matriz adjacência)

Grafos: caminhos (matriz adjacência) Grafos: caminhos (matriz adjacência) Algoritmos e Estruturas de Dados 2 Graça Nunes 1 O problema do menor caminho Um motorista deseja encontrar o caminho mais curto possível entre duas cidades do Brasil

Leia mais