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

Slides:



Advertisements
Apresentações semelhantes
Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
Advertisements

Algoritmo e Programação
Fluxo em Redes Prof. Ricardo R. Santos.
Analise de Algoritmos e Notação Assintótica
Profa. Sandra de Amo Mestrado em Ciência da Computação 2013 – 2
Análise e Projeto de Algoritmos
A Classe de Problemas NP
Problema de Correspondência de Post (PCP)
Programação Linear Método Simplex
Análise de Algoritmos AULA 1 Profa. Sandra de Amo
Teoria da Computação Profa. Sandra de Amo Mestrado em Ciência da Computação 2010 – 1.
2/18/2014Mestrado em Ciencia da Computacao Tópicos Especiais Mineração de Dados Profa. Sandra de Amo Mestrado em Ciência da Computação Faculdade.
Matemática para Ciência da Computação
Teoria da Computação Profa. Sandra de Amo Bacharelado em CC Mestrado em CC 2008 – 1.
Metaheurísticas Prof. Aurora Pozo Departamento de Informática Universidade Federal do Paraná
UM ESTUDO SOBRE O PROBLEMA DO CAIXEIRO VIAJANTE
Algoritmos e Estruturas de Dados
Medida do Tempo de Execução de um Programa
NÃO DETERMINISMO Marcus Eduardo Cabral Seabra
Árvore Geradora de Peso Mínimo
Daniel Felipe Neves Martins
Estruturas de Dados e Complexidade de Algoritmos
Introdução à NP-completude
Problemas NP-completo
CAP-223 N. L. Vijaykumar (Vijay) Tel:
Programação Dinámica Análise de algoritmos UNISUL
Complexidade de Algoritmos
Algoritmos em Grafos Apresentação da Disciplina Prof. André Renato 1º Semestre / 2012.
Aula 01 BCC202 - Estrutura de Dados I Túlio Toffolo
Otimização Inteira 5a. Aula Franklina.
Ordenação por inserção
Aula T06 – BCC202 Análise de Algoritmos (Parte 4) Túlio Toffolo
Algoritmos e Estruturas de Dados Apresentação do Curso Setembro/2005.
Faculdade de Informática e Tecnologia de Pernambuco ESTRUTURA DE DADOS
Introdução à NP-completude Katia S. Guimarães
Abordagens para problemas NP-completos
Problema do menor Caminho
Estruturas de Dados Aula 1: Introdução e conceitos básicos
NP-Completude Algoritmos e Estruturas de Dados – IF672
Complexidade computacional
Complexidade de Algoritmos
Disciplina Análise de Algoritmos BCC-UFU Profa. Sandra de Amo
Busca Combinatorial e Métodos de Heurística
Prof. Fábio Carneiro Mokarzel 2014
Distância Mínima de Edição Profa. Sandra de Amo Bacharelado em Ciência da Computação - UFU.
Complexidade em Tempo de um Algoritmo
Cin-UFPE String Matching
Implementação e Experimentação Algorítmica
CAMINHOS MAIS CURTOS EM GRAFOS
Como analisar um algoritmo
A Classe NP Teoria da Computação Profa. Sandra de Amo.
Matemática Discreta Bacharelado em Sistemas de Informação
Construção e Análise de Algoritmos
Problemas NP-completos e Programação Dinâmica
Algoritmos de aproximação
Introdução à NP-completude
Operações Aritméticas AULA 3 Análise de Algoritmos Pós-graduação em Ciência da Computação – UFU Profa. Sandra de Amo.
NP A Classe de Problemas NP Referências: M. R. Garey and D. S. Johnson. Computers and Intractability: a Guide to the Theory of NP Completeness. Freeman,
Teoria da complexidade
On The Complexity of Determining Autonomic Policy Constrained Behaviour Sobre a Complexidade de Determinação de Política Autônoma de Comportamento Restrito.
Analise de Algoritmos e Notação Assintótica
Busca em Espaço de Estados Parte2 Algoritmos de Busca Cega
Mineração de Dados Profa. Sandra de Amo
Programação Dinâmica Profa. Sandra de Amo Bacharelado em Ciência da Computação – UFU Disciplina de Análise de Algoritmos.
Berilhes Borges Garcia Algoritmos Uma ferramenta para resolver um problema de computação bem- especificado (O espírito da computação) Exemplo: ordenação.
INTRODUÇÃO THOBER CORADI DETOFENO, MSC. Aula 01 JOINVILLE 2015 Universidade do Estado de Santa Catarina – CCT/UDESC.
USP – ICMC – SSC SSC0300 2º Semestre 2015
Abordagens para Problemas Intratáveis Katia S. Guimarães
Disciplina: Estrutura de dados e Algoritmos Docentes: MSc. Manuel Zunguze.
Transcrição da apresentação:

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

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

TODAS AS INFORMAÇÕES: www.deamo.prof.ufu.br/CursoAA-POSGRAD-2015-1.html 3

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

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.

Material de Suporte Livro Texto Slides Artigos

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

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

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

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

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

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

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

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.

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.

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

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= 2 1 3 2 4 17 17

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

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

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

“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

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

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

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

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

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

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)

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 !