A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Análise de Algoritmos Informações Gerais da Disciplina

Apresentações semelhantes


Apresentação em tema: "Análise de Algoritmos Informações Gerais da Disciplina"— Transcrição da apresentação:

1 Análise de Algoritmos Informações Gerais da Disciplina
AULA 1 Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em CC - UFU

2 Apresentação Geral do Curso
Página web Bibliografia Material de Suporte Conteúdo Avaliação Aula 1: Qual o objetivo desta disciplina ?

3 TODAS AS INFORMAÇÕES: 3

4 Bibliografia Básica S. Dasgupta, C. H. Papadimitriou, and U. V. Vazirani. Algorithms. McGraw-Hill Science/Engineering/Math; 1 edition (September 13, 2006). PDF Disponível online 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) PDF disponível online. Donald E. Knuth. The Art of Computer Programming, Volume 4A: Combinatorial Algorithms,Part 1. (Series in Computer Science & Information Processing) Addison-Wesley Professional, 2011. Vijay V. Vazirani. Approximation Algorithms. Addison-Wesley 2001

5 Bibliografia Complementar
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 (Algorithms and Combinatorics), 4a Edição, 2010.

6 Material de Suporte Livro Texto Slides Artigos

7 Conteúdo do Curso Parte I : Conceitos Básicos Problemas e Algoritmos
Notação Assintótica Complexidade de Algoritmos - Complexidade de Problemas Projeto e Análise de um Algoritmo Algoritmos Recursivos Algoritmo Randômicos (Probabilísticos) - uma introdução Algoritmos para as Operações Aritméticas 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

8 Conteúdo do Curso (cont.)
Parte IV: Algoritmos de Grafos Algoritmos elementares de busca em largura e em profundidade Caminhos mais curtos - Algoritmo de Dijkstra Técnica Gulosa para projeto de algoritmos Árvores Espalhadas - Algoritmos de Kruskal e Prim Parte V: Técnicas Avançadas de Projeto e Análise Programação Dinâmica (PD) Recursão versus PD Memoization Parte VI : Tópicos Avançados Problemas NP-completos Algoritmos Aproximativos Algoritmos Probabilisticos

9 Critério de Avaliação Prova 1 : 15 de Abril 25 pontos
Prova 2: de Maio 25 pontos Prova 3: de Julho pontos Seminários : A partir do dia 23 de Junho 17 pontos Exercicios : pontos

10 Sobre o que é esta disciplina ?
Problemas e Algoritmos. Algoritmo = solução de um problema Antes de projetar um algoritmo para um problema: Analisar se o problema em questão tem solução Determinar a classe de complexidade do problema Projetar um algoritmo Analisar o algoritmo projetado Propor outras soluções mais eficientes Implementar a solução mais eficiente

11 Panorama Geral = disciplina “Teoria da Computação”
= disciplina “Análise de Algoritmos” = disciplinas de programação Sim Determinar a dificuldade inerente do problema P (classe de complexidade de P) Analisar se P tem solução (algorítmica) Problema P Projetar soluções mais eficientes Projetar um Algoritmo A para resolver P Analisar complexidade de A (A compativel com a classe de complexidade de P) Implementar a solução mais eficiente

12 “Problemas” e “Algoritmos”
O que é um problema ? Função P: Input  Output Instância do Problema = I ϵ Input Tipos de Problemas Decisão, Otimização, ... Decisão: Output = Sim ou Não, Otimização: existe uma função objetivo a otimizar (minimizar ou maximizar). Output = valor que otimiza a função objetivo. Solúveis e Insolúveis ... Tratáveis e Intratáveis ... I ϵ Input P P(I)

13 Exemplos de Problemas Busca de um elemento x em uma lista L ordenada
Busca: (Listas X elementos)  {Sim, Não} Busca(L,x) = Sim se x está em L; Não, caso contrário. Exemplo de instância do problema: L = [1, 3, 5, 10, 17], x = 12 Problema dos Primos Primos: N  {Sim, Não} Exemplo de instância = 5 Primos(n) = Sim, se n é primo; Não, caso contrário

14 Exemplos de Problemas Problema do Circuito Hamiltoniano
Hamilton: Grafos Dirigidos  {Sim, Não} Instância = grafo dirigido G Hamilton(G) = Sim, se G possui um caminho passando por todos os vértices uma única vez; = Não, caso contrário Problema da parada em um número determinado de passos Parada : (Programas, Inputs)  {Sim, Não} Instância: (P,w) onde P = código de um programa , w = input de P Parada (P,w) = sim se P executado em w pára após 2^n passos, onde n = comprimento de w Parada (P,w) = não, em caso contrário.

15 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.

16 O problema PCP Input = um conjunto finito de tipos de peças de dominós g f g g f g b c d b b c d b e f c d e e f c d e abc b c d eg ef 1 2 3 4 n 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 e f g Sequência : 3 n 1 b c d e f g 16 16

17 Exemplos b c a b c a a a b a a b a a b c a a c a a a b c c a b c c
1 2 3 4 a b c a a a b c a b c a a a b c Sequência de peças= 17 17

18 Exemplo Input a b c a b c a a a c c b a Resposta ?? Não
1 2 3 Resposta ?? Não Justificativa : a parte de cima das peças é sempre maior que a parte de baixo ! 18 18

19 Formalização do Problema
Input genérico do Problema PCP t1 b1 t2 b2 t3 b3 tn bn C = { } , , , , 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 pareamento para o input C ? 19 19

20 Hierarquia dos problemas dos exemplos (ordenados dos mais fáceis para mais difíceis)
Solúvel ? Complexidade do problema ? Busca Sim Polinomial Primos Até 2003: Sabia-se que não era NP-completo Em 2003: Polinomial Parada Exponencial Hamilton NP-completo Post Não

21 “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

22 Perguntas Função injetora ?? Conjunto dos Algoritmos
Conjunto dos Problemas ??? 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

23 Panorama Geral = disciplina “Teoria da Computação”
= disciplina “Análise de Algoritmos” = disciplinas de programação Sim Determinar a dificuldade inerente do problema P (classe de complexidade de P) Analisar se P tem solução (algoritmica) Problema P Projetar soluções mais eficientes Analisar complexidade de A Projetar um Algoritmo A para resolver P (A compativel com a classe de complexidade de P) Implementar a solução mais eficiente

24 Solução quando existe, não é única
Problema da Ordenação Ordena : SeqNat  SeqNat Ordena(<a1,...,an>) = <b1,...,bn> Onde: <b1,...,bn> é uma permutação de <a1,...,an> b1 ≤ b2 ≤ ... ≤ bn Algoritmos que o resolvem: Insertion-Sort Selection-Sort Bubble-Sort Heap-Sort Merge-Sort Quick-Sort Radix-Sort Bucket-Sort Insertion-Sort Selection-Sort Bubble-Sort Heap-Sort Merge-Sort Quick-Sort Eficiência em Tempo cresce Eficiência em Espaço cresce Radix-Sort Bucket-Sort

25 O que é um bom algoritmo ? Correto ? Eficiente em tempo ?
Para cada input I, o resultado produzido pelo algoritmo A(I) é exatamente o que se espera (A(I) = P(I)) Eficiente em tempo ? O número de passos executado pelo algoritmo para produzir o resultado A(I) é uma função polinomial do tamanho do input I Eficiente em espaço ? O número de células de memória utilizadas pelo algoritmo para produzir o resultado A(I) é uma função polinomial do tamanho do input I

26 O que é um bom algoritmo ? Critérios são “ortogonais” ! Correto
Eficiente em tempo Eficiente em espaço Critérios são “ortogonais” !

27 Soluções Aproximadas às vezes são mais interessantes do que as exatas ...
Problema do Vertex Cover (problema de otimização) Achar o menor subconjunto de vértices S tal que cada aresta tem pelo menos uma de 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)

28 Soluções Aproximadas nem sempre são facilmente encontráveis
Problema do Caixeiro Viajante (problema de otimização) d3 d1 d4 d5 d2 Achar o circuito hamiltoniano mais curto (passando por todas as cidades uma única vez) ? Problema de Minimização de recursos d6 Encontrar a solução ótima é difícil Problema NP-hard Encontrar solução aproximada não é factível !


Carregar ppt "Análise de Algoritmos Informações Gerais da Disciplina"

Apresentações semelhantes


Anúncios Google