análise de algoritmos aula 1 profa. sandra de amo disciplina: análise de algoritmos...
TRANSCRIPT
![Page 1: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/1.jpg)
Análise de Algoritmos
AULA 1Profa. Sandra de Amo
Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação
![Page 2: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/2.jpg)
Objetivos GeraisConceitos Básicos
AULA 1 – Parte I Profa. Sandra de Amo
Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação
![Page 3: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/3.jpg)
“Problemas” e “Algoritmos” O que é um problema ?
Função P: Input Output Instância do Problema = I ϵ Input
Exemplos de Problemas Problema dos Primos
Primos: N {Sim, Não} Instância = número naturalPrimos (n) = Sim, se n é primo; Não, caso contrário
Problema da Decomposição em primos Decomposição:
N {Seq | Seq = <(p1,n1),...,(pk,nk)>, pi primo}Decomposição (n) = <(p1,n1), ..., (pk,nk)> se n = p1
n1p2n2...pk
nk Exemplo: Decomposição (10) = <(2,1), (5,1)>, pois 10 = 21.51
![Page 4: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/4.jpg)
“Problemas” e “Algoritmos” Problema do Circuito Hamiltoniano
Hamilton: Grafos Dirigidos {Sim, Não}Instância = grafo dirigido GHamilton(G) = Sim, se G possui um caminho passando por todos os vértices uma única vez;
= Não, caso contrário Problemas de Decisão: output = {Sim, Não}
![Page 5: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/5.jpg)
“Problemas” e “Algoritmos” Solução de um Problema
Conjunto finito de instruções cuja execução sobre o input termina depois de um tempo finito, produzindo no final o output.
Solução de um problema = algoritmo
Algoritmo : conjunto finito de instruções que transformam uma entrada em uma saída depois de um tempo finito.
Todo Algoritmo está associado a um Problema
Algoritmo que resolve o problema
![Page 6: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/6.jpg)
Perguntas
Conjunto dos Algoritmos Conjunto dos Problemas
???
Função injetora ??
Não é função injetora: podem existir diferentes algoritmos para resolver um mesmo problema
Não é função sobrejetora: Existem problemas que não têm solução
![Page 7: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/7.jpg)
Problema de Correspondência de Post (PCP)
Post: Dominós {Sim,Não}
Instância= um conjunto de tipos de peças de dominós
Post(D) = Sim, se existe um pareamento de peças de tipos em D
= Não, caso contrário.
![Page 8: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/8.jpg)
O problema PCPO problema PCP
…abc b c dg
f g eg ef
e f
c d e
b c d
b
1 2 3 4 n
Input = um conjunto finito de tipos de peças de dominós
Pergunta : É possivel encontrar um pareamento, isto é,uma sequência de peças de tipos dados no input, tal que o string formado na parte de cima e idêntico ao string formado na parte de baixo ?
b c d
b
e f
c d e
g
f g
b c d e f g
b c d e f g
Sequência : 3 n 1
![Page 9: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/9.jpg)
a b c a a a b c
Exemplos Exemplos
a b cb
c a
a
a b c
c a
a
1 2 3 4
a
a b
a
a b
b
c a
c a
a
a b c
c
Sequência de peças= 2 1 3 2 4
a b c a a a b c
![Page 10: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/10.jpg)
Exemplo Exemplo
a c c
b a
c a
a
1 2 3
a b c
a b
Input
Resposta ?? Não
Justificativa : a parte de cima das peças é sempre maior que a parte de baixo !
![Page 11: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/11.jpg)
Formalização do Problema Formalização do Problema Input genérico do Problema PCP
C = { t1
b1,
t2
b2,
t3
b3, … ,
tn
bn}
t1, t2, …, tn são strings sobre um alfabeto S
b1, b2, …, bn são strings sobre um alfabeto S
Um pareamento (match) = uma sequência <i1, i2, …, ik> de números em {1,…,n}
tal que ti1 ti2 … tik = bi1 bi2 … bik= string do pareamento
Pergunta : Existe um Pergunta : Existe um pareamento pareamento para o input C ?para o input C ?
![Page 12: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/12.jpg)
Solução quando existe, não precisa ser única Problema da OrdenaçãoOrdena : SeqNat SeqNat Ordena(<a1,...,an>) = <b1,...,bn>Onde: <b1,...,bn> é uma permutação de <a1,...,an>
b1 ≤ b2 ≤ ... ≤ bnAlgoritmos que o resolvem:
Insertion-SortSelection-SortBubble-SortHeap-SortMerge-SortQuick-Sort Radix-SortBucket-Sort
Insertion-SortSelection-SortBubble-SortHeap-SortMerge-SortQuick-Sort
Radix-SortBucket-Sort
Eficiência emTempo cresce
Eficiência emEspaço cresce
![Page 13: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/13.jpg)
O que é um bom algoritmo ? Correto ? Eficiente em tempo ? Eficiente em espaço ?
![Page 14: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/14.jpg)
Soluções Aproximadas às vezes são mais interessantes... Problema do Vertex Cover (otimização)
Achar o menor subconjunto de vértices S tal que cada aresta tem pelo menos uma d e suas extremidades no conjunto S ? Problema de Minimização de recursos
• Encontrar a solução ótima é difícil• Problema NP-hard• Encontrar solução aproximada é factível Existem algoritmos que encontram soluções aproximadas em tempo polinomial
Para cada input G, o algoritmo dá uma solução com custo C(G) tal que:
C(G) ≥ α Opt(G)
![Page 15: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/15.jpg)
Soluções Aproximadas nem sempre sãofacilmente encontráveis
Problema do Caixeiro Viajante (otimização)
Achar o circuito hamiltoniano mais curto (passando por todasas cidades uma única vez) ?
Problema de Minimização de recursos
• Encontrar a solução ótima é difícil• Problema NP-hard• Encontrar solução aproximada não é factível !
d1
d2
d3
d4 d5
d6
![Page 16: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/16.jpg)
Tipos de AlgoritmosProblema P
P é decidível (tem solução ?) Qual a complexidade de P ? Se P for NP-completo: existem algoritmos aproximados ? Como projetar um bom algoritmo para P, dentro das
limitações da complexidade inerente ao problema P ?
Tipos de Algoritmos: Exatos versus Aproximativos Iterativos versus Recursivos Probabilísticos (ou Randômicos)
![Page 17: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/17.jpg)
O que é um Algoritmo Probabilístico ? Problema: Encontrar um elemento a em um array A de n elementos
Input: A, a , nOutput: posição m onde se encontra a ou ‘Não’
Algoritmo Exato Begin Para i = 1, ..., n faça
Se A[i] = a Retorna i Pára
Retorna ‘Não’ End
Se n é muito grande, algoritmo pode levar muito tempo para dar a resposta .
![Page 18: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/18.jpg)
O que é um Algoritmo Probabilístico ? Problema: Encontrar um elemento a em um array A de n elementos
Input: A, a , n Output: posição m onde se encontra a ou ‘Não’
Algoritmo Monte Carlo (não exato) begin
i=1 repeat Selecione aleatoriamente um número inteiro m em [1,n]
Se A[m] = a Retorna m e párai = i + 1
until i=k Retorna ‘Não’ end Monte Carlo encontra ‘a’ com Probabilidade (1 – (1/2)k) Tempo de Execução de Monte Carlo é fixo
![Page 19: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/19.jpg)
Análise de um AlgoritmoO que é analisar um algoritmo ?
Determinar sua eficiência quanto ao tempo de execução quanto à quantidade de memória utilizada para executar o
algoritmo
Modelo para a Análise da complexidade: Modelo RAM (Random Access Machine) Operações executadas em sequência Não há execuções simultâneas
![Page 20: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/20.jpg)
Análise de um AlgoritmoQue operações atômicas considerar no cálculo de custo ?
Operações atômicas = custo constante
Operações aritméticas Soma, subtração, multiplicação, divisão, resto, piso, teto
Movimentação de dados: Carregar, armazenar, copiar
Controle Desvio condicional e incondicional Chamada e retorno de subrotinas
![Page 21: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/21.jpg)
Exemplo: Problema, Algoritmo, Análise do Algoritmo Problema: (Ordenação de uma sequência)
Input: sequência de n números A = <a1,...,an>
Output: B = <b1,...,bn>, onde B é uma permutação de A e b1≤ b2 ≤ ... ≤ bn
Projeto de um Algoritmo
![Page 22: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/22.jpg)
Algoritmo Insertion-SortInsertion-Sort (A) Entrada : A = array [a1,...,an]
1. For j 2 to n
2. do chave A[j]
3. i j – 1 % Procura lugar anterior onde inserir a chave
4. While i > 0 e A[i] > chave
5. do A[i+1] A[i]
6. i i - 1
7. A[i+1] chave
Algoritmo é executado in place :Espaço necessário = espaço da entrada + espaço das variáveis Chave, j, i Complexidade em Espaço = constante (=3)
(não se conta o espaço ocupado pela entrada)
![Page 23: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/23.jpg)
Algoritmo Insertion-SortInsertion-Sort (A)
Custo Vezes
1. For j 2 to n c1 n
2. do chave A[j] c2 n-1
3. i j – 1 c3 n-1
4. While i > 0 e A[i] > chave c4 Σnj=2 tj
5. do A[i+1] A[i] c5 Σnj=2 (tj-1)
6. i i - 1 c6 Σnj=2 (tj-1)
7. A[i+1] chave c7 n-1
tj = número de vezes que o teste do While em (4) é executado para cada valor jdo loop for
![Page 24: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/24.jpg)
Algoritmo Insertion-SortT(n) = custo temporal do algoritmo em função do tamanho da
entrada (=n)
T(n) = c1.n + c2(n-1) + c3(n-1) + c4(Σnj=2 tj) + c5(Σn
j=2 (tj-1)) + c6(Σnj=2 (tj-1)) + c7(n-1)
T(n) depende de tj
O valor de tj depende do “grau de desordenação” da entrada.
![Page 25: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/25.jpg)
Algoritmo Insertion-SortMelhor caso: a entrada está corretamente em ordem crescente.
tj = 1, para j = 2,...,n
T(n) = c1.n + c2(n-1) + c3(n-1) + c4(n-1) + c7(n-1)
= (c1+c2+c3+c4+c7)n – (c2+c3+c4+c7)
Pior caso : a entrada está ordenada de forma reversa (descrescente) tj = j, para j = 2,...,n
Σnj=2 j = [n(n+1)/2] – 1
T(n) = c1.n + c2(n-1) + c3(n-1) + c4([n(n+1)/2] – 1) + c5([n(n-1)/2]) +
+ c6([n(n-1)/2]) + c7(n-1) = = (c4/2 + c5/2 + c6/2)n2 + (c1+c2+c3 - c4/2 - c5/2 - c6/2 + c7)n - (c2 + c3 + c4 + c7)
![Page 26: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/26.jpg)
Algoritmo Insertion-SortCaso médio:
tj = j/2, para j = 2,...,n
Exercício: Determinar o valor de T(n) para o caso médio.
![Page 27: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/27.jpg)
Notação O Notação O é utilizada para ter uma estimativa superior
do tempo T(n) de execução, em termos de funções do tipo nk, logn, 2n, cujas tendências de crescimento seguem padrões distintos.
No melhor caso: T(n) = O(n)
No pior caso: T(n) = O(n2)
![Page 28: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/28.jpg)
Apresentação Geral do Curso
AULA 1 – Parte II Profa. Sandra de Amo
Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação
![Page 29: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/29.jpg)
Apresentação Geral do Curso
Bibliografia Material de Suporte Conteúdo Avaliação
![Page 30: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/30.jpg)
Bibliografia Básica
1. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. Introduction to Algorithms, MIT Press, 3ª Edição, 2009.(Edição em portugues : “Algoritmos-Teoria e Prática”, Editora Campus 2003)
2. S. Dasgupta, C. H. Papadimitriou, and U. V. Vazirani. Algorithms. McGraw-Hill Science/Engineering/Math; 1 edition (September 13, 2006). PDF disponível online.
3. Donald E. Knuth. The Art of Computer Programming, Volume 4A: Combinatorial Algorithms,Part 1. (Series in Computer Science & Information Processing) Addison-Wesley Professional, 2011.
4. Vijay V. Vazirani. Approximation Algorithms. Addison-Wesley 2001
![Page 31: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/31.jpg)
Bibliografia Complementar
1. David Harel and Yishai Feldman. Algorithmics: The Spirit of Computing, 3a Edição, Addison Wesley, 2004.
2. Steven S. Skiena: The Algorithm Design Manual. Springer, 2a Edição., 2008.
3. Bernhard Korte, Jens Vygen. Combinatorial Optimization: Theory and Algorithms (Algorithmsand Combinatorics), 4a Edição, 2010.
![Page 32: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/32.jpg)
Material de Suportehttp://www.deamo.prof.ufu.br/CursoAA2013.html
Livro Texto Slides Artigos
![Page 33: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/33.jpg)
Conteúdo do CursoParte I : Conceitos Básicos
O que é um algoritmo ? Algoritmos Recursivos, Randômicos (Probabilísticos) ,
Aproximativos Análise e projeto de algoritmo Notação Assintótica
Parte II: Algoritmos de Ordenação: Tempo não linear: ocupação otimal de espaço Tempo linear : ocupação não otimal de espaço
Parte III : Estruturas de Dados Elementares: Pilhas, Filas, listas, árvores binárias, tabelas hash
estatísticas de ordem dinâmicas Avançadas: B-Tree, Heaps binomiais, Heaps de Fibonacci, estruturas
de dados para conjuntos
![Page 34: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/34.jpg)
Conteúdo do Curso (cont.)Parte IV : Técnicas Avançadas de Projeto e Análise
Programação Dinâmica Algoritmos Gulosos
Parte V: Algoritmos de Grafos Algoritmos elementares Árvores Espalhadas Caminhos mais curtos
Parte VI : Tópicos Avançados Problemas NP-completos Algoritmos Combinatórios Algoritmos Aproximativos
![Page 35: Análise de Algoritmos AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação](https://reader033.vdocuments.com.br/reader033/viewer/2022052315/552fc105497959413d8c0467/html5/thumbnails/35.jpg)
Critério de Avaliação Prova 1 : 23 de Abril 25 pontos
Prova 2: 10 de Junho 25 pontos
Prova 3 : 2 de Julho 30 pontos
Seminários : 8, 9 e 10 de Julho 20 pontos