сумму сверху:n/(1000d)∑s=1C s n · C 7 8 dsm( ) sd n/(1000d)7ds ∑≤8ms=1≤( ) 7(ne/s) s me78 dsn/(1000d)∑s=1[nes ·( 8me7ds8 ds ( ) sd 7ds≤8m) 78 d · ( 7ds8m )d ] s(1)Мы утверждаем, что данная сумма не превосходит 1/10. Чтобы доказатьэто, мы оценим эту сумму сверху геометрической прогрессией со знаменателем1/20. Таким образом, нам нужно показать, что для каждого s произведениев квадратных скобках в (1) не превосходит 1/20:nes ·( ) 78me7ds8 d ·( 7ds8m) d ( ) d= de 1+ 7 7ds8 d 8 −1 ≤8m≤ O(1) · de 7 8 d ( 71000 n8 · 34 n ) 1 8 d−1 < 1/20(последнее неравенство имеет место для достаточно больших d). Обращаемвнимание: мы использовали условие m ≥ 3n/4.Prob[второе свойство экспандера нарушено] ≤ ∑ S,T( ) sd |T |, (2)m(здесь мы суммируем по всем множествам S ⊂ L таким, что |S| ≤ n/2 иT ⊂ R таким, что |T | = 9 8|S|). Мы оценим (2) сверху:n/2∑( ) sdProb[второе экспандера нарушено] ≤ Cn s · C 9 8 s 9s/8m ·≤ms=1[n/2∑( ) ] d s9s/8(ne/s) · (me/(9s/8)) ·≤ 1/10 (3)ms=1Чтобы получить последнее неравенство, мы оцениваем сумму (3) геометрическойпрогрессией. Для этого достаточно доказать равномерную оценкуна выражение в квадратных скобках:( ) d 9s/8(ne/s) · (me/(9s/8)) · ≤ O(1) ·m( ) d−2 9n/16= O(1) · (3/4) d−2 ≤ 1/203n/4(здесь мы снова использовали, что m ≥ 3/4n). Теорема доказана.Литература: [HLW].2
Первый пример применения экспандеров: коды, исправлящиеошибки.Покажем, как с помощью расширяющего графа посторить линейныйкод, позволяющий исправлять ошибки в доле δ = 1/(2000d) битов. Чтобызадать линейный код с длиной кодового слова n, достаточно описать егопроверочную матрицу H (слово x ∈ {0, 1} n является кодовым словом еслии только если Hx t = 0). Другими словами, нужно задать систему линейныхуравнений для переменных x 1 , . . . , x n ; решения этой системы и будуткодовыми словами.Зафиксируем некоторый (n, 3n/4, d)-экспандер G. Сопоставим переменныеx 1 , . . . , x n вершинам в левой доле графа. Вершинам из правой долибудут соответствовать уравнения. А именно, каждой вершине v из правойдоли G мы сопоставляем уравнениеx i1 + . . . + x is = 0 (mod 2),где x i1 , . . . , x is – это список вершин, соединённых рёбрами с v.Число уранвений равно 3n/4, так что размерность пространства решенийне меньше n/4. Это значит, что в нашем коде будет не менее 2 n/4 кодовыхслов.Остаётся доказать, что данный код действительно исправляет ошибки.Для этого нужно проверить, что расстояние между любыми кодовыми словамине может быть меньше n/(1000d) (на самом деле для расстояния этогокода можно доказать более сильную оценку; но мы ограничимся самымпростым рассуждением). Для линейного кода нужное нам условие эквивалентнотому, что в каждом ненулевом кодовом слове должно быть не менееn/(1000d) единиц.Предположим противное: пусть есть кодовое слово x 1 . . . x n (решение системылинейных уравнений, соответствующих графу G), в котором менееn/(1000d) единиц. Обозначим S множество вершин из левой доли графа, соответствующихединицам в данной битовой последовательности. Поскольку|S| < n/(1000d), можно применить первое свойство экспандера: число соседейS достаточно велико|Γ(S)| ≥ 7d|S|8Из S выходит ровно d|S| вершин. Подсчитаем среднее (по всем вершинамv ∈ Γ(S)) число ребер, которое приходит из S в v. Очевидно, это число непревосходитd|S|7d|S|/8 = 8/7 < 2Это значит, что хотя бы у одной вершины v из правой доли есть ровноодин сосед из S. Но в таком случае уравнение, соответствующее v, не выполненяетсяна наборе x 1 . . . x n . Значит, набор битов с менее чем n/(1000d)единицами не может быть кодовым словом.3