Подсчитайте различные переменные: в таблице истинности 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
Эйлер
цикл: все степени чётные; путь: ровно две нечётные степени
Гамильтоновы циклы в 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.Системы счисленияСредняя
Запишите −70 как 8-битную комбинацию в дополнительном коде. Прочитайте комбинацию как беззнаковое двоичное число: каково его значение U в десятичной системе?
N = −708 bit
U =
2.Системы счисленияСложная
Установите биты в 8-битный результат операции 0111 1100 AND 1110 1001. Чему равно значение результата R в десятичной системе?
0111 1100AND1110 1001
R =
3.Логика высказываний и доказательстваСредняя
Какая формула логически эквивалентна (q ∨ p) → r? Нажмите на неё.
(q ∨ p) → r
1(q → r) ∧ (p → r)
2(q ∧ p) → r
3(q → r) ∨ (p → r)
4q ∨ (p → r)
4.Логика высказываний и доказательстваСложная
В скольких из 16 строк таблицы истинности (d ∨ (b → a)) ∨ (c ∧ (¬a ∧ d)) истинно? Обозначим это число N.
(d ∨ (b → a)) ∨ (c ∧ (¬a ∧ d))
N =
5.Цифровая логика: вентили, карты Карно и триггерыСредняя
У мультиплексора 4 в 1 адресные входы S₁ = A и S₀ = B, а информационные входы подключены так: I₀ = 1, I₁ = 0, I₂ = 0, I₃ = 0. Для скольких из 8 комбинаций A, B и C выход F = 1? Найдите N.
I₀ = 1I₁ = 0I₂ = 0I₃ = 0
N =
6.Цифровая логика: вентили, карты Карно и триггерыСложная
Триггер JK, срабатывающий по переднему фронту, начинает с Q = 0 и получает показанные входы на 7 передних фронтах тактового сигнала. Сколько раз, N, Q меняет состояние?
Q₀ = 0JK
N =
7.Теория чисел и модульная арифметикаСредняя
Найдите наименьшее положительное целое x, для которого x ≡ 1 (mod 8) и x ≡ 11 (mod 13).
x ≡ 1 (mod 8)x ≡ 11 (mod 13)
x =
8.Теория чисел и модульная арифметикаСложная
В ключе RSA p = 19, q = 43 и e = 23. Расшифруйте шифртекст c = 305: найдите сообщение m.
p = 19q = 43e = 23c = 305
m =
9.Алгоритмы и сложностьСредняя
Какова временна́я сложность: for i = 1 to n: (j = 1; while j < n: j = j × 2)?
AO(n log n)
BO(n²)
CO(n)
DO(log n)
10.Алгоритмы и сложностьСложная
Какая из этих задач выполнимости, как известно, решается за полиномиальное время?
A3-SAT, где в каждом дизъюнкте ровно три литерала
BОбщая SAT для формул в конъюнктивной нормальной форме
C2-SAT, где в каждом дизъюнкте не более двух литералов
DВыполнимость схем
11.Структуры данныхСредняя
Какую структуру данных использует выполняющаяся программа для отслеживания активных вызовов функций и их локальных переменных?
AОчередь памяти кучи
BДвоичное дерево поиска кадров
CСтек вызовов
DХеш-таблицу функций
12.Структуры данныхСложная
Почему базы данных часто используют для индексов B+ деревья, а не обычные B-деревья?
AB+ деревья не нужно балансировать
BВсе записи находятся в связанных листьях, что делает сканирование диапазонов эффективным
CB+ деревья хранят данные только в корне
DB+ деревья используют двоичные внутренние узлы, что сокращает число чтений с диска
13.Теория графовСредняя
Связный граф имеет 15 вершин и 16 рёбер. Сколько рёбер, k, нужно удалить, чтобы осталось остовное дерево?
|V| = 15|E| = 16
k =
14.Теория графовСложная
Сколько существует замкнутых маршрутов длины 3, начинающихся и заканчивающихся в A? Маршрут может повторять вершины и рёбра. Обозначим это число N.
M = матрица смежностиL = 3
N =
15.Базы данных и SQLСредняя
В таблице orders 5 строк, каждая ссылается на существующего клиента. В таблице customers 3 строки. Сколько строк вернёт INNER JOIN по customer_id?
A5
B3
C8
D15
16.Базы данных и SQLСложная
Чего требует правило журнализации с упреждающей записью (WAL)?
AЖурнал записывается только после сбоя
BЗапись журнала об изменении должна попасть на устойчивый носитель раньше изменённой страницы данных
CСтраницы данных должны записываться раньше журнала
DКаждый запрос должен быть занесён в журнал до разбора
17.Компьютерные сетиСредняя
Какой флаг TCP сообщает, что отправитель закончил передачу данных?
AURG
BPSH
CFIN
DSYN
18.Компьютерные сетиСложная
Каков максимальный блок передачи (MTU) полезной нагрузки стандартного Ethernet?
A65535 байт
B1500 байт
C64 байта
D9000 байт в любой сети
19.Подсети IPv4Средняя
Отделу нужно 1751 адресов узлов в одной подсети. Какова наибольшая длина префикса p (наименьшая подсеть), которой достаточно?
1751 hosts
p =
20.Подсети IPv4Сложная
Узел имеет адрес 10.20.99.40/28. Каков четвёртый октет x последнего используемого адреса узла в его подсети?
10.20.99.40/28
x =
3Растворы
1.Системы счисления
Ответ: U = 186
Позиционные системы счисления: каждая цифра стоит своего значения, умноженного на степень основания. В двоичной системе разряды стоят 1, 2, 4, 8, 16, …, в шестнадцатеричной 1, 16, 256, …, а A–F обозначают 10–15. В 8-битном дополнительном коде крайний левый бит стоит −128 вместо +128; так хранятся отрицательные числа.
Инвертируйте и прибавьте единицу
70 = 0100 0110
инвертировано: 1011 1001
+1 → 1011 1010
Прочитайте как беззнаковое
1011 1010₂ = 256 − 70 = 186
Ответ
U = 186
2.Системы счисления
Ответ: R = 104
Установка битов: каждый бит стоит степень двойки (128, 64, …, 1). Одна шестнадцатеричная цифра — это ровно четыре бита, а в 8-битном дополнительном коде крайний левый бит стоит −128. Побитовые операции работают с каждой позицией бита отдельно.
Бит за битом
AND даёт 1 только там, где оба бита равны 1.
0111 1100
AND 1110 1001
= 0110 1000
Значение результата
0110 1000₂ = 104
Ответ
R = 104
3.Логика высказываний и доказательства
Ответ: (q → r) ∧ (p → r)
Логическая эквивалентность: две формулы эквивалентны (≡), если в каждой строке таблицы истинности они имеют одинаковое значение. Тавтология равна 1 в каждой строке, противоречие равно 0 в каждой строке, а нейтральная формула (contingency) — ни то ни другое. Полезные законы: законы де Моргана, ¬(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 ∨ b) → c требует c всякий раз, когда выполняется a или b: (a → c) ∧ (b → c).
(q ∨ p) → r ≡ (q → r) ∧ (p → r)
Проверка по таблице истинности
p = 1, q = 1, r = 1: 1 | 1 1 1 1
p = 1, q = 1, r = 0: 0 | 0 0 0 1
p = 1, q = 0, r = 1: 1 | 1 1 1 1
p = 1, q = 0, r = 0: 0 | 0 1 1 0
p = 0, q = 1, r = 1: 1 | 1 1 1 1
p = 0, q = 1, r = 0: 0 | 0 1 1 1
p = 0, q = 0, r = 1: 1 | 1 1 1 1
p = 0, q = 0, r = 0: 1 | 1 1 1 1
Ответ
(q → r) ∧ (p → r)
Столбцы после черты — варианты ответа в показанном порядке.
4.Логика высказываний и доказательства
Ответ: N = 14
Таблицы истинности: у формулы с n различными переменными 2ⁿ строк, по одной для каждой комбинации значений истинности (1 = истина, 0 = ложь). Работайте изнутри наружу и отводите каждой подформуле отдельный столбец. ¬a меняет значение на противоположное; a ∧ b равно 1 только тогда, когда оба равны 1; a ∨ b равно 0 только тогда, когда оба равны 0; a → b равно 0 только при a = 1 и b = 0; a ↔ b равно 1, когда обе части равны.
Столбцы
b → a; d ∨ (b → a); ¬a; ¬a ∧ d; c ∧ (¬a ∧ d); (d ∨ (b → a)) ∨ (c ∧ (¬a ∧ d))
Разбиение по a
a = 1: 8
a = 0: 6
N = 8 + 6 = 14
Ответ
N = 14
5.Цифровая логика: вентили, карты Карно и триггеры
Ответ: N = 2
Мультиплексор: мультиплексор 2ⁿ в 1 передаёт на выход один из своих информационных входов; адресные входы, читаемые как двоичное число, выбирают, какой именно. Для мультиплексора 4 в 1 с адресами S₁S₀ = AB: F = A′B′·I₀ + A′B·I₁ + AB′·I₂ + AB·I₃. Если подключить информационные входы к 0, 1, C или C′, мультиплексор реализует любую функцию от A, B и C, что — распространённый способ построить логику на одной микросхеме.
Выражение выхода
F = A′B′
Строки с F = 1
ABC = 000, 001
N = 2
Ответ
N = 2
6.Цифровая логика: вентили, карты Карно и триггеры
Ответ: N = 3
Триггеры и счётчики: триггер меняется только по активному фронту тактового сигнала. 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.
Обратные элементы и сравнения: у a есть обратный по модулю n ровно тогда, когда НОД(a, n) = 1. Расширенный алгоритм Евклида записывает 1 = s·n + t·a, откуда a⁻¹ ≡ t (mod n). Сравнение a·x ≡ b (mod n) при НОД(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).
Первое сравнение
x = 1 + 8k
Второе сравнение
1 + 8k ≡ 11 (mod 13) → 8k ≡ 10 (mod 13)
k ≡ 5·10 ≡ 11 (mod 13)
Результат
x = 1 + 8·11 = 89
x = 89
проверка: 89 mod 8 = 1, 89 mod 13 = 11
Ответ
x = 89
8.Теория чисел и модульная арифметика
Ответ: m = 514
Степени по модулю и 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 = 817, φ(n) = 756
d = 23−1 mod 756 = 263
Расшифровка многократным возведением в квадрат
263 = 256 + 4 + 2 + 1
3051 ≡ 305 (mod 817)
3052 ≡ 704 (mod 817)
3054 ≡ 514 (mod 817)
3058 ≡ 305 (mod 817)
30516 ≡ 704 (mod 817)
30532 ≡ 514 (mod 817)
30564 ≡ 305 (mod 817)
305128 ≡ 704 (mod 817)
305256 ≡ 514 (mod 817)
305263 ≡ 305·704·514·514 ≡ 514 (mod 817)
Сообщение
m = 514
проверка: 51423 mod 817 = 305
Ответ
m = 514
9.Алгоритмы и сложность
Ответ: A · O(n log n)
Почему это ответ
Внутренний цикл выполняется около log₂ n раз для каждой из n внешних итераций, что даёт O(n log n).
Ответ
A · O(n log n)
10.Алгоритмы и сложность
Ответ: C · 2-SAT, где в каждом дизъюнкте не более двух литералов
Почему это ответ
2-SAT лежит в P (линейное время через компоненты сильной связности), тогда как 3-SAT NP-полна.
Ответ
C · 2-SAT, где в каждом дизъюнкте не более двух литералов
11.Структуры данных
Ответ: C · Стек вызовов
Почему это ответ
Каждый вызов помещает в стек кадр (push), а каждый возврат его извлекает (pop), поэтому самый последний вызов завершается первым.
Ответ
C · Стек вызовов
12.Структуры данных
Ответ: B · Все записи находятся в связанных листьях, что делает сканирование диапазонов эффективным
Почему это ответ
В B+ дереве внутренние узлы только направляют поиск, а листья связаны в порядке ключей, поэтому запрос по диапазону находит первый ключ и затем идёт по листьям.
Ответ
B · Все записи находятся в связанных листьях, что делает сканирование диапазонов эффективным
13.Теория графов
Ответ: k = 2
Эйлер, Гамильтон и деревья: связный граф имеет эйлеров цикл (каждое ребро один раз, с возвратом в начало), когда все вершины имеют чётную степень, и эйлеров путь, не являющийся циклом, когда ровно две вершины имеют нечётную степень; тогда путь идёт от одной нечётной вершины к другой. Гамильтонов цикл посещает каждую вершину один раз; в Kn их (n − 1)!/2. У дерева на n вершинах n − 1 ребро, а связный граф с m рёбрами сохраняет остовное дерево после удаления m − n + 1 рёбер.
Рёбра остовного дерева
15 − 1 = 14
Рёбра для удаления
k = 16 − 14 = 2
Ответ
k = 2
14.Теория графов
Ответ: N = 2
Степени: степень вершины — это число рёбер, которые в ней сходятся. У каждого ребра два конца, поэтому степени в сумме дают удвоенное число рёбер: Σ deg(v) = 2|E| (лемма о рукопожатиях). Следовательно, число вершин нечётной степени чётно. У Kn имеется n(n − 1)/2 рёбер, у k-регулярного графа на n вершинах nk/2, а у дерева на n вершинах n − 1 ребро.
Матрица смежности
A: 0 1 1 0 0
B: 1 0 1 1 1
C: 1 1 0 0 0
D: 0 1 0 0 1
E: 0 1 0 1 0
Ещё один шаг
(M³)AA = 2·0 + 1·1 + 1·1 + 1·0 + 1·0 = 2
Ответ
N = 2
15.Базы данных и SQL
Ответ: A · 5
Почему это ответ
Каждый заказ находит ровно одного соответствующего клиента, поэтому соединение возвращает по одной строке на заказ: 5 строк.
Ответ
A · 5
16.Базы данных и SQL
Ответ: B · Запись журнала об изменении должна попасть на устойчивый носитель раньше изменённой страницы данных
Почему это ответ
Запись журнала первой позволяет СУБД после сбоя повторить зафиксированную работу и отменить незафиксированную, обеспечивая атомарность и долговечность.
Ответ
B · Запись журнала об изменении должна попасть на устойчивый носитель раньше изменённой страницы данных
17.Компьютерные сети
Ответ: C · FIN
Почему это ответ
Каждая сторона отправляет FIN, когда у неё больше нет данных, а другая сторона его подтверждает. SYN служит для открытия соединения; RST прерывает его.
Ответ
C · FIN
18.Компьютерные сети
Ответ: B · 1500 байт
Почему это ответ
Стандартный Ethernet переносит до 1500 байт полезной нагрузки; более крупные IP-пакеты должны фрагментироваться или использовать определение MTU пути (path MTU discovery).
Ответ
B · 1500 байт
19.Подсети IPv4
Ответ: p = 21
Подсети IPv4: адрес состоит из 32 битов. Префикс /p указывает, сколько начальных битов определяют сеть; остальные 32 − p битов нумеруют узлы. В подсети 2³²⁻ᵖ адресов, но первый (адрес сети) и последний (широковещательный адрес) нельзя назначить узлам, поэтому помещается 2³²⁻ᵖ − 2 узла. Исключения: /31 (канал «точка-точка», RFC 3021) использует оба своих 2 адреса для хостов, а /32 — это один-единственный адрес (отдельный хост или loopback).
Необходимые биты узла
210 − 2 = 1022 < 1751
211 − 2 = 2046 ≥ 1751 → h = 11
Длина префикса
p = 32 − 11 = 21
Ответ
p = /21
20.Подсети IPv4
Ответ: x = 46
Подсети IPv4: адрес состоит из 32 битов. Префикс /p указывает, сколько начальных битов определяют сеть; остальные 32 − p битов нумеруют узлы. В подсети 2³²⁻ᵖ адресов, но первый (адрес сети) и последний (широковещательный адрес) нельзя назначить узлам, поэтому помещается 2³²⁻ᵖ − 2 узла. Исключения: /31 (канал «точка-точка», RFC 3021) использует оба своих 2 адреса для хостов, а /32 — это один-единственный адрес (отдельный хост или loopback).