Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Menos Complexo ≠ Mais Fácil - Uma visão geral da Complexidade de Algoritmos

Menos Complexo ≠ Mais Fácil - Uma visão geral da Complexidade de Algoritmos

Palestra sobre uma visão geral da Complexidade de Algoritmos

DihNegretto

July 01, 2015
Tweet

More Decks by DihNegretto

Other Decks in Programming

Transcript

  1. Quem vos fala ... *Mestrando em Ciência da Computação na

    Universidade Estadual Paulista “Júlio de Mesquita Filho” – UNESP *Graduado em Sistemas de Informação pela FHO|Uniararas. *Colaborador no Laboratório de Evolução Molecular (LEM) na UNESP de Rio Claro na área de Bioinformática. *Java, Delphi, Bancos de Dados Relacionais, Drupal e Linux. *Interesses de Pesquisa: Aprendizado de Máquina, Computação Inspirada pela Natureza e Bioinformática.
  2. Roteiro o O que é um algoritmo? o Motivação o

    Complexidade de Algoritmos o Análises: Pior Caso, Caso Médio, Melhor Caso o Análise Assintótica o Exemplo
  3. “I think the design of efficient algorithms is somehow the

    core of computer science. It´s at the center of our field”. Donald Knuth (Professor Emérito de Stanford, Prêmio Turing de 1994, um dos “fundadores” da análise de algoritmos)
  4. Algoritmo • Problema: – uma tarefa a ser executada; –

    é uma função ou associação de entradas com saídas. • Algoritmo: – é um método ou um processo usado para resolver um problema. • Programa: – é uma instanciação de um algoritmo em uma linguagem de programação computacional.
  5. Roteiro O que é um algoritmo? o Motivação o Complexidade

    de Algoritmos o Análises: Pior Caso, Caso Médio, Melhor Caso o Análise Assintótica o Exemplo
  6. Motivação Por que estudar algoritmos? Qual a necessidade de estudar

    problemas e algoritmos eficientes que os solucionam? Por que estudar algoritmos se... Os computadores são cada vez mais rápidos!
  7. Motivação Os computadores são rápidos, mas não infinitamente rápidos! Se

    desempenho computacional cresce, o tamanho do problema também (Big Data)
  8. Motivação O Mundo Ideal: os computadores têm velocidade de processamento

    e memória infinita. Neste caso, qualquer algoritmo é igualmente bom e essa palestra é inútil!!! Porém ... O Mundo Real: computadores têm velocidade de processamento e memória limitadas.
  9. Motivação O Mundo Ideal: os computadores têm velocidade de processamento

    e memória infinita. Neste caso, qualquer algoritmo é igualmente bom e essa palestra é inútil!!! Porém ... O Mundo Real: computadores têm velocidade de processamento e memória limitadas.
  10. Motivação Algoritmo 1: Ordenação por Inserção – c1 n² Algoritmo

    2: Ordenação por Intercalação – c2 n lg n
  11. Motivação Mesmo que o computador A seja 100x mais rápido

    que B, considerando o algoritmo executado e a instância do problema, B foi muito mais rápido.
  12. Motivação Mesmo que o computador A seja 100x mais rápido

    que B, considerando o algoritmo executado e a instancia do problema, B foi muito mais rápido.
  13. Roteiro O que é um algoritmo? Motivação o Complexidade de

    Algoritmos o Análises: Pior Caso, Caso Médio, Melhor Caso o Análise Assintótica o Exemplo
  14. Complexidade de Algoritmos – Tempo de Execução não depende apenas

    do algoritmo, mas também: • Arquitetura e Conjunto de Instruções da máquina que o executa; Qualidade do Compilador; Habilidade do Programador, etc. A ideia é analisar o algoritmo utilizando um modelo matemático de computação.
  15. Complexidade de Algoritmos • Modelo utilizado: – Maquina de Acesso

    Aleatório (Random Acess Machine – RAM) – Único processador, com instruções executadas uma após a outro, sem concorrência. – Primitivas/Operações Básicas: Soma, subtração, multiplicação, divisão, movimentação de dados, desvios, etc. – A execução de qualquer primitiva leva uma unidade de tempo.
  16. Complexidade de Algoritmos De forma geral: – A complexidade de

    um algoritmo pode ser mensurada pelo número de primitivas (operações básicas) que ele executa para uma entrada de determinado tamanho. (baseado no modelo de computação RAM)
  17. Roteiro O que é um algoritmo? Motivação Complexidade de Algoritmos

    o Análises: Pior Caso, Caso Médio, Melhor Caso o Análise Assintótica o Exemplo
  18. Diferentes Análises • Pior Caso: – Tempo máximo de execução

    para qualquer entrada • Melhor Caso: – Resultado do menor tempo possível • Caso Médio: – Tempo médio para qualquer entrada possível. Pode ser necessário conhecer a distribuição estatística dos dados de entrada
  19. Roteiro O que é um algoritmo? Motivação Complexidade de Algoritmos

    Análises: Pior Caso, Caso Médio, Melhor Caso o Análise Assintótica o Exemplo
  20. Análise Assintótica Como o número de operações básicas (primitivas) cresce

    em relação ao tamanho da entrada? – O tempo de execução é expresso em função do tamanho da entrada: T(n): medida de tempo necessário para executar um algoritmo para um problema de tamanho n.
  21. Roteiro O que é um algoritmo? Motivação Complexidade de Algoritmos

    Análises: Pior Caso, Caso Médio, Melhor Caso Análise Assintótica o Exemplo
  22. Exemplo • Complexidade Local: – Linha a Linha – Análise

    é realizada para cada linha do algoritmo contabilizando o número de operações primitivas Essa análise nos fornece uma função matemática expressando o total de operações com base no tamanho do problema (n) e o custo (constante) de cada operação.
  23. Roteiro O que é um algoritmo? Motivação Complexidade de Algoritmos

    Análises: Pior Caso, Caso Médio, Melhor Caso Análise Assintótica Exemplo
  24. Para Finalizar ... Para diminuir a complexidade de um algoritmo,

    temos que otimizar a parte mais crítica do código (devido a Análise Assintótica) e isso, na maioria das vezes, não é fácil.