Upload
lamdung
View
230
Download
0
Embed Size (px)
Citation preview
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.
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)
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)
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.
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}
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.
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.
O Problema da Parada
Problema que não pode ser resolvido usando-se qualquer procedimento
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
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.
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.
Ilustração do Big-O
f(x) é O(g(x))
A parte do gráfico de 𝒇(𝒙) que satisfaz𝒇 𝒙 < 𝑪𝒈(𝒙) está em azul
𝒇 𝒙 < 𝑪𝒈 𝒙 para 𝒙 > 𝒌
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
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.
Ilustração do Big-O𝑓 𝑥 = 𝑥2 + 2𝑥 + 1 é O(𝑥2)
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
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 é:
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
Exemplos de matrizes
210
532A
64
32B
0
2
1
C
4311 E
542
321
101
D
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:
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.
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
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:
Propriedades da soma de matrizesTeorema:
a) A + B = B + A
b) (A + B) + C = A+ (B + C)
c) A + 0 = 0 + A = A
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
Produto de matrizes
321
432A 32
35
22
13
B 23
??
??C 22
332211532231
342312542332C
Exemplo:
414
2020C
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
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
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
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
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
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
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
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
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.
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:
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
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
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
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
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