Vous êtes sur la page 1sur 95

Apontamentos para a Unidade de Formacao:

Matematica Discreta

Instalacao e Manutencao
de Redes e Sistemas Informaticos

Nuno Conceicao
Departamento de Matematica
Escola Superior de Tecnologia de Viseu
Instituto Politecnico de Viseu

Janeiro 2009
2
Conteudo

Introducao i

1 Nocao de base de um sistema de numeracao 1


1.1 Representacao de um numero em bases diferentes. . . . . . . . . . . . . . . . 1
1.2 Conversao de numeros entre bases. . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Limitacao de representacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 Operacoes aritmeticas de base 2 . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.5 Representacao em complemento para 2 . . . . . . . . . . . . . . . . . . . . . 13
1.6 Exerccios Propostos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2 Algebras de Boole 15
2.1 Definicao e valor logico de uma proposicao . . . . . . . . . . . . . . . . . . . 15
2.2 Definicao e propriedades de Algebra de Boole . . . . . . . . . . . . . . . . . 22
2.3 Funcoes Booleanas e Tabelas de verdade . . . . . . . . . . . . . . . . . . . . 24
2.4 Formas canonicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.5 Mapas de Karnaugh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.6 Simplificacao de funcoes Booleanas . . . . . . . . . . . . . . . . . . . . . . . 40
2.7 Exerccios Propostos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3 Matrizes 49
3.1 Matrizes: Motivacao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.2 Matrizes: Primeiras definicoes. . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.3 Matrizes especiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.4 Operacoes com matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.4.1 Produto de matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.4.2 Uma aplicacao do produto de matrizes . . . . . . . . . . . . . . . . . 58
3.5 Introducao ao software MatLab . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.6 Sistemas de Equacoes Lineares (SEL) . . . . . . . . . . . . . . . . . . . . . . 62
3.7 Matrizes Esparsas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

3
4 Teoria dos Grafos 69
4.1 Introducao. Grafo (nao orientado) e sua representacao . . . . . . . . . . . . 69
4.2 Conceitos fundamentais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.3 Caminhos de um grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.4 Exerccios Propostos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.5 Matriz de adjacencia de um grafo . . . . . . . . . . . . . . . . . . . . . . . . 77
4.6 Potencias da matriz de adjacencia e algumas propriedades . . . . . . . . . . 77
4.7 Exerccios Propostos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
4.8 Problemas do Caminho mais Curto . . . . . . . . . . . . . . . . . . . . . . . 79
4.9 Exerccios Propostos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

Bibliografia 85

Indice Remissivo 86
Introducao

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
conteudos 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 Matematica Discreta sao muito sabrangentes e tem
tido um grande desenvolvimento, em grande parte, potenciado pelas aplicacoes que se tem
revelado em grande numero em areas como Ciencias da Computacao, Telecomunicacoes, Se-
guranca 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

Nocao de base de um sistema de


numeracao

Livros para este captulo: [1] [3] [4] [7]

1.1 Representacao de um numero em bases diferentes.


Nesta seccao, sera abordada a forma de representacao de numeros em diferentes bases. No
dia-a-dia (populacao de uma cidade, peso de uma pessoa, temperaturas, precos no super-
mercado, . . .) 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 numero que necessitemos. No en-
tanto, 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 min-
utos 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 quotidi-
ano, 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 numeros (numeros naturais, numeros fraccionarios,


numeros reais, . . .);

2. ser biunvoco;

3. manter as propriedades algebricas e aritmeticas dos numeros.

1
2

A importancia do primeiro ponto reflete-se na propria utilidade do sistema de numeracao.


Um sistema que permita representar poucos numeros esgota-se rapidamente e e posto de
parte. O segundo ponto significa que cada numero deve ter uma unica traducao num dado
sistema de numeracao e que, inversamente, ao escrevermos um numero em determinada base
este traduza uma quantidade unica e inconfundvel. Por ultimo, e essencial que as diferentes
formas de escrever os numeros 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 numero 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 signifi-
cado de um determinado dgito depende da sua posicao relativa no numero. Isto tem reflexos
em tudo o que se segue, em particular na conversao de numeros 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 numeros nesta base sao o 0 e o 1.
Os primeiros numeros nesta base sao

base 10 base 2
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
.. ..
. .

Tabela 1.1: Os primeiros numeros decimais convertidos em numeros binarios

Tendo por base os esquemas anteriores, e facil converter um numero escrito em base 2 para
base 10. Basta atendermos a que, neste caso, temos:

24 23 22 21 20

Assim, para converter o numero (101001)2 em decimal:

32 16 8 4 2 1
1 0 1 0 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 base 8
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 10
9 11
10 12
11 13
12 14
13 15
14 16
15 17
16 20
17 21
18 22
.. ..
. .

Tabela 1.2: Os primeiros numeros decimais convertidos em base 8

base, os primeiros numeros 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 numero escrito nesta base:

84 83 82 81 80

Assim, torna-se facil fazer a conversao: sistema octal sistema decimal. Vejamos um exem-
plo: qual o numero 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
5

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 base 16
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 10
9 9
10 A
11 B
12 C
13 D
14 E
15 F
16 10
17 11
18 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 numero corresponde, base decimal, o numero (2C7)16 ? Vejamos:
162 161 160
2 C 7
6

Logo: (2C7)16 = 2 162 + 12 16 + 7 1 = (711)10 .

1.2 Conversao de numeros entre bases.


Vimos na seccao anterior como converter numeros escritos nas bases 2, 8 e 16 em numeros
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 per-
mite, 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
numero dado em base 10:

1. Dividir o numero 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 R=0


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

Assim, tendo em conta o algoritmo descrito, concluimos que:

(522)10 = (1000001010)2

Neste momento devera conseguir fazer a conversao de numeros: base 10 base b , qualquer
que seja a base b considerada.

Exerccios:
1. Os numeros seguintes estao escritos na base 2. Escreva-os na base 10:
(a) 110 ; (b) 101101 ; (c) 101010101 ; (d) 110011010110 .

2. Os numeros seguintes estao escritos na base 4. Escreva-os na base 10:


(a) 31 ; (b) 210 ; (c) 1212 ; (d) 20013 .

3. Os numeros seguintes estao escritos na base 8. Escreva-os na base 10:


(a) 37 ; (b) 451 ; (c) 7777 ; (d) 12321 .

4. Os numeros seguintes estao escritos na base 16. Escreva-os na base 10:


(a) 3D ; (b) 21E ; (c) 1F01 ; (d) A1B2C .

Acabamos de ver como converter numeros nas bases 2, 8 e 16 em base decimal e tambem
o processo inverso. No entanto, podemos converter um numero em base 8 num numero 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
 6@
@
? @R
@
10 - 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 numero (17246)8 para base 2:
1 |{z}
|{z} 7 |{z}
2 |{z}
4 |{z}
6
|001 111 010
{z 100 110}
001111010011110
8

Logo:
(17246)8 = (1111010100110)2
Ou seja: convertemos cada um dos dgitos do numero escrito em base 8 para binario, de
modo a que cada novo numero tenha sempre tres dgitos, acrescentando zeros sempre que
necessario. Em seguida, colocamos estes grupos de tres dgitos em sequencia e obtemos a
traducao do numero 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 numero (1010100110101)2 em
base 8:
001 |{z}
|{z} 010 |{z}
100 |{z}
110 |{z}
101
|1 2 4
{z 6 5
}
12465

Portanto:
(1010100110101)2 = (12465)8
Neste caso, agrupamos os dgitos do numero inicial tres a tres, da direita para a esquerda,
acrescentando zeros (se necessario) no ultimo grupo. Em seguida, converte-se cado um dos
numeros no seu correspondente na base 8 e colocam-se em sequencia para terminar a con-
versao.

Raciocnios semelhantes sao utilizados para as conversoes base 2 base 16, como a seguir
se mostra.

Vejamos como converter (A3F5)16 num numero binario:

A |{z}
|{z} 3 |{z}
F |{z}
5
1010 0011 1111 0101

Isto e:
(A3F5)16 = (1010001111110101)2

No sentido inverso, vamos converter o numero (100110110010110)2 no seu correspondente


no sistema hexadecimal:
0100
|{z} 1101
|{z} 1001
|{z} 0110
|{z}
4 D 9 6
| {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 numeros em base 8 ou em base 16 usamos, como


auxiliar, a tabela seguinte:

base 10 base 2 base 8 base 16


0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 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 Limitacao de representacao


Ate agora apenas analisamos as representacoes e conversoes de numeros inteiros positivos em
diferentes bases. Nesta seccao, analisaremos os numeros 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 numero frac-
cionario 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 22 23 24
0 1 0 1 1

Se o nosso objectivo for o de escrever um um numero decimal na sua representacao binaria,


utilizamos um metodo que designaremos por multiplicacoes 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 numeros. Por exemplo, se apenas tivermos disponveis
4 casas decimais para estas representacoes entao os numeros (representados em base deci-
mal) 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 capaci-
dade da maquina armazenar numeros binarios tao extensos quanto nos queiramos. Ha outras
tecnicas para manipular numeros binarios (representacao em ponto flutuante) que nao serao
aqui abordadas.

1.4 Operacoes aritmeticas de base 2


Para alem de representar numeros (informacao) em diversas bases, importa que possamos
efectuar operacoes aritmeticas com esses numeros, 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 numeros 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 numeros binarios:
+2 0 1
0 0 1
1 1 10
Sabendo isto, passemos a um exemplo de como somar dois numeros binarios.
Qual o resultado de (10010011011010)2 +2 (1001011010)2.

O algoritmo e o mesmo da soma em base decimal:

1 0 0 1 0 0 1 1 0 1 1 0 1 0
+2 0 0 0 0 1 0 0 1 0 1 1 0 1 0
1 0 0 1 1 1 0 0 1 1 0 1 0 0
0 0 0 0 0 0 1 1 0 1 1 0 1 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 1 1 0 1 1 0 1
2 0 0 1 0 1 0 0 0 1 1
0 1 1 1 0 0 1 0 1 0
0 1 1 1 0 1 1 0 1 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:

0000 1 0 1 11
2 0000 0 0 1 10
0000 0 0 0 00
001 0 1 1 1
+2 10 1 1 1
0100 0 1 0 10
0011 1 1 1 0 0 a transportar

Para terminar, referimos apenas que a divisao de dois numeros binarios se faz tal qual se
tratassem de numeros 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 Representacao 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 util dominar esta
tecnica. Para melhor a entender, avancemos com o primeiro exemplo: calcular
100110110 010100101.
Note-se que os numeros tem o mesmo numero 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 numero 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 numero de base 2 os seguintes numeros:
(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 numero de base 16 os seguintes numeros:


(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 numeros 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 numeros de base 10.


Captulo 2

Algebras de Boole

Livros para este captulo: [1] [2] [3] [4] [7]

2.1 Definicao e valor logico de uma proposicao


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 pre-
cisar todos estes conceitos surge a necessidade de definir e utilizar regras que nao oferecam
duvidas acerca do seu significado.

Assim, diremos que uma proposicao e uma expressao sobre a qual se pode dizer que e ver-
dadeira ou falsa. De outro modo, e sempre possvel indicar o valor logico 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 logicos ou conectivos logicos.
O primeiro que vamos considerar e o de negacao, 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 ver-
dade. A tabela 2.1 e a tabela de verdade do operador negacao.

p p
V F
F V

Tabela 2.1: Tabela de verdade do operador negacao

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 ultima 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 Polonia e Praga. ou


O autor de Memorial do Convento e Jose Saramago e verdadeiro pois o autor de Memo-
rial do Convento e, de facto, Jose Saramago.
17

p q pq
V V V
V F V
F V V
F F F

Tabela 2.2: Tabela de verdade do operador disjuncao

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 q pq
V V F
V F V
F V V
F F F

Tabela 2.3: Tabela de verdade do operador disjuncao exclusiva

Quanto a conjuncao de proposicoes, dizemos que a conjuncao das proposicoes p e q e ver-


dadeira se ambas as proposicoes sao verdadeiras e falsa se uma delas e falsa. Simbolicamente,

and(p, q) ou p q .

Em geral, utilizaremos a ultima notacao e diremos p e q.

p q pq
V V V
V F F
F V F
F F F

Tabela 2.4: Tabela de verdade do operador conjuncao

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


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 q pq
V V V
V F F
F V V
F F V

Tabela 2.5: Tabela de verdade da implicacao

p q pode ler-se: p implica q, se p entao 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 q pq
V V V
V F F
F V F
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 tautolo-
gias, 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 Definicao 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 nao 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 e aa=0 .

Um exemplo simples de uma Algebra de Boole e: ({0, 1}, , ), em que as operacoes estao
definidas por
0 1 0 1
0 0 1 e 0 0 0
1 1 1 1 0 1

As operacoes numa Algebra 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 variaveis e operacoes
(ambas boolenas) e tentaremos desenvolver a capacidade de avaliacao de funcoes 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 (associa-
tividade):

(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 pq = qp p+q =q+p
Distributividade p(q + r) = pq + pr p + (qr) = (p + q)(p + r)
Associatividade (p + q) + r = p + (q + r) (pq)r = p(qr)
Elementos Neutros p1 = p p+0=p
Complementos pp = 0 p+p=1
Idempotencia pp = p q+q =q
Elementos absorventes p0 = 0 p+1=1
Absorcao p(p + q) = p p + pq = p
Leis de De Morgan pq = p + q p+q =p q
Involucao p=p

Tabela 2.7: Resumo de algumas propriedades

2.3 Funcoes 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 e 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 b
B

E claro que as funcoes sao, na pratica, mais complexas que esta. Para ja, facamos alguns
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

B
corresponde a funcao F (A, B) = A B.
Por sua vez, o circuito

b A B 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 logica e produto logico, respectivamente.
Com esta convencao, as operacoes podem escrever-se assim:

0+0=0 00 = 0
1+0=1 10 = 0
0+1=1 01 = 0
1+1=1 11 = 1
26

Repare-se que temos de distinguir, nesta situacao, que 01, por exemplo, representa a operacao
0 1 e nao o numero 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 AB + B
0 0 0 0
0 1 0 1
1 0 0 0
1 1 1 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 AB + BC + AC + A
0 0 0 0 0 0 0
0 0 1 0 0 0 0
0 1 0 0 0 0 0
0 1 1 0 1 0 1
1 0 0 0 0 0 1
1 0 1 0 0 0 1
1 1 0 1 0 0 1
1 1 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 A + AB + AB
0 0 1 1 0 0 0
0 1 1 0 1 0 1
1 1 0 0 0 1 1
1 1 0 0 0 0 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)
A

b A b
B

B
(b)
28
B

C A

C C

b b

C B

C B

B A

C A
(c)
A B

A C

b b
D A

A B

C D

D
29

2.4 Formas canonicas


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 canonicas. 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 canonica 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 for-
mas, 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. Es-
pecificando:
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 unicas e, por isto, para saber se duas funcoes sao equivalentes podemos deter-
minar 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 re-
cursos 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 va-
mos 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 asso-
ciados 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. Proce-
dendo 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 maxter-
mos;

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 B mintermo smbolo maxtremo smbolo


0 0 AB m0 A+B M0
0 1 AB m1 A+B M1
1 0 AB m2 A+B M2
1 1 AB m3 A+B M3

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

A B C mintermo smbolo maxtremo smbolo


0 0 0 ABC m0 A+B+C M0
0 0 1 ABC m1 A+B+C M1
0 1 0 ABC m2 A+B+C M2
0 1 1 ABC m3 A+B+C M3
1 0 0 AB C m4 A+B+C M4
1 0 1 ABC m5 A+B+C M5
1 1 0 ABC m6 A+B+C M6
1 1 1 ABC m7 A+B+C M7

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


36

A B C D mintermo smbolo maxtremo smbolo


0 0 0 0 ABC D m0 A+B+C +D M0
0 0 0 1 A B CD m1 A+B+C +D M1
0 0 1 0 A BCD m2 A+B+C +D M2
0 0 1 1 A BCD m3 A+B+C +D M3
0 1 0 0 ABC D m4 A+B+C +D M4
0 1 0 1 ABCD m5 A+B+C +D M5
0 1 1 0 ABCD m6 A+B+C +D M6
0 1 1 1 ABCD m7 A+B+C +D M7
1 0 0 0 ABC D m8 A+B+C +D M8
1 0 0 1 AB CD m9 A+B+C +D M9
1 0 1 0 ABCD m10 A+B+C +D M10
1 0 1 1 ABCD m11 A+B+C +D M11
1 1 0 0 ABC D m12 A+B+C +D M12
1 1 0 1 ABCD m13 A+B+C +D M13
1 1 1 0 ABCD m14 A+B+C +D M14
1 1 1 1 ABCD m15 A+B+C +D 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 B B AB AB f1
0 0 1 0 0 0
0 1 0 0 0 0
1 0 1 0 1 1
1 1 0 1 0 1

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


37

f1 (A, B) B

0 0
0 1

A 1 1
2 3

Exemplo 2:

A B C B C AB AC BC f2
0 0 0 1 1 0 0 0 0
0 0 1 1 0 0 0 1 1
0 1 0 0 1 0 0 0 0
0 1 1 0 0 0 0 0 0
1 0 0 1 1 0 1 0 1
1 0 1 1 0 0 0 1 1
1 1 0 0 1 1 1 0 1
1 1 1 0 0 1 0 0 1

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

A
f2 (A, B, C)
C

0 1 1 1
0 1 5 4

B 0 0 1 1
2 3 7 6
38

Exemplo 3:

A B C D A B D ABD AC CD f3
0 0 0 0 1 1 1 0 0 0 0
0 0 0 1 1 1 0 0 0 0 0
0 0 1 0 1 1 1 0 1 1 1
0 0 1 1 1 1 0 0 1 0 1
0 1 0 0 1 0 1 0 0 0 0
0 1 0 1 1 0 0 0 0 0 0
0 1 1 0 1 0 1 0 1 1 0
0 1 1 1 1 0 0 0 1 0 1
1 0 0 0 0 1 1 0 0 0 0
1 0 0 1 0 1 0 1 0 0 1
1 0 1 0 0 1 1 0 0 1 1
1 0 1 1 0 1 0 1 0 0 1
1 1 0 0 0 0 1 0 0 0 0
1 1 0 1 0 0 0 0 0 0 0
1 1 1 0 0 0 1 0 0 1 1
1 1 1 1 0 0 0 0 0 0 0

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

B
f3 (A, B, C, D)
D

0 0 0 0
0 1 5 4

1 1 1 0
2 3 7 6
C
1 1 0 1
10 11 15 14
A
0 1 0 0
8 9 13 12
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)
C

1 0 0 0
0 1 5 4

B 0 1 1 0
2 3 7 6

Tendo em conta a tabela da pagina 35:

f (A, B, C) = m0 + m3 + m7 = A B C + ABC + ABC .

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)
D

1 1 0 0
0 1 5 4

0 0 1 0
2 3 7 6
C
1 0 0 1
10 11 15 14
A
1 1 0 1
8 9 13 12

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 Simplificacao de funcoes Booleanas


Para simplificacao de expressoes algebricas podemos, com ja foi visto, utilizar as proprieda-
des 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

f1 (A, B): B

0 0
0 1

A 1 1
2 3

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

Este metodo consiste em encontrar celulas adjacentes com valor 1.

f1 (A, B): B

0 0
0 1
A
A 1 1
2 3

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 1 1 1
0 1 5 4
A
B 0 0 1 1
2 3 7 6

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 1
0
5
0
4
0
R
@ 
1 1 1 0 ABCD
2 3 7 6
C 
1 1 0 1 ABCD
10 11 15 14
A 
0 1 0 0 AB CD
8 9 13 12

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

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 ultima e deixada como
exerccio.
42

no de celulas no rectangulo da origem a . . .


1 mintermo
2 1 literal
4 0 ou 1

Tabela 2.14: Simplificacao de funcoes com 2 variaveis

no de celulas no rectangulo da origem a . . .


1 mintermo
2 2 literais
4 1 literal
8 0 ou 1

Tabela 2.15: Simplificacao de funcoes com 3 variaveis

no de celulas no rectangulo da origem a . . .


1 mintermo
2 3 literais
4 2 literais
8 1 literal
16 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 Kar-
naugh) seguintes:

A
C

1 1 1 0
0 1 5 4

B 1 0 0 0
(a) 2 3 7 6

A
C

0 1 1 1
0 1 5 4

B 0 1 1 0
(b) 2 3 7 6
44

B
D

0 0 0 0
0 1 5 4

1 1 1 0
2 3 7 6
C
1 1 0 1
10 11 15 14
A
0 1 0 0
(c) 8 9 13 12

B
D

0 1 1 0
0 1 5 4

0 1 1 0
2 3 7 6
C
1 0 1 0
10 11 15 14
A
0 1 0 0
(d) 8 9 13 12

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

Resolucao 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 B C A B C A+B+C A+B+C . ABC ABC f


0 0 0 1 1 1 1 1 1 0 0 1
0 0 1 1 1 0 0 1 0 0 0 0
0 1 0 1 0 1 1 1 1 0 0 1
0 1 1 1 0 0 1 1 1 0 0 1
1 0 0 0 1 1 1 0 0 0 0 0
1 0 1 0 1 0 1 1 1 1 1 1
1 1 0 0 0 1 1 1 1 0 1 1
1 1 1 0 0 0 1 1 1 0 0 1

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

A
C

1 0 1 0
0 1 5 4

B 1 1 1 1
2 3 7 6

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

A
C

1 1 0 1
0 1 5 4

B 0 0 1 0
2 3 7 6

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


46

B
D

0 0 0 1
0 1 5 4

1 1 0 1
2 3 7 6
C
0 1 0 0
10 11 15 14
A
1 1 1 1
8 9 13 12

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

A
C

0 1 1 1
0 1 5 4

B 0 0 0 0
2 3 7 6

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 0 1 1
0 1 5 4

0 0 1 1
2 3 7 6
C
1 1 1 1
10 11 15 14
A
1 1 1 1
8 9 13 12

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 -  BC
1 1 1 0
0 1 5 4

B 1 0 0 0
2 3 7 6

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

A
C
 A+C
1 1 1 0
0 1 5 4

B 1 0 00 B+C
2 3 7 6

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

Exerccio 52. (d):

B
D
A+B+C -  A+B+C
0 0 0 1
0 1 5 4

1 1 0 1
2 3 7 6
A+B+C +D C
- 0 1 0 0 A+B+C
10 11 15 14
A
1 1 1 1
8 9 13 12

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 0 0 1
0 1 5 4
-
A BCD 1 1 0 1  ABD
2 3 7 6
C 
0 1 0 0 BCD
10 11 15 14
A
1 1 1 1  AC
8 9 13 12

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

1 0 0 0
0 1 5 4

1 1 0 0
2 3 7 6
C
1 1 1 1
10 11 15 14
A
0 0 0 0
8 9 13 12
Captulo 3

Matrizes

Livros para este captulo: [4] [5]

3.1 Matrizes: Motivacao.


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
cada um dos dias. E uma hipotese que resolve o problema mas que o torna muito complexo
se precisarmos de manipular os dados. . .
De outra forma, podemos guardar os valores das temperaturas numa unica 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.

E esta a origem das matrizes e sua estrutura ordenada permite que possamos guardar,
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 definicoes.


Uma matriz e, entao, uma tabela de numeros. A cada um destes numeros chamamos ele-
mentos, entradas, ou componentes de uma matriz. A dimensao e o numero de linhas e de
colunas que a formam:
(Numero de linhas)(Numero 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 a estes dados e

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

Esquematicamente, a delimitacao das tabelas numericas por [ e ] indicam-nos que estamos


na presenca de uma matriz.
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 numero de linhas e de colunas. Por exemplo:

0 1 2 2
  1 0 1
1 3 1 0 1 1
; 9 2 3 ;
1 2 3 1 1 0
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 0 1 1
A=
3 1 1 0
1 0 0 1
52

a diagonal principal e:
0 1 2 2
1 0 1 1

A=
3 1 -1 0
1 0 0 1
Uma matriz quadrada e triangular superior se todos os elementos abaixo da diagonal prin-
cipal forem 0. Por exemplo:

-3 1 2 2

0 0 1 1
A= e triangular superior.
0 0 -1 0
0 0 0 1

Uma matriz quadrada e triangular inferior se todos os elementos abaixo da diagonal principal
forem 0. Por exemplo:

2 0 0
A= 2 1 0 e triangular inferior.
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 Operacoes com matrizes


Como vimos, as matrizes sao uteis 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 util, nomeadamente, em duas situacoes: organizacao da informacao e


operacoes aritmeticas. E um operador unario, 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 B 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 A 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

2 1  y T 0 6
x 2 1 1
(b) x 2 2 = 1 3
2 x2 2
3 y 5 2

y 0   4 6 2
2 3 1
(c) 0 1 = x 1 1
x 1 y2
x 1 3 2y 0
   
5 8 4 7
57. Determine a matriz D tal que: 2D + =
1 3 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 ultima 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]

1.6

2.2
e os precos unitarios (ordenados) numa matriz-coluna b = , este calculo e, simples-
0.8
1.2
mente: a b ou ab .

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. Note-
se que o numero de colunas (valores) da matriz-linha e igual ao numero 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 numero de colunas da matriz A tem de ser igual ao numero 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 possibili-
dade (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 1 1 1 1 0 2
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:  
0 c12 c13
C=
c21 c22 c23
Restantes calculos para completar a matriz C:

3
 
2

c12 = 1 1 0 1 = 1(3)+(1)(2)+00+(1)1 = 3+2+01 = 2
0
1

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:


 
0 2 1
C=
c21 c22 c23
Quanto a 2a linha:

2
 
3


c21 = 2 1 1 1 = (2) 2 + 1 3 + 1 1 + (1) 1 = 4 + 3 + 1 1 = 1
1
1

3
 
2


c22 = 2 1 1 1 = (2)(3)+1(2)+10+(1)(1) = 62+0+1 = 5
0
1

1
 
0


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

Logo:  
0 2 1
C=
1 5 4
57

As operacoes que ja vimos, tem um conjunto de propriedades que em muitos casos sao se-
melhantes as dos numeros 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 nao 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:

1 2 0
  1 0 2 1
1 0 1 2 1 1 1
A= ; B= ; C = 1 2 1 2
0 2 3 1 1 1 2
0 1 0 1
0 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 aplicacao do produto de matrizes


Nesta seccao vamos exmplificar uma aplicacao das matrizes e do produto de matrizes. Con-
sideremos o esquema:
b1 c1

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:
b1 b2 b3 b4  
1 1 1 0
a1 1 1 1 0 P =
0 0 1 1
a2 0 0 1 1
c1 c2 c3
1 1 0
b1 1 1 0
0 1 0
b2 0 1 0 Q =
0 1 1
b3 0 1 1
0 0 1
b4 0 0 1
d1 d2
1 0
c1 1 0
R = 1 1
c2 1 1
0 1
c3 0 1
Os produtos das matrizes anteriores (P Q, QR e P QR) tem um significado pratico util em
muitas situacoes. Por exemplo:

1 1 0
   
1 1 1 0 0 1 0 1 3 1
PQ = = .
0 0 1 1 0 1 1 0 1 2
0 0 1
59

O elemento pqij indica-nos o numero 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 Introducao 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]

1 1

0 0
B= .
0 1
1 4

Acrescentar colunas a uma matriz:


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

1 1 1 1

0 0 0 2
B= .
0 1 1 1
1 4 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)


0 0 0

0 0 0
Q= .
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])



1 0 0 0

0 2 0 0
D= .
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 aleatorios. O MatLab permite a construcao deste
tipo de matrizes
>>al=rand(3,4).

3.6 Sistemas de Equacoes 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 (3.1)
21
a31 x + a32 y + a33 z = b3
63

e pode ser representado matricialmente. Se considerarmos:



a11 a12 a13 x b1
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 incognitas 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 subs-
tituir 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 unica. Assim, designamos a inversa de A
por A1 .
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 3 3 1 8 = 1
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



2 4 2 4
4 3 1 8 .
1 2 3 1
Se executarmos a instrucao

>>rref(C)
65

obtemos
1 0 1 0
0 1 1 0 .
0 0 0 1
A ultima 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 z = 20 x = 20 + z
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 numero 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 + B T 3AT B , em que



1 2 3 1 0 1
A= 0 3 1 ; B= 2 1 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 numero 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 van-


tagem 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

0 0 0 0 0 1

0 2 0 0 1 0


0 0 0 0 1 0
(b) B =
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 e1

a1 b2 c2 d2

a2 b3 c3 d3 e2

b4

Determine, utilizando os conhecimentos que tem de matrizes esparsas em MatLab , o


numero 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 Introducao. Grafo (nao orientado) e sua repre-


sentacao
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 este-
jamos a considerar: mapa de estradas, diagramas de circuitos, conexoes entre componentes
de uma rede, . . .

E este o ponto de partida para o estudo de grafos: um conjunto de objectos (a que chamamos
vertices) e de linhas (a que chamamos arestas) que os unem. Mais rigorosamente:

Um grafo consiste num conjunto finito de vertices (ou pontos, ou nos) 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 b

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 b c

d e f g

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 orientacao. Graficamente as arestas sao setas que unem o
vertice inicial ao vertice final. Neste sentido, a aresta de e distinta da aresta ed. Sendo H
o grafo:
a b c

d e f g

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:

a b c x y

d e f g z w

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:

2 3 5
4
6
4 2 3
7

3 1 5 1 1

15

10
6 8 14
11
13
4 7 12

Figura 4.1: K4 , K8 e K15 .

Em grafos com um numero 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 4
entao
1 2 1 2 1 2

3 4 3 4 3
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;

a ultima aresta e incidente com vn .

Vamos considerar o grafo G seguinte e identificar, para alem dos vertices, tambem as arestas:
a
b
v1 v2
c
d f
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 numero 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 vertices
dcaf v3 v1 v2 v2 v4
bf e v1 v2 v4 v1
af ecb v2 v2 v4 v1 v2 v1
dcbef cb v3 v1 v2 v1 v4 v2 v1 v2

Esta relacao merece algumas notas:

o numero de vertices que determinam um caminho e superior (em uma unidade) ao


numero 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 ultimo 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 ultimo (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
v2 v4 v6
a b c d e

v1 v3 v5
f

g h v7

v8 v9 v10 v11
i kj
E facil concluir que este grafo tem um ciclo. Do mesmo modo
v2 v4 v6
a b c d e

v1 v3 v5
f

g h v7

v8 v9 v10 v11
i k
74

e acclico.

Um dos problemas mais antigos sobre grafos e o das pontes de Konigsberg 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

b c

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 numero 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 numero de arestas (sempre em numero par!), a primeira e a ultima
aresta sao tambem em numero 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 b

c d e f

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 so se, todos os vertices tem
grau par.

4.4 Exerccios Propostos


Considere os grafos G, H e J seguintes:
t x v

s v w z w x

G: u y H: y z

s t

u v w x

J: y z

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 numero de arestas.
(b) Observe a relacao enter a soma de todos os grause o numerode arestas de um
grafo.
(c) A soma dos graus de todos os vertices pode ser um numero mpar?
77

4.5 Matriz de adjacencia 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:



1, se existe aresta que uma vi a vj ;
aij =
0, se nao existe aresta que uma vi a vj .

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



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
A=

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 ad-
jacencias 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 Potencias da matriz de adjacencia e algumas pro-


priedades
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 numero 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:



4 1 5 6 1 0 5 1

1 4 0 1 6 5 1 5

5 0 2 2 2 0 5 0

3
6 1 2 2 5 2 6 1
A =AAA=

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 v1 v2

v2 v3 v3 v4 v5 v6

H: v4 v5 J: v7 v8

79. Desenhe um grafo cuja matriz de adjacencias seja



0 0 1 1 0 0 0 0 0 0
0 0 1 1 0 0 1 0 0 0


1 1 0 0 0 1 0 0 0 0

1 1 0 0 0 0 0 0 0 1

0 0 0 0 0 1 0 1 1 0
Adj(G) = 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

80. Determine:
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 com-
primento 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 numero 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 1 2 a4

2 a5 a6 3
10

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 ultimo (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 2
v2 v4 v6
3
1 8
v1 2 5 4
7 9
9 v3 v5 v7
4
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 Braga
150 185
90
Aveiro V iseu
190 235
150
275 Santarem P ortalegre
70

Lisboa 120
150
Evora
175

Sines 250

160
F aro
83

Mapa de distancias

75
V.Castelo Braga
250 125
125
Aveiro V iseu
175 110
105
450 Santarem P ortalegre
75

Lisboa 100
150
90 Evora

Sines 150

80
F aro

Mapa de custos
84

5
V.Castelo Braga
25 8
15
Aveiro V iseu
20 5
10
25 Santarem P ortalegre
5

Lisboa 15
10
12 Evora

Sines 8

12
F aro
Mapa de tempos
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 Pub-


lishing 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 Interna-
tional Editions, 1999, ISBN 0-07-116756-0.

[7] L. Cuesta, A. Gil Padilla, F. Remiro, Electronica 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 formas canonicas, 29


loop, 71 conjuntiva, 29
incidente, 70 disjuntiva, 29
lacete, 71 funcao booleana, 24
paralela, 71
associatividade, 23 grafo, 69
axioma, 22 completo, 71
conexo, 75
base, 1 multigrafo, 71
bits, 10 nao orientado, 70
orientado, 70
caminho, 72 pseudografo, 71
comprimento, 72 simples, 71
ciclo de Euler, 74 grau, 74
complemento, 23
comutatividade, 22 idempotencia, 22
conectivos logicos, 16 implicacao, 18
conjuncao, 17 index, 16
conjunto, 22
contagem de caminhos, 77 Leis de Morgan, 23
conversao entre bases, 7 literal, 41

diagonal principal, 51 metodo


digrafo, 70 algebrico, 30, 33
disjuncao, 16 das tabelas de verdade, 32, 34
disjuncao exclusiva, 17 mapas de Karnaugh, 35
distributividade, 22 Matlab
divisoes sucessivas, 6 full, 67
inv, 64
elemento neutro, 22 rref, 65
equivalencia, 19 sparse, 67
erro, 10 whos, 67

86
87

matriz, 49 tabela de verdade, 16


aumentada do sistema, 64 tautologia, 20
coluna, 51 termos produto, 29
componentes, 50 termos soma, 29
diagonal, 52
elementos, 50 vertice, 69
adjacente, 70
entradas, 50
distancia, 72
esparsa, 66
valor logico, 15
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

Vous aimerez peut-être aussi