Cuenta las variables distintas: la tabla de verdad tiene 2ⁿ filas, y la primera tiene todas ellas en 1.
Dale a cada subfórmula su propia columna y rellena las columnas de dentro hacia fuera.
Aplica la regla de cada conectivo: → solo es 0 en 1 → 0, y ↔ vale 1 cuando ambos lados coinciden.
Para las equivalencias, compara las columnas finales fila por fila; para un argumento, mira solo las filas en las que todas las premisas valen 1.
Para negar un enunciado cuantificado, desplaza ¬ hacia dentro, intercambia ∀ y ∃ y niega la fórmula interior.
Lógica digital: puertas, mapas K y biestables
Puertas básicas
A·B, A + B, A′, (A·B)′, (A + B)′, A ⊕ B
Reglas de Boole
X + X′ = 1, X·X′ = 0, X + XY = X, XY + XY′ = X
De Morgan
(X·Y)′ = X′ + Y′, (X + Y)′ = X′·Y′
Orden del mapa de Karnaugh
00, 01, 11, 10 (Gray code)
Grupo de 2ᵏ celdas
pierde k variables
Multiplexor de 4 a 1
F = A′B′I0 + A′BI1 + AB′I2 + ABI3
Biestables
D: Q⁺ = D, T: Q⁺ = T ⊕ Q, JK: Q⁺ = JQ′ + K′Q
Contadores
n bits: 2ⁿ estados; módulo N: el menor n con 2ⁿ ≥ N; fsal = fclk/N
Contador asíncrono
fmax = 1/(n·tpd)
Contadores en anillo y Johnson
n y 2n estados
Método
En un circuito, trabaja desde las entradas hasta la salida puerta por puerta y escribe el valor en cada hilo, o escribe su expresión y rellena la tabla de verdad.
Para simplificar, coloca los 1 (y las indiferencias como X) en un mapa de Karnaugh con filas y columnas en código Gray: 00, 01, 11, 10.
Cubre los 1 con los menos grupos posibles y lo más grandes posible, de 1, 2, 4, 8 o 16 celdas, envolviendo los bordes; cada grupo es un término producto formado por las variables que permanecen constantes. Agrupa los 0 para la forma POS.
En biestables y contadores, lee las entradas en cada flanco activo del reloj, anota el estado tras cada flanco y recuerda que un contador de n bits da la vuelta tras 2ⁿ estados.
Teoría de números y aritmética modular
División con resto
a = q·n + r, 0 ≤ r < n
Euclides
gcd(a, b) = gcd(b, a mod b)
Mínimo común múltiplo
lcm(a, b) = a·b/gcd(a, b)
Inversa
a·a⁻¹ ≡ 1 (mod n), gcd(a, n) = 1
Congruencia lineal
a·x ≡ b → x ≡ a⁻¹·b (mod n)
Función φ 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
Reduce primero cada número módulo n; los restos están entre 0 y n − 1.
Para un mcd, divide repetidamente con el algoritmo de Euclides; el último resto distinto de cero es el mcd.
Para un inverso, aplica el algoritmo extendido y quédate con el coeficiente de a; suma n si es negativo.
Resuelve a·x ≡ b multiplicando por a⁻¹; combina dos congruencias escribiendo x = r₁ + m₁k.
Para las potencias, escribe el exponente en binario y eleva al cuadrado repetidamente; en RSA, d = e⁻¹ mod φ(n) con φ(n) = (p − 1)(q − 1).
Teoría de grafos
Lema del apretón de manos
Σ deg(v) = 2|E|
Grafos completos
|E(Kn)| = n(n − 1)/2, |E(Km,n)| = m·n
Grafo regular
|E| = n·k/2
Árbol y bosque
|E| = n − 1, |E| = n − c
Hojas de un árbol
L = 2 + Σ (deg(v) − 2) over deg(v) ≥ 3
Euler
circuito: todos los grados pares; camino: exactamente 2 grados impares
Circuitos de Hamilton en Kn
(n − 1)!/2
Actualización de Dijkstra
d(v) = min(d(v), d(u) + w(u, v))
Recorridos de longitud L
(Mᴸ)ij
Método
Anota el grado de cada vértice; los grados suman el doble del número de aristas.
En las preguntas de Euler, comprueba que el grafo sea conexo y cuenta los vértices de grado impar.
En los árboles, usa n − 1 aristas y el lema del apretón de manos.
En Dijkstra, lleva una tabla de distancias provisionales y fija en cada ronda el vértice no fijado de menor distancia.
Para un árbol generador mínimo, ordena las aristas por peso y descarta toda arista que cierre un ciclo (Kruskal), o haz crecer un único árbol desde un vértice inicial (Prim).
Subredes IPv4
Hosts por subred
2(32 − prefix) − 2 (/31: 2, /32: 1)
Tamaño de bloque
256 − (mask octet)
Dirección de red
IP AND máscara
Dirección de difusión
IP OR (NOT máscara): todos los bits de host a 1
Subredes con n bits prestados
2n
2Problemas de práctica
1.Sistemas de numeraciónMedia
Escribe −71 como patrón de 8 bits en complemento a dos. Lee el patrón como un número binario sin signo: ¿cuál es su valor U en decimal?
N = −718 bit
U =
2.Sistemas de numeraciónDifícil
Pon los bits al resultado de 8 bits de 0101 1010 AND 1100 0100. ¿Cuál es el valor R del resultado en decimal?
0101 1010AND1100 0100
R =
3.Lógica proposicional y demostracionesMedia
Quieres demostrar ¬a → (b ∧ c) por contrarrecíproca. ¿Qué implicación demuestras en su lugar? Haz clic en ella.
¬a → (b ∧ c)
1¬a ∧ ¬(b ∧ c)
2¬(b ∧ c) → ¬¬a
3¬¬a → ¬(b ∧ c)
4(b ∧ c) → ¬a
4.Lógica proposicional y demostracionesDifícil
¿Cuántas de las 16 filas de la tabla de verdad hacen verdadera ((p ∧ r) ∧ q) ↔ ((r ∨ s) ∧ q)? Llama a ese número N.
((p ∧ r) ∧ q) ↔ ((r ∨ s) ∧ q)
N =
5.Lógica digital: puertas, mapas K y biestablesMedia
Un multiplexor de 4 a 1 tiene sus entradas de selección S₁ = A y S₀ = B, y sus entradas de datos conectadas a I₀ = C, I₁ = 0, I₂ = 0, I₃ = 0. ¿Para cuántas de las 8 combinaciones de A, B y C la salida es F = 1? Halla N.
I₀ = CI₁ = 0I₂ = 0I₃ = 0
N =
6.Lógica digital: puertas, mapas K y biestablesDifícil
Un contador módulo 7 se construye con el número mínimo de biestables. ¿Cuántos de los estados posibles, U, no se usan nunca?
N = 7
U =
7.Teoría de números y aritmética modularMedia
Resuelve 81x ≡ 76 (mod 92). Da la solución x con 0 < x < 92.
81x ≡ 76 (mod 92)
x =
8.Teoría de números y aritmética modularDifícil
Cifra el mensaje m = 331 con la clave pública RSA (n, e) = (437, 23). Halla el texto cifrado c.
n = 437e = 23m = 331
c =
9.Algoritmos y complejidadMedia
¿Por qué la programación dinámica no aporta ninguna mejora real a merge sort?
AMerge sort ya es O(n)
BSus subproblemas no se solapan, así que no hay nada que reutilizar
CLa programación dinámica solo funciona con problemas de grafos, no con arreglos
DMerge sort no tiene estructura recursiva
10.Algoritmos y complejidadDifícil
¿Cómo se clasifica el problema del viajante?
ALa versión de decisión es NP-completa y la de optimización es NP-difícil
BEs indecidible
CEstá en P porque el algoritmo de Dijkstra lo resuelve visitando cada ciudad una vez
DLa versión de decisión está en P, pero la de optimización es NP-completa
11.Estructuras de datosMedia
¿Qué estructura de datos usa un programa en ejecución para llevar el control de las llamadas a funciones activas y sus variables locales?
AUn árbol binario de búsqueda de marcos
BUna tabla hash de funciones
CLa pila de llamadas
DLa cola de memoria del heap
12.Estructuras de datosDifícil
¿Cuáles son los costes en tiempo y en espacio adicional de invertir en el sitio una lista simplemente enlazada?
ATiempo O(n) y espacio adicional O(1)
BTiempo O(1) y espacio adicional O(1)
CTiempo O(n log n) y espacio adicional O(1)
DTiempo O(n) y espacio adicional O(n)
13.Teoría de grafosMedia
¿Cuántos circuitos de Hamilton distintos, H, tiene el grafo completo K5? Los circuitos que solo difieren en el vértice inicial o en el sentido cuentan como el mismo.
K5
H =
14.Teoría de grafosDifícil
Usa el algoritmo de Dijkstra para hallar la longitud d(F) del camino más corto de A a F en el grafo ponderado.
inicio: Afin: F
d(F) =
15.Bases de datos y SQLMedia
Los estudiantes pueden cursar muchas asignaturas y las asignaturas tienen muchos estudiantes. ¿Cómo se modela esto en tablas?
ACon una lista de ids de asignaturas almacenada en una columna
BCon una tabla intermedia que contiene claves foráneas a estudiantes y a asignaturas
CCon una columna de clave foránea course_id en la tabla students que apunte a courses
DFusionando estudiantes y asignaturas en una sola tabla
16.Bases de datos y SQLDifícil
La forma normal de Boyce-Codd (FNBC) exige que, para toda dependencia funcional no trivial X → Y:
AX sea una superclave
BY sea atómico
CY sea una clave primaria
DX contenga NULL
17.Redes de computadoresMedia
¿Cuántas direcciones de host utilizables tiene una subred IPv4 /26?
A126
B62
C64
D30
18.Redes de computadoresDifícil
¿Por qué se introdujo la opción de escalado de ventana de TCP?
AUDP necesitaba una forma de controlar su velocidad de envío en rutas congestionadas
BEl campo de ventana de 32 bits era demasiado grande y desperdiciaba espacio de cabecera en cada segmento TCP enviado
CEl campo de ventana de 16 bits limita la ventana a 65,535 bytes, demasiado poco para rutas rápidas de larga distancia
DSin ella, TCP no podía detectar segmentos perdidos en enlaces de larga distancia
19.Subredes IPv4Media
Un departamento necesita 790 direcciones de host en una sola subred. ¿Cuál es la mayor longitud de prefijo p (la subred más pequeña) que basta?
790 hosts
p =
20.Subredes IPv4Difícil
Un router tiene rutas a estas redes: 10.43.101.0/24, 10.43.102.0/24, 10.43.103.0/24, 10.43.104.0/24. ¿Cuál es la longitud de prefijo más larga p de una única ruta resumida que las cubra todas?
10.43.101.0/24 … 10.43.104.0/24
p =
3Disoluciones
1.Sistemas de numeración
Respuesta: U = 185
Sistemas de numeración posicionales: cada dígito vale su valor por una potencia de la base. En binario las posiciones valen 1, 2, 4, 8, 16, …; en hexadecimal 1, 16, 256, …, con A–F para 10–15. En complemento a dos de 8 bits, el bit de la izquierda vale −128 en vez de +128; así se guardan los números negativos.
Invertir y sumar uno
71 = 0100 0111
invertido: 1011 1000
+1 → 1011 1001
Leerlo sin signo
1011 1001₂ = 256 − 71 = 185
Respuesta
U = 185
2.Sistemas de numeración
Respuesta: R = 64
Poner bits: cada bit vale una potencia de dos (128, 64, …, 1). Un dígito hexadecimal son exactamente cuatro bits, y en complemento a dos de 8 bits el bit de más a la izquierda vale −128. Las operaciones bit a bit actúan sobre cada posición de bit por separado.
Bit a bit
AND da 1 solo donde ambos bits son 1.
0101 1010
AND 1100 0100
= 0100 0000
Valor del resultado
0100 0000₂ = 64
Respuesta
R = 64
3.Lógica proposicional y demostraciones
Respuesta: ¬(b ∧ c) → ¬¬a
Equivalencia lógica: dos fórmulas son equivalentes (≡) cuando tienen el mismo valor en todas las filas de la tabla de verdad. Una tautología vale 1 en todas las filas, una contradicción vale 0 en todas las filas, y una contingencia no es ninguna de las dos. Leyes útiles: De Morgan, ¬(a ∧ b) ≡ ¬a ∨ ¬b y ¬(a ∨ b) ≡ ¬a ∧ ¬b; a → b ≡ ¬a ∨ b ≡ ¬b → ¬a (contrarrecíproca); ¬(a → b) ≡ a ∧ ¬b; y las leyes distributivas, a ∨ (b ∧ c) ≡ (a ∨ b) ∧ (a ∨ c).
Partes de la implicación
a = ¬a, b = b ∧ c
Contrarrecíproca
¬b → ¬a = ¬(b ∧ c) → ¬¬a
Respuesta
¬(b ∧ c) → ¬¬a
La contrarrecíproca es equivalente al enunciado original, así que demostrarla demuestra el enunciado.
4.Lógica proposicional y demostraciones
Respuesta: N = 12
Tablas de verdad: una fórmula con n variables distintas tiene 2ⁿ filas, una por cada combinación de valores de verdad (1 = verdadero, 0 = falso). Trabaja de dentro hacia fuera y dale a cada subfórmula su propia columna. ¬a invierte el valor; a ∧ b vale 1 solo cuando ambos son 1; a ∨ b vale 0 solo cuando ambos son 0; a → b vale 0 solo cuando a = 1 y b = 0; a ↔ b vale 1 cuando ambos lados son iguales.
Multiplexor: un multiplexor de 2ⁿ a 1 pasa una de sus entradas de datos a la salida; las líneas de selección, leídas como un número binario, eligen cuál. En un MUX de 4 a 1 con selecciones S₁S₀ = AB, F = A′B′·I₀ + A′B·I₁ + AB′·I₂ + AB·I₃. Conectar las entradas de datos a 0, 1, C o C′ hace que el MUX produzca cualquier función de A, B y C, lo que es una forma habitual de construir lógica con un solo chip.
Expresión de la salida
F = A′B′C
Filas con F = 1
ABC = 001
N = 1
Respuesta
N = 1
6.Lógica digital: puertas, mapas K y biestables
Respuesta: U = 1
Biestables y contadores: un biestable cambia solo en el flanco activo del reloj. D copia su entrada (Q⁺ = D); T conmuta cuando T = 1; JK mantiene con 00, pone a 0 con 01, pone a 1 con 10 y conmuta con 11. Un contador binario de n bits tiene 2ⁿ estados y cuenta módulo 2ⁿ; un contador módulo N cuenta 0, 1, …, N − 1 y vuelve a 0, y necesita el menor n con 2ⁿ ≥ N biestables. Cada etapa de un contador asíncrono divide la frecuencia a la mitad, así que la última salida de un contador módulo N funciona a fclk/N. Un contador Johnson de n biestables tiene 2n estados y un contador en anillo, n.
Número de biestables
2ⁿ ≥ 7 → n = 3 (2³ = 8)
Estados sin usar
U = 8 − 7 = 1
Respuesta
U = 1
7.Teoría de números y aritmética modular
Respuesta: x = 60
Inversos y congruencias: a tiene inverso módulo n exactamente cuando mcd(a, n) = 1. El algoritmo de Euclides extendido escribe 1 = s·n + t·a, y entonces a⁻¹ ≡ t (mod n). Una congruencia a·x ≡ b (mod n) con mcd(a, n) = 1 tiene la solución x ≡ a⁻¹·b. Dos congruencias x ≡ r₁ (mod m₁) y x ≡ r₂ (mod m₂) con módulos coprimos tienen una solución módulo m₁·m₂ (teorema chino del resto). La φ(n) de Euler cuenta los números de 1 a n que son coprimos con n: φ(n) = n·∏(1 − 1/p).
Inverso de 81
r = 92, t = 0
r = 81, q = 1, t = 1
r = 11, q = 7, t = −1
r = 4, q = 2, t = 8
r = 3, q = 1, t = −17
r = 1, q = 3, t = 25
81−1 ≡ 25 (mod 92)
Resuelve
x ≡ 25·76 = 1900 ≡ 60 (mod 92)
comprobación: 81·60 = 4860 ≡ 76 (mod 92)
Respuesta
x = 60
8.Teoría de números y aritmética modular
Respuesta: c = 354
Potencias modulares y RSA: calcula aᵏ mod n por cuadrado repetido: escribe k en binario, eleva al cuadrado, reduce después de cada paso y multiplica las potencias cuyo bit es 1. Fermat: aᵖ⁻¹ ≡ 1 (mod p) para un primo p que no divide a a, así que el exponente se puede reducir módulo p − 1. RSA: elige los primos p y q, n = p·q y φ(n) = (p − 1)(q − 1); el exponente público e es coprimo con φ(n), y el exponente privado es d = e⁻¹ mod φ(n). Cifra con c = mᵉ mod n y descifra con m = cᵈ mod n.
Cuadrado repetido
23 = 16 + 4 + 2 + 1
3311 ≡ 331 (mod 437)
3312 ≡ 311 (mod 437)
3314 ≡ 144 (mod 437)
3318 ≡ 197 (mod 437)
33116 ≡ 353 (mod 437)
33123 ≡ 331·311·144·353 ≡ 354 (mod 437)
Texto cifrado
c = 354
Respuesta
c = 354
9.Algoritmos y complejidad
Respuesta: B · Sus subproblemas no se solapan, así que no hay nada que reutilizar
Por qué esta es la respuesta
Las mitades de merge sort son disjuntas y cada una se resuelve una sola vez; la PD solo ayuda cuando los subproblemas se repiten, como en Fibonacci.
Respuesta
B · Sus subproblemas no se solapan, así que no hay nada que reutilizar
10.Algoritmos y complejidad
Respuesta: A · La versión de decisión es NP-completa y la de optimización es NP-difícil
Por qué esta es la respuesta
«¿Hay un recorrido de longitud como mucho k?» es NP-completo; hallar el recorrido más corto es NP-difícil, porque es al menos igual de difícil.
Respuesta
A · La versión de decisión es NP-completa y la de optimización es NP-difícil
11.Estructuras de datos
Respuesta: C · La pila de llamadas
Por qué esta es la respuesta
Cada llamada apila un marco de pila y cada retorno lo desapila; por eso la llamada más reciente termina primero.
Respuesta
C · La pila de llamadas
12.Estructuras de datos
Respuesta: A · Tiempo O(n) y espacio adicional O(1)
Por qué esta es la respuesta
Con tres punteros (anterior, actual, siguiente) se puede invertir cada enlace en una sola pasada sin reservar nodos nuevos.
Respuesta
A · Tiempo O(n) y espacio adicional O(1)
13.Teoría de grafos
Respuesta: H = 12
Euler, Hamilton y árboles: un grafo conexo tiene un circuito euleriano (cada arista una vez, volviendo al inicio) cuando todos los vértices tienen grado par, y un camino euleriano que no es un circuito cuando exactamente dos vértices tienen grado impar; entonces el camino va de un vértice impar al otro. Un circuito hamiltoniano visita cada vértice una vez; Kn tiene (n − 1)!/2 de ellos. Un árbol de n vértices tiene n − 1 aristas, y un grafo conexo con m aristas conserva un árbol generador tras quitarle m − n + 1 aristas.
Contar
H = (5 − 1)!/2 = 24/2 = 12
Respuesta
H = 12
14.Teoría de grafos
Respuesta: d(F) = 7
Caminos mínimos y árboles generadores: el algoritmo de Dijkstra fija un vértice por ronda: el vértice no fijado con la menor distancia provisional. Su distancia es entonces definitiva, y cada vecino v recibe d(v) = min(d(v), d(u) + w(u, v)). El algoritmo de Kruskal construye un árbol generador mínimo tomando las aristas de la más ligera a la más pesada y descartando toda arista que cierre un ciclo; el algoritmo de Prim hace crecer un único árbol desde un vértice inicial añadiendo siempre la arista más ligera que sale de él. Un árbol generador de n vértices tiene n − 1 aristas.
Dijkstra ronda a ronda
Cada línea: el vértice fijado, su distancia definitiva y los vecinos cuya distancia mejora.
A (0): B: 12, C: 2
C (2): E: 5, G: 5
E (5): D: 14, F: 7
G (5): B: 6, D: 13
B (6): D: 11
F (7)
D (11)
Camino más corto
A → C → E → F
d(F) = 7
Respuesta
d(F) = 7
15.Bases de datos y SQL
Respuesta: B · Con una tabla intermedia que contiene claves foráneas a estudiantes y a asignaturas
Por qué esta es la respuesta
Una relación muchos a muchos necesita una tabla asociativa (intermedia), por ejemplo enrolment(student_id, course_id), a menudo con una clave primaria compuesta.
Respuesta
B · Con una tabla intermedia que contiene claves foráneas a estudiantes y a asignaturas
16.Bases de datos y SQL
Respuesta: A · X sea una superclave
Por qué esta es la respuesta
La FNBC exige que todo determinante sea una clave candidata (superclave); la 3FN permite una excepción cuando Y forma parte de una clave candidata.
Respuesta
A · X sea una superclave
17.Redes de computadores
Respuesta: B · 62
Por qué esta es la respuesta
Una /26 tiene 6 bits de host: 2⁶ = 64 direcciones; restando las direcciones de red y de difusión quedan 62 hosts utilizables.
Respuesta
B · 62
18.Redes de computadores
Respuesta: C · El campo de ventana de 16 bits limita la ventana a 65,535 bytes, demasiado poco para rutas rápidas de larga distancia
Por qué esta es la respuesta
La cabecera original permite como máximo 65,535 bytes de datos sin confirmar. El escalado de ventana multiplica esta cifra por una potencia de dos para poder llenar rutas con un producto ancho de banda-retardo elevado.
Respuesta
C · El campo de ventana de 16 bits limita la ventana a 65,535 bytes, demasiado poco para rutas rápidas de larga distancia
19.Subredes IPv4
Respuesta: p = 22
Subredes IPv4: una dirección tiene 32 bits. El prefijo /p indica cuántos bits iniciales identifican la red; los 32 − p bits restantes numeran los hosts. Una subred tiene 2³²⁻ᵖ direcciones, pero la primera (dirección de red) y la última (de difusión) no se pueden asignar a hosts, así que caben 2³²⁻ᵖ − 2 hosts. Excepciones: una /31 (enlace punto a punto, RFC 3021) usa sus 2 direcciones para hosts, y una /32 es una única dirección (un solo host o una interfaz de loopback).
Bits de host necesarios
29 − 2 = 510 < 790
210 − 2 = 1022 ≥ 790 → h = 10
Longitud del prefijo
p = 32 − 10 = 22
Respuesta
p = /22
20.Subredes IPv4
Respuesta: p = 20
Resumen de rutas: una ruta resumida a.b.c.0/p cubre todas las redes cuyos primeros p bits coinciden. Escribe en binario el octeto que difiere de la primera y la última red; el número de bits iniciales comunes, más los bits de los octetos anteriores, es el prefijo de resumen más largo.
Compara los bits
101 = 01100101
104 = 01101000
bits iniciales comunes: 4
Longitud del prefijo
p = 16 + 4 = 20
Respuesta
p = /20
Ruta resumida: 10.43.96.0/20 (también cubre 12 red(es) que no están en la lista).