CIC 110 Análise e Projeto de Algoritmos I
|
|
|
- Walter Caetano Batista
- 7 Há anos
- Visualizações:
Transcrição
1 CIC 110 Análise e Projeto de Algoritmos I Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá
2 Introdução ao curso AULA 01
3 Prof. Roberto Affonso da Costa Junior http// whatsapp: (35) Instituto de Matemática e Computação
4 Tipo de aulas O curso Apresentação de slides Prática em laboratório Prática em casa Utilização de ambientes de programação Aulas em video.
5 Avaliação 6 Provas de 0 a 100 pontos (P1,P2,P3,P4) Essas provas serão realizadas em equipe de, NO MÁXIMO 3 alunos e NO MÍNIMO 2 alunos, no laboratório nas datas marcadas no site da sua turma. COMPOSIÇÃO: Nota N1: a média aritimética das notas (P1 e P2) Nota N2: a média aritimética das notas (P3 e P4)
6 Avaliação 1 Prova Substitutiva de 0 a 100 pontos (PS) Essas provas será realizada no laboratório e seguira as regras da UNIFEI.
7 Avaliação O aluno que perder uma prova poderá realizar a substitutiva para repor a prova perdida. Sendo que neste caso não precisa trazer autorização da PRG. No caso da perda de uma prova com autorização da PRG, o aluno irá realizar individualmente e em horário agendado com o professor.
8 Composição da prova Todas as provas serão no formato de competição. As provas terão 5 questões valendo, cada uma delas, 16 pontos, totalizando 80 pontos. Conforme a colocação da equipe na prova, elas irão receber a seguinte pontuação:
9 Avaliação COMPETIÇÃO: Concorrência a uma mesma pretensão por parte de duas ou mais pessoas ou grupos, com vistas a igualar ou a superar o outro.
10 A nota final será composta de: Avaliação Nota Final (NF) = (N1 + N2) / 2 Se NF >= 60 Então APROVADO Senão REPROVADO A prova Substitutiva, vai substituir a nota da prova P1 ou P2, a menor delas.
11 Datas Importantes Estão disponibilizadas no site:
12 Sugestão de Bibliografia Notas de Aulas Competitive Programming, 3rd Edition, Steven Halim T. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein. Introduction to Algorithms, second edition, The MIT Press, N. Wirth. Algorithms + Data Structures = Programs. Prentice Hall, D. E. Knuth. The Art of Computer Programming. Volume 1, Addison Wesley, 1973.
13 Sugestão de Bibliografia A. V. Aho, J. E. Hopcroft, and J. D. Ullman. Data structures and algorithms. Addison Wesley, J. L. Szwarcfiter e L. Markenzon. Estruturas de Dados e seus Algoritmos. LTC Editora, A. Drozdek. Estrutura de Dados e Algoritmos em C++. Thompson, N. Ziviani. Projeto de Algoritmos com Implementações em Pascal e C. Livraria Pioneira Editora, São Paulo, 1993.
14 Sites de desafios
15 Sugestões para seu bom desempenho no curso Não falte às aulas; Não tenha vergonha de fazer perguntas para tirar suas dúvidas durante as aulas; Não deixe para estudar às vésperas das provas; Procure seu professor em sua sala, sempre que uma dúvida não tiver sido bem esclarecida;
16 O aluno não será atendido pelo professor às vésperas das provas; Sempre que possível, utilize o computador para tirar suas dúvidas; Procure também os alunos monitores de ensino, para ser ajudado nas tarefas escolares (horários disponíveis nos quadros de avisos );
17 Jamais tente colar ou passar cola para outros durante as atividades escolares; as penas institucionais são muito rígidas a este respeito. O aluno, se pego nestas situações, é punido com a perda da disciplina. Qualquer dúvida com relação à disciplina, procure o professor da mesma ou leia diariamente os quadros de avisos oficiais; não confie em boatos ou fiquei sabendo, ou disseram etc.
18 Haverá chamada em todas as aulas. O aluno que faltar mais de ¼ das aulas será reprovado. Para justificar sua ausência, o aluno deve procurar a PRG, documentado com o motivo de sua ausência. E está informará o professor.
19 Conteúdo das disciplinas 1. Data Strucutres Stacks/Queues/Heaps/ Segment Tree BitVec 2. Graph DFS BFS Topological Sort Kruskal Prim Dijkstra (with previous nodes) Bellman Ford Floyd-Warshall (minimax, maximin, safest path, transitive hull)
20 Conteúdo das disciplinas 3. Dynamic Programming Knaspack LIS/LDS (n 2 e n log n) LCS Counting Change 4. Geometry Point, distance, triangle area, collinear, counterclockwise Line, parallel Convex Hull: Graham Scan 5. Strings Suffix array LCP
21 Conteúdo das disciplinas 6. Math and Number Theory Base Convertion GCD/LCM Primes, sieve powmod Fibonacci Mod Polar coordinate system LatlongDistance Modular arithmetics Combinatorics Totient Carmichael Number Catalan Formula Recursion as matrix exponentiation
22 Agradecimentos ao Prof. Siang Wun Song - Universidade de São Paulo IME/USP
23 Objetivo de estudar Por que analisar a complexidade dos algoritmos? A preocupação com a complexidade de algoritmos é fundamental para projetar algoritmos eficientes. Podemos desenvolver um algoritmo e depois analisar a sua complexidade para verificar a sua eficiência. Mas o melhor ainda é ter a preocupação de projetar algoritmos eficientes desde a sua concepção.
24 Eficiência ou complexidade Para um dado problema considere dois algoritmos que o resolvem. Seja n um parâmetro que caracteriza o tamanho da entrada do algoritmo. Por exemplo, ordenar n números ou multiplicar duas matrizes quadradas n n (cada uma com n 2 elementos). Como podemos comparar os dois algoritmos para escolher o melhor?
25 Complexidade de tempo ou de espaço Precisamos definir alguma medida que expresse a eficiência. Costuma-se medir um algoritmo em termos de tempo de execução ou o espaço (ou memória) usado. Para o tempo, podemos considerar o tempo absoluto (em minutos, segundos, etc.). Medir o tempo absoluto não é interessante por depender da máquina. Em Análise de Algoritmos conta-se o número de operações consideradas relevantes realizadas pelo algoritmo e expressa-se esse número como uma função de n. Essas operações podem ser comparações, operações aritméticas, movimento de dados, etc.
26 Complexidade de tempo ou de espaço O número de operações realizadas por um determinado algoritmo pode depender da particular instância da entrada. Em geral interessa-nos o pior caso, i.e., o maior número de operações usadas para qualquer entrada de tamanho n. Análises também podem ser feitas para o melhor caso e o caso médio. Neste último, supõe-se conhecida uma certa distribuição da entrada. Exemplo: Busca sequencial de um dado elemento em um vetor armazenando n elementos de forma aleatória. Discuta o pior caso, melhor caso e o caso médio. No caso médio suponha a distribuição uniforme e que o dado buscado está dentro do vetor. Como muda o caso médio se o dado em geral não está presente?
27 Complexidade de tempo Como exemplo, considere o número de operações de cada um dos dois algoritmos que resolvem o mesmo problema, como função de n. Algoritmo 1: f 1 (n) = 2n 2 + 5n operações Algoritmo 2: f 2 (n) = 500n operações Dependendo do valor de n, o Algoritmo 1 pode requerer mais ou menos operações que o Algoritmo 2. (Compare as duas funções para n = 10 e n = 100.)
28 Comportamento assintótico Algoritmo 1: f 1 (n) = 2n 2 + 5n operações Algoritmo 2: f 2 (n) = 500n operações Um caso de particular interesse é quando n tem valor muito grande (n ), denominado comportamento assintótico. Os termos inferiores e as constantes multiplicativas contribuem pouco na comparação e podem ser descartados. O importante é observar que f 1 (n) cresce com n 2 ao passo que f 2 (n) cresce com n. Um crescimento quadrático é considerado pior que um crescimento linear. Assim, vamos preferir o Algoritmo 2 ao Algoritmo 1.
29 Comportamento assintótico Algoritmo 1: f 1 (n) = 2n 2 + 5n operações Algoritmo 2: f 2 (n) = 500n operações Um caso de particular interesse é quando n tem valor muito grande (n ), denominado comportamento assintótico. Os termos inferiores e as constantes multiplicativas contribuem pouco na comparação e podem ser descartados. O importante é observar que f 1 (n) cresce com n 2 ao passo que f 2 (n) cresce com n. Um crescimento quadrático é considerado pior que um crescimento linear. Assim, vamos preferir o Algoritmo 2 ao Algoritmo 1.
30 Notação O Dada uma função g(n), denotamos por O(g(n)) o conjunto das funções. { f(n) : constantes c e n 0 tais que 0 f(n) cg(n) para n n 0.} Isto é, para valores de n suficientemente grandes, f(n) é igual ou menor que g(n). Como abuso de notação, vamos escrever f(n) = O(g(n)) ao invés de f(n) O(g(n)). Algoritmo 1: f 1 (n) = 2n 2 + 5n = O(n 2 ) Algoritmo 2: f 2 (n) = 500n = O(n) Um polinômio de grau d é de ordem O(n d ). Como uma constante pode ser considerada como um polinômio de grau 0, então dizemos que uma constante é O(n 0 ) ou seja O(1).
31 Exercícios A) É verdade que 2n n = O(n 2 )? Prove. B) É verdade que /n = O(n 0 ) = O(1)? Prove. C) Escreva a seguinte função em notação O, sem provar: 4n log n D) Mesmo para a função. 5n n n E) Mesmo para a função. 2(n 1) n + n n 1
32 Solução A) É verdade que 2n n = O(n 2 )? Prove. Sendo f(n) = 2n n. Observe que: 2n n 2n n 2 = 102n 2 desde que n 1. Resumindo, f(n) 102 g(n) para todo n 1. Portanto, f(n) = Ο(g(n)) = O(n 2 ) = 2.
33 Visitar, ler e estudar ulas/oh.html
34 Notação Ω Dada uma função g(n), denotamos por Ω(g(n)) o conjunto das funções. { f(n) : constantes c e para n n 0.} n 0 tais que 0 cg(n) f(n) Isto é, para valores de n suficientemente grandes, f(n) é igual ou maior que g(n). Novamente, abusando a notação, vamos escrever f(n) = Ω(g(n))
35 Notação Θ Dadas duas funções f(n) e g(n), temos f(n) = Θ(g(n)) se e somente se f(n) = O(g(n)) e f(n) = Ω(g(n))
36 Considere 5 algoritmos com as complexidades de tempo. Suponhamos que uma operação leve 1 ms. n f1 (n) = n f 2 (n) = n log n f 3 (n) = n 2 f 4 (n) = n 3 f 5 (n) = 2 n 16 0,016 s 0,064 s s 4 s 1 m 4 s 32 0,032 s 0,16 s 1 s 33 s 46 dias 512 0,512 s 9 s 4m 22 s 1 dia 13 h séculos
37 Considere 5 algoritmos com as complexidades de tempo. Suponhamos que uma operação leve 1 ms. n f 1 (n) = n f 2 (n) = n log n f 3 (n) = n 2 f 4 (n) = n 3 f 5 (n) = 2 n 16 0,016 s 0,064 s s 4 s 1 m 4 s 32 0,032 s 0,16 s 1 s 33 s 46 dias 512 0,512 s 9 s 4m 22 s 1 dia 13 h séculos (Verifique se resolveria usar uma máquina mais rápida onde uma operação leve 1 ps (pico segundo) ao invés de 1 ms: ao invés de séculos seriam séculos :-)
38 Considere 5 algoritmos com as complexidades de tempo. Suponhamos que uma operação leve 1 ms. n f 1 (n) = n f 2 (n) = n log n f 3 (n) = n 2 f 4 (n) = n 3 f 5 (n) = 2 n 16 0,016 s 0,064 s s 4 s 1 m 4 s 32 0,032 s 0,16 s 1 s 33 s 46 dias 512 0,512 s 9 s 4m 22 s 1 dia 13 h séculos (Verifique se resolveria usar uma máquina mais rápida onde uma operação leve 1 ps (pico segundo) ao invés de 1 ms: ao invés de séculos seriam séculos :-) Podemos muitas vezes melhorar o tempo de execução de um programa otimizando o código (i.e. usar x + x ao invés de 2x, evitar recálculo de expressões já calculadas, etc.).
39 Entretanto, melhorias muito mais substanciais podem ser obtidas se usarmos um algoritmo diferente, com outra complexidade de tempo, i.e. obter um algoritmo de O(n log n) ao invés de O(n 2 ).
40 Cota superior ou limite superior (upper bound) Seja dado um problema, por exemplo, multiplicação de duas matrizes quadradas n n. Conhecemos um algoritmo para resolver este problema (pelo método trivial) de complexidade O(n 3 ). Sabemos assim que a complexidade deste problema não deve superar O(n 3 ), uma vez que existe um algoritmo que o resolve com esta complexidade. Uma cota superior ou limite superior (upper bound) deste problema é O(n 3 ). O(n 3 ) A cota superior de um problema pode mudar se alguém descobrir um outro algoritmo melhor.
41 Multiplicação de Matriz n 3 Pior caso: for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { M3[i][j] = 0.0; for (k = 0; k < N; k++) { M3[i][j] = M3[i][j] + M1[i][k] * M2[k][j]; } } }
42 Cota superior (upper bound) O Algoritmo de Strassen reduziu a complexidade para O(n log 7 ). Assim a cota superior do problema de multiplicação de matrizes passou a ser O(n log 7 ). O(n log 7 ) O(n 3 ) Coppersmith e Winograd melhoraram ainda para O(n ). O(n ) O(n log 7 ) O(n 3 ) Note que a cota superior de um problema depende do algoritmo. Pode diminuir quando aparece um algoritmo melhor.
43 Como seria os algoritmos? Algoritmo de Strassen Algoritmo Coppersmith e Winograd
44 Analogia com record mundial A cota superior para resolver um problema é análoga ao record mundial de uma modalidade de atletismo. Ele é estabelecido pelo melhor atleta (algoritmo) do momento. Assim como o record mundial, a cota superior pode ser melhorada por um algoritmo (atleta) mais veloz. Cota superior da corrida de 100 metros rasos:
45 Analogia com record mundial Cota superior da corrida de 100 metros rasos: Ano Atleta (Algoritmo) Tempo 1988 Carl Lewis 9s Linford Christie 9s Carl Lewis 9s Leroy Burrell 9s Donovan Bailey 9s Maurice Greene 9s Tim Montgomery 9s Asafa Powell 9s Usain Bolt 9s Usain Bolt 9s Usain Bolt 9s58
46 Sequência de Fibonacci Para projetar um algoritmo eficiente, é fundamental preocupar-se com a sua complexidade. Como exemplo: considere a sequência de Fibonacci. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, A sequência pode ser definida recursivamente: F n ={ 0 se n=0 1 se n=1 F n 1 + F n 2 se n>1 Dado o valor de n, queremos obter o n-ésimo elemento da sequência. Vamos apresentar dois algoritmos e analisar sua complexidade.
47 Algoritmo 1: função fibo1(n) Seja a função fibo1(n) que calcula o n-ésimo elemento da sequência de Fibonacci. Input: Valor de n Output: O n-ésimo elemento da sequência de Fibonacci Experimente rodar este algoritmo para n = 100 :-)
48 Algoritmo 1: função fibo1(n) Algoritmo 1: função fibo1(n) Function fibo1(n) 1: if (n == 0) 2: { 3: return 0; 4: } else { 5: if (n == 1) 6: { 7: return 1; 8: } else { 9: return fibo1(n 1) + fibo1(n 2); 10: } 11: }
49 Algoritmo 1: função fibo1(n) A complexidade é O(2 n ). (Mesmo se uma operação levasse um picosegundo, operações levariam anos = anos.)
50 Algoritmo 2: função fibo2(n) Function fibo2(n) 1: if (n == 0) 2: { 3: return 0; 4: } else { 5: if (n == 1) 6: { 7: return 1; 8: } else { 9: penultimo = 0; 10: ultimo = 1; 11: for (i = 2; i <= n; i++) 12: { 13: atual = penultimo + ultimo; 14: penultimo = ultimo; 15: ultimo = atual; 16: } 17: return atual; 18: } 19: }
51 Algoritmo 2: função fibo2(n) A complexidade é O(2 n ) para O(n). Você sabe que dá para fazer em O(log n)? Qual a diferença dos 3 abaixo?
52 Cota inferior (lower bound) As vezes é possível demonstrar que, para um dado problema, qualquer que seja o algoritmo a ser usado, o problema requer pelo menos um certo número de operações. Essa complexidade é chamada cota inferior (lower bound) do problema. Note que a cota inferior depende do problema mas não do particular algoritmo.
53 Cota inferior para multiplicação de matrizes Para o problema de multiplicação de matrizes quadradas n n, apenas para ler os elementos das duas matrizes de entrada ou para produzir os elementos da matriz produto leva tempo O(n 2 ). Assim uma cota inferior trivial é Ω(n 2 ). Na analogia anterior, uma cota inferior de uma modalidade de atletismo não dependeria mais do atleta. Seria algum tempo mínimo que a modalidade exige, qualquer que seja o atleta. Uma cota inferior trivial para os 100 metros rasos seria o tempo que a velocidade da luz leva para percorrer 100 metros no vácuo.
54 Meta: aproximando as duas cotas Ω(n 2 ) O(n ) O(n log 7 ) O(n 3 ) Se um algoritmo tem uma complexidade que é igual à cota inferior do problema, então ele é assintoticamente ótimo. O algoritmo de Coppersmith e Winograd é de O(n ) mas a cota inferior (conhecida até hoje) é de Ω(n 2 ). Portanto não podemos dizer que ele é ótimo. Pode ser que esta cota superior possa ainda ser melhorada. Pode também ser que a cota inferior de Ω(n 2 ) possa ser melhorada (isto é aumentada ). Para muitos problemas interessantes, pesquisadores dedicam seu tempo tentando encurtar o intervalo ( gap ) até encostar as duas cotas.
Complexidade de Algoritmos
MAC 5710 - Estruturas de Dados - 2008 Objetivo de estudar complexidade de algoritmos Por que analisar a complexidade dos algoritmos? A preocupação com a complexidade de algoritmos é fundamental para projetar
ALGORITMOS AVANÇADOS UNIDADE I Análise de Algoritmo - Notação O. Luiz Leão
Luiz Leão [email protected] http://www.luizleao.com Conteúdo Programático 1.1 - Algoritmo 1.2 - Estrutura de Dados 1.2.1 - Revisão de Programas em C++ envolvendo Vetores, Matrizes, Ponteiros, Registros
Análise e Projeto de Algoritmos
Análise e Projeto de Algoritmos Mestrado em Ciência da Computação Prof. Dr. Aparecido Nilceu Marana Faculdade de Ciências I think the design of efficient algorithms is somehow the core of computer science.
CT-234. 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 Bibliografia T.H. Cormen, C.E. Leiserson and R.L. Rivest Introduction to algorithms R. Sedgewick
Análise e Projeto de Algoritmos
Análise e Projeto de Algoritmos Prof. Eduardo Barrére www.ufjf.br/pgcc www.dcc.ufjf.br [email protected] www.barrere.ufjf.br Solução de recorrências Para analisar o consumo de tempo de um algoritmo
Complexidade de Algoritmos
Complexidade de Algoritmos Complexidade de Algoritmos Definição A Complexidade de um Algoritmo consiste na quantidade de trabalho necessária para a sua execução, expressa em função das operações fundamentais,
Análise de Complexidade de Algoritmos. mario alexandre gazziro
Análise de Complexidade de Algoritmos mario alexandre gazziro Definição A complexidade de um algoritmo consiste na quantidade de esforço computacional necessária para sua execução. Esse esforço é expresso
CCO 016 / COM 110 Fundamentos de Programação
CCO 016 / COM 110 Fundamentos de Programação Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 01 Introdução ao curso Revisão de representação numérica Prof. Roberto Affonso da
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
INF 1010 Estruturas de Dados Avançadas
INF 1010 Estruturas de Dados Avançadas Complexidade de Algoritmos 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.2 1 Introdução Complexidade computacional Termo criado por Hartmanis e Stearns (1965)
Projeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Apresentação da Disciplina Edirlei Soares de Lima Por que Estudar Algoritmos? Razões Práticas e Teóricas: Devemos conhecer um conjunto de algoritmos
Projeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Aula 01 Complexidade de Algoritmos Edirlei Soares de Lima O que é um algoritmo? Um conjunto de instruções executáveis para resolver um problema (são
Complexidade Assintótica de Programas Letícia Rodrigues Bueno
Complexidade Assintótica de Programas Letícia Rodrigues Bueno Análise de Algoritmos 1. Introdução; Análise de Algoritmos 1. Introdução; 2. Conceitos básicos; Análise de Algoritmos 1. Introdução; 2. Conceitos
Análise de algoritmos. Parte I
Análise de algoritmos Parte I 1 Recursos usados por um algoritmo Uma vez que um procedimento está pronto/disponível, é importante determinar os recursos necessários para sua execução Tempo Memória Qual
Complexidade Assintótica
Complexidade Assintótica ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 08/2008 Material baseado
Teoria dos Grafos Aula 7
Teoria dos Grafos Aula 7 Aula passada Implementação BFS DFS, implementação Complexidade Aplicações Aula de hoje Classe de funções e notação Propriedades da notação Funções usuais Tempo de execução Comparando
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
Teoria da Computação Aula 9 Noções de Complexidade
Teoria da Computação Aula 9 Noções de Complexidade Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional Análise de um Algoritmo em particular Qual é o custo de usar um dado algoritmo para resolver um
Complexidade de Algoritmos
Complexidade de Algoritmos Prof. Diego Buchinger [email protected] [email protected] Prof. Cristiano Damiani Vasconcellos [email protected] Funções de Complexidade Considere
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
Complexidade de Tempo e Espaço
Complexidade de Tempo e Espaço Profa. Sheila Morais de Almeida DAINF-UTFPR-PG junho - 2018 Sheila Almeida (DAINF-UTFPR-PG) Complexidade de Tempo e Espaço junho - 2018 1 / 43 Este material é preparado usando
INF 1010 Estruturas de Dados Avançadas
INF 1010 Estruturas de Dados Avançadas Complexidade de Algoritmos 1 Introdução Complexidade computacional Termo criado por Juris Hartmanis e Richard Stearns (1965) Relação entre o tamanho do problema e
PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos
UNIVERSIDADE FEDERAL DE UBERLÂNDIA FACULDADE DE COMPUTAÇÃO BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos ( X ) SEMESTRAL - ( ) ANUAL CÓDIGO: GBC052 PERÍODO:
André Vignatti DINF- UFPR
Notação Assintótica: Ω, Θ André Vignatti DINF- UFPR Limitantes Inferiores Considere o seguinte trecho de código: void main () { /* trecho que le N da entrada padrao */ for (i = 0 ; i< N; i++) puzzle(i);
Algoritmo. Exemplo. Definição. Programação de Computadores Comparando Algoritmos. Alan de Freitas
Algoritmos Programação de Computadores Comparando Algoritmos Um algoritmo é um procedimento de passos para cálculos. Este procedimento é composto de instruções que definem uma função Até o momento, vimos
TEORIA: 60 LABORATÓRIO: 0
Universidade Federal do ABC Rua Santa Adélia, 166 - Bairro Bangu - Santo André - SP - Brasil CEP 09.210-170 - Telefone/Fax: +55 11 4996-3166 1. CÓDIGO E NOME DA DISCIPLINA: BC1435 - Análise de Algoritmos
Teoria da Computação. Aula 3 Comportamento Assintótico 5COP096. Aula 3 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr
5COP096 Teoria da Computação Aula 3 Prof. Dr. Sylvio Barbon Junior 1 Sumário 1) Exercícios Medida de Tempo de Execução. 2) Comportamento Assintótico de Funções. 3) Exercícios sobre Comportamento Assintótico
Análise e Projeto de Algoritmos
Análise e Projeto de Algoritmos Prof. Eduardo Barrére www.ufjf.br/pgcc www.dcc.ufjf.br [email protected] www.barrere.ufjf.br Consumo de tempo assintótico Seja A um algoritmo para um problema
1 a Lista de Exercícios
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Biológicas Programa de Pós-Graduação em Ciência da Computação Projeto e Análise de Algoritmos - 1 o semestre de 2010 Professor: David Menotti
Aula 1. Teoria da Computação III
Aula 1 Teoria da Computação III Complexidade de Algoritmos 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
Introdução à Ciência da Computação II
Introdução à Ciência da Computação II 2semestre/200 Prof Alneu de Andrade Lopes Apresentação com material gentilmente cedido pelas profas Renata Pontin Mattos Fortes http://wwwicmcuspbr/~renata e Graça
ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS
1/18 ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS Algoritmos 2/18 Algoritmos Algoritmo - sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador)
Complexidade de Algoritmos
Complexidade de Algoritmos O que é um algoritmo? Sequência bem definida e finita de cálculos que, para um dado valor de entrada, retorna uma saída desejada/esperada. Na computação: Uma descrição de como
Teoria da Computação Aula 8 Noções de Complexidade
Teoria da Computação Aula 8 Noções de Complexidade Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional Motivação: Por que estudar algoritmos? Perguntas: - Por que estudar algoritmos se os computadores
Análise de complexidade
Introdução Algoritmo: sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador) Estratégia: especificar (definir propriedades) arquitectura
Estruturas de Dados Aula 1: Introdução e conceitos básicos 28/02/2011
Estruturas de Dados Aula 1: Introdução e conceitos básicos 28/02/2011 Web site http://www.inf.ufes.br/~pdcosta/ensino/ Profa. Patrícia Dockhorn Costa Email: [email protected] Introdução O que são estruturas
SIN5013 Análise de Algoritmos e Estrutura de Dados - 1o Semestre de 2019
SIN5013 Análise de Algoritmos e Estrutura de Dados - 1o Semestre de 2019 Luciano Antonio Digiampietri Escola de Artes, Ciências e Humanidades Programa de Pós-graduação em Sistemas de Informação (PPgSI)
Construção de Algoritmos II Aula 06
exatasfepi.com.br Construção de Algoritmos II Aula 06 André Luís Duarte Porque mil anos são aos teus olhos como o dia de ontem que passou, e como a vigília da noite. Salmos 90:4 Recursividade e complexidade
Introdução à Ciência da Computação II
Introdução à Ciência da Computação II Análise de Algoritmos: Parte I Prof. Ricardo J. G. B. Campello Este material consiste de adaptações e extensões de slides disponíveis em http://ww3.datastructures.net
Análise de Complexidade de Algoritmos
Análise de Complexidade de Algoritmos Algoritmos e Estruturas de Dados 2009/2010 Introdução Algoritmo: conjunto claramente especificado de instruções a seguir para resolver um problema Análise de algoritmos:
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.
Projeto e Análise de Algoritmos
Projeto e Análise de Algoritmos A. G. Silva Baseado nos materiais de Souza, Silva, Lee, Rezende, Miyazawa Unicamp Ribeiro FCUP 18 de agosto de 2017 Conteúdo programático Introdução (4 horas/aula) Notação
Análise e Projeto de Algoritmos
Análise e Projeto de Algoritmos Prof. Eduardo Barrére www.ufjf.br/pgcc www.dcc.ufjf.br [email protected] www.barrere.ufjf.br A Disciplina... Lecionada por dois professores: Eduardo Barrére Foco
Projeto e Análise de Algoritmos
Projeto e Algoritmos Pontifícia Universidade Católica de Minas Gerais [email protected] 26 de Maio de 2017 Sumário A complexidade no desempenho de Quando utilizamos uma máquina boa, ela tende a ter
Classes, Herança e Interfaces
Escola de Artes, Ciências e Humanidades EACH-USP ACH2002 Introdução à Ciência da Computação II Professor: Delano Medeiros Beder revisada pelo professor: Luciano Digiampietri EACH Segundo Semestre de 2011
PCC104 - Projeto e Análise de Algoritmos
PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 14 de agosto de 2018 Marco Antonio
BCC202 - Estrutura de Dados I
BCC202 - Estrutura de Dados I Aula 06: Análise de Algoritmos (Parte 3) Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Ciência da Computação, DECOM Website: www.decom.ufop.br/reifortes
Complexidade de algoritmos Notação Big-O
Complexidade de algoritmos Notação Big-O Prof. Byron Leite Prof. Tiago Massoni Engenharia da Computação Poli - UPE Motivação O projeto de algoritmos é influenciado pelo estudo de seus comportamentos Problema
COMPLEXIDADE DE ALGORITMOS
COMPLEXIDADE DE ALGORITMOS Algoritmos Seqüência de instruções necessárias para a resolução de um problema bem formulado Permite implementação computacional COMPLEXIDADE DE ALGORITMOS Um algoritmo resolve
1 a Lista Professor: Claudio Fabiano Motta Toledo Estagiário PAE: Jesimar da Silva Arantes
SSC0503 - Introdução à Ciência de Computação II 1 a Lista Professor: Claudio Fabiano Motta Toledo ([email protected]) Estagiário PAE: Jesimar da Silva Arantes ([email protected]) 1. O que significa
Aula 02 Notação Assintótica p. 4. Usodanotação O. Notação O. Notação O, Ω, ΘeExemplos. Intuitivamente... O(f(n)) funções que não crescem mais
Notação O Aula 02 Notação Assintótica Notação O, Ω, Θe Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Intuitivamente... O() funções que não crescem mais rápido que funções menores
Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade
Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade Gustavo E.A.P.A. Batista 25 de janeiro de 2005 1 Contextualização 2 Caminhos Mínimos Caminhos Mínimos de uma Origem
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa Livro Projeto de Algoritmos Nívio Ziviani Capítulo 1 Seção 1.3.1 http://www2.dcc.ufmg.br/livros/algoritmos/ Comportamento Assintótico de Funções O parâmetro n
Técnicas de projeto de algoritmos: Indução
Técnicas de projeto de algoritmos: Indução ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 08/2008
André Vignatti DINF- UFPR
Notação Assintótica: O André Vignatti DINF- UFPR Notação Assintótica Vamos expressar complexidade através de funções em variáveis que descrevam o tamanho de instâncias do problema. Exemplos: Problemas
Filas de Prioridades Letícia Rodrigues Bueno
Filas de Prioridades Letícia Rodrigues Bueno UFABC Heaps Heaps: lista linear com chaves s 1,..., s n com propriedade s i s i/2, para 1 < i < n; Heaps Heaps: lista linear com chaves s 1,..., s n com propriedade
5COP096 TeoriadaComputação
Sylvio 1 Barbon Jr [email protected] 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
Complexidade de Algoritmos
Complexidade de Algoritmos! Uma característica importante de qualquer algoritmo é seu tempo de execução! é possível determiná-lo através de métodos empíricos, considerando-se entradas diversas! é também
Algoritmos de Ordenação
Algoritmos de Ordenação Introdução à Ciência da Computação Prof. Edison Ishikawa Objetivo Apresentar diferentes algoritmos de ordenação de dados Mostrar como analisar os algoritmos em termos de tempo de
COMPLEXIDADE DE ALGORITMOS COMPLEXIDADE DE ALGORITMOS
COMPLEXIDADE DE ALGORITMOS Algoritmos Seqüência de instruções necessárias para a resolução de um prolema em formulado Permite implementação computacional COMPLEXIDADE DE ALGORITMOS Um algoritmo resolve
É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser
É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser executado 1 Fazendo estimativas e simplificações... O número
Aula 06: Análise matemática de algoritmos recursivos
Aula 06: Análise matemática de algoritmos recursivos David Déharbe Programa de Pós-graduação em Sistemas e Computação Universidade Federal do Rio Grande do Norte Centro de Ciências Exatas e da Terra Departamento
Análise e Síntese de Algoritmos. Programação Dinâmica CLRS, Cap. 15
Análise e Síntese de Algoritmos Programação Dinâmica CLRS, Cap. 15 Contexto Revisões [CLRS, Cap. 1-10] Algoritmos em Grafos [CLRS, Cap. 22-26] Algoritmos elementares Árvores abrangentes Caminhos mais curtos
ALGORITMOS E ESTRUTURAS DE DADOS I PROF. EDSON IFARRAGUIRRE MORENO
ALGORITMOS E ESTRUTURAS DE DADOS I PROF. EDSON IFARRAGUIRRE MORENO INFORMAÇÕES Horário: 3CD 6CD Créditos: 4 Carga-horária: 60 horas-aula E-mail: [email protected] Material: http://www.inf.pucrs.br/emoreno
Á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
Classificação e Pesquisa
Classificação e Pesquisa Análise de Algoritmos - Complexidade Prof. Rodrigo Rocha [email protected] http://www.bolinhabolinha.com Onde Estamos Ementa Pesquisa de Dados Seqüencial Binária Métodos
Análise de Algoritmos e Estruturas de Dados
Análise de Algoritmos e Estruturas de Dados Carla Negri Lintzmayer Guilherme Oliveira Mota CMCC Universidade Federal do ABC {carla.negri g.mota}@ufabc.edu.br 12 de junho de 2019 Esta versão é um rascunho
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.
PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação
UNIVERSIDADE FEDERAL DE UBERLÂNDIA FACULDADE DE COMPUTAÇÃO BACHARELADO EM GESTÃO DA INFORMAÇÃO PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação ( X ) SEMESTRAL - ( ) ANUAL CÓDIGO: GGI026 PERÍODO:
Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.
Teoria dos Grafos Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada [email protected], [email protected] Grafos e Algoritmos Preparado a partir do texto: Rangel, Socorro.
Elementos de Análise Assintótica
Elementos de Análise Assintótica Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia 23 de Março de 2018 Aula de hoje Nesta aula veremos: Elementos de Análise Assintótica
ESTRUTURA DE DADOS DCC013
ESTRUTURA DE DADOS DCC013 1 o sem./2018 Professor: Itamar Leite de Oliveira [email protected] Professor: Bernardo Martins Rocha [email protected] Total de Créditos: 4 Turma: A Pré-requisitos:
Análise de Algoritmos Estrutura de Dados II
Centro de Ciências Exatas, Naturais e de Saúde Departamento de Computação Análise de Algoritmos Estrutura de Dados II COM10078 - Estrutura de Dados II Prof. Marcelo Otone Aguiar [email protected]
ESTRUTURAS DE DADOS prof. Alexandre César Muniz de Oliveira
ESTRUTURAS DE DADOS prof. Alexandre César Muniz de Oliveira 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Grafos 7. Complexidade 8. Ordenação 9. Busca Sugestão bibliográfica: ESTRUTURAS DE DADOS
Análise de Algoritmos
Análise de Algoritmos Aula 04 Prof. Fernando Freitas Classes de Comportamento Assintótico Se f é uma função de complexidade para um algoritmo F, então O(f) é considerada a complexidade assintótica ou o
2. Complexidade de Algoritmos
Introdução à Computação II 5952011 2. Complexidade de Algoritmos Prof. Renato Tinós Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 2.1. Introdução 2.1.1. Revisão de Pseudo-Código 2.1.2.
Programação Dinâmica I SCC0210 Algoritmos Avançados (2/2011) Lucas Schmidt Cavalcante
Programação Dinâmica I SCC0210 Algoritmos Avançados (2/2011) Lucas Schmidt Cavalcante Introdução Soma máxima de uma subsequência contígua Problema do troco Quantidade de formas de dar troco Problema da
Métodos de Ordenação: Selection, Insertion, Bubble, Merge (Sort)
Métodos de Ordenação: Selection, Insertion, Bubble, Merge (Sort) Hebert Coelho e Nádia Félix Ordenação É a operação de rearranjar os dados em uma determinada ordem. Problema da ordenação - Definição formal
PCC104 - Projeto e Análise de Algoritmos
PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 16 de agosto de 2018 Marco Antonio
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:
a complexidade no desempenho de algoritmos
capítulo 1 introdução Os algoritmos são o cerne da computação. Este capítulo introdutório procura ressaltar a importância da complexidade e dos métodos de projeto e análise de algoritmos. Partindo da ideia
