complexidade de algoritmos das 5102 – fundamentos da estrutura da informação prof. dr. rer. nat....

26
Complexidade de Algoritmos DAS 5102 – Fundamentos da Estrutura da Informação Prof. Dr. rer. nat. Daniel D. Abdala [email protected]

Upload: internet

Post on 18-Apr-2015

122 views

Category:

Documents


2 download

TRANSCRIPT

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

Complexidade de AlgoritmosDAS 5102 – Fundamentos da Estrutura da Informação

Prof. Dr. rer. nat. Daniel D. [email protected]

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

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

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

Plano de AulaAlgoritmosAnálise de AlgoritmosConceitos BásicosComplexidade no Tempo e no

EspaçoNotação Assintótica

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

Conceitos Básicos – AlgoritmosAlgoritmo – 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

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

Conceitos Básicos – AlgoritmosExemplo : Problema de OrdenaçãoEntrada : 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.

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

Algoritmos Eficiente - MotivaçãoDois computadores

◦PC (106 instr/s)◦SC (108 instr/s)

Dois algoritmos de ordenação◦Alg1 – TAlg1 = 2N2

◦Alg2 – TAlg2 = 50NlogN

Problema : Ordenar 106 númerosSC –

PC –

horasssinstr

instr56.51020

/10

)10(2 38

26

min57.1610/10

)10log()10(50 36

66

ssinstr

instr

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

Análise de AlgoritmosAná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.

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

Complexidade no Tempo e no Espaço (N)Espacial – mede a quantidade de memória

que o algoritmo requer para sua execuçãoTemporal – 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;

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

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)

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

Exemplo: Ordenação de Inteiros

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

Exemplo: Ordenação de Inteiros

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

Exemplo: Ordenação de Inteiros

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

Exemplo: Ordenação de Inteiros

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

ConsideraçõesSempre que criamos um algoritmo,

existem três perguntas que devem ser formuladas:1. O algoritmo é correto?2. Quanto tempo ele leva em função da entrada

N?3. O problema pode ser resolvido de uma

maneira melhor?

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

Notação AssintóticaTambé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!

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

Classes de Complexidade

Designação FunçãoConstante cLogarítmica log NLogarítmica quadrática log2NLinear NN log N N log NQuadrática N2

Cúbica N3

Exponencial 2N

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

Exemplo: Tempo de execuçãoConsidere 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?

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

Exemplo: Tempo de execução

N A1T1(n) = n

A2T2(n) = n log n

A3T3(n)=n2

A4T4(n)= n3

A5T(n)=2n

1 0.001s 0.016 0.064s 0.256s 4s

16 0.016s 0.064s 0.256s 4s 1m4s

32 0.032s 0.16s 1.0s 33s 46 dias

512 0.512s 9.0s 4m22s 1dia13h 10137 séculos

Tempo de execução em função do tamanho da entrada

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

ExemploEntrada : número NSaída : número r representando

a soma dos N primeiros inteiros.

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

Exemplo: FibonacciA série tem a seguinte forma:

A função F(N) é definida por:

Implementação recursiva (exponencial):

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

Exemplo: Fibonacci1. O algoritmo é correto?2. Quanto tempo ele leva em função da entrada N?3. 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

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

Exemplo: FibonacciQuã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!

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

Exemplo: Fibonacci

Chamadas recursivas de fib1(n)

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

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

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

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.

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

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