Conte as variáveis diferentes: a tabela-verdade tem 2ⁿ linhas, começando com todas elas iguais a 1.
Dê a cada subfórmula a sua própria coluna e preencha as colunas de dentro para fora.
Aplique a regra de cada conectivo: → só é 0 para 1 → 0, ↔ vale 1 quando os dois lados coincidem.
Para equivalências, compare as colunas finais linha a linha; para um argumento, olhe apenas as linhas em que todas as premissas valem 1.
Para negar uma afirmação quantificada, mova ¬ para dentro, troque ∀ e ∃ e negue a fórmula interna.
Lógica digital: portas, mapas de Karnaugh e flip-flops
Portas básicas
A·B, A + B, A′, (A·B)′, (A + B)′, A ⊕ B
Regras booleanas
X + X′ = 1, X·X′ = 0, X + XY = X, XY + XY′ = X
De Morgan
(X·Y)′ = X′ + Y′, (X + Y)′ = X′·Y′
Ordem do mapa de Karnaugh
00, 01, 11, 10 (Gray code)
Grupo de 2ᵏ células
perde k variáveis
Multiplexador 4-para-1
F = A′B′I0 + A′BI1 + AB′I2 + ABI3
Flip-flops
D: Q⁺ = D, T: Q⁺ = T ⊕ Q, JK: Q⁺ = JQ′ + K′Q
Contadores
n bits: 2ⁿ estados; mod-N: menor n com 2ⁿ ≥ N; fout = fclk/N
Contador assíncrono (ripple)
fmax = 1/(n·tpd)
Contadores em anel e Johnson
n e 2n estados
Método
Para um circuito, trabalhe das entradas até a saída, uma porta de cada vez, e escreva o valor em cada fio, ou escreva a sua expressão e preencha a tabela-verdade.
Para simplificar, coloque os 1s (e as condições irrelevantes como X) num mapa de Karnaugh com linhas e colunas em código Gray: 00, 01, 11, 10.
Cubra os 1s com o menor número possível de grupos, os maiores possíveis, de 1, 2, 4, 8 ou 16 células, dando a volta pelas bordas; cada grupo é um termo produto formado pelas variáveis que permanecem constantes. Agrupe os 0s para a forma POS.
Para flip-flops e contadores, leia as entradas em cada borda ativa do clock, escreva o estado após cada borda e lembre-se de que um contador de n bits dá a volta após 2ⁿ estados.
Teoria dos números e aritmética modular
Divisão com resto
a = q·n + r, 0 ≤ r < n
Euclides
gcd(a, b) = gcd(b, a mod b)
Mínimo múltiplo comum
lcm(a, b) = a·b/gcd(a, b)
Inversa
a·a⁻¹ ≡ 1 (mod n), gcd(a, n) = 1
Congruência linear
a·x ≡ b → x ≡ a⁻¹·b (mod n)
Função totiente de Euler
φ(n) = n·∏(1 − 1/p), φ(pᵏ) = pᵏ − pᵏ⁻¹
Fermat
aᵖ⁻¹ ≡ 1 (mod p)
RSA
n = pq, φ = (p − 1)(q − 1), d = e⁻¹ mod φ, c = mᵉ mod n, m = cᵈ mod n
Método
Reduza antes todos os números módulo n; os restos ficam entre 0 e n − 1.
Para um mdc, divida repetidamente com o algoritmo de Euclides; o último resto não nulo é o mdc.
Para um inverso, execute o algoritmo estendido e guarde o coeficiente de a; some n se ele for negativo.
Resolva a·x ≡ b multiplicando por a⁻¹; combine duas congruências escrevendo x = r₁ + m₁k.
Para potências, escreva o expoente em binário e eleve ao quadrado repetidamente; no RSA, d = e⁻¹ mod φ(n) com φ(n) = (p − 1)(q − 1).
Teoria dos grafos
Lema do aperto de mãos
Σ deg(v) = 2|E|
Grafos completos
|E(Kn)| = n(n − 1)/2, |E(Km,n)| = m·n
Grafo regular
|E| = n·k/2
Árvore e floresta
|E| = n − 1, |E| = n − c
Folhas de uma árvore
L = 2 + Σ (deg(v) − 2) over deg(v) ≥ 3
Euler
circuito: todos os graus pares; caminho: exatamente 2 graus ímpares
Circuitos hamiltonianos em Kn
(n − 1)!/2
Atualização de Dijkstra
d(v) = min(d(v), d(u) + w(u, v))
Passeios de comprimento L
(Mᴸ)ij
Método
Anote o grau de cada vértice; a soma dos graus é igual ao dobro do número de arestas.
Em questões de Euler, verifique se o grafo é conexo e conte os vértices de grau ímpar.
Para árvores, use n − 1 arestas e o lema do aperto de mãos.
Em Dijkstra, mantenha uma tabela de distâncias provisórias e fixe a cada rodada o vértice não fixado de menor distância.
Para uma árvore geradora mínima, ordene as arestas por peso e pule toda aresta que feche um ciclo (Kruskal), ou faça crescer uma árvore a partir de um vértice inicial (Prim).
Sub-redes IPv4
Hosts por sub-rede
2(32 − prefix) − 2 (/31: 2, /32: 1)
Tamanho do bloco
256 − (mask octet)
Endereço de rede
IP AND máscara
Endereço de broadcast
IP OR (NOT máscara): todos os bits de host a 1
Sub-redes com n bits emprestados
2n
2Exercícios
1.Sistemas de numeraçãoMédia
O padrão de 8 bits 1001 0010 guarda um inteiro com sinal em complemento para dois. Qual é o seu valor N em decimal?
1001 00108 bit
N =
2.Sistemas de numeraçãoDifícil
Qual é o maior inteiro sem sinal N que cabe em 16 bits?
16 bit
N =
3.Lógica proposicional e demonstraçõesMédia
p → (p ∧ r) é uma tautologia, uma contradição ou uma contingência? Clique na sua resposta.
p → (p ∧ r)
1tautologia
2contradição
3contingência
4.Lógica proposicional e demonstraçõesDifícil
Qual afirmação é equivalente a ¬∃x P(x), com a negação movida totalmente para dentro? Clique nela.
¬∃x P(x)
1∃x ¬P(x)
2∀x P(x)
3∃x P(x)
4∀x ¬P(x)
5.Lógica digital: portas, mapas de Karnaugh e flip-flopsMédia
Simplifique F = A′B + A′B′C′ + A′C até a sua forma mínima em soma de produtos. Quantos literais L a expressão simplificada contém?
F = A′B + A′B′C′ + A′C
L =
6.Lógica digital: portas, mapas de Karnaugh e flip-flopsDifícil
Um flip-flop T acionado na borda de subida começa com Q = 0 e recebe as entradas mostradas em 8 bordas de subida do clock. Quantas vezes N Q muda de estado?
Q₀ = 0T
N =
7.Teoria dos números e aritmética modularMédia
Encontre o menor inteiro positivo x com x ≡ 8 (mod 12) e x ≡ 1 (mod 13).
x ≡ 8 (mod 12)x ≡ 1 (mod 13)
x =
8.Teoria dos números e aritmética modularDifícil
Uma chave RSA usa p = 19, q = 29 e e = 23. Decifre o texto cifrado c = 53: encontre a mensagem m.
p = 19q = 29e = 23c = 53
m =
9.Algoritmos e complexidadeMédia
Qual é a complexidade de tempo de calcular o n-ésimo número de Fibonacci com uma tabela bottom-up?
AO(log n)
BO(n²)
CO(n)
DO(2ⁿ)
10.Algoritmos e complexidadeDifícil
Para mostrar que um novo problema X é NP-difícil, o que você precisa fazer?
AReduzir X a um problema NP-difícil conhecido em tempo polinomial
BMostrar que X não tem algoritmo polinomial para entradas pequenas
CReduzir um problema NP-difícil conhecido a X em tempo polinomial
DMostrar que X pode ser verificado em tempo polinomial
11.Estruturas de dadosMédia
Qual é o valor da expressão pós-fixa 3 4 + 2 * ?
A10
B11
C24
D14
12.Estruturas de dadosDifícil
Qual par de percursos sempre determina uma árvore binária única com chaves distintas?
APré-ordem e em ordem
BPré-ordem e pós-ordem
CSó o percurso por níveis
DSó a pré-ordem
13.Teoria dos grafosMédia
O grafo conexo tem um circuito euleriano, um caminho euleriano que não é circuito, ou nenhum dos dois? Clique na sua resposta.
|V| = 6|E| = 7
1Circuito euleriano
2Caminho euleriano, sem circuito
3nenhuma das duas
14.Teoria dos grafosDifícil
O algoritmo de Prim constrói uma árvore geradora mínima a partir do vértice B. Clique na aresta que ele acrescenta como aresta de número 4.
início: Bk = 4
1aresta AB
2aresta AC
3aresta BD
4aresta CE
5aresta DF
6aresta EF
7aresta GB
8aresta GC
9aresta GD
10aresta GE
15.Bases de dados e SQLMédia
O que é uma leitura suja (dirty read)?
ALer dados sem cláusula WHERE
BLer dados de um disco corrompido
CLer dados gravados por outra transação que ainda não foi confirmada
DLer a mesma linha duas vezes e obter o mesmo valor
16.Bases de dados e SQLDifícil
Qual é o resultado de SELECT COUNT(col) FROM t se todos os valores de col forem NULL e a tabela tiver 10 linhas?
ANULL
B10
CUm erro
D0
17.Redes de computadoresMédia
Qual é o endereço de rede do host 192.168.10.77/26?
A192.168.10.64
B192.168.10.76
C192.168.10.0
D192.168.10.128
18.Redes de computadoresDifícil
O problema da contagem ao infinito ocorre em que tipo de protocolo de roteamento, e o que ajuda contra ele?
AEstado de enlace; inundação de atualizações de enlace
BVetor de caminho; caminhos de AS mais longos
CVetor de distância; split horizon e poison reverse
DRoteamento estático; adição de rotas padrão
19.Sub-redes IPv4Média
Um departamento precisa de 1216 endereços de host numa única sub-rede. Qual é o prefixo mais longo p (a sub-rede mais pequena) que chega?
1216 hosts
p =
20.Sub-redes IPv4Difícil
Um host tem o endereço 10.20.161.85/30. Qual é o quarto octeto x do último endereço de host utilizável da sua sub-rede?
10.20.161.85/30
x =
3Soluções
1.Sistemas de numeração
Resposta: N = −110
Sistemas de numeração posicionais: cada algarismo vale o seu valor vezes uma potência da base. Em binário as posições valem 1, 2, 4, 8, 16, …; em hexadecimal 1, 16, 256, …, com A–F para 10–15. No complemento para dois de 8 bits, o bit da esquerda vale −128 em vez de +128; é assim que se guardam os números negativos.
Somar os pesos
Os restantes bits mantêm os seus valores positivos normais.
−128 + 16 + 2 = −110
Resposta
N = −110
2.Sistemas de numeração
Resposta: N = 65535
Sistemas de numeração posicionais: cada algarismo vale o seu valor vezes uma potência da base. Em binário as posições valem 1, 2, 4, 8, 16, …; em hexadecimal 1, 16, 256, …, com A–F para 10–15. No complemento para dois de 8 bits, o bit da esquerda vale −128 em vez de +128; é assim que se guardam os números negativos.
Maior valor
216 − 1 = 65535
Resposta
N = 65535
3.Lógica proposicional e demonstrações
Resposta: contingência
Equivalência lógica: duas fórmulas são equivalentes (≡) quando têm o mesmo valor em todas as linhas da tabela-verdade. Uma tautologia vale 1 em todas as linhas, uma contradição vale 0 em todas as linhas, e uma contingência não é nenhuma das duas. Leis úteis: De Morgan, ¬(a ∧ b) ≡ ¬a ∨ ¬b e ¬(a ∨ b) ≡ ¬a ∧ ¬b; a → b ≡ ¬a ∨ b ≡ ¬b → ¬a (contrapositiva); ¬(a → b) ≡ a ∧ ¬b; e as leis distributivas, a ∨ (b ∧ c) ≡ (a ∨ b) ∧ (a ∨ c).
Tabela-verdade linha por linha
p = 1, r = 1: p ∧ r = 1, p → (p ∧ r) = 1
p = 1, r = 0: p ∧ r = 0, p → (p ∧ r) = 0
p = 0, r = 1: p ∧ r = 0, p → (p ∧ r) = 1
p = 0, r = 0: p ∧ r = 0, p → (p ∧ r) = 1
Classifique
p → (p ∧ r): 1, 0, 1, 1
1 em 3 das 4 linhas, 0 nas outras: uma contingência.
Resposta
contingência
4.Lógica proposicional e demonstrações
Resposta: ∀x ¬P(x)
Quantificadores e argumentos: ¬∀x P(x) ≡ ∃x ¬P(x) e ¬∃x P(x) ≡ ∀x ¬P(x). Mova a negação para dentro, troque todo quantificador que ela atravessa e negue a fórmula interna com as leis proposicionais, como ¬(a → b) ≡ a ∧ ¬b. Um argumento é válido quando a conclusão vale 1 em toda linha em que todas as premissas valem 1. Uma única linha com premissas verdadeiras e conclusão falsa é um contraexemplo e mostra que o argumento é inválido.
Mova a negação para dentro
¬∃x P(x) ≡ ∀x ¬P(x)
Resposta
∀x ¬P(x)
As outras alternativas mantêm um quantificador inalterado, mudam a ordem dos quantificadores ou negam a fórmula interna de forma errada.
5.Lógica digital: portas, mapas de Karnaugh e flip-flops
Resposta: L = 1
Álgebra booleana: as regras que simplificam expressões são X + X′ = 1 e X·X′ = 0, X + X = X, a absorção X + X·Y = X, a regra de combinação X·Y + X·Y′ = X, X + X′Y = X + Y e o teorema do consenso XY + X′Z + YZ = XY + X′Z. As leis de De Morgan transformam (X·Y)′ em X′ + Y′ e (X + Y)′ em X′·Y′. Um mapa de Karnaugh aplica essas regras graficamente: cada grupo de duas células vizinhas é um uso de XY + XY′ = X.
Mintermos da expressão
A′B → m(2, 3)
A′B′C′ → m(0)
A′C → m(1, 3)
Agrupe e leia
F = A′
Conte os literais
L = 1
Resposta
L = 1
6.Lógica digital: portas, mapas de Karnaugh e flip-flops
Resposta: N = 4
Flip-flops e contadores: um flip-flop muda apenas na borda ativa do clock. D copia a sua entrada (Q⁺ = D); T inverte quando T = 1; JK mantém para 00, zera para 01, seta para 10 e inverte para 11. Um contador binário de n bits tem 2ⁿ estados e conta módulo 2ⁿ; um contador módulo N conta 0, 1, …, N − 1 e volta a 0, e precisa de flip-flops em número igual ao menor n com 2ⁿ ≥ N. Cada estágio de um contador assíncrono (ripple) divide a frequência por dois, de modo que a última saída de um contador módulo N funciona a fclk/N. Um contador Johnson de n flip-flops tem 2n estados, um contador em anel n.
Q após cada borda
Um flip-flop T inverte em cada borda de subida com T = 1 e mantém com T = 0.
1: T = 0 → Q = 0
2: T = 0 → Q = 0
3: T = 0 → Q = 0
4: T = 0 → Q = 0
5: T = 1 → Q = 1
6: T = 1 → Q = 0
7: T = 1 → Q = 1
8: T = 1 → Q = 0
Conte as mudanças
0 → 0 → 0 → 0 → 0 → 1 → 0 → 1 → 0
N = 4
Resposta
N = 4
7.Teoria dos números e aritmética modular
Resposta: x = 92
Inversos e congruências: a tem inverso módulo n exatamente quando mdc(a, n) = 1. O algoritmo de Euclides estendido escreve 1 = s·n + t·a, e então a⁻¹ ≡ t (mod n). Uma congruência a·x ≡ b (mod n) com mdc(a, n) = 1 tem a solução x ≡ a⁻¹·b. Duas congruências x ≡ r₁ (mod m₁) e x ≡ r₂ (mod m₂) com módulos coprimos têm uma solução módulo m₁·m₂ (teorema chinês do resto). O φ(n) de Euler conta os números de 1 a n que são coprimos com n: φ(n) = n·∏(1 − 1/p).
Primeira congruência
x = 8 + 12k
Segunda congruência
8 + 12k ≡ 1 (mod 13) → 12k ≡ 6 (mod 13)
k ≡ 12·6 ≡ 7 (mod 13)
Resultado
x = 8 + 12·7 = 92
x = 92
verificação: 92 mod 12 = 8, 92 mod 13 = 1
Resposta
x = 92
8.Teoria dos números e aritmética modular
Resposta: m = 364
Potências modulares e RSA: calcule aᵏ mod n por elevação ao quadrado repetida: escreva k em binário, eleve ao quadrado, reduza a cada passo e multiplique as potências cujo bit é 1. Fermat: aᵖ⁻¹ ≡ 1 (mod p) para um primo p que não divide a, então o expoente pode ser reduzido módulo p − 1. RSA: escolha primos p e q, n = p·q e φ(n) = (p − 1)(q − 1); o expoente público e é coprimo com φ(n), e o expoente privado é d = e⁻¹ mod φ(n). Cifre com c = mᵉ mod n e decifre com m = cᵈ mod n.
Expoente privado
n = 551, φ(n) = 504
d = 23−1 mod 504 = 263
Decifre por elevação ao quadrado repetida
263 = 256 + 4 + 2 + 1
531 ≡ 53 (mod 551)
532 ≡ 54 (mod 551)
534 ≡ 161 (mod 551)
538 ≡ 24 (mod 551)
5316 ≡ 25 (mod 551)
5332 ≡ 74 (mod 551)
5364 ≡ 517 (mod 551)
53128 ≡ 54 (mod 551)
53256 ≡ 161 (mod 551)
53263 ≡ 53·54·161·161 ≡ 364 (mod 551)
Mensagem
m = 364
verificação: 36423 mod 551 = 53
Resposta
m = 364
9.Algoritmos e complexidade
Resposta: C · O(n)
Porque é esta a resposta
Preencher a tabela de 0 a n custa uma adição por entrada, então o trabalho é linear em vez de exponencial.
Resposta
C · O(n)
10.Algoritmos e complexidade
Resposta: C · Reduzir um problema NP-difícil conhecido a X em tempo polinomial
Porque é esta a resposta
Se um problema difícil conhecido pode ser transformado em X de forma eficiente, um algoritmo rápido para X também resolveria o problema conhecido.
Resposta
C · Reduzir um problema NP-difícil conhecido a X em tempo polinomial
11.Estruturas de dados
Resposta: D · 14
Porque é esta a resposta
Empilhe 3 e 4, + dá 7; empilhe 2, * dá 7 × 2 = 14.
Resposta
D · 14
12.Estruturas de dados
Resposta: A · Pré-ordem e em ordem
Porque é esta a resposta
A pré-ordem dá a raiz, e a posição dela na sequência em ordem separa as subárvores esquerda e direita; pré-ordem com pós-ordem é ambígua quando um nó tem um só filho.
Resposta
A · Pré-ordem e em ordem
13.Teoria dos grafos
Resposta: nenhuma das duas
Euler, Hamilton e árvores: um grafo conexo tem um circuito euleriano (cada aresta uma vez, de volta ao início) quando todo vértice tem grau par, e um caminho euleriano que não é circuito quando exatamente dois vértices têm grau ímpar; o caminho vai então de um vértice ímpar ao outro. Um circuito hamiltoniano visita cada vértice uma vez; Kn tem (n − 1)!/2 deles. Uma árvore com n vértices tem n − 1 arestas, e um grafo conexo com m arestas mantém uma árvore geradora depois de remover m − n + 1 arestas.
Caminhos mínimos e árvores geradoras: o algoritmo de Dijkstra fixa um vértice por rodada: o vértice não fixado com a menor distância provisória. Sua distância torna-se definitiva, e cada vizinho v recebe d(v) = min(d(v), d(u) + w(u, v)). O algoritmo de Kruskal constrói uma árvore geradora mínima tomando as arestas da mais leve para a mais pesada e descartando qualquer aresta que feche um ciclo; o algoritmo de Prim faz crescer uma árvore a partir de um vértice inicial acrescentando sempre a aresta mais leve que sai dela. Uma árvore geradora de n vértices tem n − 1 arestas.
Algoritmo de Prim
1. GB (4)
2. BD (5)
3. GC (6)
4. AC (1)
5. GE (8)
6. EF (10)
número da aresta 4
AC
Resposta
aresta AC
15.Bases de dados e SQL
Resposta: C · Ler dados gravados por outra transação que ainda não foi confirmada
Porque é esta a resposta
Uma leitura suja vê alterações não confirmadas que podem ser desfeitas; ela só é possível no nível read uncommitted.
Resposta
C · Ler dados gravados por outra transação que ainda não foi confirmada
16.Bases de dados e SQL
Resposta: D · 0
Porque é esta a resposta
COUNT(col) conta valores não NULL, então retorna 0; COUNT(*) retornaria 10.
Resposta
D · 0
17.Redes de computadores
Resposta: A · 192.168.10.64
Porque é esta a resposta
As sub-redes /26 começam em 0, 64, 128 e 192. 77 está no bloco 64–127, então o endereço de rede é 192.168.10.64.
Resposta
A · 192.168.10.64
18.Redes de computadores
Resposta: C · Vetor de distância; split horizon e poison reverse
Porque é esta a resposta
Após uma falha, roteadores de vetor de distância podem continuar anunciando uns aos outros rotas obsoletas, aumentando a métrica lentamente. Split horizon, poison reverse e uma métrica máxima limitam isso.
Resposta
C · Vetor de distância; split horizon e poison reverse
19.Sub-redes IPv4
Resposta: p = 21
Sub-redes IPv4: um endereço tem 32 bits. O prefixo /p indica quantos bits iniciais identificam a rede; os restantes 32 − p bits numeram os hosts. Uma sub-rede tem 2³²⁻ᵖ endereços, mas o primeiro (endereço de rede) e o último (broadcast) não podem ser atribuídos a hosts, por isso cabem 2³²⁻ᵖ − 2 hosts. Exceções: um /31 (enlace ponto a ponto, RFC 3021) usa os seus 2 endereços para hosts, e um /32 é um único endereço (um único host ou um loopback).
Bits de host necessários
210 − 2 = 1022 < 1216
211 − 2 = 2046 ≥ 1216 → h = 11
Comprimento do prefixo
p = 32 − 11 = 21
Resposta
p = /21
20.Sub-redes IPv4
Resposta: x = 86
Sub-redes IPv4: um endereço tem 32 bits. O prefixo /p indica quantos bits iniciais identificam a rede; os restantes 32 − p bits numeram os hosts. Uma sub-rede tem 2³²⁻ᵖ endereços, mas o primeiro (endereço de rede) e o último (broadcast) não podem ser atribuídos a hosts, por isso cabem 2³²⁻ᵖ − 2 hosts. Exceções: um /31 (enlace ponto a ponto, RFC 3021) usa os seus 2 endereços para hosts, e um /32 é um único endereço (um único host ou um loopback).