1 / 26

Complexidade de Algoritmos

Complexidade de Algoritmos. DAS 5102 – Fundamentos da Estrutura da Informação Prof. Dr. rer . nat. Daniel D. Abdala abdala@das.ufsc.br. Objetivos. Introduzir o conceito de análise de algoritmos; Introduzir o conceito de complexidade assintótica;

august
Télécharger la présentation

Complexidade de Algoritmos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Complexidade de Algoritmos DAS 5102 – Fundamentos da Estrutura da Informação Prof. Dr. rer. nat. Daniel D. Abdala abdala@das.ufsc.br

  2. Objetivos • Introduzir o conceito de análise de algoritmos; • Introduzir o conceito de complexidade assintótica; • Explicar via exemplos como medir a complexidade de algoritmos; • Explicar o conceito de complexidade média de melhor e de pior caso.

  3. Plano de Aula • Algoritmos • Análise de Algoritmos • Conceitos Básicos • Complexidade no Tempo e no Espaço • Notação Assintótica

  4. Conceitos Básicos – Algoritmos • Algoritmo – Ferramenta para resolução de problemas. • Problemas são descritos via: • Uma descrição de todos os seus parâmetros de entrada (INPUT) • Um enunciado sobre que propriedades a solução deve satisfazer

  5. Conceitos Básicos – Algoritmos Exemplo : Problema de Ordenação Entrada : Seqüência L (a1, ..., aN) Saída : L’ (a1’, ..., aN’) que é uma permutação da entrada tal que a1’≤ a2’ ≤ ... ≤ aN’ • Um Algoritmo é dito CORRETO se para todas as possíveis entradas ele termina com a respos-ta correta.

  6. Algoritmos Eficiente - Motivação • Dois computadores • PC (106instr/s) • SC (108instr/s) • Dois algoritmos de ordenação • Alg1 – TAlg1 = 2N2 • Alg2 – TAlg2 = 50NlogN • Problema : Ordenar 106 números • SC – • PC –

  7. Análise de Algoritmos • Análise de algoritmos é uma disciplina da computa-ção que se preocupa em medir e analisar os recur-sos necessários por algoritmos para levar a termo sua execução.

  8. Complexidade no Tempo e no Espaço (N) • Espacial – mede a quantidade de memória que o algoritmo requer para sua execução • Temporal – mede o tempo, dada uma entrada de dados, que o algoritmo requer para produzir uma resposta (mais usado) • As medidas de análise utilizadas devem conter as seguintes características: • Ser independentes da tecnologia empregada (hardware e software); • Modelo matemático simplificado que representa os fatores mais relevantes;

  9. Complexidade no Tempo e no Espaço (N) • Temporal – função que relaciona o tamanho da entrada com o tempo de execução: t = f(N) • Espacial – função que relaciona o tamanho da entrada com o espaço de armazenamento requerido: e = g(N)

  10. Exemplo: Ordenação de Inteiros

  11. Exemplo: Ordenação de Inteiros

  12. Exemplo: Ordenação de Inteiros

  13. Exemplo: Ordenação de Inteiros

  14. Considerações • Sempre que criamos um algoritmo, existem três perguntas que devem ser formuladas: • O algoritmo é correto? • Quanto tempo ele leva em função da entrada N? • O problema pode ser resolvido de uma maneira melhor?

  15. Notação Assintótica • Também conhecida com notação O • (diz-se big O) • Definição: Considere uma função f(n) não negativa para todos n>=0. Diz-se que f(n) é O(g(n)) e escrevemos f(n) = O(g(n)), se existem um inteiro n0 e uma cons-tante c>0, tais que para todo inteiro m>=n0, f(n) < c g(n). • Em resumo: Podemos ignorar as constantes!

  16. Classes de Complexidade

  17. Exemplo: Tempo de execução • Considere a seguinte situação. O problema apresentado a seguir foi resolvido de cinco maneiras diferentes, resultando em cinco algoritmos (A1 ... A5). • Tais algoritmos foram implementados utilizando diferentes níveis de complexidade computacional. Supondo que uma operação leva 1ms para ser executado, e dado Tk(n) sendo a complexidade, ou seja, o número de operações que o algoritmo efetua para N entradas. • Quais serão os tempos de execução de cada um destes algoritmos?

  18. Exemplo: Tempo de execução Tempo de execução em função do tamanho da entrada

  19. Exemplo • Entrada : número N • Saída : número r representando a soma dos N primeiros inteiros.

  20. Exemplo: Fibonacci • A série tem a seguinte forma: • A função F(N) é definida por: Implementação recursiva (exponencial):

  21. Exemplo: Fibonacci • O algoritmo é correto? • Quanto tempo ele leva em função da entrada N? • O problema pode ser resolvido de uma maneira melhor? • (1) sim! Ele é a implementação direta da definição • (2) T(n) – número de passos computacionais • Para n ≤ 2 • Para n > 2 • Note que

  22. Exemplo: Fibonacci • Quão demorada é a execução do algoritmo? • Fn ≈ 20,694n • F200 –> T(200) ≥ F200 ≥2138 passos computacionais • SC –> 40.1012 passos computacionais / segundo • fib1(200) @ SC = 292 segundos • (3) Existe uma maneira de se calcular números da série de Fibonacci de maneira mais eficiente? • Lab!

  23. Exemplo: Fibonacci Chamadas recursivas de fib1(n)

  24. Pontos Chave • Algoritmos são maneiras factíveis para solução de problemas numéricos, no entanto eles precisam ser analisados de modo a garantir sua eficácia; • Análise de Algoritmos é uma disciplina que define uma maneira sistemática de avaliação de algoritimos; • Complexidade no Tempo e no Espaço definem formas de estimarmos quanto tempo um programa demora para se executar em função de sua entrada assim como quanto espaço em disco ele requer; • Notação Assintótica ou notação BigO é uma forma de indicar a tendência de crescimento do tempo de execução de algoritmos.

  25. Para o Lar • Última chance para entregar o exercício de nivelamento é dia 08/09 (prova 1)!; • Ler o capítulo 0 (prólogo) do livro “Algorithms” (Dasgupta) para a prova; • Procure na internet uma forma mais eficiente de calcular números fatoriais; • Procure na internet uma forma mais eficiente de ordenação de números que a vista na aula.

  26. Bibliografia • S. Dasgupta, C. H. Papadimitriou, U. V. Vazirani. Algorithms, Chap. 0; • R. Sedgewick, Addison-Wesley. Algorithms in C, Parts 1-4: Fundamentals, Data Structures, Sorting, Searching, 3rd edition, 1997.

More Related