Académique Documents
Professionnel Documents
Culture Documents
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
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.
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:
2. ser biunvoco;
1
2
Esquematicamente:
10000 1000 100 10 1
4 7 2 5 0
Para a representacao de qualquer numero nesta base podemos, prolongar o esquema anterior:
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
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
.. ..
. .
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
32 16 8 4 2 1
1 0 1 0 0 1
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 ).
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
.. ..
. .
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 , . . .
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?
(12751)8 = (5609)10
5
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
.. ..
. .
Por exemplo: a que numero corresponde, base decimal, o numero (2C7)16 ? Vejamos:
162 161 160
2 C 7
6
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:
Vejamos:
(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 .
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.
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.
A |{z}
|{z} 3 |{z}
F |{z}
5
1010 0011 1111 0101
Isto e:
(A3F5)16 = (1010001111110101)2
Repare-se que agora sao utilizados grupos de quatro dgitos (em vez de grupos de tres dgitos
utilizados na conversao binario octal ).
9
Exerccios:
5. Converter (1E2A5)16 em base 2 e em base 8.
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
STOP
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.
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.
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.
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
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
(10101)2 2 (110)2 = ?
2 0 1
0 0 0
1 0 1
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:
Exerccios:
12. Efectue as seguintes operacoes, pelo metodo do complemento para 2:
(a) 10011010 01010101 ; (b) 1011010110 0110001101 ;
Algebras de Boole
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:
O sol e um planeta.
2 + 2 = 1000.
Por outro lado, existem muitas expressoes que nao sao proposicoes, por exemplo:
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.
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
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.
p q pq
V V V
V F V
F V V
F F F
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
and(p, q) ou p q .
p q pq
V V V
V F F
F V F
F F F
Exerccios:
18
(a) p , q e r
(b) p q , p r e q p.
(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
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.
p q pq
V V V
V F F
F V F
F F V
Exerccios:
22. Considere as proposicoes
p: Amanha e domingo.
q: Eu vou a um concerto.
pq
(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
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) .
aa=a e aa=a
23
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
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 .
(a) p q r .
(b) (p q r) s .
(c) (p F ) (q V ) .
24
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.
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
b b
B
corresponde a funcao F (A, B) = A B.
Por sua vez, o circuito
b A B 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) .
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 .
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
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:
(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
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
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.
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 =
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.
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;
Exerccios:
41. Utilize este metodo para mostrar que a funcao anterior e equivalente a
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:
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 .
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 + 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:
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;
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:
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
Exemplo 1: f1 (A, B) = A + AB + AB .
Exemplo 2: f2 (A, B, C) = AB + AC + BC .
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
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
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
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
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:
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
f1 (A, B): B
0 0
0 1
A 1 1
2 3
f1 (A, B): B
0 0
0 1
A
A 1 1
2 3
f1 (A, B) = A + AB + AB = A .
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
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:
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
(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
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) 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
Na resolucao dos exerccios 47.(b), 48.(b), 49.(a) e 49.(d) recorre-se as tabelas da pagina 35.
A
C
1 0 1 0
0 1 5 4
B 1 1 1 1
2 3 7 6
A
C
1 1 0 1
0 1 5 4
B 0 0 1 0
2 3 7 6
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
A
C
0 1 1 1
0 1 5 4
B 0 0 0 0
2 3 7 6
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
A
C
AC - BC
1 1 1 0
0 1 5 4
B 1 0 0 0
2 3 7 6
A
C
A+C
1 1 1 0
0 1 5 4
B 1 0 00 B+C
2 3 7 6
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
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
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
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, . . .
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.
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
igualdade de matrizes;
transposicao;
soma de matrizes;
produto escalar;
produto de matrizes.
53
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
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
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
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
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:
(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
a1 b2 c2 d1
a2 b3 c3 d2
b4
A partir deste diagrama, definamos 3 matrizes:
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
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.
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
Aqui vamos ver como criar, manipular e operar com matrizes. Introduzindo as matrizes
directamente no MatLab:
A seguir, enumeram-se algumas formas de manipular uma matriz e as instrucoes MatLab que
lhes correspondem:
>>A(2,3)=-2
1 3 2
1 0 2 .
3 1 0
>>A(2,:)=[0 1 2]
1 3 2
0 1 2 .
3 1 0
>>A(:,3)=[-1;0;-1]
1 3 1
0 1 0 .
3 1 1
Transposta de A: >>A ;
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).
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
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.
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.
>>inv(A)*b
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]
>>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.
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
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
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
FA=full(SA)
>>whos
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
b1 c1 d1 e1
a1 b2 c2 d2
a2 b3 c3 d3 e2
b4
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
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} ;
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.
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
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
em cada aresta (excepto na primeira) um dos seus vertices coincide com um dos vertices
da aresta anterior;
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
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;
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?
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.
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.
s v w z w x
G: u y H: y z
s t
u v w x
J: y z
67. Quais dos caminhos descritos no exerccio 66. sao caminhos fechados?
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.
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.
v3 v4 v5 v6
v7 v8
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.
v1 v1 v2
v2 v3 v3 v4 v5 v6
H: v4 v5 J: v7 v8
80. Determine:
79
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 }
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
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 :
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
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(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:
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
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:
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.
[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.
85
Indice Remissivo
86
87
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