Подсчитайте различные переменные: в таблице истинности 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.Системы счисленияСредняя
Запишите −62 как 8-битную комбинацию в дополнительном коде. Прочитайте комбинацию как беззнаковое двоичное число: каково его значение U в десятичной системе?
N = −628 bit
U =
2.Системы счисленияСложная
Установите биты в 8-битный результат операции 1110 0100 AND 0001 1100. Чему равно значение результата R в десятичной системе?
1110 0100AND0001 1100
R =
3.Логика высказываний и доказательстваСредняя
Является ли ((b → a) ∧ ¬a) → ¬b тавтологией, противоречием или нейтральной формулой? Нажмите на ваш ответ.
((b → a) ∧ ¬a) → ¬b
1тавтология
2противоречие
3нейтральная формула
4.Логика высказываний и доказательстваСложная
Рассуждение с посылками q → r; p → r и выводом q → p неправильно. Нажмите на строку таблицы истинности, которая является контрпримером.
q → rp → r∴ q → p
1p = 1, q = 1, r = 1
2p = 1, q = 1, r = 0
3p = 1, q = 0, r = 1
4p = 1, q = 0, r = 0
5p = 0, q = 1, r = 1
6p = 0, q = 1, r = 0
7p = 0, q = 0, r = 1
8p = 0, q = 0, r = 0
5.Цифровая логика: вентили, карты Карно и триггерыСредняя
У мультиплексора 4 в 1 адресные входы S₁ = A и S₀ = B, а информационные входы подключены так: I₀ = C′, I₁ = 1, I₂ = C, I₃ = C′. Для скольких из 8 комбинаций A, B и C выход F = 1? Найдите N.
I₀ = C′I₁ = 1I₂ = CI₃ = C′
N =
6.Цифровая логика: вентили, карты Карно и триггерыСложная
4-разрядный кольцевой счётчик Q₃Q₂Q₁Q₀ начинает с 1100. По каждому фронту тактового сигнала биты сдвигаются на одну позицию вправо (Q₃ → Q₂ → Q₁ → Q₀), а Q₃ получает Q₀. Укажите состояние Q = Q₃Q₂Q₁Q₀ в виде десятичного числа после 11 фронтов тактового сигнала.
Q₃Q₂Q₁Q₀ = 110011
Q =
7.Теория чисел и модульная арифметикаСредняя
Найдите функцию Эйлера φ(475), число целых чисел от 1 до 475, взаимно простых с 475.
n = 475 = 52·19
φ(475) =
8.Теория чисел и модульная арифметикаСложная
Используйте многократное возведение в квадрат, чтобы найти 19154 mod 70.
a = 19k = 154n = 70
19154 mod 70 =
9.Алгоритмы и сложностьСредняя
Жадный алгоритм:
AНа каждом шаге делает локально наилучший выбор
BПеребирает все возможные решения
CВсегда даёт оптимальное решение
DИспользует только рекурсию
10.Алгоритмы и сложностьСложная
Какая оценка для log(n!) верна?
AΘ(n²)
BΘ(n)
CΘ(n log n)
DΘ(log n)
11.Структуры данныхСредняя
Зачем нужен сторожевой (фиктивный, sentinel) узел в связном списке?
AЧтобы упростить код, убрав особые случаи в голове или хвосте
BЧтобы хранить число элементов
CЧтобы список был отсортирован
DЧтобы список не мог вырасти сверх фиксированного максимального числа узлов
12.Структуры данныхСложная
В BST с корнем 50, левым поддеревом 30 (потомки 20, 40) и правым поддеревом 70 (потомки 60, 80) корень удаляют с помощью in-order преемника. Какой ключ станет новым корнем?
A80
B70
C60
D40
13.Теория графовСредняя
Есть ли в связном графе эйлеров цикл, эйлеров путь, не являющийся циклом, или ни то ни другое? Нажмите на ваш ответ.
|V| = 5|E| = 6
1Эйлеров цикл
2Эйлеров путь, не цикл
3ни то, ни другое
14.Теория графовСложная
Сколько существует маршрутов длины 2 из F в C? Маршрут может повторять вершины и рёбра. Обозначим это число N.
M = матрица смежностиL = 2
N =
15.Базы данных и SQLСредняя
Вторая нормальная форма (2NF) устраняет:
AЧастичные зависимости неключевых столбцов от части составного ключа
BВсе значения NULL
CТранзитивные зависимости между неключевыми столбцами через другой неключевой столбец
DВнешние ключи
16.Базы данных и SQLСложная
Отчётная база данных копирует имена клиентов в таблицу orders, чтобы избежать соединений. Какова главная цена такой денормализации?
AИзбыточные копии нужно поддерживать согласованными при каждом изменении данных клиента
BЗапросы к таблице orders замедляются
CБаза данных больше не может использовать индексы
DПервичные ключи больше нельзя использовать
17.Компьютерные сетиСредняя
Какова цель трёхэтапного рукопожатия (three-way handshake) TCP?
AЗашифровать данные
BУстановить соединение и синхронизировать порядковые номера
CБыстро закрыть соединение
DНайти IP-адрес узла, прежде чем ему можно будет отправить данные
18.Компьютерные сетиСложная
Пользователь может выполнить ping 8.8.8.8, но не может открыть ни один сайт по имени. Где проблема наиболее вероятна?
AВ драйвере сетевой платы
BВ физическом кабеле
CВ разрешении имён (DNS)
DВ шлюзе по умолчанию
19.Подсети IPv4Средняя
Подсеть использует маску 255.255.255.248. Сколько в ней пригодных адресов узлов H?
255.255.255.248
H =
20.Подсети IPv4Сложная
Узел имеет адрес 172.20.16.40/19. Чему равен третий октет x широковещательного адреса его подсети?
172.20.16.40/19
x =
3Растворы
1.Системы счисления
Ответ: U = 194
Позиционные системы счисления: каждая цифра стоит своего значения, умноженного на степень основания. В двоичной системе разряды стоят 1, 2, 4, 8, 16, …, в шестнадцатеричной 1, 16, 256, …, а A–F обозначают 10–15. В 8-битном дополнительном коде крайний левый бит стоит −128 вместо +128; так хранятся отрицательные числа.
Инвертируйте и прибавьте единицу
62 = 0011 1110
инвертировано: 1100 0001
+1 → 1100 0010
Прочитайте как беззнаковое
1100 0010₂ = 256 − 62 = 194
Ответ
U = 194
2.Системы счисления
Ответ: R = 4
Установка битов: каждый бит стоит степень двойки (128, 64, …, 1). Одна шестнадцатеричная цифра — это ровно четыре бита, а в 8-битном дополнительном коде крайний левый бит стоит −128. Побитовые операции работают с каждой позицией бита отдельно.
Бит за битом
AND даёт 1 только там, где оба бита равны 1.
1110 0100
AND 0001 1100
= 0000 0100
Значение результата
0000 0100₂ = 4
Ответ
R = 4
3.Логика высказываний и доказательства
Ответ: тавтология
Логическая эквивалентность: две формулы эквивалентны (≡), если в каждой строке таблицы истинности они имеют одинаковое значение. Тавтология равна 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 = 1, b = 1: b → a = 1, ¬a = 0, (b → a) ∧ ¬a = 0, ¬b = 0, ((b → a) ∧ ¬a) → ¬b = 1
a = 1, b = 0: b → a = 1, ¬a = 0, (b → a) ∧ ¬a = 0, ¬b = 1, ((b → a) ∧ ¬a) → ¬b = 1
a = 0, b = 1: b → a = 0, ¬a = 1, (b → a) ∧ ¬a = 0, ¬b = 0, ((b → a) ∧ ¬a) → ¬b = 1
a = 0, b = 0: b → a = 1, ¬a = 1, (b → a) ∧ ¬a = 1, ¬b = 1, ((b → a) ∧ ¬a) → ¬b = 1
Классификация
((b → a) ∧ ¬a) → ¬b: 1, 1, 1, 1
1 в каждой строке: тавтология.
Ответ
тавтология
4.Логика высказываний и доказательства
Ответ: p = 0, q = 1, r = 1
Кванторы и рассуждения: ¬∀x P(x) ≡ ∃x ¬P(x) и ¬∃x P(x) ≡ ∀x ¬P(x). Переносите отрицание внутрь, меняйте каждый квантор, через который оно проходит, и отрицайте внутреннюю формулу по законам логики высказываний, например ¬(a → b) ≡ a ∧ ¬b. Рассуждение правильно, если вывод равен 1 в каждой строке, где все посылки равны 1. Одной строки с истинными посылками и ложным выводом достаточно, чтобы получить контрпример и показать, что рассуждение неправильно.
Посылки и вывод по строкам
p = 1, q = 1, r = 1: 1 1 | 1
p = 1, q = 1, r = 0: 0 0 | 1
p = 1, q = 0, r = 1: 1 1 | 1
p = 1, q = 0, r = 0: 1 0 | 1
p = 0, q = 1, r = 1: 1 1 | 0
p = 0, q = 1, r = 0: 0 1 | 0
p = 0, q = 0, r = 1: 1 1 | 1
p = 0, q = 0, r = 0: 1 1 | 1
Контрпример
p = 0, q = 1, r = 1
Ответ
p = 0, q = 1, r = 1
Рассуждение такой формы выглядит как правильное правило, но одной строки достаточно, чтобы показать, что это не так.
5.Цифровая логика: вентили, карты Карно и триггеры
Ответ: N = 5
Мультиплексор: мультиплексор 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′C′ + A′B + AB′C + ABC′
Строки с F = 1
ABC = 000, 010, 011, 101, 110
N = 5
Ответ
N = 5
6.Цифровая логика: вентили, карты Карно и триггеры
Ответ: Q = 9
Триггеры и счётчики: триггер меняется только по активному фронту тактового сигнала. 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).
Простые множители
475 = 52·19
Функция Эйлера
φ(475) = φ(25)·φ(19) = 20·18 = 360
Ответ
φ(475) = 360
8.Теория чисел и модульная арифметика
Ответ: 19154 mod 70 = 51
Степени по модулю и 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.
Двоичный показатель
154 = 100110102 = 128 + 16 + 8 + 2
Многократное возведение в квадрат
191 ≡ 19 (mod 70)
192 ≡ 11 (mod 70)
194 ≡ 51 (mod 70)
198 ≡ 11 (mod 70)
1916 ≡ 51 (mod 70)
1932 ≡ 11 (mod 70)
1964 ≡ 51 (mod 70)
19128 ≡ 11 (mod 70)
Перемножьте нужные степени
19154 ≡ 11·11·51·11 ≡ 51 (mod 70)
Ответ
19154 mod 70 = 51
9.Алгоритмы и сложность
Ответ: A · На каждом шаге делает локально наилучший выбор
Почему это ответ
Жадные алгоритмы быстры и для некоторых задач оптимальны (например, алгоритм Дейкстры, кодирование Хаффмана), но не в общем случае (например, задача о размене монет для некоторых систем монет).
Ответ
A · На каждом шаге делает локально наилучший выбор
10.Алгоритмы и сложность
Ответ: C · Θ(n log n)
Почему это ответ
log(n!) ≤ n log n, а наибольшие n / 2 множителей дают log(n!) ≥ (n / 2) log(n / 2); поэтому сортировке сравнениями нужно Ω(n log n).
Ответ
C · Θ(n log n)
11.Структуры данных
Ответ: A · Чтобы упростить код, убрав особые случаи в голове или хвосте
Почему это ответ
Со сторожевым узлом у каждого реального узла есть предшественник, поэтому вставка или удаление в голове не требуют особой обработки.
Ответ
A · Чтобы упростить код, убрав особые случаи в голове или хвосте
12.Структуры данных
Ответ: C · 60
Почему это ответ
Самый левый узел правого поддерева — 60, поэтому 60 заменяет 50, а его прежняя позиция удаляется; при использовании предшественника получилось бы 40.
Ответ
C · 60
13.Теория графов
Ответ: Эйлеров цикл
Эйлер, Гамильтон и деревья: связный граф имеет эйлеров цикл (каждое ребро один раз, с возвратом в начало), когда все вершины имеют чётную степень, и эйлеров путь, не являющийся циклом, когда ровно две вершины имеют нечётную степень; тогда путь идёт от одной нечётной вершины к другой. Гамильтонов цикл посещает каждую вершину один раз; в Kn их (n − 1)!/2. У дерева на n вершинах n − 1 ребро, а связный граф с m рёбрами сохраняет остовное дерево после удаления m − n + 1 рёбер.
Степени: степень вершины — это число рёбер, которые в ней сходятся. У каждого ребра два конца, поэтому степени в сумме дают удвоенное число рёбер: Σ deg(v) = 2|E| (лемма о рукопожатиях). Следовательно, число вершин нечётной степени чётно. У Kn имеется n(n − 1)/2 рёбер, у k-регулярного графа на n вершинах nk/2, а у дерева на n вершинах n − 1 ребро.
Матрица смежности
A: 0 1 0 0 0 0
B: 1 0 0 1 1 0
C: 0 0 0 0 1 0
D: 0 1 0 0 1 1
E: 0 1 1 1 0 1
F: 0 0 0 1 1 0
Общие соседи
(M²)FC = 0·0 + 0·0 + 0·0 + 1·0 + 1·1 + 0·0 = 1
Ответ
N = 1
15.Базы данных и SQL
Ответ: A · Частичные зависимости неключевых столбцов от части составного ключа
Почему это ответ
2NF требует 1NF и того, чтобы каждый неключевой атрибут зависел от всего ключа, а не только от его части.
Ответ
A · Частичные зависимости неключевых столбцов от части составного ключа
16.Базы данных и SQL
Ответ: A · Избыточные копии нужно поддерживать согласованными при каждом изменении данных клиента
Почему это ответ
Денормализация ускоряет чтение, но возвращает избыточность, поэтому при обновлениях нужно менять каждую копию, иначе возникнут аномалии.
Ответ
A · Избыточные копии нужно поддерживать согласованными при каждом изменении данных клиента
17.Компьютерные сети
Ответ: B · Установить соединение и синхронизировать порядковые номера
Почему это ответ
Рукопожатие устанавливает соединение и согласует начальные порядковые номера обеих сторон до отправки данных.
Ответ
B · Установить соединение и синхронизировать порядковые номера
18.Компьютерные сети
Ответ: C · В разрешении имён (DNS)
Почему это ответ
Успешный ping внешнего IP-адреса доказывает, что кабели, адресация и маршрутизация работают. Неработающие имена указывают на проблему с DNS-сервером или настройкой резолвера.
Ответ
C · В разрешении имён (DNS)
19.Подсети IPv4
Ответ: H = 6
IPv4 subnetting: an address has 32 bits. The prefix /p says how many leading bits identify the network; the remaining 32 − p bits number the hosts. A subnet has 2³²⁻ᵖ addresses, but the first (network address) and last (broadcast address) cannot be given to hosts, so 2³²⁻ᵖ − 2 hosts fit. Exceptions: a /31 (point-to-point link, RFC 3021) uses both of its 2 addresses for hosts, and a /32 is one single address (a single host or a loopback).
Длина префикса
255.255.255.248 = /29
Используемые узлы
23 − 2 = 6
Ответ
H = 6
20.Подсети IPv4
Ответ: x = 31
IPv4 subnetting: an address has 32 bits. The prefix /p says how many leading bits identify the network; the remaining 32 − p bits number the hosts. A subnet has 2³²⁻ᵖ addresses, but the first (network address) and last (broadcast address) cannot be given to hosts, so 2³²⁻ᵖ − 2 hosts fit. Exceptions: a /31 (point-to-point link, RFC 3021) uses both of its 2 addresses for hosts, and a /32 is one single address (a single host or a loopback).