introdução, revisão de estrutura de dados revisão matemática · 2 bibliografia livro texto •...

25
1 Análise e Complexidade d Al it de Algoritmos Introdução, Revisão de Estrutura de Dados Revisão Matemática http://www.bolinhabolinha.com Prof. Rodrigo Rocha [email protected] Apresentação Rodrigo Rocha [email protected] Ementa • Revisão: Estrutura de dados;Crescimento de funções; Estrutura de dados;Crescimento de funções; Indução matemática e métodos matemáticos. Medidas de complexidade, análise assintótica de limites de complexidades. Exemplos de análise de algoritmo iterativos e recursivos. Análise de desempenho de alguns algoritmos clássicos de busca e ordenação. Introdução aos principais paradigmas do projeto de algoritmos. Complexidade do Problema: Limites de Complexidade, Intratabilidade, Classes P, NP, problemas Np completos e NP-difíceis.

Upload: duongque

Post on 11-Nov-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

1

Análise e Complexidade d Al itde AlgoritmosIntrodução, Revisão de Estrutura de DadosRevisão Matemática

http://www.bolinhabolinha.comProf. Rodrigo [email protected]

Apresentação

Rodrigo Rocha [email protected] Ementa

• Revisão:Estrutura de dados;Crescimento de funções;Estrutura de dados;Crescimento de funções;

Indução matemática e métodos matemáticos.

Medidas de complexidade, análise assintótica de limites de complexidades.

Exemplos de análise de algoritmo iterativos e recursivos.

Análise de desempenho de alguns algoritmos clássicos de busca e ordenação.

Introdução aos principais paradigmas do projeto de algoritmos.

Complexidade do Problema: Limites de Complexidade, Intratabilidade, Classes P, NP, problemas Np completos e NP-difíceis.

Page 2: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

2

Bibliografia LIVRO TEXTO

• 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus, 2002.

• 2) SIPSER, Michael. Introdução a Teoria da Computação. 2ª d Th Pi i 2007ed. : Thompson Pioneira, 2007.

• 3) ZIVIANI, Nivio. Projeto de Algoritmos : com implementação em Pascal e C.. 2ª ed. São Paulo: Pioneira Thomson Learning, 2004.

COMPLEMENTAR• 1) TOSCANI, Laira Vieira; VELOSO, Paulo A. S.. Complexidade de

Algoritmos. 2ª ed. Porto Alegre: Bookman, 2008.g g ,

• 2) KNUTH, Donald E.. The Art of Computer Programming, Volume I : Fundamentals Algorithms. 3ª ed. Estados Unidos: Addison Wesley, 2008.

• 3) MANZANO, José Augusto N. G; OLIVEIRA, Jayr Figueiredo. Algoritmos : lógica para desenvolvimento de programação de computadores. 21ª ed. São Paulo: Érica, 2008.

• 4) SALVETTI, Dirceu D.. Algoritmos. 1ª ed. São Paulo: Makron Books, 1998.

• 5) BOAVENTURA NETTO, Paulo O.. Grafos : teoria, modelos, algoritmos. 4ª ed. São Paulo: Edgard Blucher, 2006.

Metodologia e Avaliação

Metodologia• Aula expositiva• Exercício em classe• Práticas em Laboratório• Práticas em Laboratório

Avaliação• 40%

Atividades (3,0)Avaliação (7,0)

• 60%Atividades (3,0)Avaliação Oficial (7,0)

Page 3: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

3

Cronograma

Algums perguntinhas...

O que é um algoritmo ?

Como você sabe se um algoritmo é eficiente ou não ?

O algoritmo resolver o problema significa O algoritmo resolver o problema significa que ele é eficiente?

Page 4: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

4

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 Às vezes, o algoritmo mais imediato está longe de ser 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 problemap

Base matemática é necessária para respondermos algumas questões?• O problema tem solução ? (Existe um

algoritmo?)

• Classe de complexidade de um problema. (O algoritmo é eficiente?)

Page 5: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

5

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.p• Exemplo: Achar o determinante de uma

matriz n x n

Page 6: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

6

Análise de algoritmos

Mesmo com máquinas cada vez mais rápidas devo me preocupar com o desempenho do algoritmo ? p g

Revisão estrutura de dados

Estrutura de Dados• um caminho sistemático para organizar e

acessar dados

• tipos: vetores

pilha

fila

lista

árvore

grafo

tabela de hashing

Page 7: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

7

ArrayARRAY

• 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 removidop

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 4 return S[top[S] + 1]

Page 8: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

8

Fila (Queue)

Características• FIFO – First In First Out primeiro elemento inserido e o primeiro removidop p

ENQUEUE(Q, x)1 Q[tail[Q]] ← x2 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].

10.1-4 (Cormen) Reescreva as funções ENQUEUE e DEQUEUE para detectar underflow e overflow.

Page 9: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

9

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] ≠ k3 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]] ← x4 head[L] ← x5 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]

Page 10: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

10

Lista duplamente ligada

com “sentinela”

Árvores

Uma estrutura de dados não linear composta de um nó raiz e vários elementos ligados a estag

só pode ter um nó raiz

nós ligados a raiz são chamados filhos

nós sem filhos são chamados de folhas

Page 11: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

11

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:• mapa de estradas

Page 12: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

12

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

Revisão Matemática

Exponenciação• xn = x * x * x * x * x * x .... (n vezes o x) x = base n = expoentep

• Exemplo:

• (-3)4 = (-3) * (-3) * (-3) * (-3) = 81

• -(34) = -(3 * 3 * 3 * 3) = -81

Page 13: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

13

Revisão

Exponenciação – propriedades• xm * xn = x m+n

x2 * x3 = x * x * x * x * x

• Exemplos:

• a2 * a3 = a5

• x0 = 1

Revisão

Exponenciação – propriedades

• Exemplos

Page 14: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

14

Revisão

Exponenciação - propriedades

EXEMPLOS:

Revisão

Exponenciação - propriedades

EXEMPLOS:

EXEMPLOS:

Page 15: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

15

Revisão

Exponenciação – simplificando expressões

Revisão

Exponenciação – Exercícios• Simplifique os expoentes das expressões

Page 16: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

16

Revisão

Exponenciação – Exercícios• Simplifique os expoentes das expressões

Revisão

Logaritmos• log ba=c se, e somente se, bc = aOnde b>0, b<>0 e a>0,

• Exemplo32=9 log39=2

23=8 log28=3

Log10100 = 102

• PropriedadesPropriedadesLogbb=1

Logb1=0

Logbbc=c

Page 17: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

17

Revisão

Logaritmos Propriedades

Revisão

Logaritmos : Exercícios• a-) 152 = 225, logo: log15225 = 2

b-) 63 = 216, logo: log6216 = 3) g g6

c-) 54 = 625, logo: log5625 = 4d-) 70 = 1, logo: log71 = 0

e-) log28 = 3 porque 23 = 8.f-) log41 = 0 porque 40 = 1.g-) log39 = 2 porque 32 = 9. h-) log55 = 1 porque 51 = 5.

Page 18: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

18

Revisão

Notação Científica• Um número positivo está escrito em notação

científica quando está nesta forma:

Onde 1<= a < 10, e r número inteiro expoente de 10

Dica:• 1-) Colocar “,” (vírgula após o primeiro algarismo

a x 10r

1 ) Colocar , (vírgula após o primeiro algarismo• 2-) Contar o número de decimais

Para esquerda -> positivo, direita -> negativo

• 3-) Escrever o produto do número por 10 elevado ao número de casa “puladas” (passo 2)

Revisão

Notação científica• Exemplos5.340.000.000.000

– 5,32 x 1012

0,000015– 1,5 X 10-5

• Exercícios: Escrever em notação científica: 123400

1 234 105– 1,234 x 105

Escrever na forma decimal

Page 19: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

19

Revisão

Notação científica• Exercícios: Escrever em notação científica: 123400ç

– 1,234 x 105

Escrever o número na forma decimal, sem expoente

Escrever na forma decimalEscrever na forma decimal–

Revisão

Polinômio• p(x) = ao + a1x + a2x² + a3x³ +...+ anxn

a’s – coeficientes

t t a0 – constante

termos anxn

• Grau do polinômioEm um polinômio, o termo de mais alto grau que possui um

coeficiente não nulo é chamado termo dominante e o coeficiente deste termo é o coeficiente do termo dominante. O grau de um polinômio p=p(x) não nulo, é o expoente de seu termo dominante

– 5x

– 5x +10

– 2x2 +5x + 10

Page 20: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

20

Revisão

Polinômios• Multiplicação

Revisão

Polinômios – Exercícios• Qual o grau do polinômio

a-) -10 b-) 20 – 2x2 c-) 10x4 + 3x2 + 11

• Resolva

a ) 10 b ) 20 2x c ) 10x + 3x + 11

Page 21: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

21

Revisão

Polinômios – Exercícios• Resolva

Revisão

Seqüências• Arranjo ordenado de números, figuras, ...

• {1,2,3,4, ...}{1,2,3,4, ...}

• {1,1,2,3,5,8, ...}

• Finita {1,2,3,...,n}

• Infinita {1,2,3, ....}

• Fatorial !n! = n(n - 1)(n - 2)(n - 3)...(1)

4! = 4 * 3 * 2 * 1

0! = 1

Page 22: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

22

Revisão

Seqüências• bn = 0,5n + 8

• b1 = 0,5*1 + 8b1 0,5 1 8

• b2 = 0,5*2 + 8

• Qual o décimo elemento ?B10 = 0,5 * 10 + 8 = 5 * 8 = 40

Q l é ê i l f t l• Qual é a sequência real f tal que Im(f)={2,7,12,...}?

Revisão

Notação soma

Exemplos: Série finita

= 12 + 15 + 18 + 21

Exemplos: Série tendendo ao infinito

= 8 + 8 + 8 + 8 + 8 + .....

Page 23: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

23

Revisão

Exercício• Achar o resultado:

Revisão

Exercício• Achar o resultado:

Page 24: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

24

Revisão

PROGRESSÕES ARITMÉTICAS (Soma dos "n" primeiros termos)

• Sn = (a1 + an) . N

2

Revisão

Exemplo:

• Achando o 1. termo0,2i + 5

0,2(1) + 5 = 5,2

• Achando o último termo0 2i + 50,2i + 5

0,2(20) + 5 = 9

Page 25: Introdução, Revisão de Estrutura de Dados Revisão Matemática · 2 Bibliografia LIVRO TEXTO • 1) CORMEN, Thomas H.. Algoritmos : teoria e prática. 2ª ed. Rio de Janeiro: Campus,

25

Revisão

Exemplo:

• Achando o 1. termo-2n + 3

-2*(5) + 3 = -7

• Achando o último termo 2 + 3-2n + 3

-2*(14) + 3 = -25

Revisão

Outras somassérie aritmética

série geométrica

para x<>1

soma dos quadrados e cubos

é i h ô isérie harmônica