Список заданий по ДМ
Версия от 15:52, 22 ноября 2014; 194.85.160.133 (обсуждение)
<wikitex>
Дискретная математика, алгоритмы и структуры данных, 1 семестр
- Пусть $R$ и $S$ - рефлексивные отношения на $A$. Будет ли рефлексивным их а) объединение? б) пересечение? В этом и следующих заданиях, если ответ отрицательный, при демонстрации контрпримера удобно использовать представление отношения в виде ориентированного графа.
- Пусть $R$ и $S$ - симметричные отношения на $A$. Будет ли симметричным их а) объединение? б) пересечение?
- Пусть $R$ и $S$ - транзитивные отношения на $A$. Будет ли транзитивным их а) объединение? б) пересечение?
- Пусть $R$ и $S$ - антисимметричные отношения на $A$. Будет ли антисимметричным их а) объединение? б) пересечение?
- Определим $R^{-1}$ следующим образом: если $xRy$, то $yR^{-1}x$. Выполнено ли соотношение $RR^{-1} = I$, где $I$ - отношение равенства? Выполнен ли закон сложения степенией $R^iR^j=R^{i+j}$, если $i$ и $j$ разного знака?
- Пусть $R$ обладает свойством $X$. Будет ли обладать свойством $X$ отношение $R^{-1}$? Следует проанализировать $X$ - рефлексивность, антирефлексивность, симметричность, антисимметричность, транзитивность
- Пусть $R$ и $S$ - транзитивные отношения на $A$. Будет ли транзитивным их композиция?
- Пусть $R$ и $S$ - антисимметричные отношения на A. Будет ли антисимметричным их композиция?
- Постройте пример рефлексивного, симметричного, но не транзитивного отношения
- Постройте пример рефлексивного, антисимметричного, но не транзитивного отношения
- Пусть $R$ - отношение на $A$. Рассмотрим $Tr(R)$ - пересечение всех транзитивных отношений на $A$, содержащих $R$. Докажите, что $Tr(R) = R^{+}$.
- Пусть $R$ - транзитивное антисимметричное отношение. Предложите способ за полиномиальное время построить минимальное отношение $S$, такое что $S^+ = R$.
- Является ли отношение $R$, такое что $(a, b) R (c, d)$, если $ad = bc$ на ${\mathbb Z}^+ \times {\mathbb N}$ отношением эквивалентности?
- В каком случае транзитивное замыкание отношения будет отношением эквивалентности?
- В каком случае транзитивное замыкание отношения будет отношением частичного порядка?
- Выразите в явном виде "и", "или" и "не" через стрелку Пирса
- Выразите в явном виде "и", "или" и "не" через штрих Шеффера
- Является ли пара $\{x\to y, \neg x\}$ базисом?
- Является ли набор $\{x \to y, \langle xyz\rangle, \neg x\}$ базисом?
- Является ли набор $\{{\mathbf 0}, \langle xyz \rangle, \neg x\}$ базисом?
- Можно ли выразить "и" через "или"?
- Выразите медиану 5 через медиану 3
- Выразите медиану $2n+1$ через медиану 3
- Докажите, что любую монотонную самодвойственую функцию можно выразить через медиану
- Докажите, что любую функцию, кроме тождественной единицы, можно записать в СКНФ
- Докажите, что любую функцию от $n$ переменных можно представить с использованием стрелки Пирса формулой, длиной не больше чем $2^n\cdot poly(n)$, где $poly(n)$ - полином, общий для всех функций
- Булева функция называется пороговой, если $f(x_1, x_2, \ldots, x_n) = 1$ тогда и только тогда, когда $a_1x_1+a_2x_2+\ldots+a_nx_n \ge b$, где $a_i$ и $b$ - вещественные числа. Докажите, что "и" и "или" - пороговые функции.
- Приведите пример непороговой функции
- Рассмотрим булеву функцию $f$. Обозначим как $N(f)$ число наборов аргументов, на которых $f$ равна 1. Например, $N(\vee) = 3$. Обозначим как $\Sigma(f)$ сумму всех наборов аргументов, на которых $f$ равна 1 как векторов. Например, $\Sigma(\vee) = (2, 2)$. Докажите, что если для пороговой функции $f$ и функции $g$ выполнено $N(f) = N(g)$ и $\Sigma(f) = \Sigma(g)$, то $f = g$
- Сколько существует самодвойственных функций от $n$ переменных?
- Приведите пример функции, которая лежит во всех пяти классах Поста.
- Приведите пример функции, которая лежит во всех пяти классах Поста и существенно зависит хотя бы от трех переменных.
- Говорят, что формула имеет вид 2-КНФ, если она имеет вид $(t_{11}\vee t_{12})\wedge(t_{21}\vee t_{22})\wedge\ldots$, где $t_{ij}$ представляет собой либо переменную, либо ее отрицание (в каждом дизъюнкте ровно два терма). Предложите полиномиальный алгоритм проверки, что формула, заданная в 2-КНФ имеет набор значений переменных, на которых она имеет значение 1.
- КНФ называется КНФ Хорна, если в каждом дизъюнкте не более одной переменной находится без отрицания. Пример: $x\wedge(x \vee \neg y \vee \neg z) \wedge (\neg x \vee \neg t)$. Предложите полиномиальный алгоритм проверки, что формула, заданная в форме КНФ Хорна имеет набор аргументов, на котором она равна 1.
- Докажите, что если булеву функцию $f$ можно задать в форме Крома (в виде 2-КНФ), то выполнено следствие: $f(x_1, ..., x_n) = f(y_1, ..., y_n) = f(z_1, ..., z_n) = 1$ $\Rightarrow f(\langle x_1, y_1, z_1\rangle, ..., \langle x_n, y_n, z_n \rangle) = 1$
- Докажите, что если выполнено следствие: $f(x_1, ..., x_n) = f(y_1, ..., y_n) = f(z_1, ..., z_n) = 1$ $\Rightarrow f(\langle x_1, y_1, z_1\rangle, ..., \langle x_n, y_n, z_n \rangle) = 1$, то булеву функцию $f$ можно задать в форме Крома.
- Докажите, что если булеву функцию $f$ можно задать в форме Хорна, то выполнено следствие: $f(x_1, ..., x_n) = f(y_1, ..., y_n) = 1 \Rightarrow f(x_1\wedge y_1, ..., x_n \wedge y_n) = 1$
- Докажите, что если выполнено следствие: $f(x_1, ..., x_n) = f(y_1, ..., y_n) = 1 \Rightarrow f(x_1\wedge y_1, ..., x_n \wedge y_n) = 1$, то булеву функцию $f$ можно задать в форме Хорна
- Постройте схему из функциональных элементов для операции медиана трех над базисом $\{ \vee, \wedge, \neg\}$. Постарайтесь использовать минимальное число элементов.
- Постройте схему из функциональных элементов для операции $x \oplus y \oplus z$ над базисом $\{ \vee, \wedge, \neg\}$. Постарайтесь использовать минимальное число элементов.
- Предложите способ построить схему для функции $x_1 \oplus ... \oplus x_n$ над базисом $\{ \vee, \wedge, \neg\}$ с линейным числом элементов.
- Докажите, что не существует схем константной глубины для функций $x_1 \vee ... \vee x_n$, $x_1 \wedge ... \wedge x_n$.
- Докажите, что не существует схем константной глубины для функций $x_1 \oplus ... \oplus x_n$.
- Докажите, что не существует схемы константной глубины для сложения.
- Постройте схему из функциональных элементов с тремя входами: $x, y, z$ и одним выходом. Значение на выходе равно $x$, если $z=0$ и $y$, если $z=1$. Используйте базис из всех не более чем бинарных функций.
- Мультиплексор - функциональная схема с $n = 2^k + k$ и одним выходом. Обозначим первые $2^k$ входов как $x_0, x_1, \ldots, x_{2^k-1}$, а оставшиеся $k$ как $y_0, y_1, \ldots, y_{k-1}$. Выход мультиплексора равен $x_i$, где $i$ --- число, двоичное представление которого подано на входы $y_0, y_1, \ldots, y_{k-1}$. Постройте схему линейного от $n$ размера для мультиплексора.
- Дешифратор - функциональная схема с $k + 1$ входом и $n = 2^k$ выходами. Обозначим первые $k$ входов как $y_0, y_1, \ldots, y_{k-1}$, а последний как $z$. Обозначим выходы дешифратора как $x_0, x_1, \ldots, x_{2^k-1}$. Значение на выходах дешифратора 0 на всех выходах, кроме $x_i$, где $i$ --- число, двоичное представление которого подано на входы $y_0, y_1, \ldots, y_{k-1}$, а на выходе $x_i$ равно значению $z$. Постройте схему линейного размера для дешифратора.
- Докажите, что для функции "большинство из $2n+1$" существует схема из функциональных элементов глубины $O(\log n)$
- На одном китайском заводе в матричном умножителе случайно использовали элементы "или" вместо "и". Можно ли из получившихся значений получить произведение исходных чисел (доступа к входам нет, есть только доступ к $n\times 2n$ выходам матричного псевдоумножителя).
- Докажите, что любую булеву функцию от $n$ аргументов можно представить схемой из функциональных элементов, содержащей $O(2^n)$ элементов.
- Докажите, что любую булеву функцию от $n$ аргументов можно представить схемой из функциональных элементов, содержащей $O(2^n/n)$ элементов.
- Контактной схемой называется ориентированный ациклический граф, на каждом ребре которого написана переменная или ее отрицание (ребра в контактных схемах называют контактами, а вершины - полюсами). Зафиксируем некоторые значения переменным. Тогда замкнутыми называются ребра, на которых записана 1, ребра, на которых записан 0, называются разомкнутыми. Зафиксируем две вершины $u$ и $v$. Тогда контактная схема вычисляет некоторую функцию $f$ между вершинами $u$ и $v$, равную 1 на тех наборах переменных, на которых между $u$ и $v$ есть путь по замкнутым ребрам. Постройте контактные схемы для функций "и", "или" и "не".
- Постройте контактную схему для функции "xor".
- Постройте контактную схему для функции медиана трех.
- Докажите, что любую булеву функцию можно представить контактной схемой.
- Постройте контактную схему "xor от $n$ переменных", содержащую $O(n)$ ребер.
- Постройте контактную схему "большинство из $2n+1$ переменных", содержащую $O(n)$ ребер.
- Постройте контактную схему, в которой для каждого из $2^n$ наборов конъюнкций переменных и их отрицаний есть пара вершин, между которыми реализуется эта конъюнкция, используя $O(2^n)$ ребер.
- Докажите, что любую булеву функцию можно представить контактной схемой, содержащей $O(2^n)$ ребер.
- Как выглядит дерево Хаффмана для частот символов $1, 2, ..., 2^{n-1}$ (степени двойки) ?
- Как выглядит дерево Хаффмана для частот символов $1, 1, 2, 3, ..., F_{n-1}$ (числа Фибоначчи)?
- Докажите, что если размер алфавита - степень двойки и частоты никаких двух символов не отличаются в 2 или более раз, то код Хаффмана не лучше кода постоянной длины
- Модифицируйте алгоритм Хаффмана, чтобы строить $k$-ичные префиксные коды
- Укажите, как построить дерево Хаффмана за линейное время, если символы уже отсортированы по частоте
- Предложите алгоритм построения оптимального кода среди префиксных кодов с длиной кодового слова не более L бит
- Предложите алгоритм построения оптимального кода среди префиксных кодов, для которых коды символов упорядочены лексикографически
- Предложите способ хранения информации об оптимальном префиксном коде для n-символьного алфавита, использующий не более $2n - 1 + n \lceil\log_2(n)\rceil$ бит ($\lceil x\rceil$ - округление $x$ вверх)
- Можно ли разработать алгоритм, который сжимает любой файл не короче заданной величины $N$ хотя бы на 1 бит?
- Приведите пример однозначно декодируемого кода оптимальной длины, который не является ни префиксным, ни развернутым префиксным
- Для каких префиксных кодов существует строка, для которой он является кодом Хаффмана? Предложите алгоритм построения такой строки.
- Пусть заданы пары $(u_i, v_i)$. Предложите алгоритм проверки, что существует код Хаффмана для некоторой строки, в котором $i$-е кодовое слово содержит $u_i$ нулей и $v_i$ единиц.
- Докажите, что если в коде Хаффмана для некоторой строки $i$-е кодовое слово содержит $u_i$ нулей и $v_i$ единиц, то для многочлена от двух переменных $f(x, y) = \sum_{i=1}^n x^{u_i}y^{v_i}$ выполнено $f(x, y) - 1 = (x + y - 1) g(x, y)$ для некоторого многочлена $g(x, y)$.
- Разработайте алгоритм кодирования Move To Front строки длиной $n$ за $O(n \log n)$
- Докажите, что при оптимальном кодирование с помощью LZ77 не выгодно делать повтор блока, который можно увеличить вправо
- Верно ли утверждение из предыдущего задания при кодировании с помощью L78?
- Разработайте алгоритм оптимального кодирования текста с помощью LZ77, если на символ уходит $c$ бит, а на блок повтора $d$ бит
- Предложите семейство строк $S_1, S_2, \ldots, S_n, \ldots$, где $S_i$ имеет длину $i$, таких, что при их кодировании с помощью LZW длина строки увеличивается. Начальный алфавит $\{0, 1\}$.
- Разработайте алгоритм обратного преобразования Барроуза-Уиллера
- Разработайте алгоритм обратного преобразования Барроуза-Уиллера за $O(n)$
- Докажите, что для любого $c > 1$ существует распределение частот $p_1, p_2, .., p_n$, что арифметическое кодирование в $c$ раз лучше Хаффмана
- При арифметическом кодировании можно учитывать, что с учетом уже потраченных символов соотношения символов становятся другими и отрезок надо делить в другой пропорции. Всегда ли кодирование с таким уточнением лучше классического арифметического кодирования?
- При арифметическом кодировании трудным моментом является деление отрезка в пропорциях, не являющихся степенями двойки. Рассмотрим модификацию арифметического кодирования, когда соотношения между символами приближаются дробями со знаменателями - степенями двойки. Что можно сказать про получившийся алгоритм?
- Разработайте оптимальный код исправляющий одну ошибку при пересылке 2 битов
- Разработайте оптимальный код исправляющий одну ошибку при пересылке 3 битов
- Разработайте код, исправляющий две ошибки, использующий асимптотически не более $2n$ бит для кодирования $2^n$ символьного алфавита (для $n > n_0$)
- Перечисление всех $2^n$ двоичных векторов длины $n$ называется кодом Грея, если в нем не повторяются никакие два вектора и любые два соседних вектора отличаются ровно в одном разряде. Докажите по индукции, что для любого $n$ существует код Грея.
- Докажите, что последовательность $g_i = i \oplus \lfloor i / 2\rfloor$ образует код Грея.
- Построим последовательность $g_i$ следующим образом: пусть $g_0 = 0$ и при переходе от $g_i$ к $g_{i+1}$ будем менять тот же бит, который меняется с 0 на 1 при переходе от $i$ к $i+1$. Докажите, что получившаяся последовательность является кодом Грея.
- Разработайте код Грея для k-ичных векторов
- При каких $a_1, a_2, ..., a_n$ существует обход гиперпараллелепипеда $a_1 \times a_2 \times ... \times a_n$, который переходит каждый раз в соседнюю ячейку и бывает в каждой ячейке ровно один раз?
- При каких $a_1, a_2, ..., a_n$ существует обход гиперпараллелепипеда $a_1 \times a_2 \times ... \times a_n$, который переходит каждый раз в соседнюю ячейку и бывает в каждой ячейке ровно один раз, а в конце возвращается в исходную ячейку?
- Код "антигрея" - постройте двоичный код, в котором соседние слова отличаются хотя бы в половине бит
- Троичный код "антигрея" - постройте троичный код, в котором соседние слова отличаются во всех позициях
- При каких $n$ и $k$ существует двоичный $n$-битный код, в котором соседние кодовые слова отличаются ровно в $k$ позициях?
- Докажите, что для достаточно больших $n$ существует код Грея, который отличается от любого, полученного из зеркального перестановкой столбцов, отражением и циклическим сдвигом строк
- Код Грея назвается монотонным, если нет таких слов $g_i$ и $g_j$, что $i < j$, а $g_i$ содержит на 2 или больше единиц больше, чем $g_j$. Докажите, что существует монотонный код Грея
- Докажите, что $\sum_{k=0}^n C_n^k = 2^n$
- Докажите, что $\sum_{k=0}^n (-1)^kC_n^k = 0$
- Коды Грея для перестановок. Предложите способ перечисления перестановок, в котором соседние перестановки отличаются обменом двух соседних элементов (элементарной транспозицией).
- Коды Грея для сочетаний. Предложите способ перечисления сочетаний, в котором соседние сочетания отличаются заменой одного элемента.
- Рассмотрим коды Грея для перестановок и коды Грея для их таблиц инверсий. Есть ли между ними связь?
- Сочетание с повторениями - это способ выбрать из $n$ элементов $k$, причем один элемент можно выбирать несколько раз. Порядок не важен. Чему равно число сочетаний с повторениями из $n$ по $k$?
- Предложите альтернативное доказательство формулы включения-исключения: посчитайте для каждого элемента, сколько раз он будет посчитан в правой части формулы и используйте формулу $\sum_{k=0}^n (-1)^kC_n^k = 0$.
- Предложите алгоритм получения по перестановке ее таблицы инверсий за $O(n \log n)$.
- Предложите алгоритм получения перестановки по ее таблице инверсий за $O(n \log n)$.
- Максимумом в перестановке называется элемент, который больше своих соседей (одного, если он первый или последний, обоих иначе). Выведите рекуррентную формулу для числа перестановок $n$ элементами с $k$ максимумами
- Подъемом в перестановке называется пара соседних элементов, таких что $a_{i-1} < a_i$. Выведите рекуррентную формулу для числа перестановок $n$ элементов с $k$ подъемами
- Неподвижной точкой в перестановке называется элемент $a_i = i$. Выведите рекуррентную формулу для числа перестановок $n$ элементов с $k$ неподвижными точками
- Докажите, что числа Стирлинга 1 рода образуют матрицу переходов в линейном пространстве полиномов базиса возрастающих факториальных степеней к базису обычных степеней
- Докажите, что числа Стирлинга 2 рода образуют матрицу переходов в линейном пространстве полиномов от базиса обычных степеней к базису убывающих факториальных степеней
- Укажите способ подсчитать число разбиений заданного $n$-элементного множества на $k$ упорядоченных непустых подмножеств
- Докажите, что $n$-е число Каталана равно ${2n \choose n}/(n+1)$
- Двоичное дерево - это подвешенное дерево, где каждая вершина может иметь двух детей: левого и правого. Каждый из них также является двоичным деревом (либо отсутствует). Докажите, что число двоичных деревьев с $n$ вершинами равно $n$-му числу Каталана.
- Подвешенное дерево с порядком на детях - это подвешенное дерево, где каждая вершина может иметь произвольное число детей, причем дети упорядочены. Каждый ребенок в свою очередь является подвешенным деревом. Докажите, что число подвешенных деревьев порядком на детях с $n$ вершинами равно $n-1$-му числу Каталана.
- Докажите, что число триангуляций правильного $n$-угольника равно $n-2$-му числу Каталана.
- Установите явное взаимно-однозначное соответствие между объектами из предыдущих трех заданий и правильными скобочными последовательностями.
- Укажите способ подсчитать число разбиений числа на слагаемые за $O(n \sqrt{n})$
- Решите с помощью ДП задачу о наибольшей общей подстроке за $O(n^2)$
- Решите с помощью ДП задачу о наибольшей общей возрастающей подпоследовательности за $O(n^3)$
- Решите с помощью ДП задачу о наибольшей общей возрастающей подпоследовательности за $O(n^2)$
- Докажите, что минимальное число невозрастающих подпоследовательностей, на которые можно разбить заданную последовательность, равно длине ее наибольшей возрастающей подпоследовательности
- Решите задачу о наибольшей возрастающей подпоследовательности за $O(n \log n)$ без дерева отрезков
- Решите с помощью ДП задачу о наибольшей пилообразной подпоследовательности (последовательность называется пилообразной, если никакие ее три подряд идущих элемента не образуют ни возрастающую, ни убывающую последовательность)
- Докажите, что произведение длины наибольшей возрастающей подпоследовательности и наибольшей убывающей подпоследовательности перестановки не меньше $n$
- Будем говорить, что строки a и b образуют пару подстрок строки c, если c можно представить как xaybz, где x, y и z - произвольные строки. Решите с помощью ДП задачу о наибольшей общей паре подстрок.
- Задача о редакционном расстоянии: найдите последовательность действий для превращения строки $s$ в строку $t$ с помощью операций вставки, удаления и замены символа. Длины строк $m$ и $n$, соответственно. Требуется решить задачу за $O(mn)$ с памятью $O(m + n)$.
- Решите задачу о редакционном расстоянии, если помимо операций вставки, удаления и замены символа можно использовать операцию обмена местами двух соседних символов. Стоимость всех операций одинаковая.
- Решите битоническую задачу о комивояжере: найдите во взвешенном графе гамильтонов цикл минимального веса, который удовлетворяет дополнительно следующему свойству: сначала номера посещенных вершин возрастают, а затем убывают. Время $O(n^2)$.
- Задача о рюкзаке: дано $n$ предметов, у каждого предмета есть вес $w_i$ и стоимость $v_i$, размер рюкзака $c$, требуется выбрать предметы максимальной суммарной стоимости с весом не более $c$. Решите задачу за время $O(nc)$ с памятью $O(c)$.
- Задача о рюкзаке без ограничения на число одинаковых предметов: дано $n$ типов предметов, у каждого предмета есть вес $w_i$ и стоимость $v_i$, размер рюкзака $c$, требуется выбрать предметы максимальной суммарной стоимости с весом не более $c$. Каждого предмета можно брать несколько (любое количество) экземпляров. Решите задачу за время $O(nc)$ с памятью $O(c)$.
- Непрерывная задача о рюкзаке: дано $n$ жидкостей, у каждой жидкости есть доступное количество $w_i$ и стоимость единицы жидкости $v_i$, размер рюкзака $c$, требуется выбрать для каждой жидкости число $0 \le x_i \le w_i$, чтобы суммарной стоимости выбранных жидкостей $\sum x_iv_i$ была максимальна и суммарное объем взятых жидкостей $\sum x_i$ был не более $c$.
- Задача о рюкзаке, большой рюкзак: дано $n$ типов предметов, у предмета $i$-го типа есть вес $w_i$ и стоимость $v_i$, размер рюкзака $c$, предметов каждого типа можно взять любое количество, требуется выбрать предметы максимальной суммарной стоимости с весом не более $c$. Докажите, что если максимальный вес предмета $z$, то следует взять предметов с максимальным отношением $c_i/w_i$ с суммарным весом хотя бы $c - z^2$.
- Решите задачу о рюкзаке: дано $n$ предметов, у каждого предмета есть вес $w_i$ и стоимость $v_i$, размер рюкзака $c$, требуется выбрать предметы максимальной суммарной стоимости с весом не более $c$, время $O(2^{n/2} \cdot poly(n))$, память $O(2^{n/2})$
- Решите с помощью ДП задачу о наибольшей подпоследовательности-палиндроме
- Рассмотрим задачу: расставить знаки +, * и скобки в выражении таким образом, чтобы его значение было минимальным по модулю. Приведите контрпример к решению на базе ДП, в котором для каждого подотрезка хранится минимальное и максимальное положительное и отрицательное значение, достижимое на этом отрезке?
- Решите с помощью ДП задачу о наибольшей общей подпоследовательности-палиндроме
- Решите задачу о рюкзаке: дано $n$ предметов, у каждого предмета есть вес $w_i$ и стоимость $v_i$, размер рюкзака $c$, требуется выбрать предметы максимальной суммарной стоимости с весом не более $c$, время $O(2^{n/2} \cdot poly(n))$, память $O(2^{n/2})$
- Решите задачу: найти в дереве минимальное множество вершин, чтобы расстояние от любой вершины до одной из выбранных было не более $d$
- Выведите рекуррентную формулу для числа разбиений числа $n$ на нечетные слагаемые
- Выведите рекуррентную формулу для числа разбиений числа $n$ на нечетное число слагаемых
- Выведите рекуррентную формулу для числа разбиений числа $n$ на различные слагаемые
- Решите задачу о гамильтоновом пути в графе за $O(2^nn)$ (считайте, что $n$ не превышает размер слова в архитектуре компьютера).
</wikitex>