Projeto e Análise de Algoritmos
|
|
- Jónatas Gusmão Barreto
- 6 Há anos
- Visualizações:
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 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 maisANÁ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 maisQuantidade 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 maisBCC202 - 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 mais03 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 maisTé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 maisLista 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 maisBC1424 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 maisAlgoritmos 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: Comparar algoritmos: existem algoritmos que resolvem o mesmo tipo de problema. Determinar se o algoritmo é ótimo :
Leia maisBCC202 - 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 mais7. 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 maisMé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 maisParadigmas 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 maisQuicksort 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 maisEstrutura 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 maisI. 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 maisProblema 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 maisSistemas 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 maisAula 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 maisMemó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 maisEstruturas 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 maisProgramaçã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 maisProblema 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 maisAula 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 maisComplexidade 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 maisTeoria 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 maisLista 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 maisProjeto 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 maisUniversidade 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 maisGrafos 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 maisCAPÍ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 maisFACULDADE 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 maisAlgoritmos 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 maisMC102 - 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 maisAná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 maisTeoria 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 maisAlgoritmos 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 maisOrdenaçã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 mais4º 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 mais5COP096 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 maisMochila. 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 maisOBSERVAÇÕ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 mais6. 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 maisGrafos. 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 maisEduardo 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 maisProgramaçã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 maisExistem 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 maisANÁ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 maisAlgoritmos 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 maisAná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 maisPESQUISA 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 maisCompactaçã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 maisLista 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 maisO 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 maisINSTITUTO 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 maisSCC-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 maisAná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 maisAprendendo 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 maisINF 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
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 mais3 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 maisAlgoritmos 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 maisTeoria 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 maisNoçõ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 mais5. 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 maisMatrizes 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 maisCÁ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 maisTeoria 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 maisJorge 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 maisUNIVERSIDADE 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 maisBacharelado 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 maisFACULDADE 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 maisANÁ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 maisUniversidade 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 maisEstruturas 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 maisSubsequê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 maisTriangulaçã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 maisPaulo 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 maisEstruturas 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 maisComplexidade 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 maisProcessamento 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 maisVariá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 maisReduçõ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 maisIntroduçã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 maisAula 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 maisTrabalho: 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 maisOBI2012 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 maisPython: 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 maisComparando, 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 maisESTRUTURA 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 maisAula 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 maisArquivos 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 maisAná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 maisIME, 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 maisIntroduçã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 maisPesquisa 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 maisAjuste 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 maisGrafos: 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