Порахуйте різні змінні: таблиця істинності має 2ⁿ рядків, і починається вона з рядка, де всі змінні дорівнюють 1.
Дайте кожній підформулі власний стовпець і заповнюйте стовпці зсередини назовні.
Застосовуйте правило кожного зв’язника: → дорівнює 0 лише для 1 → 0, ↔ дорівнює 1, коли обидві частини збігаються.
Для еквівалентностей порівнюйте останні стовпці рядок за рядком; для міркування дивіться лише на рядки, де кожна передумова дорівнює 1.
Щоб заперечити твердження з квантором, перенесіть ¬ досередини, поміняйте ∀ і ∃ та заперечте внутрішню формулу.
Цифрова логіка: вентилі, карти Карно та тригери
Базові вентилі
A·B, A + B, A′, (A·B)′, (A + B)′, A ⊕ B
Правила булевої алгебри
X + X′ = 1, X·X′ = 0, X + XY = X, XY + XY′ = X
Закони де Моргана
(X·Y)′ = X′ + Y′, (X + Y)′ = X′·Y′
Порядок на карті Карно
00, 01, 11, 10 (Gray code)
Група з 2ᵏ клітинок
втрачає k змінних
Мультиплексор 4-до-1
F = A′B′I0 + A′BI1 + AB′I2 + ABI3
Тригери
D: Q⁺ = D, T: Q⁺ = T ⊕ Q, JK: Q⁺ = JQ′ + K′Q
Лічильники
n-розрядний: 2ⁿ станів; за модулем N: найменше n з 2ⁿ ≥ N; fout = fclk/N
Послідовний лічильник
fmax = 1/(n·tpd)
Кільцевий лічильник і лічильник Джонсона
n і 2n станів
Метод
Для схеми рухайтеся від входів до виходу вентиль за вентилем і записуйте значення на кожному дроті, або запишіть її вираз і заповніть таблицю істинності.
Для спрощення занесіть одиниці (а байдужі стани як X) на карту Карно з рядками й стовпцями в коді Грея: 00, 01, 11, 10.
Покрийте одиниці якомога меншою кількістю якомога більших груп по 1, 2, 4, 8 або 16 клітинок, з переходом через краї; кожна група — це один добуток зі змінних, що лишаються сталими. Для форми POS групуйте нулі.
Для тригерів і лічильників читайте входи на кожному активному фронті такту, записуйте стан після кожного фронту й пам’ятайте, що n-розрядний лічильник переходить через максимум після 2ⁿ станів.
Теорія чисел і арифметика за модулем
Ділення із залишком
a = q·n + r, 0 ≤ r < n
Евклід
gcd(a, b) = gcd(b, a mod b)
Найменше спільне кратне
lcm(a, b) = a·b/gcd(a, b)
Обернена
a·a⁻¹ ≡ 1 (mod n), gcd(a, n) = 1
Лінійна конгруенція
a·x ≡ b → x ≡ a⁻¹·b (mod n)
Функція Ейлера
φ(n) = n·∏(1 − 1/p), φ(pᵏ) = pᵏ − pᵏ⁻¹
Ферма
aᵖ⁻¹ ≡ 1 (mod p)
RSA
n = pq, φ = (p − 1)(q − 1), d = e⁻¹ mod φ, c = mᵉ mod n, m = cᵈ mod n
Метод
Спершу зведіть кожне число за модулем n; залишки лежать між 0 і n − 1.
Для НСД діліть послідовно за алгоритмом Евкліда; останній ненульовий залишок і є НСД.
Для оберненого елемента виконайте розширений алгоритм і візьміть коефіцієнт при a; якщо він від’ємний, додайте n.
Розв’язуйте a·x ≡ b множенням на a⁻¹; поєднуйте дві конгруенції, записавши x = r₁ + m₁k.
Для степенів запишіть показник у двійковому вигляді й послідовно підносьте до квадрата; в RSA d = e⁻¹ mod φ(n), де φ(n) = (p − 1)(q − 1).
Теорія графів
Лема про рукостискання
Σ deg(v) = 2|E|
Повні графи
|E(Kn)| = n(n − 1)/2, |E(Km,n)| = m·n
Регулярний граф
|E| = n·k/2
Дерево і ліс
|E| = n − 1, |E| = n − c
Листки дерева
L = 2 + Σ (deg(v) − 2) over deg(v) ≥ 3
Ейлер
цикл: усі степені парні; шлях: рівно 2 непарні степені
Гамільтонові цикли в Kn
(n − 1)!/2
Оновлення в алгоритмі Дейкстри
d(v) = min(d(v), d(u) + w(u, v))
Маршрути довжиною L
(Mᴸ)ij
Метод
Випишіть степінь кожної вершини; сума степенів дорівнює подвоєній кількості ребер.
У задачах про Ейлера перевірте, що граф зв’язний, і порахуйте вершини з непарним степенем.
Для дерев використовуйте n − 1 ребро та лему про рукостискання.
Для алгоритму Дейкстри ведіть таблицю попередніх відстаней і щоразу фіксуйте незафіксовану вершину з найменшою відстанню.
Для мінімального остовного дерева відсортуйте ребра за вагою й пропускайте кожне ребро, що замикає цикл (Крускал), або нарощуйте одне дерево від початкової вершини (Прім).
Підмережі IPv4
Хости в підмережі
2(32 − prefix) − 2 (/31: 2, /32: 1)
Розмір блоку
256 − (mask octet)
Адреса мережі
IP AND маска
Широкомовна адреса
IP OR (NOT маска): усі біти вузла дорівнюють 1
Підмережі з n позичених бітів
2n
2Задачі для практики
1.Системи численняСередня
8-бітовий шаблон 1100 0111 зберігає ціле число зі знаком у додатковому коді. Яке його значення N у десятковій системі?
1100 01118 bit
N =
2.Системи численняСкладна
Встановіть біти за 8-бітовим результатом 1101 0111 XOR 1011 1100. Яке значення R результату в десятковій системі?
1101 0111XOR1011 1100
R =
3.Логіка висловлювань і доведенняСередня
Ви хочете довести r → (p ∨ q) від контрапозиції. Яку імплікацію ви доводите натомість? Клікніть її.
r → (p ∨ q)
1¬r → ¬(p ∨ q)
2r ∧ ¬(p ∨ q)
3(p ∨ q) → r
4¬(p ∨ q) → ¬r
4.Логіка висловлювань і доведенняСкладна
Яке твердження еквівалентне ¬∀x (P(x) → ∃y R(x, y)), якщо заперечення перенесено повністю досередини? Клікніть його.
¬∀x (P(x) → ∃y R(x, y))
1∃x (¬P(x) ∧ ∃y R(x, y))
2∃x (P(x) ∧ ∀y ¬R(x, y))
3∀x (P(x) ∧ ∀y ¬R(x, y))
4∃x (P(x) → ∀y ¬R(x, y))
5.Цифрова логіка: вентилі, карти Карно та тригериСередня
Спростіть F = A′BC + AB′C + AC′ + AB до мінімальної форми суми добутків. Скільки літералів L містить спрощений вираз?
F = A′BC + AB′C + AC′ + AB
L =
6.Цифрова логіка: вентилі, карти Карно та тригериСкладна
3-розрядний послідовний (асинхронний) лічильник побудовано з тригерів із затримкою поширення 15 нс кожен. Усі виходи мають встановитися до наступного фронту такту. Знайдіть максимальну тактову частоту fmax.
n = 3tpd = 15 ns
fmax = MHz
7.Теорія чисел і арифметика за модулемСередня
Знайдіть функцію Ейлера φ(57), кількість цілих чисел від 1 до 57, взаємно простих з 57.
n = 57 = 3·19
φ(57) =
8.Теорія чисел і арифметика за модулемСкладна
Ключ RSA використовує прості числа p = 5 і q = 13 та відкритий показник e = 19. Знайдіть закритий показник d (0 < d < φ(n)).
p = 5q = 13e = 19
d =
9.Алгоритми та складністьСередня
Яка амортизована часова складність додавання елемента в кінець динамічного масиву, який подвоює свою місткість у разі заповнення?
AO(n)
BO(log n)
CO(1)
DO(n²)
10.Алгоритми та складністьСкладна
Алгоритм Штрассена множить матриці, використовуючи 7 замість 8 рекурсивних множень блоків половинного розміру. Який його час виконання?
AΘ(n2)
BΘ(n² log n)
CΘ(n³)
DΘ(nlog₂ 7), близько n2,81
11.Структури данихСередня
Яка часова складність пошуку ключа в збалансованому бінарному дереві пошуку?
AO(log n)
BO(n)
CO(1)
DO(n log n)
12.Структури данихСкладна
Динамічний масив подвоюється, коли заповнюється. Чому багато реалізацій зменшують його лише тоді, коли він заповнений на чверть, а не наполовину?
AБо зменшення вдвічі за половинного заповнення призвело б до втрати елементів
BБо розподілювач пам'яті може звільняти пам'ять лише чвертями блока
CЩоб уникнути повторних змін розміру, коли push і pop чергуються біля межі
DЩоб масив залишався відсортованим
13.Теорія графівСередня
Чи має зв’язний граф ейлерів цикл, ейлерів шлях, що не є циклом, чи нічого з цього? Клікніть свою відповідь.
|V| = 5|E| = 6
1Ейлерів цикл
2Ейлерів шлях, не цикл
3жодна з цих
14.Теорія графівСкладна
Знайдіть загальну вагу W мінімального остовного дерева зваженого графа.
|V| = 7|E| = 9
W =
15.Бази даних і SQLСередня
Таблиця orders має 5 рядків, кожен з яких посилається на наявного клієнта. Таблиця customers має 3 рядки. Скільки рядків повертає INNER JOIN за customer_id?
A15
B8
C5
D3
16.Бази даних і SQLСкладна
x дорівнює NULL, а y = 1. Яке значення умови (x > 5 OR y = 1)?
AFALSE
BUNKNOWN
CTRUE
DNULL, тож рядок завжди відхиляється
17.Комп'ютерні мережіСередня
Скільки часу потрібно, щоб передати 1500-байтний пакет у канал 12 Mbit/s (затримка передавання)?
A0,125 ms
B12 ms
C1 ms
D8 ms
18.Комп'ютерні мережіСкладна
Яка, за формулою Найквіста, максимальна бітова швидкість каналу 3 kHz без шуму з 4 рівнями сигналу?
A6 kbit/s
B12 kbit/s
C24 kbit/s
D3 kbit/s
19.Підмережі IPv4Середня
Мережу 192.168.10.0/24 треба поділити щонайменше на 20 однакових підмереж. Якщо позичити якомога менше бітів, скільки придатних хостів H матиме кожна підмережа?
192.168.10.0/2420 subnets
H =
20.Підмережі IPv4Складна
Хост має адресу 10.20.29.30/28. Який четвертий октет x його адреси мережі?
10.20.29.30/28
x =
3Розчини
1.Системи числення
Відповідь: N = −57
Позиційні системи числення: кожна цифра варта свого значення, помноженого на степінь основи. У двійковій системі розряди варті 1, 2, 4, 8, 16, …, у шістнадцятковій 1, 16, 256, …, де A–F означають 10–15. У 8-бітовому додатковому коді крайній лівий біт вартий −128 замість +128; так зберігаються від'ємні числа.
Додайте ваги
Інші біти зберігають свої звичайні додатні ваги.
−128 + 64 + 4 + 2 + 1 = −57
Відповідь
N = −57
2.Системи числення
Відповідь: R = 107
Встановлення бітів: кожен біт має вагу степеня двійки (128, 64, …, 1). Одна шістнадцяткова цифра — це рівно чотири біти, а в 8-бітовому доповняльному коді крайній лівий біт має вагу −128. Порозрядні операції працюють з кожною позицією біта окремо.
Біт за бітом
XOR дає 1, де два біти різні.
1101 0111
XOR 1011 1100
= 0110 1011
Значення результату
0110 1011₂ = 107
Відповідь
R = 107
3.Логіка висловлювань і доведення
Відповідь: ¬(p ∨ q) → ¬r
Логічна еквівалентність: дві формули еквівалентні (≡), коли мають однакове значення в кожному рядку таблиці істинності. Тавтологія дорівнює 1 у кожному рядку, суперечність — 0 у кожному рядку, а випадкова формула — ні те, ні інше. Корисні закони: закони де Моргана, ¬(a ∧ b) ≡ ¬a ∨ ¬b і ¬(a ∨ b) ≡ ¬a ∧ ¬b; a → b ≡ ¬a ∨ b ≡ ¬b → ¬a (контрапозиція); ¬(a → b) ≡ a ∧ ¬b; а також закони дистрибутивності, a ∨ (b ∧ c) ≡ (a ∨ b) ∧ (a ∨ c).
Частини імплікації
a = r, b = p ∨ q
Контрапозиція
¬b → ¬a = ¬(p ∨ q) → ¬r
Відповідь
¬(p ∨ q) → ¬r
Контрапозиція еквівалентна вихідному твердженню, тож доведення її доводить і твердження.
4.Логіка висловлювань і доведення
Відповідь: ∃x (P(x) ∧ ∀y ¬R(x, y))
Квантори та міркування: ¬∀x P(x) ≡ ∃x ¬P(x) і ¬∃x P(x) ≡ ∀x ¬P(x). Переносьте заперечення досередини, міняйте кожен квантор, який воно проходить, і заперечуйте внутрішню формулу за законами логіки висловлювань, наприклад ¬(a → b) ≡ a ∧ ¬b. Міркування коректне, коли висновок дорівнює 1 у кожному рядку, де всі передумови дорівнюють 1. Один рядок з істинними передумовами та хибним висновком — це контрприклад, який показує, що міркування некоректне.
Перенесіть заперечення досередини
¬∀x (P(x) → ∃y R(x, y)) ≡ ∃x (P(x) ∧ ∀y ¬R(x, y))
Відповідь
∃x (P(x) ∧ ∀y ¬R(x, y))
Інші варіанти або залишають квантор без змін, або змінюють порядок кванторів, або неправильно заперечують внутрішню формулу.
5.Цифрова логіка: вентилі, карти Карно та тригери
Відповідь: L = 3
Булева алгебра: правила, що спрощують вирази, — це X + X′ = 1 і X·X′ = 0, X + X = X, поглинання X + X·Y = X, правило склеювання X·Y + X·Y′ = X, X + X′Y = X + Y і теорема про консенсус XY + X′Z + YZ = XY + X′Z. Закони де Моргана перетворюють (X·Y)′ на X′ + Y′, а (X + Y)′ на X′·Y′. Карта Карно застосовує ці правила графічно: кожна група з двох сусідніх клітинок — це одне застосування XY + XY′ = X.
Мінтерми виразу
A′BC → m(3)
AB′C → m(5)
AC′ → m(4, 6)
AB → m(6, 7)
Згрупуйте й зчитайте
F = BC + A
Порахуйте літерали
L = 3
Відповідь
L = 3
6.Цифрова логіка: вентилі, карти Карно та тригери
Відповідь: fmax = 22,22 MHz
Тригери та лічильники: тригер змінюється лише за активним фронтом такту. D копіює свій вхід (Q⁺ = D); T перемикається, коли T = 1; JK зберігає стан за 00, скидає за 01, встановлює за 10 і перемикає за 11. n-розрядний двійковий лічильник має 2ⁿ станів і рахує за модулем 2ⁿ; лічильник за модулем N рахує 0, 1, …, N − 1 і повертається до 0, і йому потрібне найменше n, для якого 2ⁿ ≥ N тригерів. Кожен ступінь послідовного лічильника ділить частоту навпіл, тож останній вихід лічильника за модулем N має частоту fclk/N. Лічильник Джонсона з n тригерів має 2n станів, кільцевий — n.
Найгірший час встановлення
T = 3·15 ns = 45 ns
Максимальна частота
fmax = 1/45 ns = 22,22 MHz
Відповідь
fmax = 22,22 MHz
7.Теорія чисел і арифметика за модулем
Відповідь: φ(57) = 36
Обернені елементи та конгруенції: a має обернений за модулем n саме тоді, коли gcd(a, n) = 1. Розширений алгоритм Евкліда записує 1 = s·n + t·a, і тоді a⁻¹ ≡ t (mod n). Конгруенція a·x ≡ b (mod n) з gcd(a, n) = 1 має розв’язок x ≡ a⁻¹·b. Дві конгруенції x ≡ r₁ (mod m₁) і x ≡ r₂ (mod m₂) зі взаємно простими модулями мають один розв’язок за модулем m₁·m₂ (китайська теорема про лишки). Функція Ейлера φ(n) рахує числа від 1 до n, взаємно прості з n: φ(n) = n·∏(1 − 1/p).
Прості множники
57 = 3·19
Функція Ейлера
φ(57) = φ(19)·φ(3) = 18·2 = 36
Відповідь
φ(57) = 36
8.Теорія чисел і арифметика за модулем
Відповідь: d = 43
Степені за модулем і RSA: обчислюйте aᵏ mod n повторним піднесенням до квадрата: запишіть k у двійковому вигляді, підносьте до квадрата, зводьте після кожного кроку й перемножте степені, біти яких дорівнюють 1. Ферма: aᵖ⁻¹ ≡ 1 (mod p) для простого p, що не ділить a, тож показник можна зводити за модулем p − 1. RSA: оберіть прості p і q, n = p·q і φ(n) = (p − 1)(q − 1); відкритий показник e взаємно простий із φ(n), а закритий показник — d = e⁻¹ mod φ(n). Шифруйте за c = mᵉ mod n, а дешифруйте за m = cᵈ mod n.
Модуль і функція Ейлера
n = 5·13 = 65
φ(n) = 4·12 = 48
Розширений алгоритм Евкліда
r = 48, t = 0
r = 19, q = 2, t = 1
r = 10, q = 1, t = −2
r = 9, q = 1, t = 3
r = 1, q = 9, t = −5
Закритий показник
d = 43
перевірка: 19·43 = 817 = 17·48 + 1
Відповідь
d = 43
9.Алгоритми та складність
Відповідь: C · O(1)
Чому це відповідь
Копіювання всіх елементів відбувається лише на степенях двійки; якщо розподілити ці витрати на всі додавання, середня вартість одного додавання стала.
Відповідь
C · O(1)
10.Алгоритми та складність
Відповідь: D · Θ(nlog₂ 7), близько n2,81
Чому це відповідь
За a = 7 і b = 2 nlog₂ 7 домінує над роботою додавання O(n²), що дає близько n2,81.
Відповідь
D · Θ(nlog₂ 7), близько n2,81
11.Структури даних
Відповідь: A · O(log n)
Чому це відповідь
Збалансоване дерево має висоту близько log₂ n, тому пошук проходить одним шляхом від кореня до листка.
Відповідь
A · O(log n)
12.Структури даних
Відповідь: C · Щоб уникнути повторних змін розміру, коли push і pop чергуються біля межі
Чому це відповідь
Зменшення при половинному заповненні могло б запускати зміну розміру на кожній операції такої послідовності; проміжок між 1/4 і повним заповненням зберігає амортизовану вартість O(1).
Відповідь
C · Щоб уникнути повторних змін розміру, коли push і pop чергуються біля межі
13.Теорія графів
Відповідь: Ейлерів шлях, не цикл
Ейлер, Гамільтон і дерева: зв’язний граф має ейлерів цикл (кожне ребро один раз, з поверненням до початку), коли кожна вершина має парний степінь, і ейлерів шлях, що не є циклом, коли рівно дві вершини мають непарний степінь; тоді шлях іде від однієї непарної вершини до другої. Гамільтонів цикл відвідує кожну вершину один раз; у Kn їх (n − 1)!/2. Дерево на n вершинах має n − 1 ребро, а зв’язний граф з m ребрами зберігає остовне дерево після вилучення m − n + 1 ребер.
Ейлерів шлях починається в одній непарній вершині й закінчується в другій.
14.Теорія графів
Відповідь: W = 44
Найкоротші шляхи та остовні дерева: алгоритм Дейкстри фіксує одну вершину за раунд: незафіксовану вершину з найменшою попередньою відстанню. Її відстань тоді остаточна, а кожен сусід v отримує d(v) = min(d(v), d(u) + w(u, v)). Алгоритм Крускала будує мінімальне остовне дерево, беручи ребра від легких до важких і пропускаючи кожне ребро, що замкнуло б цикл; алгоритм Пріма нарощує одне дерево від початкової вершини, завжди додаючи найлегше ребро, що виходить з нього. Остовне дерево з n вершин має n − 1 ребро.
Алгоритм Крускала
GB (1): взяти
AC (2): взяти
BC (4): взяти
DF (10): взяти
GC (12): пропустити, замикає цикл
CE (13): взяти
DE (14): взяти
Загальна вага
W = 1 + 2 + 4 + 10 + 13 + 14 = 44
Відповідь
W = 44
15.Бази даних і SQL
Відповідь: C · 5
Чому це відповідь
Кожне замовлення знаходить рівно одного відповідного клієнта, тож з’єднання повертає по рядку на кожне замовлення: 5 рядків.
Відповідь
C · 5
16.Бази даних і SQL
Відповідь: C · TRUE
Чому це відповідь
x > 5 дає UNKNOWN, але OR із TRUE завжди дає TRUE, тож рядок залишається; UNKNOWN AND FALSE так само дало б FALSE.
Відповідь
C · TRUE
17.Комп'ютерні мережі
Відповідь: C · 1 ms
Чому це відповідь
1500 байтів = 12,000 бітів. 12,000 / 12,000,000 bit/s = 0,001 s = 1 ms. Затримка передавання залежить від розміру пакета та швидкості каналу, а не від відстані.
Відповідь
C · 1 ms
18.Комп'ютерні мережі
Відповідь: B · 12 kbit/s
Чому це відповідь
2 × 3000 × log₂ 4 = 2 × 3000 × 2 = 12,000 bit/s. Більше рівнів підвищують швидкість, але шум обмежує, скільки з них можна розрізнити.
Відповідь
B · 12 kbit/s
19.Підмережі IPv4
Відповідь: H = 6
Підмережі IPv4: адреса має 32 біти. Префікс /p вказує, скільки початкових бітів визначають мережу; решта 32 − p бітів нумерують хости. Підмережа має 2³²⁻ᵖ адрес, але першу (адресу мережі) й останню (широкомовну адресу) не можна призначити хостам, тож уміщається 2³²⁻ᵖ − 2 хости. Винятки: /31 (канал «точка-точка», RFC 3021) використовує обидві свої 2 адреси для хостів, а /32 — це одна-єдина адреса (окремий хост або loopback).
Біти для позичання
25 = 32 ≥ 20 → b = 5, /29
Хости в підмережі
23 − 2 = 6
Відповідь
H = 6
20.Підмережі IPv4
Відповідь: x = 16
Підмережі IPv4: адреса має 32 біти. Префікс /p вказує, скільки початкових бітів визначають мережу; решта 32 − p бітів нумерують хости. Підмережа має 2³²⁻ᵖ адрес, але першу (адресу мережі) й останню (широкомовну адресу) не можна призначити хостам, тож уміщається 2³²⁻ᵖ − 2 хости. Винятки: /31 (канал «точка-точка», RFC 3021) використовує обидві свої 2 адреси для хостів, а /32 — це одна-єдина адреса (окремий хост або loopback).