• Nenhum resultado encontrado

Classificação e Pesquisa

N/A
N/A
Protected

Academic year: 2021

Share "Classificação e Pesquisa"

Copied!
17
0
0

Texto

(1)

Classificação e Pesquisa

Análise de Algoritmos

- Complexidade

Prof. Rodrigo Rocha

[email protected] http://www.bolinhabolinha.com

Onde Estamos

ƒ Ementa • Pesquisa de Dados ¾Seqüencial ¾Binária • Métodos de ordenação ¾seleção e troca ¾distribuição ¾inserção ¾Intercalação • Árvores ¾Pesquisa ¾Pesquisa ¾Binária ¾AVL ¾Patrícia • B-Tree • Tabelas hash ¾Estática e Dinâmica

(2)

Introdução

ƒ “Um algoritmo é um procedimento, consistindo de um

conjunto de regras não ambíguas, as quais especificam, para cada entrada, uma seqüência finita de operações,

terminando com uma saída correspondente.

ƒ Um algoritmo resolve um problema quando, para qualquer entrada, produz uma resposta correta, se forem concedidos tempo e memória suficientes para sua execução.

ƒ Os recursos de espaço e tempo requeridos têm grande importância em casos práticos.

ƒ Às vezes, o algoritmo mais imediato está longe de ser razoável em termos de eficiência ”

razoável em termos de eficiência.”

(Do livro Complexidade de Algoritmos – Laira V. Toscani & Paulo S. Veloso. 2ª edição. Sagra-Luzzatto, 2005)

Introdução

ƒ

Um programa codifica um algoritmo para ser

executado em um computador, resolvendo

assim um problema

assim um problema

ƒ

Base matemática é necessária para

respondermos algumas questões?

• O problema tem solução ? (Existe um algoritmo?)

p

ç

(

g

)

• Classe de complexidade de um problema. (O

algoritmo é eficiente?)

(3)

Análise de algoritmo

ƒ

Características de performance (uso dos

recursos)

• tempo memória banda etc

tempo, memória, banda, etc ...

• foco: tempo de execução

ƒ

Por que analisar os algoritmos?

• escolher o algoritmo mais eficiente para

solucionar um problema

• o tempo de execução e razoável para aplicações

práticas ?

• O algoritmo é ótimo ?

Análise de algoritmos

ƒ

O fato de um algoritmo resolver um problema

não implica que ele seja aceitável na prática.

• Exemplo: Achar o determinante de uma matriz n x

Exemplo: Achar o determinante de uma matriz n x

n

(4)

Análise de algoritmos

ƒ

Mesmo com máquinas cada vez mais rápidas

devo me preocupar com o desempenho do

algoritmo ?

algoritmo ?

Revisão estrutura de dados

ƒ

Estrutura de Dados

• um caminho sistemático para organizar e acessar

dados

dados

• tipos:

¾vetores ¾pilha ¾fila ¾lista ¾lista ¾árvore ¾grafo ¾tabela de hashing

(5)

Array

ARRAY

• Coleção de itens do mesmo tipo • Tempo de acesso constante • Controlado pelo índice • Controlado pelo índice

• Remoção custosa se não quisermos ter espaços vazio

• Exercício:

¾Implementar a remoção de um elemento, eliminado o espaço deixado por ele.

Pilha (Stack)

ƒ

Características

• LIFO Last In First Out

¾último elemento inserido será o primeiro removido ¾último elemento inserido será o primeiro removido

a-) pilha S com 4 elementos, b-) PUSH(S,17) e PUSH(S,3) c-) Pilha após POP(S)

STACK-EMPTY(S)

1 if top[S] = 0 2 then return TRUE 3 else return FALSE

PUSH(S, x)

1 top[S] ← top[S] + 1 2 S[top[S]] ← x

POP(S)

1 if STACK-EMPTY(S) 2 then error "underflow" 3 else top[S] ← top[S] - 1

(6)

Fila (Queue)

ƒ

Características

• FIFO – First In First Out

¾primeiro elemento inserido e o primeiro removido ¾primeiro elemento inserido e o primeiro removido

ENQUEUE(Q, x)

1 Q[tail[Q]] ← x 2 if tail[Q] = length[Q]

3 then tail[Q] ← 1 4 else tail[Q] ← tail[Q] + 1 a-) fila com 5 elementos Q[7..11] b-) enqueue(Q,17), enqueue(Q,3) e enqueue(Q,5)

c-) Pilha após dequeue(Q)

4 else tail[Q] ← tail[Q] + 1

DEQUEUE(Q)

1 x ← Q[head[Q]] 2 if head[Q] = length[Q]

3 then head[Q] ← 1 4 else head[Q] ← head[Q] + 1

5 return x

Exercícios

ƒ 10.1-1 (Cormen) Ilustre o resultado de cada operação na seqüência PUSH(S, 4), PUSH(S, 1), PUSH(S, 3), POP(S), PUSH(S, 8), e POP(S) em uma pilha S implementada em um vetor S[1..6].

ƒ 10.1-3 (Cormen) Ilustre o resultado de cada operação na seqüência ENQUEUE(Q, 4), ENQUEUE(Q, 1), ENQUEUE(Q, 3), DEQUEUE(Q), ENQUEUE(Q, 8), e DEQUEUE(Q) em uma fila Q implementada em um vetor Q[1 .. 6].

(7)

Lista Ligada

ƒ

elementos em sequencia

ƒ

diferente do vetor:

não é tem número de elementos fixos

• não é tem número de elementos fixos

• ordem no vetor é pelo índice, já na lista e pelo

ponteiro que indica o próximo elemento

Lista duplamente ligada

ƒ

Cada nó possui:

• chave, apontador para o próximo e apontador para o anterior

a-) lista duplamente encadeade {9,16,4,1} b-) LIST-INSERT(L, x), onde key[x] = 25 c-) LIST-DELETE(L, x), onde x aponta para o objeto com chave 4.

LIST-SEARCH(L, k)

1 x ← head[L] 2 while x ≠ NIL and key[x] ≠ k

3 do x ← next[x] 4 return x LIST-INSERT(L, x) 1 next[x] ← head[L] 2 if head[L] ≠ NIL 3 then prev[head[L]] ← x 4 head[L] ← x 5 prev[x] ← NIL LIST-DELETE(L, x) 1 if prev[x] ≠ NIL 2 then next[prev[x]] ← next[x]

3 else head[L] ← next[x] 4 if next[x] ≠ NIL 5 then prev[next[x]] ← prev[x]

(8)

Lista duplamente ligada

ƒ

com “sentinela”

Árvores

ƒ

Uma estrutura de dados não linear composta

de um nó raiz e vários elementos ligados a

esta

esta

ƒ

só pode ter um nó raiz

ƒ

nós ligados a raiz são chamados filhos

(9)

Arvoré binária

ƒ

Uma árvore em que:

ƒ

Cada um dos nós tem somente dois filhos

Exercício (Cormen 10 4 1): Exercício (Cormen 10.4-1): Desenhe a árvore binária, que tem raiz no indice 6 e é representada pelos seguintes

campos:

Grafo

ƒ

um conjunto de pontos (vértices) ligados por

retas (as arestas)

ƒ

Uso:

ƒ

Uso:

(10)

Tabela Hash

ƒ Associa chaves de pesquisa (hash) a valores ƒ busca rápida

ƒ função de espalhamento

• gera indica a partir de uma chavegera indica a partir de uma chave

• entradas A e B geram saídas diferentes, senão geram colisão • colisão intolerável, hash de criptografia

ƒ Usos:

• cache, indexação de base de dados

Indução Matemática

ƒ

O Método de Indução Matemática é um

método de demonstração elaborado com

base no Princípio de Indução Finita,

base no Princípio de Indução Finita,

frequentemente utilizado para provar que

certas propriedades são verdadeiras para

todos os números naturais.

(fonte: e-escola)

ƒ

Passos:

• base da indução

• hipótese da indução

• passo da indução

(11)

Exercícios

ƒ Base da indução: Para qualquer inteiro positivo • n < 2n

• Provando: para n=1 1<21 1<2 temos a base verdadeira

ƒ Hipótese da indução: suponhamos que seja verdade para qualquer k inteiro

positivo: positivo:

• k < 2k

ƒ Passo indução: Para o sucessor de k (k+1), desejamos provar que: • 2k < 2.2k = 2k+1 • (k+1) < 2k+1 • (k+1) < 2k e 2k<2k+1 • (k+1) < 2k+1

Crescimento de funções

ƒ

1

- constante

l

l

ít i

ƒ

log

2

n

- logarítmica

ƒ

n

- linear

ƒ

n log

2

n

- linearítmica

ƒ

n

2

- quadrática

3

úbi

ƒ

n

3

- cúbica

ƒ

2

n

- exponencial

ƒ

n!

- fatorial

(12)

Exercício

ƒ Represente graficamente as seguintes funções

X f(x)=log2x f(x)=x f(x)=x+2 f(x)=xlog2x f(x)=x^2 f(x)=2^x 0 0,00 0 2 0,0 0 1 1 0,00 1 3 0,0 1 2 2 1 00 2 4 2 0 4 4 25,00 30,00 35,00 f( ) l 2 1,00 2 4 2,0 4 4 3 1,58 3 5 4,8 9 8 4 2,00 4 6 8,0 16 16 5 2,32 5 7 11,6 25 32 -5,00 0,00 5,00 10,00 15,00 20,00 0 1 2 3 4 5 6 f(x)=logx f(x)=x f(x)=x+2 f(x)=xlogx f(x)=x^2 f(x)=2^x

Gráfico das funções

ƒ

Logaritmica

• log

b

a= c

• exemplo:

• exemplo:

(13)

Gráfico das funções

ƒ

Linear (1º Grau)

• y=f(x)=ax+b, com era, bER e a<>0

• reta

• reta

• exemplo:

Gráfico das funções

ƒ

Quadrática (2º Grau)

• y = f(x) = ax² + bx + c, onde a, b e c são

constantes reais e a<>0

constantes reais e a

0

• parábola

• exemplo:

(14)

Gráfico das funções

ƒ

Exponencial

• y = f(x) = e

x

• exemplo:

• exemplo:

(15)

Análise de desempenho

ƒ Tempo de execução exato do algoritmo • normalmente difícil de determinar

• o tempo de execução do algoritmo cresce a conforme o tamanho da entrada • pode ser medido pelo número de algumas operações – operações fundamentais

¾ ordenação – comparação quanto a ordem ¾ busca - comparação quanto a igualdade ¾ busca comparação quanto a igualdade

ƒ Devido a este fato, estudamos: • melhor caso

• caso médio – normalmente difícil de determinar • pior caso

¾ Mais fácil de analisar

¾ Crucial para aplicações, como jogos, robótica, financeiras, médicas, ...

ƒ Usamos: notação assintótica

• A notação assintótica (notação assimptótica) é uma aproximação matemática para a comparação entre o crescimento de duas funções. (fonte: wikipédia)

ƒ Porque não utilizamos unidades temporais ? (segundo, milisegundo, etc..) • depende do hardware, qualidade na implementação, eficiência do compilador, etc...

Notação Assintótica

ƒ

Limite superior assintótico.

(16)

Notação Assintótica

ƒ

Limite inferior assintótico.

ƒ

• Notação: f (n) = Ω(g(n))

Notação Assintótica

ƒ

Limite rigoroso assintótico.

(17)

Bibliografia

ƒ

Livro texto

ZIVIANI, Nivio. Projeto de Algoritmos : com implementação em Pascal

e C.. 2ª ed. São Paulo: Pioneira Thomson Learning, 2004.

VELOSO, Paulo A. S.. Estrutura de Dados. 1ª ed. São Paulo: Campus, , p ,

1983.

CORMEN, Thomas H. Algoritmos : teoria e prática. 1ª ed. Rio de Janeiro:

CAMPUS, 2002.

ƒ

Complementar

SCHILDT, Herbert. C Completo e Total. 3ª ed. São Paulo: Pearson

Education, 2005. Education, 2005.

• CELES, Waldemar; CERQUEIRA, Renato. Introdução a Estruturas de

Dados : com técnicas de programação em C. 4ª ed. Rio de Janeiro:

Elsevier, 2004

• WIRTH, Niklaus. Algoritmos e Estruturas de Dados. 1ª ed. Rio de Janeiro: LTC, 1989

• TENENBAUM, Aaron M; SOUZA, Tereza Cristina Félix de. Estruturas de

Referências

Documentos relacionados

É perceptível, desta forma, o constante aumento do aprofundamento dos personagens: os “príncipes” têm agora não só nome e falas, mas personalidades bem desenvolvidas,

Nos tempos atuais, ao nos referirmos à profissão docente, ao ser professor, o que pensamos Uma profissão indesejada por muitos, social e economicamente desvalorizada Podemos dizer que

Com relação à germinação das sementes armazenadas em câmara fria, aos três meses de armazenamento (Tabela 10), observou-se em sementes tratadas ou não com fungicidas e

Almanya'da olduğu gibi, burada da bu terimin hiçbir ayrım gütmeden, modern eğilimleri simgeleyen tüm sanatçılar için geçerli olduğu anlaşılıyor.. SSCB'de ilk halk

O fabricante não vai aceitar nenhuma reclamação dos danos causados pela não observação deste manual ou por qualquer mudança não autorizada no aparelho.. Favor considerar

Depois de se cultivar as variedades de soja Santa Rosa e UFV-1 em solução nutritiva &#34;completa&#34; e com deficiência de B, Cu e Zn, de se analisar as suas folhas e de

Visando mitigar riscos e oferecer a pronta- resposta adequada em caso de incidentes ou acidentes na Reserva do Paiva, foram implantadas pela AGRP, com a coordenação da Consultoria

A tabela a seguir resume as frequências em que os pacientes apresentaram pelo menos uma reação adversa não solicitada, foi registrada dentro de 28 dias após a vacinação de