Você está na página 1de 95

Apontamentos para a Unidade de Formacao:

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 . .

2.2 Definicao e propriedades de Algebra


de Boole
2.3 Funcoes Booleanas e Tabelas de verdade . . .
2.4 Formas canonicas . . . . . . . . . . . . . . . .
2.5 Mapas de Karnaugh . . . . . . . . . . . . . .
2.6 Simplificacao de funcoes Booleanas . . . . . .
2.7 Exerccios Propostos . . . . . . . . . . . . . .
3 Matrizes
3.1 Matrizes: Motivacao. . . . . . . . . . . . . . .
3.2 Matrizes: Primeiras definicoes. . . . . . . . . .
3.3 Matrizes especiais . . . . . . . . . . . . . . . .
3.4 Operacoes com matrizes . . . . . . . . . . . .
3.4.1 Produto de matrizes . . . . . . . . . .
3.4.2 Uma aplicacao do produto de matrizes
3.5 Introducao ao software MatLab . . . . . . . .
3.6 Sistemas de Equacoes Lineares (SEL) . . . . .
3.7 Matrizes Esparsas . . . . . . . . . . . . . . . .
3

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

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

4 Teoria dos Grafos


4.1 Introducao. Grafo (nao orientado) e sua representacao . .
4.2 Conceitos fundamentais . . . . . . . . . . . . . . . . . . .
4.3 Caminhos de um grafo . . . . . . . . . . . . . . . . . . . .
4.4 Exerccios Propostos . . . . . . . . . . . . . . . . . . . . .
4.5 Matriz de adjacencia de um grafo . . . . . . . . . . . . . .
4.6 Potencias da matriz de adjacencia e algumas propriedades
4.7 Exerccios Propostos . . . . . . . . . . . . . . . . . . . . .
4.8 Problemas do Caminho mais Curto . . . . . . . . . . . . .
4.9 Exerccios Propostos . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

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.

Nesta seccao, sera abordada a forma de representacao de n


umeros em diferentes bases. No
dia-a-dia (populacao de uma cidade, peso de uma pessoa, temperaturas, precos no supermercado, . . .) a base que e (quase) sempre utilizada e a decimal, ou, a base 10 . Isto quer
dizer que dispomos de 10 dgitos para descrever qualquer n
umero que necessitemos. No entanto, existem determinadas situacoes em que outras bases sao utilizadas. Por exemplo, se
neste momento sao 15 horas entao daqui a 20 horas sao... 11 horas, e nao 35! Isto acontece
porque dividimos o dia em 24 horas e apenas faz sentido falar numa hora compreendida entre
0 e 23. O sistema horario e de base 24. Cada hora, por seu lado, e dividida em 60 minutos e, por isto, so falamos em minutos de 0 a 59... Temos, neste caso, um sistema de base 60.
Cada base define um sistema de numeracao e, apesar de utilizarmos varios no nosso quotidiano, e fundamental que todos tenham caractersticas comuns para que nos possamos adaptar
a cada um deles sem grandes problemas. Independentemente do sistema de numeracao que
utilizemos, este deve:
1. representar um conjunto grande de n
umeros (n
umeros naturais, n
umeros fraccionarios,
n
umeros reais, . . .);
2. ser biunvoco;
3. manter as propriedades algebricas e aritmeticas dos n
umeros.
1

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:

10000 1000 100 10 1

Ou entao, utilizando a notacao base 10:

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
..
.

Tabela 1.1: Os primeiros n


umeros decimais convertidos em n
umeros binarios
Tendo por base os esquemas anteriores, e facil converter um n
umero escrito em base 2 para
base 10. Basta atendermos a que, neste caso, temos:

24

23

22

21

20

Assim, para converter o n


umero (101001)2 em decimal:
32 16
1 0

8 4
1 0

2 1
0 1

Calculos: 1 32 + 1 8 + 1 1 = 41 . Isto e: (101001)2 = (41)10 = 41 .


Aquilo que ja fizemos para a numeracao em base 2 pode ser feito noutras bases e, nesta
seccao, vamos ainda analisar as numeracoes em base 8 (sistema octal ) e em base 16 (sistema
hexadecimal ).
Quando trabalhamos em base 8, os dgitos que utilizamos sao: 0, 1, 2, 3, 4, 5, 6, 7. Nesta

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
..
.

Tabela 1.2: Os primeiros n


umeros decimais convertidos em base 8
base, os primeiros n
umeros inteiros representam-se conforme esta descrito tabela seguinte:
Tal como foi feito atras, vamos considerar as sucessivas potencias de 8
80 , 81 , 82 , 83 , . . .
e ver como podemos visualizar um n
umero escrito nesta base:

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

Muito utilizada em Informatica e a base 16. Os dgitos desta base sao:


0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
e a correspondencia com a base decimal e a seguinte:
base 10
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
..
.

base 16
0
1
2
3
4
5
6
7
10
9
A
B
C
D
E
F
10
11
12
..
.

Tabela 1.3: A correspondencia base 10 base 16


Como nos casos anteriores, consideremos as sucessivas potencias de 16
160 , 161 , 162 , 163 , . . .
Esquematicamente:

164

163

162

161

160

Por exemplo: a que n


umero corresponde, base decimal, o n
umero (2C7)16 ? Vejamos:
162
2

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.

Vimos na seccao anterior como converter n


umeros escritos nas bases 2, 8 e 16 em n
umeros
de base decimal. Poe-se-nos agora a questao de como fazer a conversao no sentido inverso.
Isto e: como escrever o (823)10 (em base decimal) em base 2? E em base hexadecimal?
Para responder ao problema acima exposto, existe um metodo simples e rapido que permite, atraves de divisoes sucessivas, obter o resultado pretendido. Este metodo, pode ser
resumido neste quadro, em que b representa a base para a qual pretendemos converter o
n
umero dado em base 10:

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.

Vamos agora ver um exemplo de aplicacao deste algoritmo.


Exemplo 1.1. escrever (522)10 na base 2
Vejamos:

522 a dividir por 2 Q = 261


261 a dividir por 2
Q = 130
130 a dividir por 2
Q = 65
65 a dividir por 2
Q = 32
32 a dividir por 2
Q = 16
16 a dividir por 2
Q=8
8 a dividir por 2
Q=4
4 a dividir por 2
Q=2
2 a dividir por 2
Q=1
1 a dividir por 2
Q=0
STOP

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 .

Acabamos de ver como converter n


umeros nas bases 2, 8 e 16 em base decimal e tambem
o processo inverso. No entanto, podemos converter um n
umero em base 8 num n
umero em
base 2 sem ter de passar pelo correspondente em bade 10. As conversoes podem fazer-se
directamente, no sentido das setas do diagrama seguinte:
8

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

Tabela 1.4: Tabela de conversoes

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

Ate agora apenas analisamos as representacoes e conversoes de n


umeros inteiros positivos em
diferentes bases. Nesta seccao, analisaremos os n
umeros nao inteiros (positivos e negativos)
e dos problemas que essa representacao coloca. Por exemplo, como representar 0.625 em
numeracao binaria? E em hexadecimal?

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

Se o nosso objectivo for o de escrever um um n


umero decimal na sua representacao binaria,
utilizamos um metodo que designaremos por multiplicac
oes sucessivas. Ilustremos este
metodo com um exemplo: a conversao de 0.40625 em formato binario.
0.40625 2 = 0.8125 guardo o 0
0.8125 2 = 1.625 guardo o 1
0.625 2 = 1.25 guardo o 1
0.25 2 = 0.5 guardo o 0
0.5 2 = 1.0 guardo o 1
STOP
Conclusao: 0.40625 = (0.01101)2 .
Esta conversao esta, obviamente, dependente da quantidade de dgitos (bits) que temos
disponveis para a representracao dos n
umeros. Por exemplo, se apenas tivermos disponveis
4 casas decimais para estas representacoes entao os n
umeros (representados em base decimal) 0.8125 e 0.8524 tem exactmente a mesma representacao binaria 0.1101. A (grande)
diferenca e que no primeiros caso a representacao e exacta, enquanto que no segundo apenas
conseguimos ter uma aproximacao, com um erro associado.
Neste caso, o erro e assim calculado
0.8524 0.8125
0.0491 = 4.91% ,
0.8125
o que, em muitos casos, e um erro inadmissvel e coloca em causa a validade dos resultados
obtidos.

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

Para alem de representar n


umeros (informac
ao) em diversas bases, importa que possamos
efectuar operacoes aritmeticas com esses n
umeros, independentemente da base em que ele
esta representado. Em seguida, veremos como efectuar as operacoes de adicao, subtraccao,
multiplicacao e divisao binarias, isto e, com os n
umeros representados na base 2.
Estas operacoes seguem algoritmos muito parecidos aqueles que ja conhecemos, os de base
decimal. Vejamos, para nos ajudar, a tabela da adicao de n
umeros binarios:
+2 0 1
0 0 1
1 1 10
Sabendo isto, passemos a um exemplo de como somar dois n
umeros binarios.
Qual o resultado de (10010011011010)2 +2 (1001011010)2.
O algoritmo e o mesmo da soma em base decimal:

+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

Assim: (10010011011010)2 +2 (1001011010)2 = (10011100111100)2 .


Vejamos agora atraves de um exemplo, como proceder `a subtraccao:
(1001101101)2 2 (10100011)2.

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

Logo: (1001101101)2 2 (10100011)2 = (111001010)2


Vemos, a seguir, como efectuar a multiplicacao binaria:
(10101)2 2 (110)2 = ?
Tal como atras, vejamos a tabela da multiplicacao:
2 0 1
0 0 0
1 0 1
O algoritmo, neste caso, e como o do caso decimal:

+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

Para terminar, referimos apenas que a divisao de dois n


umeros binarios se faz tal qual se
tratassem de n
umeros decimais.

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

A representacao em complemento para 2 surgiu da neessidade de optimizar os recursos de


uma maquina e, na pratica, e util para a execucao de subtraccoes. Como? Transforma uma
subtracao a-b numa soma a+(-b) e tira partido das propriedades da adicao para efectuar
esta operacao. Na verdade, esta operacao pode ser definida qualquer seja a base numerica
em causa, mas aqui vamos apenas estudar o caso da representacao em complemento para
dois. Por ser a linguagem utilizada pelos computadores, e especialmente u
til dominar esta
tecnica. Para melhor a entender, avancemos com o primeiro exemplo: calcular
100110110 010100101.
Note-se que os n
umeros tem o mesmo n
umero de algarismos, ou bits.
O primeiro passo e calcular o complemento de 010100101. No caso da base binaria isto
e, simplesmente, transformar os zeros em uns e os uns em zeros. Assim, o complemento
de 010100101 e 101011010. A seguir somam-se 100110110 com o complemento anterior:
100110110 + 101011010 = 1010010000. Soma-se 1 a este resultado e no caso de a soma
ter um n
umero de bits superior ao das parcelas, elimina-se o um mais `a esquerda. Entao:
100110110 010100101 = 010010001 .

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

Na vida do dia-a-dia, na definicao de condicoes varias, na transmissao de uma mensagem,


na programacao, etc, ha um conjunto de regras que todos seguimos. Na tentativa de precisar todos estes conceitos surge a necessidade de definir e utilizar regras que nao oferecam
d
uvidas acerca do seu significado.
Assim, diremos que uma proposicao e uma expressao sobre a qual se pode dizer que e verdadeira ou falsa. De outro modo, e sempre possvel indicar o valor l
ogico de uma proposicao:
verdade ou falso. Por exemplo, as expressoes seguintes sao proposicoes:
Lisboa e a capital de Portugal.
O sol e um planeta.
2 + 2 = 1000.
O conjunto {0, 1, 2, 3, 4} tem 5 elementos.
com valores logicos, respectivamente: verdade, falso, falso, verdade.
Por outro lado, existem muitas expressoes que nao sao proposicoes, por exemplo:
Que horas sao?
Cuidado com o cao.
O livro e interessante.
15

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

Tabela 2.1: Tabela de verdade do operador negac


ao
Sejam agora dadas duas proposicoes p e q:
p : A capital da Polonia e Praga
q : O autor de Memorial do Convento e Jose Saramago.
O valor logico da disjuncao de duas proposicoes e verdade se uma delas e verdade e e falso,
se ambas sao falsas. Para indicar este tipo de operacao escreve-se
or(p, q) ou p q
Em geral, utilizaremos esta u
ltima notacao. Para facilitar a linguagem, quando p e q sao
duas proposicoes e queremos efectuar a disjuncao das duas diremos, simplesmente, p ou q.
No exemplo dado, o valor logico da proposicao A capital da Pol
onia e Praga. ou
O autor de Memorial do Convento e Jose Saramago e verdadeiro pois o autor de Memorial do Convento e, de facto, Jose Saramago.

17
p
V
V
F
F

q
V
F
V
F

pq
V
V
V
F

Tabela 2.2: Tabela de verdade do operador disjunc


ao
O operador disjuncao exclusiva difere do anterior pelo facto de considerar falsa a disjuncao
exclusiva de duas proposicoes verdadeiras. Isto e, a disjuncao exclusiva de duas proposicoes
e verdade se uma, e apenas uma, das proposicoes e verdade. A notacao utilizada e a tabela
de verdade deste operador estao descritas a seguir:
p
V
V
F
F

q
V
F
V
F

pq
F
V
V
F

Tabela 2.3: Tabela de verdade do operador disjunc


ao exclusiva
Quanto `a conjuncao de proposicoes, dizemos que a conjuncao das proposicoes p e q e verdadeira se ambas as proposicoes sao verdadeiras e falsa se uma delas e falsa. Simbolicamente,
and(p, q) ou p q .
Em geral, utilizaremos a u
ltima notacao e diremos p e q.
p
V
V
F
F

q
V
F
V
F

pq
V
F
F
F

Tabela 2.4: Tabela de verdade do operador conjunc


ao
Podemos ainda construir proposicoes compostas, que resultam da combinacao de proposicoes
e da aplicacao dos varios operadores logicos `as expressoes. Sempre que necessario, usaremos
parentesis para especificar a ordem das operacoes em causa.

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

Tabela 2.5: Tabela de verdade da implicac


ao
p q pode ler-se: p implica q, se p ent
ao q ou q se p. Por exemplo, se
p : Hoje chove em Viseu.

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

Tabela 2.6: Tabela de verdade da equivalencia

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 .

Um exemplo simples de uma Algebra


de Boole e: ({0, 1}, , ), em que as operacoes estao
definidas por
0 1
0 1
e
0 0 1
0 0 0
1 1 1
1 0 1
` operacoes numa Algebra

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:

27. Mostre que, numa Algebra


de Boole, sao validas as propriedades seguintes (associatividade):
(a) (a b) c = a (b c) ;
(b) (a b) c = a (b c) .

28. Mostre que, numa Algebra


de Boole, sao equivalentes as igualdades seguintes (Leis de
De Morgan):
(a) p q = p q ;
(b) p q = p q .
29. A proposicao dual de uma proposicao que contenha apenas os conectivos A, e e a
proposicao obtida substituindo por , por , V por F e F por V . Escreva o dual
de:
(a) p q r .
(b) (p q r) s .
(c) (p F ) (q V ) .

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

Tabela 2.7: Resumo de algumas propriedades

2.3

Fun
c
oes Booleanas e Tabelas de verdade

Vamos considerar as operacoes booleanas e acima descritas.


Usando uma linguagem logica, e fazendo a correspondencia 0=F e 1=V, cada uma das
operacoes e definem uma funcao booleana, a saber:
F (A, B) = A B

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

corresponde `a funcao F (A, B) = A 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.

Uma das formas de simplificar uma expressao e aplicando as propriedades algebricas:



F1 (A, B) = (A + B) B + B A + B
e F2 (A, B) = AB + AB

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:

neste caso, tentamos de forma algebrica e utilizando as regras das Algebras


de Boole,

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:

Vamos agora utilizar as regras das Algegras


de Boole e chegar a uma expressao que seja
produto de maxtermos. Por exemplo, consideremos a funcao: F (A, B, C) = A + BC. Procedendo a operacoes algebricas:
F (A, B, C) = A + BC =
= (A + B)(A + C) =
= (A + B + CC)(A + C + BB) =
= (A + B + C)(A + B + C)(A + C + B)(A + C + B) =
= (A + B + C)(A + B + C)(A + B + C)
O metodo algebrico para determinar a forma canonica conjuntiva e, muitas vezes, mais
complexo e demorado que o metodo para determinar a forma canonica conjuntiva. No
entanto, tentemos resumi-lo aos passos essenciais:
1. escrever a funcao atraves de produtos de somas das variaveis; (nota: p + ab = (p +
a)(p + b));
2. se um dos factores (P ) nao tiver uma das variaveis (por exemplo: A ou A) fazemos a
soma logica nesse factor por (AA): P + AA;
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 produtos de somas;

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

Tabela 2.8: mintermos mi e dos maxtermos Mi para F com 2 variaveis.


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

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

Tabela 2.9: mintermos mi e dos maxtermos Mi para F com 3 variaveis.

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

Tabela 2.10: mintermos mi e dos maxtermos Mi para F com 4 variaveis.


Vemos, em seguida, alguns exemplos:
Exemplo 1: f1 (A, B) = A + AB + AB .
Exemplo 2: f2 (A, B, C) = AB + AC + BC .
Exemplo 3: f3 (A, B, C, D) = ABD + AC + CD .
Construamos as tabelas de verdade e os mapas de Karnaugh respectivos:
Exemplo 1:
A
0
0
1
1

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

Tabela 2.11: Tabela de verdade da funcao f1 (A, B) = A + AB + AB

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

Tabela 2.12: Tabela de verdade da funcao f2 (A, B, C) = AB + AC + BC


A
f2 (A, B, C)

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

Tabela 2.13: Tabela de verdade da funcao f3 (A, B, C, D) = ABD + AC + CD

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

Tendo em conta a tabela da pagina 35:


f (A, B, C) = m0 + m3 + m7 = A B C + ABC + ABC .
e
f (A, B, C) = M1 M2 M4 M5 M6 = (A+B +C)(A+B +C)(A+B +C)(A+B +C)(A+B +C) .

Vejamos agora um exemplo de uma funcao com 4 variaveis:


B
f (A, B, C, D)

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

traduz a funcao booleana com 2 variaveis: f1 (A, B) = A + AB + AB .


Este metodo consiste em encontrar celulas adjacentes com valor 1.
B

f1 (A, B):
0

0
1

0
A

1

Marcando essas celulas, podemos formar rectangulos com 1, 2, 4, 8, . . ., 2n . . . celulas.


Analisando os quadrados assinalados, verificamos que intersectam a fronteira da variavel
B e, portanto, esta desaparece. Como os quadrados assinalados estao totalmente dentro da
area da variavel A, e este o resultado. Logo:
f1 (A, B) = A + AB + AB = A .
Vejamos agora a funcao do Exemplo 2. : f2 (A, B, C) = AB + AC + BC
A
C
A BC
0

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.

Na pagina 42 apresentam-se 3 tabelas que nos podem auxiliar nestas simplificacoes.


Nota: literal significa uma variavel, complementada ou n
ao.
Todos estes procedimentos conduzem a uma forma simplificada de uma funcao, na forma
disjuntiva (soma de produtos). Uma outra interpretacao dos mapas de Karnaugh leva-no
a uma simplificacao na forma conjuntiva (produto de somas). Esta u
ltima e deixada como
exerccio.

42
no de celulas no rectangulo
1
2
4

da origem a . . .
mintermo
1 literal
0 ou 1

Tabela 2.14: Simplificacao de funcoes com 2 variaveis


no de celulas no rectangulo
1
2
4
8

da origem a . . .
mintermo
2 literais
1 literal
0 ou 1

Tabela 2.15: Simplificacao de funcoes com 3 variaveis


no de celulas no rectangulo
1
2
4
8
16

da origem a . . .
mintermo
3 literais
2 literais
1 literal
0 ou 1

Tabela 2.16: Simplificacao de funcoes com 4 variaveis

43

2.7

Exerccios Propostos

47. Escrever as tabelas de verdade das funcoes


(a) f (A, B) = (m0 + m1 )M2
(b) f (A, B, C) = M1 M4 + m5 + m7
(c) f (A, B, C, D) = (m3 + m9 )M7 M11 (m10 + m14)
48. Represente as funcoes do exerccio 47. atraves de mapas de Karnaugh.
49. Represente, atraves de mapas de Karnaugh, as funcoes
(a) f1 (A, B, C) = m0 + m1 + m4 + m7
(b) f2 (A, B, C, D) = m0 + m1 + m5 + m7 + m10 + m14 + m15
(c) f3 (A, B, C) = M0 M1 M4 M7
(d) f4 (A, B, C, D) = M0 M1 M5 M7 M10 M14 M15
50. Construa, directamente, os mapas de Karnaugh de
(a) f1 (A, B, C) = ABC + AB + A BC
(b) f2 (A, B, C, D) = AB + AC + ABD + BCD
(c) f3 (A, B, C, D) = (A + B + C)(A + B + D)(A + B + C + D)
(d) f4 (A, B, C, D) = (C + D)(A + B + D)(A + B + C + D)(A + D)
51. Indique expressoes simplificadas para as funcoes (representadas por mapas de Karnaugh) seguintes:
A
C
0

(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

Exerccio 48. (b): f (A, B, C) = M1 M4 + m5 + m7


A
C
0

1
1

0
1

1
1

0
1

Exerccio 49. (a): f1 (A, B, C) = m0 + m1 + m4 + m7


A
C
0

1
0

1
0

0
1

1
0

Exerccio 49. (d): f4 (A, B, C, D) = M0 M1 M5 M7 M10 M14 M15

.
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

Exerccio 50. (a): f1 (A, B, C) = ABC + AB + A BC


A
C
0

0
0

1
0

1
0

A parcela ABC da origem a 1 nas celula 5.


A parcela AB da origem a 1s nas celulas 5 e 4.
A parcela A BC da origem a 1 na celula 1.
As restantes celulas sao preenchidas com 0s.
Exerccio 50. (c): f3 (A, B, C, D) = (A + B + C)(A + B + D)(A + B + C + D)
B
D
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

O factor (A + B + C) da origem aos zeros nas celulas 0 e 1.


O factor (A + B + D) da origem aos zeros nas celulas 0 e 2.
O factor (A + B + C + D) da origem ao zero na celula 3.
As restantes celulas sao preenchidas com 1s.
Exerccio 51. (a):

47
A
C
AC 1
0


4

BC

0
0

Forma simplificada disjuntiva: f (A, B, C) = A C + BC

A
C
0

1
1

1
0

00
6

A+C
B+C

Forma simplificada conjuntiva: f (A, B, C) = (A + C)(B + C)


Exerccio 52. (d):

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

Forma simplificada conjuntiva:


f (A, B, C, D) = (A + B + C)(A + B + C)(A + B + C)(A + B + C + D)

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

Forma simplificada disjuntiva:


f (A, B, C, D) = A C + BCD + ABD + A BCD
Exerccio 53. (c): f (A, B, C, D) = (A + B)(C + D)(A + C)
B
D
0

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.

As matrizes surgem, naturalmente, quando se coloca o problema de guardar um conjunto de


valores. Suponhamos que pretendemos guardar os valores da temperatura em Viseu `as 12h
durante o mes de Dezembro de 2008. Isto pode ser feito, por exemplo, criando 31 variaveis
(uma por cada dia do mes. . .) e guardando em cada uma das variaveis o valor referente a
uma hipotese que resolve o problema mas que o torna muito complexo
cada um dos dias. E
se precisarmos de manipular os dados. . .
De outra forma, podemos guardar os valores das temperaturas numa u
nica variavel, de forma
ordenada. Esta variavel guarda todos os valores e temos acesso a esse valor sabendo que a
ordem e a dos dias. Se pretendermos saber qual a temperatura no dia 25, esse valor e o que
estiver na posicao 25 da variavel utilizada. Esquematicamente, designemos a variavel de h:
h

9.2 9.3 8.8 8.1 8.3 9.1 9.2 7.9 . . . . . .

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

Matrizes: Primeiras defini


c
oes.

Uma matriz e, entao, uma tabela de n


umeros. A cada um destes n
umeros chamamos elementos, entradas, ou componentes de uma matriz. A dimens
ao e o n
umero de linhas e de
colunas que a formam:
(N
umero de linhas)(N
umero de colunas) .
Outra matriz pode ser formada pelas vendas de uma marca de automoveis, com tres modelos
diferentes, durante o ano de 2008:
Jan F ev Mar Abr Mai Jun
modelo a 10
12
13
9
13
9
modelo b 19
22
21
19
23
25
modelo c 37
42
43
39
41
45
Nesta situacao, a matriz subjacente

10
19
37

a estes dados e

12 13 9 13 9
22 21 19 23 25 .
42 43 39 41 45

Esquematicamente, a delimitacao das tabelas numericas por


na presenca de uma matriz.

[ e ] indicam-nos que estamos

51

Consideremos entao a matriz A anterior. Isto e

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

e uma matriz linha de dimensao 1 4.


Por outro lado, uma matriz de dimensao n 1 e uma matriz coluna.

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

sao matrizes quadradas de dimensao 2 , 3 e 4 , respectivamente.

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=

Uma matriz quadrada e triangular


cipal forem 0. Por exemplo:

-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

superior se todos os elementos abaixo da diagonal prin


2 2

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

Como vimos, as matrizes sao u


teis para o armazenamento de informacao. Na pratica,
para o tratamento de informacao e/ou resolucao de problemas, torna-se necessario efectuar
operacoes e estas serao o tema desta seccao. Entre matrizes, vamos considerar as operacoes
seguintes:
igualdade de matrizes;
transposicao;
soma de matrizes;
produto escalar;
produto de 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. se A e B tem dimensoes distintas a sua soma nao e possvel;


2. a diferenca de duas matrizes define-se do mesmo modo que a sua soma, trocando os
papeis dos operadores + e - .
Vejamos agora como definir o produto escalar . Esta operacao consiste em multiplicar todos
os elementos de uma matriz por um mesmo valor (o escalar ). Em rigor: seja R e A uma
matriz de dimensao m n. O produto escalar de por A e uma matriz da mesma dimensao
de A em que cada elemento aij e transformado em aij . Por exemplo:


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:

320 430 190 318


212 189 300 260
290 450 385 273
(a) Qual o valor das vendas da fabrica 3 na 2a semana de Fevereiro?
(b) Qual o valor das vendas da fabrica 1 na u
ltima semana de Fevereiro?
(c) Qual o valor das vendas da fabrica 2 ao longo do mes de Fevereiro?
(d) Qual o valor das vendas totais da empresa na 2a semana 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]

e os precos unitarios (ordenados) numa matriz-coluna b =

mente: a b ou ab .

1.6
2.2
0.8
1.2

, este calculo e, simples

Este exemplo torna claro a utilidade o produto de matrizes no tratamento numerico da


informacao. Ilustra ainda a multiplicacao de uma matriz-linha por uma matriz-coluna. Notese que o n
umero de colunas (valores) da matriz-linha e igual ao n
umero de linhas (valores)
da matriz-coluna e que, se invertermos a ordem pela qual efectuamos a multiplicacao, esta
torna-se impossvel. Esta observacao e, de facto, uma das condicoes da definicao do produto
de duas matrizes A e B: o n
umero de colunas da matriz A tem de ser igual ao n
umero de
linhas da matriz B. Mais rigorosamente:
Sejam A uma matriz de dimensao n p e B uma matriz de dimensao p m.
O produto destas matrizes A e B e uma matriz C:
Anp Bpm = Cnm .
Isto e, dadas duas matrizes, a expressao anterior diz-nos quais as condicoes para a possibilidade (ou nao) do produto e qual a dimensao da matriz resultante da operacao. Vejamos um
exemplo: sejam

2 3 1



1 1 0 1
3 2 0
A=
e B=

2
2 1 1 1
1 0
1 1 0

As dimensoes de A e B sao respectivamente 2 4 e 4 3. Neste caso, o produto A B (ou


AB) e possvel e a matriz resultante tem dimensao 2 3. Seja C esta matriz. A sua forma
geral e:


c11 c12 c13
C=
c21 c22 c23
O calculo dos cij faz-se a partir da linha i da matriz A e da coluna j da matriz B: por
exemplo:

2



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

Restantes calculos para completar a matriz C:



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

= (2) (1) + 1 0 + 1 2 + (1) 0 = 2 + 0 + 2 + 0 = 4

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

e BA = CA ; B = C, nao ha a lei do corte;

(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

Os produtos das matrizes anteriores (P Q, QR


muitas situacoes. Por exemplo:

1


1 1 1 0 0
PQ =

0 0 1 1 0
0

e P QR) tem um significado pratico u


til em
1
1
1
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

Alterar a 2a linha da matriz A:


>>A(2,:)=[0 1 2]

1 3 2
0 1 2 .
3 1 0

Alterar a 3a coluna da matriz A:


>>A(:,3)=[-1;0;-1]

1 3 1
0 1 0 .
3 1 1

Definir a matriz B a partir da matriz A, resultante da interseccao das linhas 1 e 2 e


das colunas 1 e 3 de A
>>B=A([1 2],[1 3])


1 1
B=
.
0
0

61
Acrescentar linhas a uma matriz:
>>B(3,:)=[0 1];B(4,:)=[-1 -4]

B=

1 1

0
0
.
0
1
1 4

Acrescentar colunas a uma matriz:


>>B(:,3)=[-1;0;1;0];B(4,:)=[1;2;-1;4]

1 1

0
0
B=
1
0
1 4

1 1
0
2
1 1
0
4

As operacoes de soma, diferenca, produto escalar e produto de matrizes sao executadas


com os operadores usuais: + , - , * .
Transposta de A: >>A ;
A igualdade e um operador booleano que, no MatLab, se interpreta da seguinte forma:
se A e B tem a mesma dimensao, retorna uma matriz com a mesma dimensao
e em que cada componente vale 1 (nos casos em que as componentes respectivas
em A e B sao iguais) ou 0 (nos casos em que as componentes respectivas em A e
B sao diferentes);

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

Matriz de 1s: >>ones(3,4)

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

Matriz identidade: >>id=eye(3)

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)

Um sistema de 3 equacoes com 3 incognitas tem a forma seguinte:

a11 x + a12 y + a13 z = b1


a x + a22 y + a23 z = b2
21
a31 x + a32 y + a33 z = b3

(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

Tentemos agora resolver o sistema

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:

Matrix is singular to working precision.

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

Rescrevendo sob a forma de sistema:



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}

Este SEL tem um n


umero infinito de solucoes, algumas das quais podemos escrever atribuindo
valores a z. Alguns exemplos:
(20, 12, 0) , (10, 12, 10) , (0, 12, 20) , (25, 12, 5), . . .

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

Uma matriz esparsa tem um n


umero elevado de zeros entre os seus elementos. Por exemplo,
uma matriz diagonal pode ser considerado esparsa pois so tem elementos diferentes de zero
na diagonal principal. Esta caracterstica, e o facto de serem comuns em casos praticos, leva
a que no MatLab tenham uma forma particular de se declararem. Vejamos um exemplo:

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

65. Considere o diagrama seguinte:

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-

Um esquema como este


b1

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

Figura 4.1: K4 , K8 e K15 .

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

Esta relacao merece algumas notas:


o n
umero de vertices que determinam um caminho e superior (em uma unidade) ao
n
umero de arestas respectivo;

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?

Figura 4.2: Konigsberg e as suas pontes


Podemos, entao, generalizar o problema ao estudo do (multi)grafo
a
c

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

Considere os grafos G, H e J seguintes:


x

t
s
G:

v
z
H:

u
J:

66. Qual dos seguintes sequencias de vertices descreve um caminho em G?


(a) stuvwxyz
(b) tvwzyx
(c) stus
(d) tuss
(e) vwvwvwv
(f) wvustvw

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

e construa-se a matriz A, em que cada elemento e dado por:


aij =

1, se existe aresta que uma vi a vj ;


0, se nao existe aresta que uma vi a vj .

Esta funcao gera, a partir do grafo anterior, a matriz:

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

Por exemplo, o elemento A3 (4, 3) = 2 significa que existem 2 caminhos de comprimento 3


entre os vertices v4 e v3 .

4.7

Exerccios Propostos

78. Escreva as matrizes da adjacencias dos grafos


v1

H:

v2

v3

v4

v5

79. Desenhe um grafo cuja matriz de adjacencias

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

Problemas do Caminho mais Curto

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

Figura 4.3: Distancia entre as cidades portuguesas

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

O valor mais baixo e 3 e este passa a ser o valor fixo de a1 (caminho: a3 a5 a1 ).


So ha um vertice adjacente a a1 :
L(a2 ) = L(a1 ) + 5 = 8
Como este e o valor mais baixo ainda nao fixado, 8 passa a ser valor fixo de a2 (caminho:
a3 a5 a1 a2 ). A seguir:
L(a4 ) = L(a2 ) + 6 = 14 ; L(a6 ) = L(a2 ) + 2 = 10
e este u
ltimo (que e o menor dos calculados neste passo), fica o valor fixo de a6 (caminho:
a3 a5 a1 a2 a6 ). Adjacente a este vertice so esta a4 :
L(a4 ) = L(a6 ) + 3 = 13
e este valor substitui o anterior valor L(a4 ) (caminho: a3 a5 a1 a2 a6 a4 ).
Logo, o caminho mais curto de a3 a a4 e a3 a5 a1 a2 a6 a4 de comprimento 13.

82

4.9

Exerccios Propostos

82. Calcule o caminho mais curto entre v1 e v7 no grafo de pesos:


7

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.

[2] Jacob Daghlian, Logica e Algebras


de Boole, Publicacao Atlas, 1986, ISBN
85-224-0132-2.
[3] John Uyemura, Sistemas Digitais, Pioneira Thompson Learning, 2002, ISBN
85-221-0268-6.
[4] J. C. Molluzzo e F. Buckley, A First Course in Discrete Mathmatics, Wadsworth Publishing Company, 1986, ISBN 0-534-05310-6.

[5] J. Vitoria, T. P. Lima, Algebra


Linear, Universidade Aberta, 1998, ISBN
975-674-218-8.
[6] Kenneth H. Rosen, Discrete Mathematics and its Applications, McGraw-Hill International Editions, 1999, ISBN 0-07-116756-0.
[7] L. Cuesta, A. Gil Padilla, F. Remiro, Electr
onica Digital, McGraw-Hill, 1994, ISBN
972-9241-64-3.

(o ndice remissivo ainda nao esta completo)

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