Matem
atica Discreta
Instala
c
ao e Manuten
c
ao
de Redes e Sistemas Inform
aticos
Nuno Conceicao
Departamento de Matematica
Escola Superior de Tecnologia de Viseu
Instituto Politecnico de Viseu
Janeiro 2009
Conte
udo
Introduc
ao
1 Noc
ao de base de um sistema de numera
c
ao
1.1 Representacao de um n
umero em bases diferentes.
1.2 Conversao de n
umeros entre bases. . . . . . . . .
1.3 Limitacao de representacao . . . . . . . . . . . . .
1.4 Operacoes aritmeticas de base 2 . . . . . . . . . .
1.5 Representacao em complemento para 2 . . . . . .
1.6 Exerccios Propostos . . . . . . . . . . . . . . . .
2 Algebras
de Boole
2.1 Definicao e valor logico de uma proposicao . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
6
9
11
13
14
.
.
.
.
.
.
.
15
15
22
24
29
35
40
43
.
.
.
.
.
.
.
.
.
49
49
50
51
52
54
58
59
62
66
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
69
69
70
72
75
77
77
78
79
82
Bibliografia
85
Indice Remissivo
86
Introdu
c
ao
Estes apontamentos foram escritos com o objectivo de servir como base de apoio `as aulas da
Unidade Curricular de Matematica Discreta, integrada no CET de Instalacao e Manutencao
de Redes e Sistemas Informaticos. Tendo em conta a genese deste tipo de formacao, os
conte
udos programaticos desta Unidade e o tempo disponvel, optou-se por uma abordagem
a privilegiar as motivacoes praticas de cada materia, seguida de uma formulacao mais precisa
e com o rigor necessario ao tratamento Matematico da informacao.
Os temas que normalmente se incluem Matem
atica Discreta sao muito sabrangentes e tem
tido um grande desenvolvimento, em grande parte, potenciado pelas aplicacoes que se tem
revelado em grande n
umero em areas como Ciencias da Computac
ao, Telecomunicacoes, Seguranca na Transmissao de Dados, Desenho de Circuitos Integrados, Redes de Transportes,
etc. Como tal, revela-se necessario conhecer e dominar alguns conhecimentos e tecnicas
basicas que se procuraram tornar claras, acessveis e suficientemente desafiantes para o aluno.
Espera-se que o estudo destes apontamentos forneca um conjunto de competencias basicas
ao nvel do calculo numerico e matricial, logica e da teoria dos grafos. Nao foi o objectivo,
nem seria possvel neste tipo de trabalho, apresentar um estudo exaustivo sobre os temas
mas sim apresenta-los de forma a que pudessem ser facilmente apreendidos e possibilitassem
algumas ferramentas para o trabalho e os fins a que se destinam.
ii
Captulo 1
No
c
ao de base de um sistema de
numera
c
ao
Livros para este captulo: [1] [3] [4] [7]
1.1
Representa
c
ao de um n
umero em bases diferentes.
2
A importancia do primeiro ponto reflete-se na propria utilidade do sistema de numeracao.
Um sistema que permita representar poucos n
umeros esgota-se rapidamente e e posto de
parte. O segundo ponto significa que cada n
umero deve ter uma u
nica traducao num dado
sistema de numeracao e que, inversamente, ao escrevermos um n
umero em determinada base
este traduza uma quantidade u
nica e inconfundvel. Por u
ltimo, e essencial que as diferentes
formas de escrever os n
umeros tenham propriedades que permitam a sua facil manipulacao
e a realizacao de operacoes aritmeticas.
Mas voltemos ao sistema decimal ou, equivalentemente, de base 10.
Os dgitos utilizados no sistema decimal sao: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Com estes dgitos,
podemos transmitir qualquer informacao numerica. Por exemplo: a cidade de Viseu tinha,
em 2005, 47250 habitantes. (fonte: www.ine.pt)
Isto significa que Viseu tinha
4 10000 + 7 1000 + 2 100 + 5 10 + 0 1 habitantes.
De outra forma, Viseu tinha
4 (10)4 + 7 (10)3 + 2 (10)2 + 5 (10)1 + 0 (10)0 habitantes.
Esquematicamente:
10000 1000 100 10 1
4
7
2
5 0
Para a representacao de qualquer n
umero nesta base podemos, prolongar o esquema anterior:
104
103
102
101
100
Repare-se que, nesta base e nas que veremos a seguir, e fundamental perceber que o significado de um determinado dgito depende da sua posic
ao relativa no n
umero. Isto tem reflexos
em tudo o que se segue, em particular na conversao de n
umeros de uma base para outra.
Para que a escrita seja precisa e nao existam confusoes, quando queremos especificar a
base numerica a que nos estamos a referir, utilizamos ndices. Por exemplo:
3
13210 ou (132)10 significam 132 na base 10.
Consideremos agora o sistema de numeracao de base 2: o sistema binario. Os 2 dgitos que
nos vao permitir escrever todos os n
umeros nesta base sao o 0 e o 1.
Os primeiros n
umeros nesta base sao
base 10
0
1
2
3
4
5
6
7
8
9
10
..
.
base 2
0
1
10
11
100
101
110
111
1000
1001
1010
..
.
24
23
22
21
20
8 4
1 0
2 1
0 1
4
base 10
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
..
.
base 8
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
20
21
22
..
.
84
83
82
81
80
Assim, torna-se facil fazer a conversao: sistema octal sistema decimal. Vejamos um exemplo: qual o n
umero em base decimal representado por (12751)8?
Calculos: 1 84 + 2 83 + 7 82 + 5 81 + 1 80 = 5609. Isto e:
(12751)8 = (5609)10
base 16
0
1
2
3
4
5
6
7
10
9
A
B
C
D
E
F
10
11
12
..
.
164
163
162
161
160
161
C
160
7
6
Logo: (2C7)16 = 2 162 + 12 16 + 7 1 = (711)10 .
1.2
Convers
ao de n
umeros entre bases.
1. Dividir o n
umero por b e guardar o quociente Q. Memorizar o resto.
2. Se Q = 0, parar o processo.
3. Se Q 6= 0 voltar ao passo 1, e usar o quociente guardado.
Resultado: escrever os restos pela ordem inversa `a que foram obtidos.
R=0
R=1
R=0
R=1
R=0
R=0
R=0
R=0
R=0
R=1
7
Assim, tendo em conta o algoritmo descrito, concluimos que:
(522)10 = (1000001010)2
Neste momento devera conseguir fazer a conversao de n
umeros: base 10 base b , qualquer
que seja a base b considerada.
Exerccios:
1. Os n
umeros seguintes estao escritos na base 2. Escreva-os na base 10:
(a) 110 ; (b) 101101 ; (c) 101010101 ; (d) 110011010110 .
2. Os n
umeros seguintes estao escritos na base 4. Escreva-os na base 10:
(a) 31 ; (b) 210 ; (c) 1212 ; (d) 20013 .
3. Os n
umeros seguintes estao escritos na base 8. Escreva-os na base 10:
(a) 37 ; (b) 451 ; (c) 7777 ; (d) 12321 .
4. Os n
umeros seguintes estao escritos na base 16. Escreva-os na base 10:
(a) 3D ; (b) 21E ; (c) 1F01 ; (d) A1B2C .
10
6@
@
@
?
R
@
- 2
- 10
@
6
@
@
R ?
@
16
Vejamos entao um exemplo que ilustra o processo de conversao base 8 base 2. Suponhamos
que temos de converter o n
umero (17246)8 para base 2:
1 |{z}
7 |{z}
2 |{z}
4 |{z}
6
|{z}
|001 111 010
{z 100 110}
001111010011110
8
Logo:
(17246)8 = (1111010100110)2
Ou seja: convertemos cada um dos dgitos do n
umero escrito em base 8 para binario, de
modo a que cada novo n
umero tenha sempre tres dgitos, acrescentando zeros sempre que
necessario. Em seguida, colocamos estes grupos de tres dgitos em sequencia e obtemos a
traducao do n
umero inicial em base binaria.
Reciprocamente, a conversao base 2 base 8 tambem se concretiza facilmente, conforme se
ilustra no exemplo seguinte, em que se pretende converter o n
umero (1010100110101)2 em
base 8:
001 |{z}
010 |{z}
100 |{z}
110 |{z}
101
|{z}
Portanto:
|1
4
{z
12465
(1010100110101)2 = (12465)8
Neste caso, agrupamos os dgitos do n
umero inicial tres a tres, da direita para a esquerda,
acrescentando zeros (se necessario) no u
ltimo grupo. Em seguida, converte-se cado um dos
n
umeros no seu correspondente na base 8 e colocam-se em sequencia para terminar a conversao.
Raciocnios semelhantes sao utilizados para as conversoes base 2 base 16, como a seguir
se mostra.
Vejamos como converter (A3F5)16 num n
umero binario:
A |{z}
3 |{z}
F |{z}
5
|{z}
1010 0011 1111 0101
Isto e:
(A3F5)16 = (1010001111110101)2
No sentido inverso, vamos converter o n
umero (100110110010110)2 no seu correspondente
no sistema hexadecimal:
0100
|{z} 1101
|{z} 1001
|{z} 0110
|{z}
4
9
6
D
|
{z
}
4D96
Repare-se que agora sao utilizados grupos de quatro dgitos (em vez de grupos de tres dgitos
utilizados na conversao binario octal ).
9
Nestes processos rapidos de conversao de n
umeros em base 8 ou em base 16 usamos, como
auxiliar, a tabela seguinte:
base 10
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
base 2
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111
base 8
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
base 16
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
Exerccios:
5. Converter (1E2A5)16 em base 2 e em base 8.
6. Converter (1001110101101001)2 em base 8 e em base 16.
7. Converter (1724152)8 em base 2 e em base 16.
1.3
Limita
c
ao de representa
c
ao
10
Comecemos por fazer o exerccio inverso e ver como podemos converter um n
umero fraccionario escrito em forma binaria para a base decimal. Para isto, vamos estender a formula
que utilizamos atras para as conversoes de inteiros positivos, sendo que agora vamos utilizar
potencias negativas de 2:
O que quer dizer que
(0.1011)2 = 1 21 + 0 22 + 1 23 + 1 24 = 0.6875
0 21
0 1
22
0
23
1
24
1
11
Para tentar ultrapassar este problema, podemos acrescentar bits `a representacao binaria
ate obtermos a precisao pretendida. No entanto, ao fazer isto, estamos limitados `a capacidade da maquina armazenar n
umeros binarios tao extensos quanto nos queiramos. Ha outras
tecnicas para manipular n
umeros binarios (representac
ao em ponto flutuante) que nao serao
aqui abordadas.
1.4
Operac
oes aritm
eticas de base 2
+2
1
0
1
0
0
0
0
0
0
0
0
0
1
0
1
0
0
1
1
0
0
0
1
0
1
0
0
1
1
1
0
1
0
0
1
0
1
1
1
1
1
1
0
1
0
0
1
0
1
1
0
1
0
0
0
0 a transportar
1
0
0
0
0
0
1
1
0
1
1
1
1
0
1
1
1
1
0
0
0
0
0
1
1
0
1
1
1
0
0
0
0
1
1
1
1
1
0
0 a transportar
12
+2
0000
0000
0000
001
10
0100
0011
1
0
0
0
1
0
1
0
0
0
1
1
1
1
1
1
0
1
1
0
1
11
10
00
1
10
0 0 a transportar
Exerccios:
8. Proceda `as somas seguintes:
(a) 110102 + 1112 ; (b) 1001012 + 1011012 ; (c) 246108 + 57128 ;
(d) 2014408 + 12543038 ; (e) 19A516 + D2E116 ; (f) 15E12B16 + 2D3B16 .
9. Efectue os calculos seguintes:
(a) 110102 1112 ; (b) 1001012 1011012 ; (c) 246108 57128 ;
(d) 2014408 143038 ; (e) 19A516 A2E116 ; (f) 15E12B16 2DB16 .
13
10. Determine o resultado das multiplicacoes seguintes:
(a) 11102 112 ; (b) 101012 111012 ; (c) 241508 51728 ;
(d) 2011408 125038 ; (e) 19A516 2E116 ; (f) 15E12B16 2DB16 .
11. Indique o quociente e o resto das divisoes seguintes:
(a) 110102 : 1112 ; (b) 1001012 : 1011012 ; (c) 246108 : 57128 ;
(d) 201408 : 253038 ; (e) 19A516 : D2E116 ; (f) 15E2B16 : 2D316 .
1.5
Representa
c
ao em complemento para 2
Exerccios:
12. Efectue as seguintes operacoes, pelo metodo do complemento para 2:
(a) 10011010 01010101 ; (b) 1011010110 0110001101 ;
(c) 10101010101 10001010101 ; (d) 110110011001101 100101101001001.
14
1.6
Exerccios Propostos
13. Converta em n
umero de base 2 os seguintes n
umeros:
(a) (755)10 ; (b) (431)10 ; (c) (391)10 ; (d) (2008)10 ;
(e) (0.432)10 ; (f) (7854.321)10 ; (g) (57.0023)10 ; (h) (321.527)10
14. Converta em n
umero de base 16 os seguintes n
umeros:
(a) (10111101101)2 ; (b) (101010101111100)2 ; (c) (1010110011011111)2;
(d) (0.10101111)2 ; (e) (100011.00110011)2 ; (f) (1011011101.11101111)2.
15. Efectue as seguintes operacoes em base 2:
(a) 1010110011 + 1010101010 + 11110000 + 101010111 ;
(b) 11011100 + 10101000 + 1010111 + 11001100 ;
(c) 101110101101 100011101111, utilizando a representacao em complemento para
2;
(d) 110100100110 101111100001, utilizando a representacao em complemento para
2;
(e) 10110101 101 ;
(f) 110000110111 10111 ;
(g) 11011101 1110 .
16. Converta os resultados obtidos no exerccio anterior em n
umeros hexadecimais.
17. Converta os numeros hexadecimais seguintes na sua forma binaria:
(a) 0.67 ; (b) 0A8 ; (c) 0.7B ; (d) 0.1F;
(e) 0.1F20 ; (f) 0.0ABC ; (g) 0.70D2 ; (h) 0.86BA .
18. Converta os resultados obtidos no exerccio anterior em n
umeros de base 10.
Captulo 2
Algebras
de Boole
Livros para este captulo: [1] [2] [3] [4] [7]
2.1
Defini
c
ao e valor l
ogico de uma proposi
c
ao
16
1 + 2 = x.
Acerca destas expressoes, nao se pode afirmar serem verdadeiras (V) ou falsas (F) e, por
isto, nao sao consideradas proposicoes.
Vamos, muitas vezes, usar letras para designar proposicoes.
Assim, seja p a proposicao Lisboa e a capital de Portugal.. Podemos representar este facto
assim:
p : Lisboa e a capital de Portugal
Uma forma de obtermos novas proposicoes e usar operadores l
ogicos ou conectivos logicos.
O primeiro que vamos considerar e o de negac
ao, assim definido:
se p e uma proposicao, entao a negacao de p e uma proposicao representada por p que e
verdade se p e falsa e e falsa se p e verdade.
Mais `a frente vamos ver outros conectivos logicos, mas introduzimos aqui uma forma de
esquematizar o resultado da aplicacao dos conectivos logicos a proposicoes: a tabela de verdade. A tabela 2.1 e a tabela de verdade do operador negac
ao.
p
V
F
p
F
V
17
p
V
V
F
F
q
V
F
V
F
pq
V
V
V
F
q
V
F
V
F
pq
F
V
V
F
q
V
F
V
F
pq
V
F
F
F
Exerccios:
18
19. Diga quais das expressoes seguintes sao proposicoes:
(a) Viseu e uma cidade.
(b) Viseu e uma cidade bonita.
(c) A nota em circulacao em Portugal com valor facial mais elevados e a de 5 euros.
(d) Esta bom tempo.
20. Sejam p, q e r as proposicoes seguintes:
p : Nao ha pessoas na lua.
q : Moscovo e a capital da R
ussia.
r : Lewis Hamilton e o campeao mundial de F1.
Escreva, em linguagem corrente, as proposicoes:
(a) p , q e r
(b) p q , p r e q p.
21. Sejam p, q, r, s proposicoes. Escreva a tabela de verdade das proposicoes:
(a) (p q) (r).
(b) (p q) (r s).
(c) (p s) ((r) q).
(d) (((q (s)) p) r)
Vejamos ainda mais dois conectivos logicos. Dadas duas proposicoes p e q, a implicacao
p q e falsa se p e verdadeira e q falsa e e verdadeira nos restantes casos. Isto e:
p
V
V
F
F
q
V
F
V
F
pq
V
F
V
V
19
e
q : Trago comigo um guarda-chuva.
entao:
se p e V e q e V, entao p q e verdade.
se p e V e q e F, entao p q e falso.
se p e F e q e V, entao p q e verdade.
se p e F e q e F, entao p q e verdade.
A partir da implicacao definimos a equivalencia: p q e verdade se p e q tem o mesmo
valor logico, e falso caso contrario.
p
V
V
F
F
q
V
F
V
F
pq
V
F
F
V
Exerccios:
22. Considere as proposicoes
p: Vou estacionar o carro em cima da passadeira.
q: Vou ser multado.
Escreva, usando estas definicoes e os conectivos logicos, as proposicoes:
(a) Nao vou ser multado.
(b) Vou estacionar o carro em cima da passadeira e nao vou ser multado.
(c) Se estacionar o carro em cima da passadeira entao vou ser multado.
(d) Se nao estacionar o carro em cima da passadeira entao nao vou ser multado.
(e) Se sou multado entao estacionei o carro em cima da passadeira.
(f) Sou multado entao nao estacionei o carro em cima da passadeira.
(g) Sou multado se e so se estaciono o carro em cima da passadeira.
20
23. Identifique as proposicoes presentes em cada frase e escreva-as, de forma codificada,
utilizando letras e conectivos logicos:
Por exemplo: Amanha e domingo e eu vou a um concerto.
p: Amanha e domingo.
q: Eu vou a um concerto.
pq
(a) Na hora de almoco vou comer fora ou vou `a piscina.
(b) Se chegar atrasado tomo pequeno almoco ou falto `a reuniao.
(c) Se a bateria do telemovel acabar telefono numa cabine ou numa estacao dos
correios.
(d) Vou de ferias para as Maldivas e levo 4 malas se e so se ganhar o EuroMilhoes ou
conseguir mudar de trabalho.
24. Sejam p, q, r e s proposicoes. Escreva as tabelas de verdade para as proposicoes
compostas seguintes:
(a) p (q r) .
(b) q ((p q) (r s)) .
(c) (p (q s)) (r q) .
(d) ((r q) (r s)) (p q) .
25. Uma tautologia e uma proposicao verdadeira. Mostre que as proposicoes sao tautologias, isto e, sao verdadeiras independentemente dos valores logicos de p, q e r:
(a) p q p .
(b) p (p q) .
(c) (p q) (p q) .
(d) (p q) (p q) .
(e) (p q) (q r) (r p) .
(f) (p q) (q r) (r p) .
26. Mostre que as proposicoes seguintes sao equivalentes, isto e, definem a mesma tabela
de verdade :
(a) p e p p .
(b) p e p p .
21
(c) p e p V .
(d) p e p F .
(e) p q e q p .
(f) p q e q p .
(g) p q e p q .
(h) p q e p q
(i) p (q r) e (p q) (p r) .
(j) p (q r) e (p q) (p r) .
(k) p q e p q .
22
2.2
Defini
c
ao e propriedades de Algebra
de Boole
Comecemos esta seccao referindo e definindo alguns dos termos que serao necessarios no seu
desenvolvimento. Iremos falar, nomeadamente, de conjuntos e de elementos que pertecem a
conjuntos.
Lembramos que: se A e um conjunto e x e um elemento, escrevemos
x A se quisermos representar que x pertence ao conjunto A .
x
/ A se quisermos representar que x n
ao pertence ao conjunto A .
Uma operacao binaria + definida num conjunto A e uma operacao que a dois elementos
de A, x e y, faz corresponder um elemento z de A, ou seja:
x, y A x + y = z A .
Uma estrutura algebrica e um sistema constituido por um conjunto, por operacoes sobre os
elementos desse conjunto e pelas propriedades (axiomas) que os elementos e as operacoes
satisfazem.
Uma Algebra
de Boole e uma estrutura algebrica (B, , ), em que B e um conjunto nao
vazio, e sao operacoes binarias e tal que, se a, b, c B, temos os axiomas seguintes:
A1. Comutatividade
ab= ba ; ab=ba .
A2. Distributividade:
a (b c) = (a b) (a c) ; a (b c) = (a b) (a c) .
A3. Elemento neutro:
existe um elemento 0 B tal que: a 0 = 0 a = a, para todo o elemento a B .
existe um elemento 1 B tal que: a 1 = 1 a = a, para todo o elemento a B .
A4. Idempotencia: se a B entao
aa=a e aa=a
23
A5. Existencia de complemento: se a B entao existe a B tal que
aa=1
aa=0 .
As
de Boole chamamos operadores booleanos e os quadros anteriores
sao uma outra forma de representar tabelas de verdade.
Trabalharemos com expressoes/funcoes booleanas que sao sequencias de vari
aveis e operacoes
(ambas boolenas) e tentaremos desenvolver a capacidade de avaliacao de func
oes booleanas.
Uma funcao booleana e uma funcao com n variaveis booleanas e que tem como resultado
0ou 1.
Exerccios:
24
Axiomas e Propriedades
Expressoes Duais
Comutatividade
Distributividade
Associatividade
Elementos Neutros
Complementos
Idempotencia
Elementos absorventes
Absorcao
Leis de De Morgan
Involucao
pq = qp
p+q =q+p
p(q + r) = pq + pr
p + (qr) = (p + q)(p + r)
(p + q) + r = p + (q + r)
(pq)r = p(qr)
p1 = p
p+0=p
pp = 0
p+p=1
pp = p
q+q =q
p0 = 0
p+1=1
p(p + q) = p
p + pq = p
pq = p + q
p+q =p q
p=p
2.3
Fun
c
oes Booleanas e Tabelas de verdade
F (A, B) = A B
Vejamos, com algum detalhe, uma das funcoes: F e uma funcao que tem como input duas
variaveis e como resultado 0ou 1.
Ja sabemos que, por exemplo: F (0, 1) = 0 1 = 1. Isto e FV=V.
Utilizando a linguagem de sistemas digitais, com 0 e 1 a corresponderem a desligado
e ligado respectivamente, podemos perceber que 1e o resultado da operacao A B, se
A = 0 e B = 1:
A
b
b
b
b
b
B
claro que as funcoes sao, na pratica, mais complexas que esta. Para ja, facamos alguns
E
calculos com as duas operacoes ja conhecidas.
25
Vamos agora ver como desenhar circuitos simples recorrendo `as operacoes e .
Por exemplo, o circuito
A
b
B
corresponde `a funcao F (A, B) = A B.
Por sua vez, o circuito
b
Exerccios:
30. Considere a funcao F (A, B, C) = (A B) C. Calcule:
(a) F (1, 1, 0) ; (b) F (1, 0, 1) ; (c) F (0, 1, 0) ; (d) F (0, 1, 1) .
31. Considere a funcao F (A, B, C, D) = (A B C) D. Calcule:
(a) F (1, 1, 0, 1) ; (b) F (0, 1, 0, 1) ; (c) F (1, 0, 1, 0) ; (d) F (0, 0, 1, 1) .
32. Desenhe os circuitos correspondentes `as funcoes:
(a) F (A, B) = A (A B) ; (b) F (A, B) = (A B) A ;
(c) F (A, B) = A B A B ; (d) F (A, B) = B A B .
33. Desenhe os circuitos correspondentes `as funcoes:
(a) F (A, B, C) = (A B) (A C) B C ;
(b) F (A, B, C) = A B C A B C ;
(c) F (A, B, C, D) = A C B C D A (B D) .
Para simplificar a notacao e torna-la mais intuitiva vamos, muitas vezes daqui para frente
representar a operacao pelo sinal + enquanto que a operacao sera omitida. Estas
operacoes tambam se podem chamar soma l
ogica e produto l
ogico, respectivamente.
Com esta convencao, as operacoes podem escrever-se assim:
0+0=0
1+0=1
0+1=1
1+1=1
00 = 0
10 = 0
01 = 0
11 = 1
26
Repare-se que temos de distinguir, nesta situacao, que 01, por exemplo, representa a operacao
0 1 e nao o n
umero binario correspondente.
Vejamos agora como representar duas funcoes booleanas, usando esta notacao:
A B C D A + BC + D
e
ABAC AC
A + BA + CA + C .
As funcoes booleanas que ja vimos estao atras representadas por quadros a que chamamos
tabelas de verdade. Esta e uma forma alternativa de apresentar uma funcao booleana.
Vejamos agora como representar a funcao booleana:
F (A, B) = AB + B .
Esta funcao pode ser representada pela tabela de verdade:
A B AB
0 0
0
0 1
0
1 0
0
1 1
1
AB + B
0
1
0
1
E se tivermos uma funcao booleana com 3 variaveis? Vejamos a caso em que a funcao em
causa e
F (A, B, C) = AB + BC + AC + A
Como cada variavel toma um de dois valores e temos tres variaveis, a tabela de verdade ira
ter 23 = 8 linhas:
A B C AB BC AC
0 0 0
0
0
0
0 0 1
0
0
0
0 1 0
0
0
0
0 1 1
0
1
0
1 0 0
0
0
0
1 0 1
0
0
0
1 1 0
1
0
0
1 1 1
1
1
1
AB + BC + AC + A
0
0
0
1
1
1
1
1
27
Vejamos outro caso:
F (A, B) = A + AB + AB
A tabela de verdade desta funcao e:
A B A B AB AB
0 0 1 1
0
0
0 1 1 0
1
0
1 1 0 0
0
1
1 1 0 0
0
0
A + AB + AB
0
1
1
1
Exerccios:
34. Construa as tabelas de verdade das funcoes seguintes:
(a) F (A, B) = A + B ; (b) F (A, B) = AB + AB ; (c) F (A, B) = AB + A.
35. Construa as tabelas de verdade das funcoes seguintes:
(a) F (A, B, C) = AB + AC + BC ; (b) F (A, B, C) = ABC + ABC ;
(c) F (A, B, C, D) = AB + BC + CD ;
(d) F (A, B, C, D) = ABC + B CD + AB + CD .
36. Represente as funcao do exerccios anterior utlizando circuitos.
37. Escreva a funcao representada pelos circuitos
(a)
B
B
A
B
(b)
28
B
C
A
C
B
B
(c)
A
C
D
D
A
D
29
2.4
Formas can
onicas
Ja sabemos que ha varias formas equivalentes de escrever a mesma funcao e nesta seccao
iremos estudar formas particulares de representar uma funcao: as formas can
onicas. Este
nome vem do factos de se escreverem as funcoes recorrendo somente a somas e produtos
logicos.
De entre as varias possibilidades, vamos concentrar o estudo nas formas can
onica disjuntiva
e canonica conjuntiva de funcoes. A primeira apresenta a estrutura de uma soma logica
de produtos de variaveis enquanto que a segunda tem a estrutura de um produto de somas
de variaveis. Por esta razao, tambem se chama soma de produtos (SP) `a primeira forma
e produtos de somas (PS) `a segunda. Antes de saber como calcular cada uma destas formas, vejamos dois exemplos das formas canonica disjuntiva e canonica conjuntiva da mesma
funcao: f (A, B, C) = A + AB + BC
F1 (A, B, C) = fSP (A, B, C) = ABC + ABC + ABC + ABC + AB C
F2 (A, B, C) = fP S (A, B, C) = (A + B + C)(A + B + C)(A + B + C)
A primeira e uma soma de termos produto e a segunda um produto de termos soma. Os
termos produto tambem sao chamados de mintermos e os termos soma de maxtermos. Especificando:
Os mintermos sao produtos de todas as variaveis de uma funcao, complementadas ou
nao.
Os maxtermos sao somas de todas as variaveis da funcao, complementadas ou nao.
Por exemplo, numa funcao booleana de 2 variaveis ha:
4 mintermos: AB, AB, AB e AB ;
4 maxtermos: A + B, A + B, A + B e A + B .
Exerccios:
38. Mostre que as funcoes f, F1 e F2 , acima definidas, sao equivalentes.
39. Escrever os mintermos de uma funcao de 3 variaveis.
40. Escrever os mintermos de uma funcao de 4 variaveis.
30
Vejamos:
F1 (A, B) = (A + B) B + B A + B =
= AB + BB + BA + BB =
= AB + 1 + BA + 1 =
= AB + BA = F2 (A, B) .
logo F1 e F2 sao equivalentes. Isto quer dizer que para os mesmos inputs apresentam os
mesmos resultados.
Este metodo pressupoe a utilizacao das propriedades da tabela da pagina 24. Outro exemplo:
f (A, B, C) = (A + B)(B + C) + B + BC =
= AB + AC + BB + BC + B + BC =
= AB + AC + BC + B + BC =
= AB + AC + B(C + C) + B =
= AB + AC + B + B =
= AB + BC + B .
A simplificacao de expressoes booleanas de modo a optimizar os procedimentos, eliminar
operacoes redundantes e minimizar o tempo de execucao de uma operacao e importante
pois, na pratica, tem implicacoes na implementacao dos circuitos, no seu preco e na eficacia
do produto final.
Tendo em conta o que esta visto atras, resta dizer que as formas canonicas disjuntiva e
conjuntiva sao u
nicas e, por isto, para saber se duas funcoes sao equivalentes podemos determinar as respectivas formas canonicas e, caso sejam equivalentes, concluir que as expressoes
originais tambem o sao. Nestas condicoes, devera ser usada aquela que menos tempo e recursos consumir para dar o resultado de um input.
Por outro lado, ao desenhar um circuito logico, temos de garantir que nao existem operacoes
que se repitam ou cuja eliminacao nao influenciem o resultado final.
Vamos agora ver como calcular as formas canonicas ja referidas. Em primeiro lugar vamos ver como encontrar a forma canonica disjuntiva de uma funcao. Como ja foi referido,
esta tem a estrutura de uma soma de mintermos. Nos calculos que se seguem nesta seccao,
utilizam-se se, em grande medida, as propriedades:
p + p = 1 , p + p = p , p1 = p , p + ab = (p + a)(p + b) , p(a + b) = pa + pb.
Metodo algebrico:
31
chegar a uma expressao que seja soma de mintermos. Por exemplo, consideremos a funcao:
F (A, B, C) = A + BC + AB. Procedendo a operacoes algebricas:
F (A, B, C) = A + BC + AB =
= A(B + B)(C + C) + (A + A)BC + AB(C + C) =
= A(BC + BC + BC + B C) + ABC + ABC + ABC + AB C =
= ABC + ABC + ABC + AB C + ABC + ABC + ABC + AB C =
= ABC + ABC + ABC + ABC + AB C
Com a funcao tem 3 variaveis, cada mintermo tem 3 factores. Em cada parcela identificam-se
as variaveis inextistentes e completa-se, na parcela, com os produtos (p + p) das variaveis em
falta. Finalmente, procedem-se `as operacoes ate chegar `a forma pretendida.
Podemos resumir este processo em 4 etapas:
1. escrever a funcao atraves de somas de produtos das variaveis;
2. se uma das parcelas (P ) nao tiver uma das variaveis (por exemplo: A ou A) fazemos
o produto logico dessa parcela por (A + A): P (A + A);
3. nas parcelas a que aplicamos o passo 2., utilizamos a propriedade distributiva para
obter P A + P A. Continuamos a ter, deste modo, a expressao original escrita como
soma de produtos;
4. repetimos este processo em cada parcela obtendo a expressao como soma de mintermos;
5. no final, eliminamos as parcelas redundantes.
32
Exerccios:
41. Utilize este metodo para mostrar que a funcao anterior e equivalente a
G(A, B, C) = AC + BC + B + BC + AC + ABC + ABC + ABC + AB C
42. Determine a forma canonica disjuntiva das funcoes:
(a) F (A, B, C) = AB + BAC + BC + A .
(b) F (A, B, C) = (AC + ABC)(AB + BC) .
(c) F (A, B, C, D) = ABD + (ACD + ABD)(ACD) .
Metodo das tabelas de verdade:
construa-se a tabela de verdade da funcao F (A, B, C) = A + BC + AB:
A B C mintermo B BC AB A + BC + AB
0 0 0
ABC
1
0
0
0
0 0 1
A BC
1
0
0
0
0 1 0
ABC
0
0
0
0
0 1 1
ABC
0
0
1
1
1 0 0
AB C
1
0
1
1
1 0 1
ABC
1
0
1
1
1 1 0
ABC
0
0
0
1
1 1 1
ABC
0
1
0
1
Com a tabela de verdade, podemos escrever a forma canonica somando os mintermos associados `as combinacao das variaveis cujo output e 1:
F (A, B, C) = ABC + ABC + ABC + ABC + AB C .
Exerccios:
43. Escreva as formas canonicas disjuntivas das funcoes seguintes, pelo metodo algebrico:
(a) F (A, B) = AB + B
(b) F (A, B, C) = AB + BC + CD + AB + A
(c) F (A, B, C) = ABC + A + BC + B
(d) F (A, B, C, D) = ABC + ABD + AD + CD + BCD .
33
44. Escreva a forma canonica disjuntiva das funcoes seguintes, pelo metodo das tabelas de
verdade:
(a) F (A, B) = AB + A
(b) F (A, B, C) = AC + AC + AD + AC + A
(c) F (A, B, C) = BC + AB + ABC + C
(d) F (A, B, C, D) = AB + ABD + AD + ABD + BD .
Passamos agora ao calculo da forma canonica conjuntiva.
Reforcemos as propriedades que mais utilizaremos:
p + ab = (p + a)(p + b) e pp = 0 .
Metodo algebrico:
34
4. repetimos este processo em cada factor obtendo a expressao como produto de maxtermos;
5. no final, eliminamos os factores redundantes.
Metodo das tabelas de verdade:
construa-se a tabela de verdade da funcao F (A, B, C) = A + BC:
A B C maxtermo BC A + BC
1 1 1 A+B+C 1
1
1 1 0 A+B+C 0
1
1 0 1 A+B+C 0
1
1 0 0 A+B+C 0
1
0 1 1 A+B+C 1
1
0 1 0 A+B+C 0
0
0 0 1 A+B+C 0
0
0 0 0 A+B+C 0
0
Com a tabela de verdade, podemos escrever a forma canonica conjuntiva que e o produto
dos maxtermos associados `as combinacao das variaveis cujo output e 0:
F (A, B, C) = (A + B + C)(A + B + C)(A + B + C) .
Exerccios:
45. Escreva as formas canonicas conjuntivas das funcoes seguintes, pelo metodo algebrico:
(a) F (A, B) = AB + B
(b) F (A, B, C) = AB + BC
(c) F (A, B, C) = ABC + A
(d) F (A, B, C, D) = ABC + ABD .
46. Escreva a forma canonica conjuntiva das funcoes seguintes, pelo metodo das tabelas
de verdade:
(a) F (A, B) = AB + A
(b) F (A, B, C) = AC + AC + AD + AC + A
(c) F (A, B, C) = BC + AB + ABC + C
(d) F (A, B, C, D) = AB + ABD + AD + ABD + BD .
35
2.5
Mapas de Karnaugh
Nesta seccao, vamos comecar por ver como representar funcoes booleanas numa forma
grafica, utilizando mapas de Karnaugh. Veremos, depois, uma forma de os utilizar de modo
a simplificar funcoes booleanas e a encontrar as suas formas canonicas.
Os mapas de Karnaugh sao construdos a partir da tabela de verdade de uma funcao e
constitudos por celulas. Cada uma destas corresponde a um mintermo e a um maxtermo.
Se quisermos escrever a forma canonica disjuntiva (soma dos mintermos) temos de ter em
conta as celulas que tem valor 1; se for a forma canonica conjuntiva (produto de maxtermos)
tomamos em consideracao as de valor 0. Cada uma das celulas e numerada com o ndice dos
mintermos/maxtermos que lhe corresponde. Para esta numeracao, definimos os mintermos
como os mi e os maxtermos como os Mi , de acordo com as tabelas seguintes:
A
0
0
1
1
B
0
1
0
1
mintermo
AB
AB
AB
AB
smbolo
m0
m1
m2
m3
maxtremo
A+B
A+B
A+B
A+B
smbolo
M0
M1
M2
M3
B
0
0
1
1
0
0
1
1
C
0
1
0
1
0
1
0
1
mintermo
ABC
ABC
ABC
ABC
AB C
ABC
ABC
ABC
smbolo
m0
m1
m2
m3
m4
m5
m6
m7
maxtremo
A+B+C
A+B+C
A+B+C
A+B+C
A+B+C
A+B+C
A+B+C
A+B+C
smbolo
M0
M1
M2
M3
M4
M5
M6
M7
36
A
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
B
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
C
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
D
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
mintermo
ABC D
A B CD
A BCD
A BCD
ABC D
ABCD
ABCD
ABCD
ABC D
AB CD
ABCD
ABCD
ABC D
ABCD
ABCD
ABCD
smbolo
m0
m1
m2
m3
m4
m5
m6
m7
m8
m9
m10
m11
m12
m13
m14
m15
maxtremo
A+B+C +D
A+B+C +D
A+B+C +D
A+B+C +D
A+B+C +D
A+B+C +D
A+B+C +D
A+B+C +D
A+B+C +D
A+B+C +D
A+B+C +D
A+B+C +D
A+B+C +D
A+B+C +D
A+B+C +D
A+B+C +D
smbolo
M0
M1
M2
M3
M4
M5
M6
M7
M8
M9
M10
M11
M12
M13
M14
M15
B
0
1
0
1
B
1
0
1
0
AB
0
0
0
1
AB
0
0
1
0
f1
0
0
1
1
37
B
f1 (A, B)
0
0
1
0
1
Exemplo 2:
A
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
C
0
1
0
1
0
1
0
1
B
1
1
0
0
1
1
0
0
C
1
0
1
0
1
0
1
0
AB
0
0
0
0
0
0
1
1
AC
0
0
0
0
1
0
1
0
BC
0
1
0
0
0
1
0
0
f2
0
1
0
0
1
1
1
1
0
0
C
1
1
0
1
1
1
1
38
Exemplo 3:
A
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
B
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
C
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
D
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
A
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
B
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
D
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
ABD
0
0
0
0
0
0
0
0
0
1
0
1
0
0
0
0
AC
0
0
1
1
0
0
1
1
0
0
0
0
0
0
0
0
CD
0
0
1
0
0
0
1
0
0
0
1
0
0
0
1
0
f3
0
0
1
1
0
0
0
1
0
1
1
1
0
0
1
0
B
f3 (A, B, C, D)
C
A
10
0
1
1
0
D
1
11
0
1
1
1
15
13
0
1
0
0
14
12
0
0
1
0
39
Vejamos como escrever as formas canonicas de uma funcao escrita sob a forma de mapa de
Karnaugh. Por exemplo, a funcao f de 3 variaveis A, B, C representada por
A
f (A, B, C)
0
1
0
1
0
0
C
A
10
1
0
1
1
D
1
11
1
0
0
1
15
13
0
1
0
0
14
12
0
0
1
1
Neste caso:
f (A, B, C, D) = m0 + m1 + m7 + m8 + m9 + m10 + m12 + m14
f (A, B, C, D) = A B C D +A B CD+ABCD+AB C D+AB CD+ABCD+ABC D+ABCD
e
f (A, B, C, D) = M2 M3 M4 M5 M6 M11 M13 M15 =
= (A + B + C + D)(A + B + C + D)(A + B + C + D)(A + B + CD)(A + B + C + D)(A + B + C + D)(A + B + C + D)(A + B + C + D)
40
2.6
Simplifica
c
ao de fun
c
oes Booleanas
Para simplificacao de expressoes algebricas podemos, com ja foi visto, utilizar as propriedades algebricas das operacoes booleanas conforme descrito na tabela da pagina 24.
Nesta seccao iremos dedicar-nos `a utilizacao de mapas de Karnaugh para a simplificacao
de funcoes booleanas. O Exemplo 1. anterior
B
f1 (A, B):
0
0
1
0
1
f1 (A, B):
0
0
1
0
A
1
0
0
1
0
1
1
1
1
Assim:
f2 (A, B, C) = AB + AC + BC = A BC + A .
41
E vejamos agora o caso da funcao de 4 variaveis do Exemplo 3.:
f3 (A, B, C, D) = ABD + AC + CD
B
D
BC @
@00
R
@
C
A
10
1
1
0
11
0
1
1
1
15
13
0
1
0
0
14
12
0
ABCD
0
1
0
ABCD
AB CD
Neste caso:
f3 (A, B, C, D) = ABD + AC + CD = BC + ABCD + ABCD + AB CD
a simplificacao conduz, aparentemente, a uma funcao mais complexa que a inicial. Na
pratica, optamos pela forma que utlize menos operacoes.
42
no de celulas no rectangulo
1
2
4
da origem a . . .
mintermo
1 literal
0 ou 1
da origem a . . .
mintermo
2 literais
1 literal
0 ou 1
da origem a . . .
mintermo
3 literais
2 literais
1 literal
0 ou 1
43
2.7
Exerccios Propostos
(a)
1
1
1
0
1
0
0
0
A
C
0
(b)
0
0
1
1
1
1
1
0
44
B
D
0
0
1
1
10
A
(c)
0
1
1
11
15
13
14
12
0
0
1
0
B
D
0
C
A
(d)
0
0
1
10
1
1
0
11
15
13
1
1
1
0
14
12
0
0
0
0
52. Utilize os mapas construidos no exerccio 49 para obter expressoes simplificadas das
funcoes.
53. Utilizar mapas de Karnaugh para obter as formas canonicas disjuntiva e conjuntiva
das funcoes:
(a) f (A, B, C) = (A + B)(A + B + C)(A + C)
(b) f (A, B, C, D) = AB + ACD + BCD
(c) f (A, B, C, D) = (A + B)(C + D)(A + C)
54. De entre as funcoes booleanas seguintes, determinar as que sao equivalentes:
(a) f1 (A, B, C, D) = AC + BD + AB D
(b) f2 (A, B, C, D) = AB D + AB + ABC
(c) f3 (A, B, C, D) = BD + AB D + ACD + ABC
(d) f4 (A, B, C, D) = AC + AB C D + ABD + BCD
(e) f5 (A, B, C, D) = (B + D)(A + B)(A + C)
45
Resolu
c
ao resumida de alguns exerccios
Na resolucao dos exerccios 47.(b), 48.(b), 49.(a) e 49.(d) recorre-se `as tabelas da pagina 35.
Exerccio 47. (b):
f (A, B, C) = M1 M4 + m5 + m7 = (A + B + C)(A + B + C) + AB + ABC
A
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
C
0
1
0
1
0
1
0
1
A
1
1
1
1
0
0
0
0
B
1
1
0
0
1
1
0
0
C
1
0
1
0
1
0
1
0
A+B+C
A+B+C
1
0
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
0
1
1
1
0
1
1
0
1
0
0
1
1
0
.
1
0
1
1
0
1
1
1
ABC
ABC
0
0
0
0
0
1
0
0
0
0
0
0
0
1
1
0
f
1
0
1
1
0
1
1
1
46
B
D
0
10
0
1
0
1
11
1
1
15
13
0
1
14
12
1
1
0
1
0
0
1
0
1
0
C
A
10
0
0
1
1
11
0
0
1
1
15
13
1
1
1
1
14
12
1
1
1
1
47
A
C
AC 1
0
4
BC
0
0
A
C
0
1
1
1
0
00
6
A+C
B+C
B
D
A+B+C 0
0
A+B+C +D
A
10
1
0
1
11
0
1
1
1
15
13
0
0
0
1
4
14
12
A+B+C
1
0
A+B+C
48
B
D
0
A BCD
C
10
0
1
0
1
11
0
1
1
1
15
13
0
0
0
1
14
12
1
1 ABD
0
BCD
1 AC
C
A
10
1
1
1
0
11
0
1
1
0
15
13
0
0
1
0
14
12
0
0
1
0
Captulo 3
Matrizes
Livros para este captulo: [4] [5]
3.1
Matrizes: Motiva
c
ao.
Neste esquema, ja sabemos que a temperatura no dia 1 foi de 9.2, no dia 2 de 9.3, no dia 3
de 8.8, . . .
Se em vez de apenas querermos os dados de 2008 se tornar necessario guardar os dados
desde 2001, podiamos optar por definir uma variavel para cada ano, e cada uma destas
variaveis era construida conforme foi a h: a para o ano de 2001, b para o ano de 2002, c para
o ano de 2003, . . .
A ideia de matriz surge como uma forma de agrupar numa mesma variavel, dados com
49
50
tres dimensoes (neste caso: ano, dia do mes e temperatura). Vejamos como fica esta nova
variavel:
8.1 8.3 8.7 8.1 7.6 7.1 6.5 6.2 . . . . . .
6.9 7.3 7.5 7.5 7.4 5.4 4.9 4.1 . . . . . .
8.5 8.2 7.9 7.8 7.6 8.9 9.2 9.9 . . . . . .
..
..
..
..
..
..
..
.. . . . .
.
.
.
.
.
.
.
.
.
.
Se designarmos esta variavel por T , podemos convencionar que T (n, m) (n = 1, 2, . . . , 8
e n = 1, 2, . . . , 31) representa a temperatura em Viseu `as 12h no dia m de Dezembro de
200n . . . Assim sabemos ainda que a temperatura no dia 7 de Dezembro de 2003 foi de 9.2
graus.
esta a origem das matrizes e sua estrutura ordenada permite que possamos guardar,
E
mover, copiar, manipular, . . ., os dados consoante as necessidades.
Nesta exemplo, a nossa matriz tem 8 linhas (series de dados na horizontal) e 31 colunas
(series de dados na vertical) e, por isto, dizemos que a variavel e matricial de dimensao
8 31 ou, simplesmente, e uma matriz 8 31.
3.2
10
19
37
a estes dados e
12 13 9 13 9
22 21 19 23 25 .
42 43 39 41 45
51
10 12 13 9 13 9
A = 19 22 21 19 23 25 .
37 42 43 39 41 45
Existem varias formas de identificar cada um dos elementos de uma matriz mas, em comum,
todos fazem referencia `a designacao da matriz e aos no s da linha e da coluna onde esta o
elemento em causa. Por exemplo
[A]24 ; A(2, 4) ; A24 ; a24
sao representacoes validas para o elemento da linha 2 e coluna 4 da matriz A.
3.3
Matrizes especiais
Pela sua forma particular e pela sua aplicacao, existem matrizes com designacoes proprias,
como veremos nesta seccao.
Uma matriz de dimensao 1 n e uma matriz linha. Por exemplo:
A=
0 1 2 2
0
Por exemplo: B = 1 e uma matriz coluna de dimensao 3 1.
3
Sao matrizes quadradas as que tem igual n
umero de linhas e de colunas. Por exemplo:
0 1 2 2
1 0
1
1 1
1 3
1 0
;
;
9 2 3
1 2
1 1 0
3
7 4 1
1 0
0 1
Numa matriz quadrada, tera importancia saber identificar a sua diagonal principal . Por
exemplo, na matriz
0 1 2 2
1 1
1 0
A=
1 1 0
3
1 0
0 1
52
a diagonal principal e:
A=
-3 1
0 0
A=
0 0
0 0
0 1 2 2
1 1
1 0
3
1 -1 0
1 0
0 1
1 1
-1 0
0 1
e triangular superior.
Uma matriz quadrada e triangular inferior se todos os elementos abaixo da diagonal principal
forem 0. Por exemplo:
2 0 0
e triangular inferior.
A= 2 1 0
0 3 -1
Uma matriz quadrada e uma matriz diagonal se apenas tem elementos diferentes de 0 na
diagonal principal. Por exemplo:
-3 0 0
A= 0 0 0
e diagonal.
0 0 1
3.4
Operac
oes com matrizes
53
A igualdade de matrizes e definida de forma natural desta forma:
Duas matrizes A e B sao iguais se tem a mesma dimensao e os mesmos elementos nas
posicoes respectivas. Por exemplo
1 2 0
21 2 33
0 1 1
= 0
.
14 (1)3
0
1 0 1 33
5
0
1
33
A transposicao e u
til, nomeadamente, em duas situacoes: organizacao da informacao e
um operador un
operacoes aritmeticas. E
ario, isto e, o input e uma matriz. Se esta matriz
e A = [aij ] do dimensao m n entao o resultado e a matriz AT = [aji] de dimensao n m.
Por exemplo:
0
0
0 1 0
A=
AT = 1 1
0 1 1 23
0 1 32
Em situacoes varias e necessario somar matrizes: se A, B sao duas matrizes da mesma
dimensao, entao a sua soma e uma outra matriz da mesma dimensao cujas componentes sao
a soma das componentes respectivas em A e B. Por exemplo :
1
0
0 1
1 1
9 2 4 2 5 0
+
=
.
7 4 1 0 6 4
1 2
2 1
1 1
|
{z
} |
{z
} | {z }
A
24
42
A+B
42
Notas:
1 1
0
2
2 2 0 4
3 2 1 0 6 4 2 0
2
=
.
|{z} 1
2 1 4 2 4 2 8
0 1 1 2
0
2 2 4
|
{z
} |
{z
}
A
44
44
54
Exerccios:
55. Escreva a matriz C cujas componentes sao definidas por: cij = i2 j
56. Determine x e y de tal forma que
1 3
xy
3
(a)
=
2 4
2
x 1
T
0
6
2 1
y
x 2 1 1
(b) x 2 2
= 1 3
2 x2 2
3 y
5 2
4 6 2
y 0
2 3 1
= x 1 1
(c) 0 1
x 1 y2
3 2y 0
x 1
57. Determine a matriz D tal que: 2D +
5 8
1 3
4 7
1 5
58. Uma empresa tem tres fabricas. As vendas de cada uma estao representadas na matriz
seguinte, em que as colunas representam as quatro semanas de Fevereiro:
3.4.1
Produto de matrizes
O produto de matrizes e uma operacao que nos merece uma seccao autonoma por ter um
algoritmo mais demorado, embora simples, de executar. Comecemos pela questao seguinte:
uma empresa vende 4 produtos diferentes (p1 , p2 , p3 e p4 ) com os precos unitarios de 1.6, 2.2,
0.8 e 1.2, respectivamente. Como calcular o valor a pagar por uma compra de 2000 unidades
de p1 , 1250 unidades de p2 , 1350 unidades de p3 e 1850 unidades de p4 ? Evidentemente:
2000 1.6 + 1250 2.2 + 1350 0.8 + 1850 1.2 = 9250 .
55
Se as quantidades estiverem guardadas (de forma ordenada) numa matriz-linha
a = [2000 1250 1350 1850]
mente: a b ou ab .
1.6
2.2
0.8
1.2
2 3 1
1 1 0 1
3 2 0
A=
e B=
2
2 1 1 1
1 0
1 1 0
3
c11 = 1 1 0 1 = 1 2 + (1) 3 + 0 1 + 1 1 = 2 3 + 0 + 1 = 0
1
1
56
Isto e:
C=
0 c12 c13
c21 c22 c23
2
c12 = 1 1 0 1
= 1(3)+(1)(2)+00+(1)1 = 3+2+01 = 2
0
1
0
c13 = 1 1 0 1
= 1 (1) + (1) 0 + 0 2 + 1 0 = 1 + 0 + 0 + 0 = 1
2
0
E esta calculada a 1a linha de C:
C=
0 2 1
c21 c22 c23
Quanto `a 2a linha:
c21 =
c22 =
c23 =
2 1 1 1
2 1 1 1
2 1 1 1
2
3
1
1
= (2) 2 + 1 3 + 1 1 + (1) 1 = 4 + 3 + 1 1 = 1
3
2
0
1
1
0
2
0
= (2)(3)+1(2)+10+(1)(1) = 62+0+1 = 5
Logo:
C=
0 2 1
1 5
4
57
As operacoes que ja vimos, tem um conjunto de propriedades que em muitos casos sao semelhantes `as dos n
umeros reais e operacoes respectivas. No entanto, ha umas excepcoes
importantes. Algumas propriedades e excepcoes sao as que a seguir se enumeram:
Sejam A, B e C matrizes com dimensoes compatveis com as operacoes em causa:
A + B = B + A, a soma de matrizes e comutativa;
(A + B) + C = A + (B + C), a soma de matrizes e associativa;
A(B + C) = AB + AC e (B + C)A = BA + CA, propriedades distributivas;
(AB)C = A(BC), o produto de matrizes e associativa;
AB 6= BA, o produto de matrizes n
ao
e comutativa!;
AB = AC ; B = C
(A + B)T = AT + B T ;
(AB)T = B T AT .
Exerccios:
59. Sejam:
A=
1 0 1 2
0 2 3 1
; B=
1
1
1
0
2 0
1 0 2
1
1 1
; C = 1 2 1 2
1 2
0 1 0 1
2 1
Calcule:
(a) A B
(b) B C
(c) A 3B + C T
2 1 4
1 2 0
0 3 2
60. Sejam A =
, B=
, C=
.
2 3 2
0 1 1
1 0 1
Calcule: (a) A + B ; (b) A C ; (c) AB T + BC T ; (d) (2)B T C + 3AT A.
58
3.4.2
Uma aplica
c
ao do produto de matrizes
Nesta seccao vamos exmplificar uma aplicacao das matrizes e do produto de matrizes. Consideremos o esquema:
c1
b1
a1
b2
c2
d1
a2
b3
c3
d2
b4
A partir deste diagrama, definamos 3 matrizes:
P , em que pij = 1 se e possvel ir de ai para bj ; restantes casos pij = 0;
Q, em que qij = 1 se e possvel ir de bi para cj ; restantes casos qij = 0;
R, em que rij = 1 se e possvel ir de ci para dj ; restantes casos rij = 0.
Matricialmente:
a1
a2
b1 b2 b3 b4
1 1 1 0
1 1 1 0 P =
0 0 1 1
0 0 1 1
b1
b2
b3
b4
c1 c2 c3
1 1 0
0 1 0 Q =
0 1 1
0 0 1
c1
c2
c3
1
0
0
0
1
1
1
0
0
0
1
1
d1 d2
1 0
1 0
R = 1 1
1 1
0 1
0 1
1
1 1 1 0 0
PQ =
0 0 1 1 0
0
0
0
1
1
1 3 1
.
=
0 1 2
59
O elemento pqij indica-nos o n
umero de formas diferentes que existem para ir de ai a cj .
Por exemplo, ha apenas uma forma para ir de a2 ate c2 : a2 b3 c2 .
Ha 3 formas para ir de a1 ate c2 :
a1 b1 c2
a1 b2 c2
a1 b3 c2 .
Diagramas como o anterior sao ferramentas para muitas aplicacoes reais. O proximo captulo
motiva, exemplifica e esquematiza algumas dessas aplicacoes.
3.5
Introdu
c
ao ao software MatLab
O MatLab e um software muito poderoso e versatil, apto para as tarefas mais exigentes de
calculo matematico. A base do seu funcionamento sao as matrizes e, com alguns topicos,
podemos desde logo comecar a explorar a suas potencialidades. Ao iniciar o programa,
abre-se a janela de comandos.
As varias versoes do software podem ter algumas diferencas no layout mas em todas, ao
iniciar o software, o cursor fica depois do smbolo >>, indicando ao utilizador que o programa
aguarda a introducao de instrucoes. Para alem destas poderem ser introduzidas directamente
(por exemplo, calculos numericos), ha a possibilidade de utilizar funcoes ja implementadas,
escrever programas que interagem com o utilizador
input output ,
60
gravar o ambiente de trabalho, gravar as variaveis em utilizacao, . . .
Aqui vamos ver como criar, manipular e operar com matrizes. Introduzindo as matrizes
directamente no MatLab:
>>A=[-1 3 2;-1 0 2;-3 1 0]
significa que declaramos a variavel A que guarda a matriz
1 3 2
1 0 2 .
3 1 0
A seguir, enumeram-se algumas formas de manipular uma matriz e as instrucoes MatLab que
lhes correspondem:
Alterar o elemento da L2C3 (linha 2, coluna 3) da matriz A:
>>A(2,3)=-2
1 3 2
1 0 2 .
3 1 0
1 3 2
0 1 2 .
3 1 0
1 3 1
0 1 0 .
3 1 1
61
Acrescentar linhas a uma matriz:
>>B(3,:)=[0 1];B(4,:)=[-1 -4]
B=
1 1
0
0
.
0
1
1 4
1 1
0
0
B=
1
0
1 4
1 1
0
2
1 1
0
4
62
se A e B nao tem a mesma dimensao, retorna a mensagem de erro
Matrix dimensions must agree.
Matriz nula: >>zeros(4,3)
Q=
0
0
0
0
0
0
0
0
0
0
0
0
1 1 1 1
W = 1 1 1 1 .
1 1 1 1
Matriz diagonal: >>diag([1 2 3 4])
D=
1
0
0
0
0
2
0
0
0
0
3
0
0
0
0
4
1 0 0
id = 0 1 0 .
0 0 1
Ha outras matrizes que pela sua aplicabilidade vamos agora referir. Em Estatstica e na
Simulacao e necessario recorrer a dados aleat
orios. O MatLab permite a construcao deste
tipo de matrizes
>>al=rand(3,4).
3.6
Sistemas de Equa
c
oes Lineares (SEL)
(3.1)
63
e pode ser representado matricialmente. Se considerarmos:
x
b1
a11 a12 a13
A = a21 a22 a23 ; x = y ; b = b2 .
a31 a32 a33
z
b3
o sistema (3.1) escreve-se, simplesmente: Ax = b .
A e a matriz dos coeficientes, x a matriz das inc
ognitas e b a matriz dos termos independentes
do sistema. Por exemplo, o SEL
2x + 4y 3z = 4
3x + 3y + z = 8
x + 2y + 2z = 1
pode representar-se na forma Ax = b, em que
2 4 3
x
4
A= 3 3 1 ; x= y ; b= 8 .
1 2 2
z
1
Uma solucao de um SEL e uma sequencia ordenada de valores numericos, tal que, ao substituir no SEL as incognitas pelos valores que lhes correspondem, as igualdades do sistema
sao todas verdadeiras.
Um SEL pode ser
Impossvel (SI), se nao tiver solucoes;
Possvel determinado (SPD), se tiver um so solucao;
Possvel indeterminado (SPI) se tiver mais do que uma solucao.
Resolver um SEL consiste em calcular todas as suas solucoes ou concluir que o sistema e
impossvel. O MatLab pode ajudar-nos a calcular as solucoes de um SEL. Comecamos por
definir e declarar as matrizes A e b. A teoria diz-nos que a solucao de um SEL e dada por
inv(A) b, em que inv(A) e a inversa de A.
Se A e uma matriz quadrada de dimensao n, a inversa de A e uma matriz B (com a mesma
dimensao de A tal que A B = B A = eye(n). Chamamos a atencao de que ha matrizes
que nao tem inversa e que a inversa, se existir, e u
nica. Assim, designamos a inversa de A
1
por A .
64
Retomando a resolucao de um SEL, se este e representado matricialmente por Ax = b e
e possvel, entao a sua solucao e dada por x = inv(A) b. Caso nao seja o SEL nao seja
possvel, o MatLab retorna uma mensagem de erro e temos de averiguar se o SEL e impossvel
ou possvel indeterminado. Vejamos o exemplo anterior:
2 4 3
x
4
A= 3 3 1 ; x= y ; b= 8 .
1 2 2
z
1
A solucao e dada por
2 4 3
4
3
x=3
inv(A) b = inv
= 1
3 3 1
8
y = 1
1 2 2
1
2
z=2
2x + 4y 2z = 4
4x + 3y + z = 8
x + 2y 3z = 1
Declarando as matrizes A e b do sistema, a instrucao
>>inv(A)*b
retorna a mensagem de erro
Warning:
o que significa que a matriz A do sistema nao e invertvel, isto e, nao tem inversa. Vamos
resolver esta situacao recorrendo `a matriz aumentada do sistema, que podemos representar
por [A|b] e declarar no MatLab assim
>>C=[A b]
Neste caso, C e a matriz
Se executarmos a instrucao
>>rref(C)
2 4 2 4
4 3 1
8 .
1 2 3 1
65
obtemos
1 0 1 0
0 1 1 0 .
0 0 0 1
Au
ltima linha, lida em termos de um SEL, diz-nos que 0 = 1 o que significa que este SEL
e impossvel.
O sistema definido pelas matrizes
2
3 2
4
A = 1 1 1 ; b = 8
1
2 1
4
tambem da origem `a mensagem de erro anterior devido ao facto de A nao ter inversa. No
entanto, definindo a matriz aumentada (C)
>>rref(C)
da origem `a matriz:
1 0 1 20
A= 0 1 0
12
0 0 0
0
x z = 20
x = 20 + z
x z = 20
y = 12
y = 12
y = 12
0=0
Isto quer dizer que o SEL e possvel indeterminado (pela forma como esta resolvido, a
indeterminacao e na variavel z). O conjunto das solucoes do sistema e representado assim
{(20 + z, 12, z) : z R}
Exerccios:
66
61. Utilize o MatLab para calcular
A= 0
1
A + B T 3AT B , em que
2 3
1 0 1
3 1 ; B= 2 1 1
2 2
1 2 0
62. Ordene as matrizes seguintes de forma a ser possvel o produto e calcule esse produto.
1 0
1 0 1
1 1
1
A=
; B=
; C=
; D= 0 1
1 1 1
1 1
2
1 1
63. Resolva os SEL:
x+yz =0
2x z = 9
2x y 3z = 4
(a) x y + z = 2 ; (b) y + 2z = 5
; (c) x y + z = 1
x y z = 4
2x y 3z = 4
x 4z = 2
3.7
Matrizes Esparsas
1 1 0 0 0 0
0 2 0 0 0 0
0 1 1 0 0 0
A=
0 0 0 1 0 0
0 0 0 1 2 0
0 0 0 0 0 1
Esta matriz tem 36 elementos, dos quais 27 sao zeros. Vejamos como representar esta matriz
no Matlab. Os elementos diferentes de zero sao:
C(1, 1) = 1;
C(1, 2) = 1;
C(2, 2) = 2;
C(3, 2) = 1;
67
C(3, 3) = 1;
C(4, 4) = 1;
C(5, 4) = 1;
C(5, 5) = 2;
C(6, 6) = 1;
Definam-se no MatLab:
>>P1=[1 1 2 3 3 4 5 5 6];
>>P2=[1 2 2 2 3 4 4 5 6];
>>P3=[1 1 2 1 1 1 1 2 1];
em que P1 e a sequencia ordenada das linhas que contem os elementos diferentes de 0 em A;
P2 e a sequencia ordenada das colunas que contem os elementos diferentes de 0 em A; P3 e
a sequencia ordenada dos elementos diferentes de 0 em A. A instrucao
>>SA=sparse(P1,P2,P3,6,6) cria na memoria do MatLab a matriz SA. A grande vantagem e a poupanca de recursos. Definamos a matriz F A, que e a versao expandida de SA:
FA=full(SA)
Vejamos o espaco de memoria em uso pelas variaveis ja declaradas:
>>whos
SA ocupa menos de metade do espaco que F A. Em matrizes de dimensao superior (varias
dezenas ou centenas de linhas) a poupanca, em termos percentuais, e ainda maior.
Exerccios:
64. Defina, no MatLab, as matrizes seguintes utilizando a instrucao sparse. Confirme o
seu resultado utilizando a instrucao full.
1 1 0 0
0
0
0
2 0 0 2 0
0 1 0 0 1 0
(a) A =
0
0 0 1 2
0
0
1 0 0
2
0
1 0 0 0
0 3
68
(b) B =
0 0 0 0
0 1
0 2 0 0
1 0
0 0 0 0 1 0
0 0 1 1 0 0
0 1 0 0
0 0
1 0 0 3 0 0
b1
c1
d1
a1
b2
c2
d2
a2
b3
c3
d3
e1
e2
b4
Determine, utilizando os conhecimentos que tem de matrizes esparsas em MatLab , o
n
umero de formas diferentes para ir de a1 ate e2 e de a2 ate e1 .
Captulo 4
Teoria dos Grafos
Livros para este captulo: [4] [6]
4.1
Introdu
c
ao.
senta
c
ao
Grafo (n
ao orientado) e sua repre-
c1
a1
b2
c2
d1
a2
b3
c3
d2
b4
pode ser o resumo de uma informacao recolhida nos mais variados contextos, consoante estejamos a considerar: mapa de estradas, diagramas de circuitos, conexoes entre componentes
de uma rede, . . .
este o ponto de partida para o estudo de grafos: um conjunto de objectos (a que chamamos
E
vertices) e de linhas (a que chamamos arestas) que os unem. Mais rigorosamente:
Um grafo consiste num conjunto finito de vertices (ou pontos, ou n
os) e num conjunto
finito de arestas (ou arcos). Cada uma das arestas tem um vertice em cada uma das suas
extremidades.
69
70
Vertice: b1
Dois vertices unidos por uma aresta: a
O conjunto de vertices do grafo G vai ser denotado por V (G) e o conjunto das suas arestas
por E(G). Cada aresta e representada pelos seu vertices. Por exemplo, reltivamente ao grafo
G
a
c
b
d
V (G) = {a, b, c, d, e, f, g} ;
E(G) = {de, da, ae, eb, f c, cg, f g} .
Os grafos anteriores sao nao orientados no sentido em que de e ed representam a mesma
aresta. Esta aresta e definida pelos dois vertices.
Na linguagem de grafos, referimos ainda que dois vertices sao adjacentes se existe uma
aresta a uni-los e uma aresta e incidente num vertice se esse vertice e um dos dois que define
a aresta.
Nota 4.1. Fazemos, neste ponto, a referencia aos grafos orientados. Diferem dos anteriores
pelo facto de as arestas terem orientac
ao. Graficamente as arestas s
ao setas que unem o
vertice inicial ao vertice final. Neste sentido, a aresta de e distinta da aresta ed. Sendo H
o grafo:
a
c
b
d
temos que V (H) = {a, b, c, d, e, f, g} e E(H) = {da, ae, de, eb, f c, f g, cg}. Este tipo de grafo
e um digrafo.
No que se segue, todos os grafos sao nao orientados.
4.2
Conceitos fundamentais
Ha ocasioes em que se torna necessario considerar grafos em que ha pares de vertices unidos
por mais do que uma aresta (arestas paralelas) e outros em que, para alem de arestas
71
paralelas, tem arestas que incidem no mesmo vertice com ambas as extremidades (lacete ou
loop). Estes grafos sao os multigrafos e os pseudografos. Respectivamente:
x
z
Os grafos que iremos estudar sao grafos simples, isto e, que nao tem arestas paralelas nem
loops.
Um caso particular sao os grafos completos. Estes tem n vertices e todos os seus vertices
sao adjacentes. Para cada n N, representamos o grafo completo respectivo por Kn . Aqui
ficam alguns exemplos:
6
4
2
7
2
8
3
1
9
15
10
6
14
11
13
12
Em grafos com um n
umero grande de vertices e de arestas, pode ainda haver necessidade de
considerar grafos mais pequenos dentro daqueles. Se um grafo G e definido pelos conjuntos
V (G) e E(G), um seu subgrafo H e definido por um subconjunto V (H) de V (G) e um
subconjunto E(H) de E(G) de arestas cujos vertices estejam em V (H). Por exemplo, se G
e o grafo completo
1
2
3
entao
sao subgrafos de G.
72
4.3
Caminhos de um grafo
Vamos agora estudar com mais pormenor um dos pontos essenciais da Teoria de Grafos:
sequencias de arestas que formam caminhos.
Seja G e um grafo simples. Um caminho entre dois vertices v1 e vn e uma sequencia de
arestas em que:
a primeira aresta e incidente com v1 ;
em cada aresta (excepto na primeira) um dos seus vertices coincide com um dos vertices
da aresta anterior;
au
ltima aresta e incidente com vn .
Vamos considerar o grafo G seguinte e identificar, para alem dos vertices, tambem as arestas:
a
v1
v2
c
d
e
v3
v4
Exemplos de caminhos: dcaf , bf e , af ecb . Num caminho pode haver repeticao de arestas.
Por exemplo no caminho dcbef cb . O comprimento de um caminhos e o n
umero de arestas
que o compoem. Os caminhos anteriores tem comprimentos 4, 3, 5 e 7, respectivamente. A
distancia entre dois vertices e o menor dos comprimentos de todos os caminhos que unem
esses vertices. Claro que um caminho pode ser definido, equivalentemente, pelos vertices
das arestas. Nos quatro exemplo anteriores, a relacao entre a representacao de um caminho
usando as arestas ou os vertices e a seguinte
Arestas
dcaf
bf e
af ecb
dcbef cb
vertices
v3 v1 v2 v2 v4
v1 v2 v4 v1
v2 v2 v4 v1 v2 v1
v3 v1 v2 v1 v4 v2 v1 v2
73
num caminho em que existem loops, ha repeticoes na sequencia de vertices;
num grafo em que ha arestas paralelas, duas sequencias diferentes de arestas podem
corresponder `a mesma sequencia de vertices;
num grafo sem arestas paralelas nem loops, a cada sequencia de arestas corresponde
uma so sequencia de vertices. O recproco tambem e verdadeiro.
Os caminhos podem ter caractersticas que os tornem interessantes do ponto vista das
aplicacoes. Definamos alguns tipos particulares de caminhos:
Caminho simples e aquele que nao tem arestas repetidas;
Caminho elementar e aquele que nao tem vertices repetidos.
Num caminho fechado os primeiro e u
ltimo vertices sao o mesmo. No grafo anterior, baf ecb
e abef bc , com as sequencias de vertices v1 v2 v2 v4 v1 v2 v1 e v2 v2 v1 v4 v2 v1 v2 , respectivamente,
sao caminhos fechados. Um ciclo e um caminho fechado eficiente, no sentido de nao serem
repetidas arestas e de os vertices que o definem serem todos distintos `a excepcao do primeiro
e do u
ltimo (que sao o mesmo, pela defincao de caminho fechado). Logo, f eb e um ciclo. No
caminho fechado dcf ed uma aresta e repetida e em caf e (sequencia de vertices: v1 v2 v2 v4 v1 )
ha a repeticao de v2 .
Um grafo acclico e aquele que nao tem ciclos. Observe-se o grafo
a
v2
v1
v4
v3
v5
g
v8
f
v7
h
v9
v10
k
facil concluir que este grafo tem um ciclo. Do mesmo modo
E
a
v2
v1
v4
v3
g
v8
v5
v10
v11
v6
f
v7
h
v9
v6
v11
74
e acclico.
Um dos problemas mais antigos sobre grafos e o das pontes de K
onigsberg e consiste no
seguinte: a cidade de Konigsberg e atravessada por um rio e, num dado local, ha duas ilhas.
Como dar um passeio em que atravessemos todas pontes exactamente uma vez, terminando
a caminhada no ponto de partida?
b
d
O matematico suico Leonhard Euler resolveu este problema em 1736. Sera o leitor capaz de
fazer o mesmo?
No grafo anterior, os vertices representam terra firme enquanto que as arestas representam
as pontes. O problema consiste em responder `a questao: existe um caminho fechado em que
todas as arestas sao utilizadas exactamente uma vez?
Um caminho com estas caractersticas chama-se ciclo de Euler . Sera que o grafo anterior
tem um ciclo de Euler? Se sim, o problema esta resolvido; se nao, o problema e impossvel.
Para responder a isto, temos de introduzir outro conceito: o de grau de um vertice. O
grau e o n
umero de arestas que incidem nesse vertice. No caso em estudo:
grau(a) = 3 ; grau(b) = 5 ; grau(c) = 3 ; grau(d) = 3 .
O que Euler mostrou foi que para um grafo ter um ciclo de Euler todos os vertices tem de
ter grau par. Um raciocnio simples pode ajudar-nos a perceber este facto: inicie o percurso
75
num qualquer vertice e va de vertice para vertice eliminando a aresta pela qual caminhou.
Ou seja, em cada vertice apaga a aresta pela qual chegaao vertice e aquele pela qual
sai. E cada vertice elimina 2 arestas de cada vez que por ele passa. No vertice de partida,
independentemente do n
umero de arestas (sempre em n
umero par!), a primeira e a u
ltima
aresta sao tambem em n
umero par. Assim, podemos concluir que o problema das pontes
atras descrito e impossvel. Por outro lado, nao e suficiente que todos os vertices tenham
grau par para exista um ciclo de Euler. Vejamos este caso:
a
c
b
e
Apesar de todos os vertices terem grau par, o grafo nao e conexo, isto e, ha pares de vertices
nao ligados por caminhos. Por exemplo, nao ha um caminho que ligue os vertices a e c. Para
que fizue bem explcito aquilo que foi dito, enunciemos o
Teorema 4.2. Num grafo conexo existe um ciclo de Euler se, e s
o se, todos os vertices tem
grau par.
4.4
Exerccios Propostos
t
s
G:
v
z
H:
u
J:
76
67. Quais dos caminhos descritos no exerccio 66. sao caminhos fechados?
68. Quais dos caminhos descritos no exerccio 66. sao ciclos?
69. No grafo G, escreva a sequencia de vertices do caminho mais curto que liga os pares
de vertices seguintes. Em cada alnea, indique a distancia.
(a) s e v
(b) s e z
(c) u e y
(d) v e w
70. Para cada par de vertices do exerccio 69., descreva todos os caminhos simples que
ligam os vertices e indique o mais longo.
71. Quais dos grafos G, H, J tem ciclos de Euler? Para os que nao tem, diga porque; para
os que tem, indique um.
72. Verdadeiro ou Falso:
(a) Se ha uma aresta de u para v entao ha uma aresta de v para u .
(b) Se ha uma aresta do vertice u para o vertice v e uma aresta do vertice v para
o vertice w, entao ha uma aresta do vertice u para o vertice w.
73. O mesmo que o exerccio 72. substituindo aresta por caminho.
74. O mesmo que o exerccio 72. substituindo aresta por caminho de comprimento par.
75. O mesmo que o exerccio 72. substituindo aresta por caminho de comprimento mpar.
76. De um exemplo de um grafo com os vertices x, y, z que satisfaca as propriedades:
ha um ciclo que contem os vertices x e y ;
ha um ciclo que contem os vertices y e z ;
nenhum ciclo contem os vertices x e z .
77. (a) Para cada um dos grafos G, H, J calcule
i. a soma dos graus de todos os vertices;
ii. o n
umero de arestas.
(b) Observe a relacao enter a soma de todos os grause o n
umerode arestas de um
grafo.
(c) A soma dos graus de todos os vertices pode ser um n
umero mpar?
77
4.5
Matriz de adjac
encia de um grafo
Considere-se o grafo
v1
v2
v3
v4
v5
v6
v7
v8
A=
0
0
1
1
0
0
1
0
0
0
0
0
1
1
0
1
1
0
0
0
0
0
1
0
1
0
0
0
1
0
1
0
0
1
0
1
0
0
0
1
0
1
0
0
0
0
0
1
1
0
1
1
0
0
0
0
0
1
0
0
1
1
0
0
Aqui consideramos grafos sem arestas paralelas e sem loops. Esta matriz e a matriz de
adjacencias do grafo G. Note-se que se, em alternativa, nos for dada uma matriz de adjacencias de um grafo, podemos representar o grafo por um diagrama. Neste aspecto, toda
a informacao do grafo esta na matriz e vide-versa.
4.6
Pot
encias da matriz de adjac
encia e algumas propriedades
A matriz de adjacencias de um grafo tem uma aplicacao pratica que se utiliza em contagem
de caminhos.
Dada uma matriz de adjacencias M o elemento da posicao (i, j) da matriz M k , k IN
indica-nos o n
umero de caminhos de comprimento igual a k distintos que ligam o vertice
ai ao vertice aj (no nosso caso, nao faz sentido considerar k = 0) .
78
No caso da matriz anterior:
3
A =AAA=
4
1
5
6
1
0
5
1
1
4
0
1
6
5
1
5
5
0
2
2
2
0
5
0
6
1
2
2
5
2
6
1
1
6
2
5
2
2
1
6
0
5
0
2
2
2
0
5
5
1
5
6
1
0
4
1
1
5
0
1
6
5
1
4
4.7
Exerccios Propostos
H:
v2
v3
v4
v5
0 0 1 1
0 0 1 1
1 1 0 0
1 1 0 0
0 0 0 0
Adj(G) =
0 0 1 0
0 1 0 0
0 0 0 0
0 0 0 0
0 0 0 1
80. Determine:
v3
J:
v1
v2
v4
v5
v7
v8
seja
0
0
0
0
0
1
0
1
1
0
0
0
1
0
1
0
0
1
0
0
0
1
0
0
0
0
0
1
0
1
0
0
0
0
1
1
1
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
1
0
0
0
v6
79
(a) Quantos caminhos de comprimentos 3 ha entre os vertices v2 e v5 dos grafos do
exerccio 78.
(b) Quantos caminhos de comprimentos 5 ha entre os vertices v1 e v5 dos grafos do
exerccio 78.
(c) Quantos caminhos de comprimentos 7 ha entre os vertices v2 e v5 do grafo H do
exerccio 78.
(d) Quantos caminhos de comprimentos 8 ha entre os vertices v2 e v7 do grafo J do
exerccio 78.
81. Desenhe o grafo G caracterizado por:
V (G) = {v1 , v2 , v3 , v4 , v5 , v6 , v7 }
E(G) = {v1 v2 , v2 v3 , v3 v5 , v5 v6 , v5 v7 , v2 v4 , v4 v6 , v6 v7 , v1 v7 }
(a) Determine o grau de cada vertice de G .
(b) Escreva a matriz de adjacencias do grafo e determine quantos caminhos de comprimento 5 existem entre os vertices v1 e v6 .
4.8
Um grafo com pesos e um grafo em que cada aresta tem um valor (nao negativo) associado.
Este valor pode corresponder `a distancia entre os dois vertices, o custo para ir de um vertice
a outro, o tempo gasto. . . Pretendem resolver-se problemas em que se encontrem os percursos
mais baratos, mais rapidos ou mais curtos. . .
Vamos supor que o mapa de Portugal e o da figura seguinte, existem apenas as estradas
desenhadas e as distancias sao as indicadas. Qual o trajecto mais curto de Faro a Viana do
Castelo?
Este mapa pode ser representado por um grafo com pesos em que
os vertices sao as cidades ;
as arestas sao as estradas ;
os pesos sao as distancias .
Vamos agora descrever um algoritmo que resolve problemas como os referidos anteriormente:
o Algoritmo de Dijkstra. Este e um algoritmo eficiente, no sentido em que encontra uma
solucao para o problema num n
umero finito de passos. Na verdade, permite-nos saber qual
o caminho mais curto e a soma dos pesos associados a esse caminho. No caso do mapa de
80
Portugal, permite-nos calcular o trajecto mais curto entre as duas cidades e a respectiva
distancia.
Seja G um grafo com pesos e V (G) = {v1 , v2 , v3 , . . . , vk } e c(vi , vj ) o peso da aresta que
liga vi a vj . Vejamos uma forma de esquematizar o Algoritmo de Dijkstra, para o calculo
do caminho mais curto entre v1 e vn :
1. L(v1 ) = 0 e L(vi ) = , i > 1 e S = {v1 } e v1 = v ;
2. Enquanto vn
/ S fazer:
(a) para todos os vertices adjacentes a v que nao pertencem a S fazer L(vi ) =
L(v ) + c(v , vi ) ;
(b) escolher o menor dos valores L(vi ) calculados; fazer o vertice correspondente = v
e incluir v em S;
81
3. o comprimento do caminho mais curto entre v1 e vn e L(vn ).
Enquanto fazemos estes calculos, podemos etiquetar os vertices com a sequencia de vertices
que a ele conduzem atraves do Algoritmo de Dijkstra para, no final, termos tambem a
descricao do caminho mais curto.
Vejamos um exemplo: calcular a distancia e o caminho mais curto entre os vertices a3 e a4
do grafo:
5
a1
a2
4
6
8
a3
a4
1
2
2
a5
10
a6
Ao vertice inicial atribuimos o valor 0: L(a3 ) = 0 (aos outros, para fins computacionais,
atribuimos o valor )
A seguir consideramos os vertices adjacentes a a3 e calculamos:
L(a1 ) = L(a3 ) + 4 = 4 ; L(a5 ) = L(a3 ) + 2 = 2
e como o menor destes valores e 2, o vertice a5 fica com o valor 2 fixo (caminho: a3 a5 ). Em
seguida consideramos os vetices adjacentes a a5 :
L(a1 ) = L(a5 ) + 1 = 3 ; L(a2 ) = L(a5 ) + 8 = 10 ; L(a6 ) = L(a5 ) + 10 = 12
82
4.9
Exerccios Propostos
v2
v4
v1
7
9
v3
v6
9
v5
v7
83. Encontre o trajecto mais curto entre as cidades de Faro e Viana do Castelo, no mapa
anterior.
84. Uma empresa de Viana do Castelo com delegacao em Faro tem necessidade de utilizar
uma rede informatica para a transmissao de dados. Para isso, conta com um mapa de
distancias, outro com o tempo de transmissao e outro com o custo mensal de utilizacao
da rede entre as varias cidades. Os mapas estao descrito a seguir. Determine:
(a) a distancia minma (e o caminho correspondente) que os dados percorrem entre
as cidades;
(b) o custo mnimo mensal (e o caminho correspondente);
(c) o tempo mnimo de transmissao (e o caminho correspondente) por unidade de
quantidade de dados.
50
V.Castelo
150
90
Aveiro
190
275
70
Santar
em
Braga
185
V iseu
150
120
Lisboa
150
Evora
175
250
Sines
160
F aro
235
P ortalegre
83
Mapa de distancias
75
V.Castelo
250
125
Aveiro
Braga
125
V iseu
175
450
105
Santar
em
75
100
Lisboa
150
Evora
90
Sines
150
80
Mapa de custos
F aro
110
P ortalegre
84
5
V.Castelo
25
15
Aveiro
Braga
8
V iseu
20
25
10
Santar
em
15
Lisboa
10
Evora
12
Sines
8
12
F aro
Mapa de tempos
5
P ortalegre
Bibliografia
[1] Carlos Serro, Sistemas Digitais, 1st Press - Instituto Superior Tecnico, 2003, ISBN
972846925.
85
Indice Remissivo
Algebra
de Boole, 22
estrutura algebrica, 22
aresta, 69
loop, 71
incidente, 70
lacete, 71
paralela, 71
associatividade, 23
axioma, 22
formas canonicas, 29
conjuntiva, 29
disjuntiva, 29
funcao booleana, 24
base, 1
bits, 10
caminho, 72
comprimento, 72
ciclo de Euler, 74
complemento, 23
comutatividade, 22
conectivos logicos, 16
conjuncao, 17
conjunto, 22
contagem de caminhos, 77
conversao entre bases, 7
diagonal principal, 51
digrafo, 70
disjuncao, 16
disjuncao exclusiva, 17
distributividade, 22
divisoes sucessivas, 6
elemento neutro, 22
equivalencia, 19
erro, 10
grafo, 69
completo, 71
conexo, 75
multigrafo, 71
nao orientado, 70
orientado, 70
pseudografo, 71
simples, 71
grau, 74
idempotencia, 22
implicacao, 18
index, 16
Leis de Morgan, 23
literal, 41
metodo
algebrico, 30, 33
das tabelas de verdade, 32, 34
mapas de Karnaugh, 35
Matlab
full, 67
inv, 64
rref, 65
sparse, 67
whos, 67
86
87
matriz, 49
aumentada do sistema, 64
coluna, 51
componentes, 50
diagonal, 52
elementos, 50
entradas, 50
esparsa, 66
igualdade, 53
inversa, 63
linha, 51
produto, 54
produto escalar, 53
quadrada, 51
soma, 53
transposicao, 53
triangular inferior, 52
triangular superior, 52
maxtermos, 29
mintermos, 29
operacao binaria, 22
operador booleano, 23
operadores logicos, 16
produto logico, 25
produtos de somas, 29
proposicao, 15
proposicao dual, 23
sistema
binario, 3
de numeracao, 1
decimal, 1
hexadecimal, 3
octal, 3
soma logica, 25
somas de produtos, 29
subgrafo, 71
tabela da adicao, 11
tabela de verdade, 16
tautologia, 20
termos produto, 29
termos soma, 29
vertice, 69
adjacente, 70
distancia, 72
valor logico, 15