Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Литература / Дискретная математика (пособие ЛЭТИ) / Дискретная математика (пособие ЛЭТИ)

.pdf
Скачиваний:
702
Добавлен:
16.04.2013
Размер:
527.71 Кб
Скачать
торых k (0 6 k 6 r) компонент кодового символа

def

Введем понятие расстояния между кодовыми символами: d(a, b) = число позиций i : ai 6= bi.

Пример 5.1. a = (0, 1, 1, 1), b = (1, 0, 1, 0), тогда a b = (1, 1, 0, 1), d(a, b) = 3.

Очевидно следующее утверждение.

Утверждение 5.1. Введенная функция d(a, b) является функцией расстояния.

Доказательство. Свойства 1, 2 очевидны. Установим свойство 3. Если ai = ci, òî d(a, c) не меняется, а выражение в левой части неравенства

может возрасти. Если же ai 6= ci, òî ëèáî ai 6= bi, ëèáî bi 6= ci.

Предположим, что при приеме кодируемых символов возможно появ

ление ошибок не более, чем в r 6 m разрядах. Поставим задачу исправ ления ошибок в разрядах за счет уменьшения числа кодовых символов. Пусть A = {a(1), a(2), . . . , a(p)} множество выбранных кодовых символов,

p 6 2m.

Утверждение 5.2. Åñëè d(a(i), a(j)) > 2r + 1, то можно исправлять ошибки, возникающие не более, чем в r разрядах.

Доказательство. Пусть при приеме символа a(i) не более чем в r раз рядах возникли ошибки. Тогда принятый символ b попадает в окрестность символа a(i) радиуса r, т. е. справедливо d(a(i), b) 6 r. Обозначим соот

def { | (i) } ∩

ветствующую окрестность Ai = a d(a , a) 6 r . Тогда Ai Aj = . Действительно, пусть w Ai ∩ Aj, тогда

d(a(i), w) 6 r, d(a(j), w) 6 r, d(a(i), a(j)) 6 d(a(i), w) + d(a(j), w) 6 2r .

Полученное противоречие и доказывает утверждение.

Определение 5.3. Множество Ai назовем областью декодирования

символа a(i). Любой принятый символ b, попадающий в Ai, отождеств ëÿåì ñ a(i).

Сколько элементов в множестве Ai ? Это число способов выбора неко a(i), т. е. число символов,

отличающихся от символа a(i) â 0, 1, 2, . . . , r разрядах. Тогда

 

 

 

 

 

 

r

 

 

Xk

|Ai| =

m0 +

 

m1 + · · · +

 

mr =

=0

 

mk .

 

 

 

 

 

 

 

 

50

Теперь легко оценить число элементов в множестве выбранных символов A = {a(1), a(2), . . . , a(p)}. Так как всего 2m кодируемых символов, то для p получаем оценку (граница Хемминга):

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

2m

 

 

 

 

 

 

 

 

 

 

 

Xk

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

mk 6 2m, p 6

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

P

r

 

 

m

 

 

 

 

 

 

 

 

Пусть

 

 

 

 

 

 

.

 

 

 

k

 

 

 

 

 

 

 

 

 

=0

 

 

 

 

 

 

 

 

 

k=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= (0 0 0)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

3

3

 

 

 

 

 

0 = (0 0 1) (0 1 0) (1 0 0)

 

 

;

Пример 5.2.

 

 

 

m = 3, r = 1

 

Тогда

p 6

2 /( 0 +

1 ) = 2

a(0)

, , ,

 

 

 

, ,

 

 

 

A

 

 

{

, , ,

 

 

 

,

,

 

,

, (0, 0, 0) ,

 

a(1) = (1, 1, 1),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

}

 

A1 = {(1, 1, 0), (1, 0, 1), (0, 1, 1), (1, 1, 1)}.

 

5.2. Код Шеннона Фэно и алгоритм Хаффмена

В 5.1 на каждый кодовый символ отводилось одинаковое число двоич ных разрядов. Шеннон и Фэно предложили конструкцию кода переменной длины. При таком коде у каждого символа своя длина кодовой последо вательности, поэтому необходимо побеспокоиться о том, как определять конец кода отдельного символа. Предлагается такое ограничение на код:

никакая кодовая последовательность не является началом другой кодо вой последовательности. Это свойство называется свойством префикса, а

код, обладающий таким свойством, беспрефиксным кодом.

Пусть {p1, p2, . . . , pn} частоты появления(использования) кодируе

мых символов, а {s1, s2, . . . , sn} длины их кодовых последовательностей. Будем стремиться уменьшить среднее число двоичных разрядов, приходя щихся на один кодовый символ, т. е. величину Pni=1 pisi.

Шеннон и Фэно предложили метод построения кода, близкого к оп тимальному: разбить все символы на две группы с приблизительно одина

ковой суммарной частотой появления, коды первой группы начать с 0, à

второй с 1. Внутри группы делать то же самое, пока в каждой группе не

останется только по одному символу.

 

Элегантный алгоритм для точного решения этой задачи, основанный

на нескольких очевидных свойствах оптимальной кодовой последователь

ности, предложил Д. Хаффмен.

 

Лемма 5.1. Åñëè p1 > p2 > · · · > pn, òî s1 6 s2 6 · · · 6 sn.

 

Лемма 5.2. В предположениях леммы 5.1 справедливо sn−1 = sn.

 

Доказательство. Действительно, пусть sn > sn−1 и, следовательно, n-я комбинация самая длинная. Так как никакая кодовая комбинация не является началом никакой другой, то сократив n-ю комбинацию до длины

(n − 1)-й, получим снова уникальную кодовую комбинацию и более корот кую, чем раньше. Противоречие.

51

Опишем теперь собственно алгоритм: два символа кодируем 0 è 1, а если символов больше, то соединяем два самых редких символа в один но вый символ, решаем получившуюся задачу, а затем вновь разделяем этот

новый символ на два, приписав соответственно 0 è 1 к его кодовой после довательности.

Пример 5.3. Пусть имеется 6 кодовых символов a, b, c, d, e, f с ча стотами появления соответственно

0.32(a), 0.25(b), 0.14(c), 0.12(d), 0.10(e), 0.07(f).

Проводя объединение получаем:

1) 0.32(a), 0.25(b), 0.17(ef), 0.14(c), 0.12(d);

2)0.32(a), 0.26(cd), 0.25(b), 0.17(ef);

3)0.42(bef), 0.32(a), 0.26(cd);

4)0.58(acd), 0.42(bef).

Расщепляем символы и приписываем 0 и 1 к кодовым последователь ностям:

1)0(acd), 1(bef);

2)00(a), 01(cd), 1(bef);

3)00(a), 01(cd), 10(b), 11(ef);

4)00(a), 010(c), 011(d), 10(b), 11(ef);

5)00(a), 010(c), 011(d), 10(b), 110(e), 111(f).

5.3.Лексикографический порядок. Генерирование k-элементных подмножеств

Рассмотрим задачу генерации всех k-элементных подмножеств данно го n-элементного множества X = {x1, x2, . . . , xn}. Очевидно, что всего их

n . Не умаляя общности, будем считать, что X = {1, 2, . . . , n}. Определим

k

упорядоченность k-элементных подмножеств на основе упорядоченности элементов.

Определение 5.4. Говорят, что

1)подмножество {x1, x2, . . . , xk} лексикографически предшествует подмножеству {y1, y2, . . . , yk}, åñëè m 6 n xm < ym è i < m xi = yi;

52

ÊÖ
Замечание 5.2. Очередное подмножество получается из предыду щего заменой последних элементов на идущие подряд целые числа так,
чтобы последний элемент не превосходил n, а первый изменяемый эле
мент был на 1 больше, чем соответствующий элемент предыдущего под множества. Таким образом, индекс p, начиная с которого следует прово
максимальный индекс, для которого Запишем теперь сам алгоритм.

2)подмножество {x1, x2, . . . , xk} антилексикографически предшествует подмножеству {y1, y2, . . . , yk}, åñëè m 6 n xm > ym è

i > m xi = yi.

Замечание 5.1. Если в качестве элементов X взять буквы алфави та {а,б,в,г, . . .}, то слова длины k появляются в словаре в лексикографи ческом порядке.

Построим алгоритм генерации k-элементных подмножеств X в лекси кографическом порядке. Очевидно, что первое подмножество это

{1, 2, 3, . . . , k}, a за подмножеством {a1, a2, . . . , ak} следует подмножество

{b1, b2, . . . , bk} = {a1, a2, . . . , ap−1, ap + 1, ap + 2, . . . , ap + k − p + 1}, ãäå p bk = ap + k − p + 1 6 n.

ÖÈÊË ÏÎ i ÎÒ 1 ÄÎ k ai : = i; ÊÖ p : = k

ÖÈÊË-ÏÎÊÀ p > 1

ÅÑËÈ ak = n TO p : = p − 1 ИНАЧЕ p : = k ÅÑËÈ p > 1

ÖÈÊË ÏÎ i ÎÒ k ÄÎ p ai : = ap + i − p + 1; ÊÖ

дить изменения, определяется по значению ak. Åñëè ak < n, то следует изменить только ak, è ïðè ýòîì p = k. Åñëè æå ak = n, то нужно уменьшать индекс p = p − 1, увеличивая тем самым длину изменяемой части подмножества.

Пример 5.4. Пусть X = {1, 2, 3, 4, 5, 6}, k = 4. Тогда

p = 4 → {1, 2, 3, 4} (первое подмножество)

p = 4 → {1, 2, 3, 5}, p = 4 → {1, 2, 3, 6}, p = 3 → {1, 2, 4, 5}, p = 4 → {1, 2, 4, 6}, p = 3 → {1, 2, 5, 6}, p = 2 → {1, 3, 4, 5}, p = 4 → {1, 3, 4, 6}, p = 3 → {1, 3, 5, 6}, p = 2 → {1, 4, 5, 6}, p = 1 → {2, 3, 4, 5}, p = 4 → {2, 3, 4, 6}, p = 3 → {2, 3, 5, 6}, p = 2 → {2, 4, 5, 6}, p = 1 → {3, 4, 5, 6},

p = 0 (генерация закончена)

53

5.4.Числа Стирлинга первого и второго родов

Определение 5.5.

вается число разбиений ся подмножеств.

def

Числом Стирлинга второго рода = S(n, k) íàçû n-элементного множества на k непересекающих

Очевидно, что S(n, k) = 0 äëÿ k > n. Положим S(0, 0) = 1.

Лемма 5.3. Для S(n, k) справедливы следующие свойства: 1) S(n, 0) = 0, n > 0;

2) S(n, n) = 1, n > 0;

3) S(n, k) = S(n − 1, k − 1) + kS˙ (n − 1, k), 0 < k < n.

Доказательство. Пп. 1 и 2 очевидны. Установим свойство 3. Рассмот

рим множество всех разбиений n-элементного множества 1, 2, . . . , n íà k непересекающихся подмножеств. Эти разбиения распадаются на две груп пы:

1)разбиения, которые содержат {n} как одноэлементное множество;

2)разбиения, где n содержится в составе по крайней мере двухэле ментных множеств.

Для первой группы существует S(n − 1, k − 1) вариантов разбиений, т. е. разбиений множества {1, 2, . . . , n − 1} íà k − 1 непересекающихся под множеств. Для второй группы каждому разбиению множества {1, 2, . . . , n − 1} íà k непересекающихся подмножеств ( S(n − 1, k) вариантов) соот ветствует k разбиений, получающихся поочередным добавлением элемента

n к каждому подмножеству. Следовательно, в этой группе kS(n − 1, k) вариантов разбиений.

Эти свойства позволяют легко вычислять числа Стирлинга для про извольных n è k.

n

 

 

 

k

 

 

 

 

 

 

 

 

 

1

2

3

 

4

5

6

 

 

 

 

 

 

 

 

1

1

0

0

 

0

0

0

 

 

 

 

 

 

 

 

2

1

1

0

 

0

0

0

 

 

 

 

 

 

 

 

3

1

3

1

 

0

0

0

 

 

 

 

 

 

 

 

4

1

7

6

 

1

0

0

 

 

 

 

 

 

 

 

5

1

15

25

 

10

1

0

 

 

 

 

 

 

 

 

6

1

31

90

 

65

15

1

 

 

 

 

 

 

 

 

54

базис в пространстве много

Определение 5.6. Числом Белла

биений n-элементного множества на множеств, т. е. Bn = Pnk=0 S(n, k).

def

= Bn называется число всех раз 1, 2, . . . , n непересекающихся под

Положим B0 = 1. Докажем следующее рекуррентное соотношение.

Доказательство. Рассмотрим (n + 1)-

 

P

n

n

 

=

i=0

 

Лемма 5.4. Справедливо равенство Bn+1

 

i Bi.

элементное множество

{1, 2, . . . , n, n + 1} и зафиксируем в нем элемент n + 1. Будем выбирать произвольные i элементов из множества {1, 2, . . . , n}. Оставшиеся n + 1 −i элементов рассматриваем как одно подмножество. Так как 0 6 i 6 n, то в последнем подмножестве может быть от 1 до n + 1 элементов. Для каждой

выборки из i элементов существует Bi разбиений, а сами элементы можно выбрать n способами.

i

Введем в рассмотрение понятие факториальных многочленов.

Определение 5.7. Факториальный многочлен степени k

def

[x]k = x(x − 1) · · · (x − k + 1),

ò. å. [x]1 = x, [x]2 = x(x − 1), [x]3 = x(x − 1)(x − 2) è ò. ä.

Очевидно, что {1, [x]1, [x]2, . . . [x]n, . . .}

членов.

Теорема 5.1. Справедливо равенство

n

X

xn = S(n, k)[x]k,

k=0

т. е. числа Стирлинга второго рода это матрица перехода от канони ческого базиса {1, x, x2, . . . , xn, . . .} к базису факториальных многочленов

{1, [x]1, [x]2, . . . , [x]n, . . .}.

Определим обратную связь этих базисов.

Определение 5.8. Числа Стирлинга первого рода это матрица

перехода от

базиса факториальных многочленов

{1, [x]1,k[x]2

, . . . , [x]n, . . .}

2

n

 

P

n

Лемма 5.5. Для введенных чисел

k=0 s(n, k)x .

s(n, k)

к базису {1, x, x , . . . , x

 

, . . .}, ò. å. [x]n

=

 

Стирлинга первого рода

справедливы следующие свойства: 1) s(n, 0) = 0, n > 0;

55

2) s(n, n) = 1, n > 0;

3) s(n, k) = s(n − 1, k − 1) − (n − 1)s(n − 1, k), 0 < k < n.

Доказательство. Свойства 1 и 2 очевидны. Докажем п. 3. Имеем

def

[x]n = [x]n−1(x − n + 1), тогда согласно определению 5.8

n

 

n−1

n−1

X

 

Xk

X

s(n, k)xk = (x − n + 1)

s(n − 1, k)xk =

s(n − 1, k)xk+1

k=0

n−1

=0

k=0

 

n−1

 

− (n − 1)

Xk

X

 

s(n − 1, k)xk = s(n − 1, k − 1)xk + s(n − 1, n − 1)xn

 

=0

k=1

n−1

 

n−1

 

− (n − 1)

X

 

Xk

s(n − 1, k)xk − s(n − 1, 0)(n − 1) = (s(n − 1, k − 1)−

 

k=1

 

=1

− (n − 1)s(n − 1, k))xk + s(n, n)xn − (n − 1)s(n − 1, 0) .

Заметим, что s(n, n) = 1,

s(n − 1, 0) = 0. Приравнивая коэффициенты

при одинаковых степенях x получаем требуемое.

Для введенных факториальных многочленов имеет место следующая

теорема.

 

 

 

 

 

 

Теорема 5.2 (факториальная теорема Вандермонда). Справед

ливо равенство

n

 

 

 

 

 

 

 

 

 

 

 

 

Xk

 

 

 

 

[x + y] =

n

[x]

[y]

n−k

.

 

n

k

k

 

 

 

=0

 

 

 

 

 

 

 

 

 

 

 

 

5.5.Разбиения чисел

Пусть n Z, n > 0.

Определение 5.9. Разбиением числа n называется набор чисел

{a1, a2, . . . , ak}, ai Z, a1 > a2 > · · · > ak > 0 è n = a1 + a2 + · · · + ak.

Пример 5.5. Пусть n = 7. Запишем все разбиения в антилексико графическом порядке:

{7} {6, 1} {5, 2} {5, 1, 1} {4, 3} {4, 2, 1} {4, 1, 1, 1} {3, 3, 1} {3, 2, 1, 1} {3, 1, 1, 1, 1} {2, 2, 2, 1}{2, 2, 1, 1, 1} {2, 1, 1, 1, 1, 1} {1, 1, 1, 1, 1, 1, 1}

56

Определение 5.10. Для каждого разбиения {a1, a2, . . . , ak} можно построить диаграмму Феррерса. Она представляет собой таблицу из k

строк, i-я строка которой содержит последовательность из ai точек.

Любому разбиению соответствует сопряженное разбиение, получаемое транспозицией диаграммы Феррерса.

Очевидно, что транспозиция диаграммы Феррерса определяет взаим- но-однозначное соответствие между разбиением числа n íà k слагаемых и

его же разбиением с наибольшим слагаемым, равным k.

Пример 5.6.

s

s

s

s

s

s

s

s s s

s

s

s

s

s

s

s

s

s

s

s

s

s

s

s

 

s

s

 

 

s

s

s

 

 

t

 

t

16 = 6 + 4 + 4 + 2

16 = 4 + 4 + 3 + 3 + 1 + 1

Теорема 5.3. Число разбиений n на попарно различные слагаемые равно числу разбиений n на нечетные слагаемые.

Доказательство. Рассмотрим разбиение числа n на нечетные слагае мые b1, b2, . . . , bp, где слагаемое bi появляется в разбиении ri ðàç:

n = b1 + b1 + · · · + b1

+ b2 + b2 + · · · + b2

+ · · ·+ bp + bp + · · · + bp

(5.1)

|

 

{z

 

}

|

 

{z

 

 

}

 

 

|

 

{z

 

}

 

 

 

r1

 

 

 

r2

 

+ 2 +

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

rp

 

 

 

Запишем двоичное представление

i

q1

 

q2

· · ·

 

qs

1

2 · · ·

r = 2

 

 

 

 

+ 2 , q > q >

>

 

 

 

 

 

 

 

 

 

 

 

> qs > 0. Заменим ri слагаемых bi в (5.1) на попарно различные слагаемые bi2q1 , bi2q2 , . . . , bi2gs . Oчевидно, что при этом сохраняется сумма разбиения.

Повторяя эту операцию для всех i = 1, 2, . . . , p и упорядочивая слагаемые получаем требуемое представление, так как bi2ql 6= bj2qm в силу нечетности

bi, bj.

Пример 5.7.

26 = 7+5+5+3+3+1+1+1 = 7·20+5·21+3·21+1·(21+20) = 10+7+6+2+1.

57

6.Основы теории графов

6.1.Простейшие определения и свойства

 

def

 

Определение 6.1. Графом G = (V, E), называют пару множеств

def

{a1, a2, . . . , ap} непустое, конечное множество вершин и

def

V =

E =

{(a, b) | a, b V} множество неупорядоченных пар вершин, называемых р¼брами.

Определение 6.2. Ребро (a, a) называется петлей. Замечание 6.1. Далее будем рассматривать графы без петель.

Определение 6.3. Рассмотрим ребро r = (a, b) E. Тогда верши ны a, b называются концами или концевыми точками ребра r. При этом говорят, что ребро r инцидентно вершинам a, b. Вершины a, b называют ся смежными. Множество вершин, смежных с вершиной a, называется множеством смежности вершины a и обозначается +(a).

Определение 6.4. Звездой вершины a называется подмножество

ребер {(a1, a2) E| a1 = a èëè a2 = a}

def

 

def

= δ(a). Число |δ(a)|

= deg(a)

называется степенью(или валентностью) вершины

a. Åñëè deg(a) = 0,

то вершина называется изолированной, при deg(a) = 1 концевой или висячей. Если степени всех вершин графа равны k, то граф назывaется регулярным степени k.

Теорема 6.1 (Эйлера). Справедливо равенство |E| = 12 Pa V deg(a).

Доказательство. В графе G нет петель и каждое ребро учитывается дважды.

Следствие 6.1. У любого графа G число вершин неч¼тной степе ни ч¼тно.

Определение 6.5. Ãðàô G0 = (V0, E0) называется подграфом графа G, если V0 V, E0 E. В частности, подграфами G являются пустой

граф и сам граф . Все остальные подграфы называются собственными подграфами. Если V0 = V, òî G0 называется остовым подграфом G.

Определение 6.6. Путем длины l называется последовательность a0, x1, a1, x2, . . . , al−1, xl, al, ãäå xi ребро (ai−1, ai), ai V. Ïðè a0 6= al

путь называется открытым (незамкнутым), при a0 = al цикличе ским (замкнутым). Если xi 6= xj (i 6= j) путь называется простым.

Открытый путь, где все вершины различны, называется простой цепью, или просто (a0 − al)-цепью. Замкнутый путь, где все вершины (кроме

концевых) различны, называется простым циклом, или просто циклом.

58

Замечание 6.2. Очевидно, что если все вершины пути различны, то путь является простым.

Пример 6.1.

1)v1, e1, v2, e6, v4, e4, v1, e1, v2 открытый путь;

2)v1, e1, v2, e2, v3, e5, v1, e4, v4 открытый прос-

òîé ïóòü, íî íå öåïü;

3)v1, e1, v2, e6, v4, e3, v3 простая (v1 − v3)-öåïü;

4)v1, e5, v3, e2, v2, e6, v4, e3, v3, e5, v1 замкнутый ïóòü;

5)v1, e1, v2, e6, v4, e3, v3, e2, v2, e7, v5, e8, v1 çàìê-

нутый простой путь, но не цикл;

6) v1, e1, v2, e2, v3, e3, v4, e4, v1 простой цикл.

 

 

 

 

 

v5

 

 

 

 

 

e8

QtQQ e7

 

 

 

 

 

 

Q

 

 

v1

 

 

 

 

Q

 

 

 

e1

Q v2

 

 

 

Q

 

 

 

 

 

 

 

 

Q

 

e

 

Ht HHHH

 

 

t

4

 

 

HHH

e

 

 

 

 

HH

2

 

 

 

t4

e6

 

HH

3t

 

 

 

 

 

3

HH

 

 

 

 

 

e5

 

 

 

 

 

 

 

HH

 

 

v

 

 

e

 

v

 

Теорема 6.2. Если существует путь из вершины a в вершину b (a 6= b), то из р¼бер этого пути можно построить (a − b)-цепь.

Доказательство. Пусть существует путь: a = a0, x1, . . . , xl, al = b. Рассмотрим все пути из a â b, состоящие из р¼бер, входящих в этот путь.

Среди них выберем самый короткий a = a0, x01, a01, . . . , a0k−1, x0k, a0k = b. По кажем, что a00i 6= a00j (i 6= j). Пусть a0i = a0j, тогда путь

a = a0, x01, . . . , a0i, x0j+1, a0j+1, . . . , a0k = b

имеет длину k − (j − i) < k. Противоречие с предположением о минималь ности пути a.

Теорема 6.3 (аналог теоремы 6.2 для замкнутых путей). Åñëè

существует замкнутый простой путь, то из его р¼бер можно соста вить цикл.

Замечание 6.3. Требование простоты пути в теореме 6.3 суще ственно:

а) рассмотрим путь a0, x, a1, x, a0. Из ребра x цикл построить нельзя;

á) äëÿ ïóòè a0, x1, a1, x2, a0 (x1 6= x2) параллельные р¼бра x1, x2 образу þò öèêë.

Теорема 6.4. Пусть G = (V, E) граф, все вершины которого име

ют ч¼тную степень. Тогда для любого ребра x1 E существует замкну тый простой путь, содержащий это ребро.

Теорема 6.5. В предположении теоремы 6.4, если E 6= , то E есть

объединение множества р¼бер некоторых циклов, никакие 2 из которых не имеют общих р¼бер.

59