Search Header Logo
ED I - Aula 2 - Complexidade de Algoritmos

ED I - Aula 2 - Complexidade de Algoritmos

Assessment

Presentation

Computers

University

Hard

Created by

Cassiano Gunji

Used 4+ times

FREE Resource

32 Slides • 3 Questions

1

ED I - Aula 2 - Complexidade de Algoritmos

Prof. Manuel Fernandez Paradela Ledón

José Cassiano Grassi Gunji, jose.gunji@cruzeirodosul.edu.br

2

  • Impacto das comparações e de outras operações no desempenho do código;

  • Análise assintótica, notação big-O, conceito de limite e de tamanho do problema.​

  • Problemas e sua complexidade;

  • Benchmarks;

  • Contagem elementar de instruções;​

Complexidade de algoritmos

Estruturas de Dados I

3

Exercício ou problema?

Complexidade de Algoritmos

Demanda muito mais reflexão, pesquisa e esforço para desembaraçar antes de encontrar a abordagem apropriada.

Problema

É uma questão que você sabe como resolver imediatamente. Você não precisa pesquisar quais técnicas utilizar para resolver o exercício.

Exercício

4

Desempenho e eficiência

  • Completeza ou completude: o algoritmo oferece certeza de encontrar uma solução para o problema?

  • Otimização: o algoritmo encontrará uma solução ótima para o problema (memória e espaço)?

  • Complexidade de tempo: quanto tempo é necessário para se executar o algoritmo?

  • Complexidade algorítmica: qual é o custo da implementação e manutenção dada sua complexidade?

Complexidade de Algoritmos

5

Lembrando...

Um pouco de matemática

media

6

Polinômios

Revisão de Matemática

7

Exemplos de polinômios com graus diferentes

Revisão de Matemática

8

Exemplos de polinômios com graus diferentes

Revisão de Matemática

9

Funções Exponenciais

Revisão de Matemática

10

Funções Exponenciais

Revisão de Matemática

media

11

Comparação entre funções

Revisão de Matemática

media

​Gráficos para comparar o comportamento de algumas funções utilizando a ferramenta gratuita www.mathe-fa.de/pt

12

Multiple Choice

Se um algoritmo tiver sua complexidade definida, podemos dizer que:

1

Ele sempre encontra uma solução

2

Ele pode ser executado em um tempo aceitável

3

Ele pode levar um tempo inaceitável para completar

4

A complexidade é a solução do algoritmo

13

Complexidade de Algoritmos

14

Tratabilidade de algoritmos

Complexidade de Algoritmos

Um problema de complexidade exponencial (ou pior). Nenhum computador pode resolvê-lo em um tempo satisfatório, a não ser que o número n seja pequeno.

Intratáveis

São problemas possivelmente resolvíveis com recursos limitados e em situações simples, porém impossíveis com recursos limitados e em situações reais mais complexas.

Tratáveis

15

Problemas Tratáveis

Complexidade de Algoritmos

É uma classe de problemas resolvíveis em tempo polinomial em uma máquina não-determinística (máquina sem limites). NP significa nondeterministic polynomial time.

Tipo NP

É uma classe de problemas resolvíveis em tempo polinomial em uma máquina determinística (máquina normal, limitada, um processo de cada vez)

Tipo P

16

Computadores determinísticos e não-determinísticos

Complexidade de Algoritmos

Se a solução existe, o computador sempre a encontrará. Não existem limitações de hardware. É um computador paralelo que executa infinito número de processos simultaneamente.

Não-determinístico

Só poderá estar em um estado por vez (PC comum, que executa um processo de cada vez).

Determinístico

18

Um "boato" como função exponencial

Complexidade de Algoritmos

media

​Suponhamos que uma pessoa tem um grande segredo, mas no segundo dia não resiste mais e conta para outras três pessoas diferentes. Cada uma das três pessoas contará o segredo para outras três pessoas no dia seguinte.

Quantas pessoas saberão o "segredo" depois de uma semana?​

19

Um "boato" como função exponencial

Complexidade de Algoritmos

20

Um "boato" como função exponencial

Complexidade de Algoritmos

 E depois de 30 dias?

21

Tempo em função do número de operações realizadas

Complexidade de Algoritmos

media

​Considerando um computador que realiza um milhão de operações por segundo.

22

Alguns algoritmos conhecidos e seu comportamento

23

Determinar qual o trabalhador com maior salário

Complexidade de Algoritmos

media

24

Ordenar alfabeticamente os trabalhadores, usando o método da bolha

Complexidade de Algoritmos

media

25

A Sequência de Fibonacci

Complexidade de Algoritmos

media

​0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...

26

Complexidade de algoritmos

Há várias maneiras de se avaliar a complexidade de um algoritmo. A maioria dos autores se concentram no consumo de memória e no tempo de execução.

Podemos medir a complexidade e a eficiência de um algoritmo efetuando:

  • Contagem de instruções;

  • Benchmark;

  • Estimativa matemática.​

Complexidade de Algoritmos

27

Benchmark

Complexidade de Algoritmos

media
media

28

Contagem de instruções

Conta-se a quantidade de instruções para se resolver o problema. Entretanto, instruções diferentes levam tempos diferentes para serem executadas.

Por simplicidade, considera-se no cálculo de T(n) que todas as instruções rodam no mesmo tempo.​

Complexidade de Algoritmos

29

Contagem de instruções - T(n) polinomial

int q = 0;

for (int i = 1; i <= n; i++){

q = q + 1;

}​

Complexidade de Algoritmos

30

Contagem de instruções - T(n) logarítmico

int k = 0, i = n;

while (i > 1){

k = k + 1;

i = i / 2; //controle do laço​

}​

Complexidade de Algoritmos

31

Notação big-O

  • se f(x) é a soma de diferentes termos e existe um termo com a maior taxa de crescimento, este será considerado e os restantes omitidos;

  • se f(x) é o produto de diferentes fatores, todas as constantes podem ser omitidas.

Complexidade de Algoritmos

32

Notação big-O

Complexidade de Algoritmos

33

Multiple Choice

Seja f(n)=2n4+2n5+3n2+12f\left(n\right)=2n^4+2n^5+3n^2+12   a complexidade de um algoritmo, qual sua complexidade na notação big-O?

1

O(2n4)O\left(2n^4\right)  

2

O(n4)O\left(n^4\right)  

3

O(2n5)O\left(2n^5\right)  

4

O(n5)O\left(n^5\right)  

34

Multiple Choice

Seja f(n)=4n5+3n3+2n+5f\left(n\right)=4n^5+3n^3+2^n+5   a complexidade de um algoritmo, qual sua complexidade na notação big-O?

1

O(4n5)O\left(4n^5\right)  

2

O(n5)O\left(n^5\right)  

3

O(2n)O\left(2^n\right)  

4

O(n3)O\left(n^3\right)  

35

Homework

Resolva os 5 exercícios propostos no final da apresentação do prof. Ledón e poste suas respostas na tarefa do BlackBoard.

Complexidade de Algoritmos

ED I - Aula 2 - Complexidade de Algoritmos

Prof. Manuel Fernandez Paradela Ledón

José Cassiano Grassi Gunji, jose.gunji@cruzeirodosul.edu.br

Show answer

Auto Play

Slide 1 / 35

SLIDE