Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


complexidade de algoritmos, Notas de estudo de Engenharia Elétrica

conteúdo: 1. Critérios para Seleção de Algoritmos 2. Análise de Algoritmos 3. Tempo de Execução 4. Complexidade de Algoritmos 5. Algoritmo RSA disciplina: fundamentos de engenharia de computação I ano:2006

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 04/08/2006

raquel-debczynski-fernandes-8
raquel-debczynski-fernandes-8 🇧🇷

13 documentos

1 / 22

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
1
PCS 2214
Fund. Eng. Comp. I
1o.Sem. / 2005
Profs:
Anna H. R. Costa
Jaime S. Sichman
Líria M. Sato
Romero Tori
© 2005
Módulo:
Complexidade de
Algoritmos
Autor:
M. Alice G. Ferreira
Jaime S. Sichman
Versão: 2.0
Data: 03/03/05
1
PCS 2214 - Fundamentos de Engenharia de
Computação I
Professores:
Anna Helena Reali Costa
Jaime Simão Sichman
Liria Matsumoto Sato
Romero Tori
1o. Semestre 2006
COMPLEXIDADE DE ALGORITMOS
PCS 2214
Fund. Eng. Comp. I
1o.Sem. / 2005
Profs:
Anna H. R. Costa
Jaime S. Sichman
Líria M. Sato
Romero Tori
© 2005
Módulo:
Complexidade de
Algoritmos
Autor:
M. Alice G. Ferreira
Jaime S. Sichman
Versão: 2.0
Data: 03/03/05
2
Conteúdo
1. Critérios para Seleção de Algoritmos
2. Análise de Algoritmos
3. Tempo de Execução
4. Complexidade de Algoritmos
5. Algoritmo RSA
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16

Pré-visualização parcial do texto

Baixe complexidade de algoritmos e outras Notas de estudo em PDF para Engenharia Elétrica, somente na Docsity!

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

PCS 2214 - Fundamentos de Engenharia de

Computação I

Professores:

Anna Helena Reali Costa

Jaime Simão Sichman

Liria Matsumoto Sato

Romero Tori

1o. Semestre 2006

COMPLEXIDADE DE ALGORITMOS

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

Conteúdo

1. Critérios para Seleção de Algoritmos

2. Análise de Algoritmos

3. Tempo de Execução

4. Complexidade de Algoritmos

5. Algoritmo RSA

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

• Como selecionar um algoritmo quando

existem vários disponíveis?

1. Algoritmo fácil de

entender, codificar

e depurar

2. Algoritmo que faz

uso eficiente dos re-

cursos da máquina

Estas metas são

incompatíveis!

Critérios para Seleção de Algoritmos

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

A meta a ser seguida dependerá do

que se pretende com o algoritmo que

está sendo selecionado:

1. só um experimento?

2. o programa terá uso intensivo?

3. vai usar e jogar fora?

4. outros alterarão seu programa no

futuro?

Critérios para Seleção de Algoritmos

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

Análise de Algoritmos

• Análise de algoritmos: processo de estimar o

tempo de execução e espaço de armazena-

mento exigidos por um algoritmo correto

• Complexidade de algoritmos: refere-se à

quantidade de memória para armazenamento de

dados ou tempo de execução de um algoritmo,

quando submetido a determinadas entradas.

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

Análise de Algoritmos

Fatores que Afetam o Tempo de Execução:

1. Entrada do programa: “n” casos (quantos)

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

Análise de Algoritmos

2. Qualidade do código gerado pelo compilador

3. Tipo e tempo de execução das instruções

4. Complexidade do algoritmo utilizado

– função do tamanho da entrada T(n)

– modelo de dados : grafos, listas

– representação dos dados: grafo representado

numa matriz.

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

• Pode-se estimar o tempo de execução

através da contagem das instruções

executadas.

– tempo de execução dos laços

• while, for, repeat

• Geralmente, não interessa quanto vale

exatamente T(n) e sim como é seu

crescimento.

– n < n

< n

n

(n grande)

Tempo de Execução

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

• Ex: Suponha que o tempo de pior caso de

um algoritmo, para entrada de tamanho n,

seja dado por t(n) = 60 n

+ 5n + 1. Para

valores de n grandes t(n) e 60 n

são

praticamente iguais.

n t(n)=60n

+ 5n + 1 60n

(tempo em segundos )

Tempo de Execução

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

T(n) Tamanho máximo para

1 000 s

Tamanho máximo

para 10 000 s

Ganho

b/a

100 n 10 100 10

5 n

n

n

• Se o tempo de resolução de um problema fosse 1000

segundos, os algoritmos teriam um desempenho semelhante.

• Se esse tempo fosse 10000 segundos, o tamanho máximo de

entrada para obter o mesmo desempenho varia.

• T(n) pode estar representando qualquer um dos tempos

Tempo de Execução

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

Ex: Máximo de uma seqüência

(1) procedure find_large (s, n) // n>

(2) // s é uma sequência de comprimento n

(3) large := s

(4) for i := 2 to n

(5) if s

i

> large then // foi encontrado um

// valor > large

(6) large := s

i

(7) return (large)

(8) end find_large

Executado n-1 vezes

Tempo de Execução

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

• Considere-se um dos algoritmos mais

simples de busca de um elemento em uma

seqüência: a busca linear. Com ele pode-se

facilmente observar o que é tempo de pior

caso e tempo de melhor caso.

(1) procedure linear_search (s,n,key)

(2) for k := 1 to n

(3) if key = s

k

then // achou

(4) return (k)

(5) return(0)

(6) end linear_search

Tempo de Execução

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

• O tempo médio de um algoritmo leva

em conta características estatísticas.

• No caso do algoritmo de busca linear

utilizado no exemplo, poderíamos

considerar que a busca de qualquer

elemento é igualmente provável. Sob

esta hipótese, pode-se considerar que

o tempo médio é dado por:

Tmédio

= (1 + n)/

Tempo Médio

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

• Sejam f e g, duas funções no domínio {1,2,...}

• Diz-se que f(n) é O(g(n)), ou seja, que f(n) é

de ordem de, no máximo, g(n), se existem as

constantes positivas C

e n

, tais que:

0 ≤ f(n) ≤ C

g(n)

para todo n > n

. (Cormen, 1990)

(f é limitada acima por g, exceto por uma

constante e um número finito de exceções,

n

Complexidade de Algoritmos

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

Fonte: Cormen et al, 1990

Complexidade de Algoritmos

Notação Big-Oh

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

• Diz-se que f(n) é Ω(g(n)), ou seja, que f(n) é

de ordem de, no mínimo, g(n) se existem as

constantes positivas C

e n

, tais que:

f(n) ≥ C

g(n) ≥ 0

para todo n > n

. (Cormen, 1990)

(f é limitada abaixo por g, exceto por uma

constante e um número finito de exceções,

n

Complexidade de Algoritmos

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

Fonte: Cormen et

al, 1990

Complexidade de Algoritmos

Notação Teta

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

Teorema

Seja Σ a

i

n

i

, comi = 0...k, um polinômio

de grauk, coma

i

não negativos.

Então: Σ a

i

n

i = Θ (n

k )

Complexidade de Algoritmos

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

• Se um algoritmo requer, no melhor caso, t(n)

unidades de tempo para terminar o

processamento de uma entrada de tamanho “n”

e t(n) = O(g(n)), diz-se que o tempo de melhor

caso requerido pelo algoritmo é da ordem de,

no máximo, g(n).

Complexidade de Algoritmos

a x e m j h t c

key = a

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

• Se um algoritmo requer, no pior caso, t(n)

unidades de tempo para terminar o

processamento de uma entrada de tamanho “n”

e t(n) = O(g(n)), diz-se que o tempo de pior caso

requerido pelo algoritmo é da ordem de, no

máximo, g(n).

Complexidade de Algoritmos

a x e m j h t c

key = c

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

1. j := n

2. while j ≥ 1 do

3. begin

4. for i:= 1 to j do

5. x: = x + 1

6. j:= ⎣ j/2 ⎦

7. end

1. for i:= 1 to n do

2. for j := 1 to i do

3. x := x+

Complexidade de Algoritmos

Exercício. Ache a notação Θ(n) para a

execução do comando x := x+1 nos dois

exemplos abaixo:

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

Fonte: Aho et al, 1983, p. 19

Complexidade de Algoritmos

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

Algoritmo complexidade Tempo max. =

1 s

Tempo max. = 1

hora

A1 n 1000 3 600 000

A2 n log n 140 200 000

A3 n

A4 n

A5 2

n

Algoritmo n = 16 n = 32 n = 512

A1 0,016 0,032 0,

A2 0,064 0,160 9,

A3 0,256 1,0 4 m 22 s

A4 4,0 33 1 dia 13 h

A5 1m 4 s 46 dias 10

s

Unidade básica de

tempo = 1 ms

Complexidade de Algoritmos

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

• Criptografia: estudo dos sistemas para fins de

transmissão/recepção de dados com

segurança através de redes de computadores.

intruso

transmissor

Cliente - Senha

receptor

Banco

Algoritmo RSA

pode descobrir dados confidenciais!

Sem codificação

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

• RSA = Rivest, Shamir e Adleman (1978)

– utiliza intensamente números primos emod

1. Escolha dois números primos extensos,

p eq (geralmente maiores que 10

100

2. Calculez = p. q e Φ = (p-1).(q-1)

3. Calcule um número n, tal que gdc(n,Φ)=1;

geralmente, on escolhido é um número primo;

4. Determine o números, tal que(s.n) mod Φ= 1.

Algoritmo RSA

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

• Estes parâmetros são calculados com

antecedência. O par (z,n) é tornado público.

São os dados necessários para se

criptografar a mensagem

– chamada de chave pública

– quando um transmissor deseja enviar

uma mensagem para um receptor, ele

usa um algoritmo de codificação tendo

como parâmetro a chave pública do

receptor

Algoritmo RSA

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

5. Em seguida, quebra-se o texto -

considerado como uma cadeia de bits - em

pedaços (a) tais que 0 ≤ a ≤ z. Estes

pedaços têm então largura de k bits, sendo

k

a maior potência de 2 menor que z

(representação numérica será vista mais à

frente).

• Para criptografar: c = a

n

mod z

Algoritmo RSA

chave pública

informação a ser transmitida

dado efetivamente enviado

PCS 2214

Fund. Eng. Comp. I

1o.Sem. / 2005

Profs: Anna H. R. Costa Jaime S. Sichman Líria M. Sato Romero Tori © 2005

Módulo: Complexidade de Algoritmos

Autor: M. Alice G. Ferreira Jaime S. Sichman

Versão: 2. Data: 03/03/

Algoritmo RSA

6. Para decriptografar: a = c

s

mod z

O valor de s só é conhecido pelo receptor

mensagem

– chamada de chave privada

– Prova-se que não existe um algoritmo

eficiente para descobrir a chave privada (s) a

partir da chave pública (z,n)

chave privada

dado recebido

informação recuperada