Problemas e Algoritmos -...

41
Problemas e Algoritmos Em muitos domínios, há problemas que pedem a saída com propriedades específicas quando são fornecidas entradas válidas. O primeiro passo é definir o problema usando estruturas adequadas (modelo), a seguir utilizar um método que resolva o problema. Um método seria seguir uma sequência de passos para chegar a uma resposta desejada, a sequencia de passos é chamada de algoritmo.

Transcript of Problemas e Algoritmos -...

Page 1: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Problemas e Algoritmos Em muitos domínios, há problemas que pedem a saída

com propriedades específicas quando são fornecidas entradas válidas.

O primeiro passo é definir o problema usando estruturas adequadas (modelo), a seguir utilizar um método que resolva o problema.

Um método seria seguir uma sequência de passos para chegar a uma resposta desejada, a sequencia de passos é chamada de algoritmo.

Page 2: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Algoritmos

Definição: Um algoritmo é um conjunto finito de instruções precisas para realizar uma operação computacional ou resolver um problema”

Abu Ja’far Mohammed Ibin Musa Al-Khowarizmi(780-850)

Page 3: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

AlgoritmosExemplo: Descrever um algoritmo que possa encontrar o

valor máximo(maior) em uma sequência finita de números inteiros.

Solução: Realizamos os seguintes passos:1. Coloque como máximo temporário o primeiro número inteiro da

sequência.

2. Compare o próximo número inteiro da sequência com o máximo temporário e, se aquele for maior que este, coloque-o como máximo temporário.

3. Repita o passo anterior se houver mais números inteiros na sequência.

4. Pare quando não houver mais números inteiros na sequência. O máximo temporário neste ponto será o maior inteiro da sequência.

Abu Ja’far Mohammed Ibin Musa Al-Khowarizmi(780-850)

Page 4: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Propriedades dos Algoritmos Input: Um algoritmo tem um valor de entrada, ou inicial, de um

conjunto específico. Output: Para cada conjunto de valores de entrada, um algoritmo

produz valores de saída de um determinado conjunto. Os valores de saída, ou finais, são as soluções para o problema.

Correctness(Exatidão): Um algoritmo deve produzir valores de saída corretos para cada conjunto de valores iniciais.

Finiteness (Finitude): Um algoritmo deve produzir o valor final desejado depois de um número de passos finito para qualquer entrada.

Effectiveness(Efetividade): deve ser possível realizar cada passo de umalgoritmo de modo exato e em uma quantidade de tempo finita.

Generality: O algoritmo deve funcionar para todos os problemas da forma desejada, não apenas para um determinado conjunto de valores de entrada.

Page 5: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Encontrando o Máximo Elementoem uma sequência finita O algoritmo em pseudocodigo:

Este algoritmo tem todas as propriedades listadas?

procedure max(a1, a2, …., an: inteiros)max := a1

for i := 2 to nif max < ai then max := ai

return max{max é o maior elemento}

Page 6: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Alguns Exemplos de Problemascom Algoritmos

1. Problemas de Busca (Searching ): encontrar a posição de um elemento em particular em uma lista

2. Problemas de Ordenação (Sorting): colocar os elementos de uma lista em ordem, por exemplo, crescente.

3. Problemas de Otimização: encontrar uma solução para o problema dado que determine o valor ótimo (máximo ou mínimo) de algum parâmetro avaliado sobre todas as possíveis entradas.

Page 7: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Algoritmos de Busca Algoritmo de busca linear

Algoritmo de busca binária

Algoritmo de ordenação

Bubble sort

Insertion sort

Algoritmo Guloso (Voraz) usados para problemas de otimização

Exercício: Implementar um algoritmo que para uma lista dada de n números inteiros, encontre a primeira e a ultima ocorrência do maior inteiro da lista.

Page 8: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

O Problema da Parada

Problema que não pode ser resolvido usando-se qualquer procedimento

Page 9: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Crescimento de funções

Tanto na ciência da computação quanto na matemática, muitas vezes preocupa a rapidez com que uma função cresce.

Na ciência da computação, deseja-se entender a rapidez com que um algoritmo pode resolver um problema à medida que o tamanho da entrada aumenta para: Comparar a eficiência de dois algoritmos diferentes que resolvem o

mesmo problema. Determinar se é prático usar um algoritmo específico à medida que

a entrada aumenta.

Duas das áreas da matemática onde as questões sobre o crescimento das funções são estudadas são: Teoria dos números Combinatória

Page 10: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Crescimento de funções

Big-O: Estimador de crescimento de funções

Estimar o crescimento sem se preocupar com as constantes multiplicadoras ou termos de ordens menores.

Podendo-se assumir que operações diferentes usadas em um algoritmo levam o mesmo tempo.

Page 11: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Big-O NotationDefinição: Sejam 𝑓 e 𝑔 funções do conjunto de inteiros ou do conjunto de números reais para o conjunto de números reais. Dizemos que 𝑓(𝑥) é 𝑂(𝑔(𝑥)) se houver constantes C e k tal que

sempre que x > k. Lê-se como “f(x) é big-O de g(x)”

As constantes C e k são chamadas de parâmetros da relação f(x) é O(g(x)).

Somente um par de parâmetros é necessário.

Page 12: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Ilustração do Big-O

f(x) é O(g(x))

A parte do gráfico de 𝒇(𝒙) que satisfaz𝒇 𝒙 < 𝑪𝒈(𝒙) está em azul

𝒇 𝒙 < 𝑪𝒈 𝒙 para 𝒙 > 𝒌

Page 13: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Utilizando a Definição de Big-OExemplo: Mostrar que 𝑓 𝑥 = 𝑥2 + 2𝑥 + 1 é 𝑂 𝑥2 .Solução: Pode ser estimado o tamanho de 𝑓(𝑥) quando x > 1, pois:

x < x2 e 1 < x2 quando x > 1Assim:

0 < 𝑥2 + 2𝑥 + 1 < 𝑥2 + 2𝑥 + 𝑥2 = 4𝑥2

Sempre que x > 1

Assim, podem-se tomar C = 4 e k = 1 como parâmetros para mostrar que

𝑓 𝑥 é 𝑂 𝑥2

Page 14: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Utilizando a Definição de Big-O Isto é:

𝑓 𝑥 = 𝑥2 + 2𝑥 + 1 < 4𝑥2

Quando x > 1

Não é necessário usar valor absoluto, pois, as funções são positivas quando 𝑥 é positivo.

Page 15: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Ilustração do Big-O𝑓 𝑥 = 𝑥2 + 2𝑥 + 1 é O(𝑥2)

Page 16: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Matrizes Matrizes são usadas para representar relações entre elementos de conjuntos.

Exemplo: redes de comunicações

Definição: uma matriz é uma tabela numérica arranjada em um número m de linhas e um número n de colunas.

mn2m1m

n22221

n11211

a...aa

::::

a...aa

a...aa

A

Page 17: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Matrizes A i-ésima linha de A é:

miaaa inii 121

nj

a

a

a

mj

j

j

12

1

A j-ésima coluna de A é:

Page 18: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Matrizes – Notações e terminologia

Amxn: matriz A com m linhas e n colunas

Anxn: matriz quadrada de tamanho n

𝑎11𝑎22 ……𝑎𝑛𝑛 : diagonal principal de A

aij: elemento da i-ésima linha e da j-ésima coluna da matriz A

[aij]: denota uma matriz A onde a dimensão está definida

Page 19: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Exemplos de matrizes

210

532A

64

32B

0

2

1

C

4311 E

542

321

101

D

Page 20: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

MatrizesDefinição: Uma matriz quadrada A=[aij] em que todos elementos fora da

diagonal são iguais a zero, isto é, aij=0 para ij, é chamada de matriz diagonal.

30

04F

500

030

002

G

Exemplos:

Page 21: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

MatrizesDefinição: Duas matrizes mxn A=[aij] e B=[bij] são ditas iguais se aij=bij

para 1im e 1jn.

644

250

132

A

z

y

x

B

44

25

12

Exemplo:

A=B se e somente se x=-3, y=0, e z=6.

Page 22: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Aritmética de matrizesDef.: Se A=[aij] e B=[bij] são duas matrizes mxn, então a soma de A e B é a

matriz C=[cij], de ordem mxn, definida por:

205

143A

230

354B

Exemplo:cij = aij + bij (1im , 1jn)

035

297

22)3(005

315443BAC

Page 23: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Aritmética de matrizesDefinição: Uma matriz cujos elementos são todos nulos é chamada de

matriz nula e é denotada por 0.

000

00032O

000

000

000

33O

Exemplos:

Page 24: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Propriedades da soma de matrizesTeorema:

a) A + B = B + A

b) (A + B) + C = A+ (B + C)

c) A + 0 = 0 + A = A

Page 25: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

mn2m1m

ij

n22221

n11211

pnpj2p1p

n2j22221

n1j11211

mp2m1m

ip2i1i

p22221

p11211

ccc

c

ccc

ccc

bbbb

bbbb

bbbb

aaa

aaa

aaa

aaa

Aritmética de matrizesDef.: Se A=[aij] é uma matriz mxp e B=[bij] é uma matriz pxn, então o

produto de A e B (AxB) é a matriz C=[cij], de ordem mxn, definida por:

p

k

kjikpjipjijiij babababac1

2211 njmi 1,1

Page 26: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Produto de matrizes

321

432A 32

35

22

13

B 23

??

??C 22

332211532231

342312542332C

Exemplo:

414

2020C

Page 27: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Propriedades do produto de matrizes As propriedades básicas do produto de matrizes são

dadas pelo seguinte teorema:

Teorema:

a) A(BC) = (AB)C

b) A(B + C) = AB + AC

c) c) (A + B)C = AC + BC

Page 28: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Propriedades do produto de matrizes Note que, dadas duas matrizes Amxp e Bpxn, então

A.B pode ser calculada (mxn). Quanto a B.A pode ocorrer:

1. o produto B.A pode não ser definido

2. (m=n) e B.A é definida mas A.B B.A (tamanho)

3. A.B e B.A podem ter o mesmo tamanho mas A.B B.A

4. A.B = B.A

Page 29: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Propriedades do produto de matrizesExemplos:

23

12A 22

32

11B 22

321

432A 32

5243

2851

2914

B 43

21

12A 22

51

15B 22

Page 30: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Multiplicação de matrizesQuestão: quantas operações são necessárias para calcular o

produto Cmxn de duas matrizes Amxp e Bpxn?

Resp.:

- Há mxn elementos no produto de Amxp e Bpxn

- Para encontrar cada elemento são necessárias p (x) e p (+)

- Logo, um total de m.n.p (x) e m.n.p (+) são usadas

Page 31: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Questão: Em que ordem as matrizes A1(30x20), A2(20x40) e A3(40x10) devem ser multiplicadas (matrizes de inteiros) para usar o menor no possível de operações?

-A1(A2A3) 20.40.10 para obter a matriz 20x10 A2A3

+ 30.20.10 para multiplicar por A1 = 14000

- (A1A2) A3 30.20.40 + 30.40.10 = 36000 (!)

Multiplicação de matrizes

Page 32: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Matriz identidade Definição: a matriz diagonal nn na qual todos os elementos da

diagonal são 1’s é chamado de matriz identidade de ordem n e é denotada por In.

1...000

:::::

0...100

0...010

0...001

I

Nota: se A é uma matriz mn, vale:

Im.A = A.In = A

Page 33: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Potências de matrizes Pode-se definir potências de matrizes quadradas.

Se A é uma matriz quadrada nxn, temos:

Ap = A.A...A

p vezes

onde: A0 = In

Também se pode provar as leis de exponenciação:

ApAq = Ap+q

(Ap)q = Ap.q

Page 34: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Matrizes transpostasDefinição: Se A é uma matriz mxn, então a matriz nxm:

t

ij

t aA onde:

é chamada de transposta da matriz A.

Exemplos:

ji

t

ij aa nj1emi1

261

012

543

A

205

614

123

A t

0

3

1

B 031Bt

Page 35: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Propriedades de matrizes transpostasTeorema: Se A e B são matrizes, então:

205

014

543

A

Exemplo:

a) (At)t = A

b) (A+B)t = At + Bt

c) (A.B)t = Bt.At

Definição: Uma matriz A=[aij] é chamada simétrica se At=A

se A é simétrica, A deve ser uma matriz quadrada.

Page 36: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Matrizes booleanas Matrizes constituídas apenas de zeros e 1’s são frequentemente

utilizadas para representar estruturas discretas (como as relações -parte II).

00100

10101

00110

B

Definição: Uma matriz booleana é uma matriz mxn em que os elementos são zeros ou uns.

Exemplo:

Page 37: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Operações com matrizes booleanasDef.: sejam A=[aij] e B=[bij] duas matrizes booleanas,

0be0ase0

1bou1ase1c

ijij

ijij

ij

0bou0ase0

1be1ase1d

ijij

ijij

ij

1) AB=C=[cij] é a junção de A e B, dada por:

2) AB=D=[dij] é o encontro de A e B, dado por:

Note que A e B devem ter o mesmo tamanho

Page 38: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Operações com matrizes booleanasExemplo: Calcule a junção e o encontro de:

010

101A

011

010B

Solução:

011

111

001110

011001BA

010

000

001110

011001BA

Page 39: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Operações com matrizes booleanasDef.: Sejam as matrizes booleanas A=[aij] (mxp) e B=[bij] (pxn). O produto

booleano de A e B é a matriz C mxn cujos elementos são dados por:

cij = (ai1b1j) (ai2b2j) ... (aipbpj)

Denota-se este produto por AB

Note que esta operação é idêntica à multiplicação matricial ordinária em que:

- a adição é substituída por

- a multiplicação é substituída por

Page 40: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Produto booleanoExemplo: Encontre o produto booleano de A e B, onde:

01

10

01

A

Note que #-colunas de A deve ser = #-linhas de B

110

011B

100110110011

110011100110

100110110011

BA

011

110

011

000101

101000

000101

BA

Page 41: Problemas e Algoritmos - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/kathya/Disciplinas/matematica_discreta... · Definição: Sejam e funções do conjunto de inteiros ou

Operações com matrizes booleanasTeorema: Se A, B e C são matrizes booleanas, então:

1) a) A B = B Ab) A B = B A

2) a) (A B) C = A (B C) b) (A B) C = A (B C)

3) a) A (B C) = (A B) (A C) b) A (B C) = (A B) (A C)

4) A (B C) = (A B) C