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

ShPOR_po_diskretke

.doc
Скачиваний:
9
Добавлен:
02.04.2015
Размер:
926.21 Кб
Скачать

Основные понятия теории множеств

ВОПРОС №1

1. Множества и их элементы

Для множества не существует строгого определения, поэтому введем описательные понятия множества и его элементов.

Множеством называется совокупность некоторых предметов, объединенных общим признаком. Элементы множества – это те предметы, из которых состоит множество.

Пусть имеется множество А, элементом которого является предмет а. Это записывается как А={а}. Например, А={1, 2, 3}.

Если какой-то элемент а принадлежит множеству А, то это обозначается аА, а если b не принадлежит А, то bА. Например, пусть А – множество четных натуральных чисел, тогда 6А, а 3А.

Пусть имеется два множества А и В, причем все элементы множества А принадлежат множеству В, т.е. если хА, то хB. В этом случае говорят, что множество А включено в множество В. Обозначается: АВ ( – символ нестрогого включения, т.е. возможно совпадение множеств). Множество А совпадает с множеством В (А = В), если все элементы множества В являются элементами множества В и все элементы множества В являются элементами множества А. Это можно записать в виде

(А  В и В  А)  (А = В).

Множество А строго включено в множество В, если все элементы множества А принадлежат множеству В, но не все элементы множества В принадлежат множеству А. Например: А = { 1, 2, 3 }, В = { 0, 1, 2, 3 }, АВ.

Способы задания множеств. Возможны два способа задания множества.

1. Перечислением элементов, т.е. в фигурных скобках дается полное перечисление элементов данного множества. Например: N = {1,2,...,n,...} – множество натуральных чисел.

2. С помощью указания характерного свойства (указание свойства, которым обладают только элементы данного множества). Символически это записывается в виде A={x | P(x)} и читается: A есть множество всех элементов х, обладающих свойством P(x).

При задании множества вторым способом возможны различные противоречия и парадоксы. Рассмотрим примеры таких парадоксов.

1) Парадокс парикмахера: в городе жил парикмахер, который брил всех, кто не брился сам. Кто же брил парикмахера?

2) Пусть имеем натуральное число 11218321 – одиннадцать миллионов двести восемнадцать тысяч триста двадцать один. Это число можно описать с помощью восьми слов. Пусть А – множество натуральных чисел, которые нельзя определить с помощью фразы, имеющей меньше 20 русских слов. Обозначим аmin – наименьшее число из множества А, причем аminA. Число аmin можно определить следующим образом: наименьшее натуральное число, которое нельзя определить с помощью фразы, имеющей менее двадцати слов. В этой фразе 14 слов. Значит, аmin можно определить с помощью фразы, содержащей менее 20 слов. Тогда получается, что аmin А.

Существует много подобных примеров, когда определение множества оказывалось внутренне противоречиво, однако, выяснение условий, при которых это может иметь место, требует специальных исследований, составляющих предмет математической логики, и выходит за рамки собственно теории множеств. Поэтому в дальнейшем изложении мы не станем касаться спорных случаев, и будем рассматривать лишь множества, которые определяются точно и без противоречий.

В теории множеств имеется специальное множество, называемое пустым множеством (), которое не содержит ни одного элемента. Пустое множество по определению содержится в любом множестве А (А,  A). Это понятие вводится из следующих соображений. Задавая множество вторым способом не всегда заранее можно быть уверенным, существуют ли элементы, ему принадлежащие. Например, можно говорить о множестве четырехугольников на плоскости, у которых все углы прямые, а диагонали не равны. Только знания основ геометрии позволяют убедиться, что таких четырехугольников не существует и, следовательно, это множество пусто.

2. Операции над множествами

Определим следующие операции.

1. Объединение. Пусть А и В – произвольные множества. Их объединением называется множество С = А  В, которое состоит из всех элементов, принадлежащих хотя бы одному из множеств А или В.

2. Пересечение. Пересечением множеств А и В называется множество С, состоящее из элементов, одновременно принадлежащих А и В. Обозначается так: C = A  B.

3. Разность. Разность множеств А и В – это множество С (С = А \ В), состоящее из элементов множества А, не принадлежащих множеству В. Если В  А, то разность С = А \ В называется дополнением В до А.

Считается, что все множества включены в некоторое множество U, которое называют универсальным множеством (универсумом). В этом случае дополнение какого-либо множества А до U обозначается С(А) или.

Тема 2. Мощность множества

ВОПРОС №3

1. Понятие мощности

Рассмотрим множество всех молекул в земной атмосфере. Это множество содержит очень большое число элементов (примерно 1.03∙1011), но оно конечное, т.е. существует такая константа, которая больше числа элементов этого множества. Помимо конечных существуют бесконечные множества. Одной из задач теории множеств является определение числа элементов множества и исследование вопроса о сравнении друг с другом двух множеств по количеству элементов.

Для конечных множеств самой разной природы эта задача легко решается непосредственным подсчетом. Для бесконечных множеств вопрос о сравнении невозможно решить, как для конечных, с помощью подсчета. Поэтому Кантор предложил для сравнения двух бесконечных множеств установить между ними взаимно однозначное (биективное) отображение. Напоминаем, что множества, между которыми можно установить биективное отображение называются эквивалентными. Рассмотрим примеры установления такого отображения.

Пример 2. В качестве множества А рассмотрим интервал на числовой прямой, пусть А = (–1, 1), а в качестве множества В – множество действительных чисел R. Эти множества эквивалентны, т.к отображение f(x) = tg(x/2), хА позволяет установить между ними искомое взаимно-однозначное соответствие.

Пример 3. Пусть А = [–1, 1], В = (–1, 1). Строим отображение f : A  B по следующему правилу: выделим в А последовательность –1, 1, 1/2, 1/3, 1/4, . . . , 1/n и положим f(–1) = 1/2, f(1) = 1/3, f(1/2) = 1/4, f(1/3)=1/5, т.е. f(1/n) = 1/(n+2), а все точки, не входящие в эту последовательность отобразим сами в себя, т.е. f(x) = х. Следовательно, открытый и замкнутый интервалы эквивалентны.

Мощность множества является обобщением понятия числа элементов множества. Если взаимно однозначное отображение множеств установлено, значит, по определению, в обоих множествах “одинаковое” число элементов или мощность одного множества равна мощности другого множества.

Мощность – это то общее, что есть у любых двух эквивалентных множеств. Мощность множества A обозначается m(A) или |A|. Таким образом, m(A) = m(B), если A ~ B.

Если множество A эквивалентно какому-либо подмножеству множества B, то мощность A не больше мощности B (т.е. m(A)  m(B)). Если при этом множество B не эквивалентно никакому подмножеству множества A, то m(A) < m(B).

Особое место среди бесконечных множеств является множество натуральных чисел  N.

Def. Назовем счетным всякое множество, эквивалентное множеству  N. Другими словами, счетным называется всякое множество, элементы которого можно перенумеровать или составить из них бесконечную последовательность.

Примеры счетных множеств.

1. Множество целых чисел Z={0, 1, 2, . . .}. Построим из его элементов последовательность: a1 = 0; a2= – 1; a3 = 1; a4 = –2; a5 = 2;... Формулу для вычисления ее общего члена можно записать в виде

2. Множество Q всех рациональных чисел.

Докажем счетность этого множества. Как известно, рациональные числа – это дроби вида p/q, где pZ, qN.

Запишем их в виде таблицы из бесконечного числа строк и столбцов

0/1 1/1 2/1 3/1 . . .

–1/1 –2/1 –3/1 –4/1 . . .

1/2 2/2 3/2 4/2 . . .

–1/2 –2/2 –3/2 –4/2 . . .

. . . . . . . . . . . . .

Обозначим это множество – А. Из ее элементов построим последовательность по следующему правилу a1=0/1; a2=1/1; a3= –1/1; a4=1/2; a5= –2/1; a6=2/1 и т.д. Очевидно, в эту последовательность войдут все рациональные числа. Более того, в ней многие числа будут повторяться. Следовательно, m(Q) ≤ m(A).

С другой стороны, эта последовательность эквивалентна натуральному ряду, т.е. подмножеству множества Q, а значит, m(A) = m(N) ≤ m(Q). Следовательно, m(Q)  m(N) и m(N) ≤ m(Q), а, значит, мощности множеств рациональных чисел и натурального ряда равны, т.е. множество рациональных чисел счетно.

Бесконечное множество не являющееся счетным называется несчетным.

ВОПРОС №5

Тема 3. Нечеткие множества1. Понятие нечеткого множества Во многих прикладных задачах, решаемых с помощью теории множеств, бывает сложно однозначно и четко ограничить набор элементов, принадлежащих данному множеству, т.к. возникает противоречие между формальной природой математики и привычкой человека мыслить неопределенными, расплывчатыми понятиями. (Куча камней это сколько штук? 5 слонов – это много, 10 муравьев – это мало и т.д.). Введением понятия нечеткого множества удалось в определенной мере преодолеть это противоречие.

Пусть Е – универсальное множество, x – элемент E, а Р – некоторое свойство. Обычное (четкое) подмножество A универсального множества E, элементы которого удовлетворяют свойству Р, определяется как множество упорядоченных пар

A = {A (х) | x}, (1)

где A(х) – характеристическая функция, принимающая значение 1, если x удовлетворяет свойству Р, и 0 – в противном случае.

Нечеткое подмножество отличается от обычного тем, что для элементов x из E нет однозначного ответа “да-нет” относительно свойства Р. В связи с этим, нечеткое подмножество A универсального множества E определяется как множество упорядоченных пар вида (1) где A(х) – характеристическая функция принадлежности (или просто функция принадлежности), принимающая значения уже в некотором вполне упорядоченном множестве M (например, M = [0, 1]). Функция принадлежности указывает степень (или уровень) принадлежности элемента x подмножеству A. Множество M называют множеством принадлежностей. Если M = {0, 1}, то нечеткое подмножество A может рассматриваться как обычное или четкое множество.

Примеры записи нечеткого множества

Пусть E = {x1, x2, x3, x4, x5 }, M = [0, 1]; A – нечеткое множество, для которого A(x1) = 0,3; A(x2)=0; A(x3)=1; A(x4)=0,5; A(x5)=0,9. Тогда A можнопредставить в виде:

A = {0,3 / x1; 0 / x2; 1 / x3; 0,5 / x4; 0,9 / x5 }

или

A = 0,3/x1  0/x2  1/x3  0,5/x4  0,9/x5,

или

A =

x1

x2

x3

x4

x5

0,3

0

1

0,5

0,9

Основные характеристики нечетких множеств.

Пусть M = [0, 1] и A – нечеткое множество с элементами из универсального множества E и множеством принадлежностей M.

Величина называется высотой нечеткого множества A(sup F(x) – точная верхняя граница функции F(x)). Нечеткое множество A нормально, если его высота равна 1, т.е. верхняя граница его функции принадлежности равна 1 (=1). При < 1 нечеткое множество называется субнормальным.

Нечеткое множество пусто, если  xE  A(x) = 0. Непустое субнормальное множество можно нормализовать по формуле

.

Носителем нечеткого множества A является обычное подмножество со свойством A(x) > 0.

Примеры нечетких множеств

1. Пусть E = {0, 1, 2, .., 10}, M =[0, 1]. Нечеткое множество “несколько” можно определить следующим образом: “несколько”= 0,5/3  0,8/4  1/5  1/6  0,8/7  0,5/8; его характеристики: высота = 1, носитель = {3, 4, 5, 6, 7, 8}.

2. Пусть E = {1, 2, 3, ..., 100} и соответствует понятию “возраст“, тогда нечеткое множество “молодой”, может быть определено с помощью функции принадлежности вида

Тема 4. Бинарные отношения

ВОПРОС №6

1. Бинарные отношения и операции над ними

Def. Пусть А1, А2, . . . , Аn – некоторые множества. Их прямым или декартовым произведением называется множество упорядоченных наборов из n элементов, т.е.

А1А2 . . . Аn = {(а1, а2, . . . , аn) | aiAi }.

Если все множества Ai совпадают A = А1 = А2 = . . . = Аn, то прямое произведение А1А2 . . . Аn = An называют прямой n-ой степенью множества А.

Отношением (n-арным отношением) между элементами множеств А1, А2, . . . , Аn называется любое подмножество R  А1А2 . . . Аn.

Бинарным отношением между элементами множеств А и В называется любое подмножество R  AB. Если множества A и B совпадают А = В, то R называют бинарным отношением на множестве А.

Если (x, y)R, то это обозначают еще xRy и говорят, что между элементами x и y установлено бинарное отношение R.

Примеры бинарных отношений

Пусть A = B = R, пара (x, y) является точкой вещественной плоскости. Тогда бинарное отношение

RА = { (x, y) | x2 + y2  1 }

определяет замкнутый круг единичного радиуса с центром в точке (0, 0) на плоскости, отношение

RБ = { (x, y) | x  y }

полуплоскость, а отношение

RВ= { (x, y) |  |x – y|  2 }

полосу.

Диагональ множества AA, т.е. множество ={(x,x) | xA}, называется единичным бинарным отношением или отношением равенства в A.

Областью определения бинарного отношения R называется множество R = { xA |  yB, (x, y) R }– множество первых элементов пар (x, y).

Областью значений бинарного отношения R называется множество R = { yB |  xA, (x, y)R }– множество вторых элементов пар (x, y).

Как для любых множеств, для бинарных отношений можно определить понятия нестрогого и строгого включения и равенства. Так, например, R1 содержится в R2 (R1  R2), если любая пара (x, y), которая принадлежит отношению R1 а также принадлежит и отношению R2. Например, RА  RВ, т.к. все точки (x, y), принадлежащие кругу RА принадлежат также полосе Rв.

Операции над бинарными отношениями определяются подобно операциям над соответствующими множествами. Пусть А – произвольное множество на котором введены бинарные отношения R, R1, R2,...

1) Объединение двух бинарных отношений R1 и R2 – это отношение

R1  R2 = { (x, y) | (x, y)R1 или (x, y)R2 }.

2) Пересечение двух бинарных отношений R1 и R2 – это отношение

R1  R2 = { (x, y) | (x, y)R1 и (x, y)R2 }.

3) Обратное отношение R –1 = { (x, y) | (y, x)R}.

4) Дополнение к отношению ={ (x, y) | (x, y)(AA) \ R}.

5) Двойственное отношение Rd = .

6) Композиция (суперпозиция) отношений R = R1oR2  содержит пару (x, y) тогда и только тогда, когда существует такое zA, что (x, z)R1 и (z, y)R2.

2. Свойства операций над отношениями

Приведем здесь список основных свойств операций над отношениями и докажем некоторые из них.

1) 2)

3) (R1 o R2) –1 = R1 –1o R2 –1. 4) (R1 o R2 ) o R3 = R1 o (R2 o R3).

5) (R1  R2 ) o R3 = (R1 o R3 )  ( R2 o R3 ).

6) (R1  R2 ) o R3  (R1 o R3 )  ( R2 o R3 ).

7)  а) если R1  R2 то R1 o R3  R2 o R3;

б) если R1  R2 то R3 o R1  R3 o R2;

в) если R1  R2 то R1–1 R2–1.

  1. a) (R1 R2)d = R1d  R2d; б) (R1 R2)d = R1d  R2d; в) (Rd)d = R.

Доказательства

Свойство 2.

Пусть пара (x, y)( Rk–1. Тогда (y, x) Rk. Это означает, что найдется отношение Rj, что (y, x) Rj. Отсюда, по определению обратного отношения, (x, y)Rj–1, а значит, (x, y)Rk–1и (Rk–1   Rk–1.

Докажем обратное включение. Пусть (x,y) Rk–1 Это означает, что найдется такое множество Rj, что (x,y)Rj–1. Следовательно, (y, x)Rj  и (y, x) Rk , поэтому (x, y)( Rk–1. Значит,    Rk–1  (Rk–1.

Одновременное выполнение обоих включений означает равенство множеств, что и требовалось доказать.

Свойство 6.

Пусть (x, y)(R1  R2) o R3. По

ВОПРОС №7

Тема 5. Специальные бинарные отношения.1. Упорядочение и безразличиеБудем рассматривать бинарные отношения с точки зрения их использования для описания и организации выбора. Для этого необходимо построить отношения с соответствующим набором свойств. Для выбора надо, по крайней мере, уметь из 2-х сравниваемых элементов выбрать лучший, т.е. нужно построить отношение предпочтения, которое, как минимум, обладает свойством асимметричности.

Введем следующие отношения.

Pуп – отношение строгого упорядочения, обладающее свойством асимметричности.

Iупотношение безразличия (толерантности). Это отношение исключает Pуп между двумя элементами, т.е.

x Iуп y  ( xPуп у и yPуп x ). (1)

Так как (x, y) и (y, x) не принадлежат Pуп, то нельзя сказать, что x лучше y, или x лучше y. Если воспользоваться понятием пересечения отношений, то Iуп можно также представить в виде

Iуп =Pуп Pdуп. (2)

Покажем, что Iуп рефлексивно и симметрично.

Симметричность. Отношение xIупy означает, что (x, y)Pуп и (y, x)Pуп. Отношение же yIупx означает, что (y, x)Pуп и (x, y)Pуп. То есть, xIупy и yIупx эквивалентны. Значит, Iуп симметрично.

Рефлексивность. Так как Pуп антирефлексивно (см. задание 1), то (x, x) Pуп и по определению (x, x)Iуп . Значит, Iуп рефлексивно.

Можно дать другое определение отношения Iуп, как симметричного, рефлексивного отношения.

На базе введенных отношений строгого упорядочения и безразличия можно построить новое отношение

Rуп = Pуп  Iуп , (3)

которое называется нестрогим упорядочением.

Докажем, что Rуп полно.

Доказательство. Возьмем любую пару (x, y). Для нее возможны три случая:

а) (x, y)Pуп; б) (y, x)Pуп; в) (x, y)Pуп и (y, x)Pуп, т.е. (x, y)Iуп.

Если имеют место случаи а) или в), то, по свойству объединения, (x, y) Rуп. Если выполняется б) или в), то (y, х)Rуп. Иными словами, в любом случае либо пара (x, y), либо (y, x) принадлежит Rуп. Значит, Rуп полно.

Свойство полноты можно принять в качестве определение отношения Rуп.

2. Слабый порядок

Введенное отношение строгого упорядочения обладает слишком малым набором свойств, чтобы его можно было применить для решения практических задач организации выбора. Поэтому, кроме асимметричности нужны другие свойства, например, транзитивность или негатранзитивность.Def. Асимметричное, негатранзитивное отношение Pсл назовем слабым порядком.Кроме того, по аналогии с Iуп введем отношение Iсл 

xIслy  ( (x, y) Pсл и (y, x) Pсл )

или

xIслy  ( (y, x)Pсл  и (x, y)Pсл ).

Назовем его отношением эквивалентности.

Рассмотрим свойства слабого порядка и эквивалентности.

1) Для любых x, yA выполняется одно и только одно из соотношений: xPслy, yPслx, xIслy.

2) Отношение Pсл транзитивно.

3) Отношение Iсл рефлексивно, симметрично, транзитивно.

Докажем транзитивность Pсл.

Пусть xPслy и yPслz, тогда в силу асимметричности Pсл, yx и zy. Предположим противное, что xz, тогда в силу негатранзитивности из xz и zy следует xy, что противоречит условию. Следовательно, xPслz, т.е. Pсл – транзитивно.

Докажем свойство 3).

Ранее было доказано, что Iуп рефлексивно и симметрично. Аналогично доказывается рефлексивность и симметричность Iсл. Поэтому остается доказать транзитивность Iсл.

Пусть x, y, zA таковы, что xIслy и yIслz, покажем, что (x, z)Iсл. По определению Iсл, отношение xIслy эквивалентно выполнению условий (x, y)Pсл и (y, x)Pсл, а отношение yIслz – (y, z)Pсл и (z, y)Pсл. В силу негатранзитивности Pсл получим, что (x, z)Pсл и (z, x)Pсл. Следовательно, (x, z)Iсл по определению Iсл.

Замечание. Свойства рефлексивности, симметричности и транзитивности считают определяющими свойствами отношения эквивалентности.

ВОПРОС №9

12. Задача векторной оптимизации

В классических задачах оптимизации необходимо найти минимум или максимум скалярной функции - функции цели или критерия эффективности. Но в практических задачах редко удается свести эффективность к одному показателю.

Пример. Пусть необходимо сконструировать самолет. Основными, одинаково важными, критериями эффективности конструкции являются скорость и дальность полета. Увеличивая дальность полета самолета, мы уменьшаем его скорость и наоборот. Такая ситуация называется конфликтом критериев.

В том случае, когда имеется несколько конфликтующих критериев, говорят, что имеет место задача векторной оптимизации.

F(x) = { f 1(x), f 2(x),..., f n(x) }  орt,

где f i- частные критерии эффективности.

Как правило, не существует такой точки в которой все f i оп-

тимальны. Поэтому в задаче векторной оптимизации ищут компромиссное решение. Для эффективного поиска такого решения необходимо, чтобы число возможных допустимых вариантов было как можно меньше.

Для достижения такой цели задачу разбивают на 2 этапа.

1) Поиск нехудших (недоминируемых) решений в смысле безусловного критерия предпочтения (БКП). Множество таких точек называется множеством Парето.

2) Выбор компромиссного решения на множестве Парето.

Рассмотрим пример [6]. Пусть имеем два критерия эффективности q1(x) и q2(x), зависящих от одного аргумента х, каждый из которых необходимо минимизировать ( Рис.3 ).

Обозначим Х1 и Х2 - точки минимума критериев q1(x) и q2(x),

соответственно. Разобьем область определения аргумента х на три участка: I, II, III. Осуществим на каждом участке выбор точек, лучших по Парето, т.е. по обоим критериям одновременно:

а) Cpar(I) = Х1 - выбор на I участке есть точка X1;

б) Cpar(III) = X2 - выбор на III участке есть точка X2;

в) на участке II нет точки, которая была бы лучше остальных

сразу по обоим критериям, т.е. он весь состоит из конфликтующих точек, следовательно, Cpar(II)=[X1, X2].

Рис. 3

Чтобы найти множество Парето в общем случае надо реализовать функцию выбора на основе паретовского механизма (механизма блокировки в смысле бинарного отношения Парето) (см. п.6). Для того чтобы построить эту функцию достаточно организовать сравнение предлагаемых вариантов по каждой критериальной функции. Для этой задачи можно достаточно легко построить алгоритм решения, т.е она формализуема.

Для задачи второго этапа необходимо применять неформальные методы выбора, основанные на интуитивных предпочтениях эксперта или лица принимающего решения (ЛПР).

Для организации паретовского механизма выбора необходимо произвести парные сравнения исходных вариантов и отбросить те, для которых найдется доминирующий элемент. Если исходное множество велико, то метод попарного сравнения трудоемок, т.к в общем случае необходимо произвести m(m-1)/2 сравнений, где m – число сравниваемых вариантов.

Более эффективен следующий алгоритм, который производит последовательное накопление элементов искомого множества.

Обозначим X = {xi} - исходное множество сравниваемых вариантов. Для него будем производить отсев плохих точек и получение множества П(Х), содержащее точки Парето.

begin П(Х):={х1};

for i:=2 to m do

П(Х):=Cpar ({xi}  П(Х) );

end.

При реализации этого алгоритма возможны три случая:

1) Для хi существует такой у  П(Х), что у Par xi. В этом

случае необходимо прекратить сравнение хi с паретовскими точками и перейти к хi+1.

ВОПРОС №10

Данное свойство позволяет легко построить рекуррентный процесс вычисления всех чисел сочетаний. Положим по определению для любого n  0 (ноль элементов из любого множества, в том числе – пустого, можно выбрать 1 способом, кроме того, по определению 0! = 1 – см. формулу из 2.4) и (отрицательное количество элементов выбрать невозможно). Организуем двойной цикл для вычисления всех , r  m  n:

for m := 1 to n do

for r := 0 to m do := +

Описанный процесс удобно представить в виде таблицы, называемой треугольником Паскаля:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

…………………….

В таблице каждая m-я строка состоит из чисел , r = 0, … m, каждый элемент равен сумме двух элементов, расположенных над ним (пустое место считается нулем).

3.

4. – бином Нютона. В частности, (х + у)2 = х2 + 2ху + у2; (х + у)3 = х3 + 3х2у + 3ху2 + у3 и т.д.

5. . Доказать легко с использованием бинома Ньютона на основе тождества (1 – 1)n = 0.

6. .

2.7. Полиномиальная формула. Формулу бинома можно обобщить на случай нескольких слагаемых: (х1 + х2 + … + хk)n.

Запишем эту формулу в виде произведения одинаковых сомножителей и перемножим. Получим все возможные n-размещения с повторениями из объектов х1, х2 , … , хk. Приведем подобные, сосчитав число повторений каждого слагаемого вида . Для этого надо определить число слагаемых, в которых символ х1 повторяется n1 раз, х2 – n2 раз, и т.д., хk повторяется nk раз. Каждое такое слагаемое – это перестановка с повторением nj раз элемента хj, j = 1,…k. Число таких перестановок равно Р(n1, n2 ,…, nk),  nj = n. Следовательно

1 + х2 + … + хk)n = .

Выражение n1 + … + nk = n в значке суммы означает, что перебираются все (целые неотрицательные) значения n1,…, nk, удовлетворяющие данному условию.

Например (x + y + z)4 = P(4, 0, 0)x4 + P(0, 4, 0)y4 + P(0, 0, 4)z4 + P(3, 1, 0)x3y + P(3, 0, 1)x3z + P(2, 2, 0)x2 y2 + P(2, 1, 1)x2 y z + P(2, 0, 2)x2 z2 + P(1, 3, 0)x y3 + P(1, 0, 3)x z3 + P(1, 1, 2)x y z2 + P(1, 2, 1)x y2 z + P(0, 3, 1)y3 z + P(0, 1, 3)y z3 + P(0, 2, 2)y2 z2.

Напоминаем, что здесь Р(a, b, c) = , например Р(2, 1, 1) = = 12.

ВОПРОС №12

Глава 2. АНАЛИТИЧЕСКИЙ АППАРАТ КОМБИНАТОРИКИ

Формулы и алгоритмы, рассмотренные в главе 1, дают способы вычисления комбинаторных чисел для некоторых распространенных конфигураций. Однако, практические задачи далеко не всегда прямо сводятся к ним. В этом случае чрезвычайно важны методы сведения одних конфигураций к другим, либо общие методы, не столь зависящие от конкретных комбинаторных структур. Наиболее популярные из таких методов рассматриваются в данной главе.

1. Принцип включения и исключения

1.1. Вывод формулы. Пусть имеем N объектов и некоторый набор свойств а1, …, аn, которыми могут обладать эти объекты. Обозначим N(i) – число объектов, обладающих свойством аi, и вообще N(i1, …, ik) – число объектов, обладающих одновременно всеми свойствами . Пусть N(0) – число объектов, не обладающих ни одним из свойств аi. Справедлива формула включения и исключения:

N(0) = N – + + …

+ (– 1)k + … + (–1)n N(1, 2, … , n). (2.1)

Символ 1  i1 < i2 <…< ik  n под знаком суммы означает, что суммирование ведется по всем комбинациям i1, i2,…, ik так, чтобы выполнялось указанное соотношений. Доказательство формулы (2.1) проведем с помощью индукции по n – число свойств.

10. n = 1. N(0) = N – N(1). Всего существует одно свойство. От общего числа объектов отнимем количество объектов, обладающих этим свойством – узнаем, сколько объектов этим свойством не обладают.

20. Пусть для n – 1 свойств справедлива формула

N(0) = N – + + …+

(– 1)k + … + (–1)n N(1, 2, … , n – 1). (2.2)

Пусть теперь имеем множество, все элементы которого обладают свойством аn, и, возможно, обладают свойствами а1, …, аn–1. Очевидно, для этого множества формула (2.2) также верна и имеет вид:

N(0, n) = N(n) – + … +

+(–1)n–2+ (–1)n–1N(1, 2, … , n – 1, n).(2.3)

В (2.3) везде в скобках дописано n, т.к. все элементы множества свойством аn обладают. Вычтем (2.3) из (2.2):

N(0) – N(0, n) = N – + + … – (–1)n–1 N(1, 2, … , n – 1, n).

Отсюда

N(0) – N(0, n) = N – ++… + (–1)n N(1, 2,…,n).

Справа мы получили требуемую формулу. А что слева? N(0) – число элементов, не обладающих свойствами а1, …, аn–1, но, возможно, обладающих свойством аn. N(0, n) – число элементов, не обладающих свойствами а1, …, аn–1, но обязательно обладающих свойством аn. Следовательно, N(0) – N(0, n) – число элементов, не обладающих ни одним из свойств а1, …, аn, т.е. требуемая величина. Формула доказана.

Для облегчения запоминания формулы (2.1) предлагается ее символическое представление в виде: N(1 – a1)(1 – a2)…(1 – an). Раскрыв скобки, надо произведения вида Na1a2… ak заменить на N(1, 2,…, k). Например, N(1 – a1)(1 – a2)…(1 – a3) = N – Na1 – Na2 – Na3 + Na1a2 + Na1a3 + Na2a3 – Na1a2a3. Следовательно, N(0) = N – N(1) – N(2) – N(3) + N(1, 2) + N(1, 3) + N(2, 3) – N(1, 2, 3).

Пример 2.1. Староста класса подал следующие сведения о классе. Всего в классе 45 учеников, из них 25 мальчиков. 30 человек учится без троек, из них – 16 мальчиков; 28 человек занимаются спортом, из них – 17 мальчиков и 17 хорошистов и отличников; 15 мальчиков учатся без троек и одновременно занимаются спортом. Классный

ВОПРОС №13

= = = = .

Отсюда

.

Для того, чтобы коэффициенты ряда были u(x) = == .

Окончательно числа Каталана.

5. Связь производящих функций с линейными

рекуррентными соотношениями

Пусть имеем дробно-рациональную функцию

f(x) = = ,

которая разлагается в ряд f0 + f1x + f2 x + …. Отсюда A(x) = B(x)f(x). Подставим вместо f(х) ее ряд – получим систему уравнений:

b0 f0 = a0;

b0 f1 + b1 f0 = a1;

b0 f2 + b1 f1 + b2 f0 = a2;

………………………..

b0 fm–1 + b1 fm–2 +… + bm–1 f0 = am-1;

b0 fm + b1 fm–1 +… + bm f0 = 0;

………………………………..

b0 fm+n + b1 fm–1+n +… + bm fn = 0;

……………………………

Во всех уравнениях, начиная с m+1-го, правая часть равна 0, т.к. am+1 = … = am+n =…= 0. Следовательно, имеем линейное рекуррентное соотношение

b0 fm+n + b1 fm–1+n +… + bm fn = 0, (2.14)

которому удовлетворяют члены ряда для функции f(x). Таким образом, мы получили теорему о связи производящих функций с линейными рекуррентными соотношениями:

Теорема 2.5. Для того, чтобы производящая функция числовой последовательности была правильной рациональной дробью необходимо и достаточно, чтобы члены этой последовательности удовлетворяли линейному рекуррентному соотношению, характеристическое уравнение которого совпадает со знаменателем этой дроби, записанным в обратном порядке.

Пример 2.10. Найдем производящую функцию для чисел Фибоначчи.

Решение. Имеем линейное рекуррентное соотношение: Fn+2 – F n+1– Fn = 0. Следовательно, f(x) = . A и В легко найти с помощью деления многочленов:

Следовательно, 0 = F0 = B; 1 = F1 = A + B, т.е. В = 0; А = 1 или .

ВОПРОС №17

2. Алгоритмы поиска в глубину и ширину.

2.1. Вычислительная сложность алгоритма

Вычислительная сложность алгоритма, называемая еще временной сложностью, является одной из важнейших характеристик алгоритма, которая определяет затраты машинного времени на его реализацию. Кроме вычислительной сложности алгоритма анализируется еще и сложность по памяти.

Вычислительной сложностью алгоритма (или просто сложностью) назовем количество шагов выполняемых алгоритмом в худшем случае. Она является функцией от размерности задачи, представленной входными данными. Например, для графа, задаваемого списками инцидентности, размерность задачи представляется как пара (n,m). Сложность алгоритма определяется, как функция f, такая, что f (n,m) равно числу шагов алгоритма для произвольного графа с n вершинами и m ребрами. Под шагом алгоритма понимается машинная команда, и при таком определении шага вычислительная сложность зависит от конкретной системы команд и способа трансляции. Нас же будет в дальнейшем интересовать не точная сложность алгоритма, вычисление которой практически невозможно, а асимптотическая сложность, которая определяется скоростью роста числа шагов алгоритма при неограниченном увеличении размерности задачи. Кроме того, вычислительная сложность алгоритма, вычисленная при различных системах команд или способах трансляции, отличаются друг от друга в p раз, где p – вещественная константа, а их скорость роста одинакова.

Для сравнения скорости роста двух функций и будем использовать обозначения или .

Будем говорить, что функция имеет порядок роста не более, чем функция , что обозначается , тогда и только тогда, когда существуют и , такие, что

Будем говорить, что функция имеет порядок роста не менее, чем функция , что обозначается , тогда и только тогда, когда существуют и , такие, что

Например, для функции

в силу принятых обозначений, можно записать, что или . В общем случае, если - многочлен степени: , то

Непосредственно из определения вытекают

ВОПРОС №1

4. Симметричная разность. По определению симметричная разность двух множеств А и В – это множество

С = А  В = (А \ В)  (В \ А).

Перечисленные операции удобно изображать графически с помощью т.н. диаграмм Вена (показать).

Основные свойства операций

  1. Коммутативность:

А  В = В  А; А  В = В  А.

2. Ассоциативность:

(А  В)  С = А  (В  С) = А  В  С;

(А  B)  С = А  (В  С) = А  В  С.

3. Взаимная дистрибутивность:

а) (А  В)  С = (А  С)  (В  С);

б) (А  B)  С = (А  С)  (В  С).

Докажем равенство а).

Предположим, что x(А  В)  С, тогда xС и xА или xВ. Рассмотрим первый случай xС и xА. Тогда хА  С, а значит, по определению объединения, х(А  С)  (В  С). (Можно объединить с любым множеством)

Во втором случае, т.е. при xС и xВ получаем, что x (В  С)  (А  С). Таким образом, мы доказали включение

[(А  В)  С]  [(А  С)  (В  С)].

Докажем обратное включение. Пусть х(А  С)  (В  С), тогда либо хА  С либо хВ  С. В первом случае хА и хС. Во втором случае хВ и xС. В обоих случаях получаем, что хС и хА или хВ.Следовательно, х (А  В)  С. Тем самым доказано включение (А  С)  (В  С)  (А  В)  С.

Из этих включений следует, что (А  В)  С = (А  С)  (ВС), что и требовалось доказать.

4. Идемпотентность: A  A = A; A  A = A.

5. Законы поглощения: (A  B)  A = A; (A  B)  A = A.

6. Свойства нуля: A   =A; A   = .

7. Свойства единицы: A  U =U; A  U = A.

8. Инволютивность: .

  1. Законы де Моргана: ; .

  2. Свойства дополнения: ; .

Законы де Моргана можно обобщить на произвольное количество множеств. Пусть А1, А2, . . . – некоторые множества и пусть все они включены в S (А1, А2, . . .  S). Тогда выполняются следующие соотношения.

11. – дополнение объединения множеств равно пересечению их дополнений.

12. – дополнение пересечения множеств равно объединению их дополнений.

Докажем свойство 11. Пусть х, тогда х, значит, x не принадлежит ни одному из множеств Ak (k, хАk). Следовательно, по определению дополнения, хS\Аk для любого k. Отсюда вытекает, что х.

Обратно, пусть х. Тогда этот элемент принадлежит каждому из множеств S \ Ak (k, хS \ Ak). Следовательно, хAk для любого k, а, значит, хи поэтому х, что и требовалось доказать.

ВОПРОС №3

2. Свойства счетных множеств

1. Всякое подмножество счетного множества конечно или счетно.

Доказательство. Пусть А – счетное множество и B  А. Поскольку А счетно, то занумеруем его элементы и построим из них последовательность

a1, a2, a3, . . .

Из этой последовательности выделим все элементы, принадлежащие множеству B, т.е. рассмотрим подпоследовательность

Возможны следующие случаи:

1) Множество B конечно – тогда теорема верна.

2) Множество B бесконечно. Поскольку элементы множества B занумерованы, то в этом случае оно является счетным, что и требовалось доказать.

2. Объединение любого конечного или счетного множества счетных множеств снова является счетным.

Доказательство. Пусть множества А1, A2, . . . , Аn, . . . – счетные. Если их число не более, чем счетно, то множества можно занумеровать и расположить принадлежащие им элементы в таблицу

А1 = {a11, a12, a13, . . .}

А2 = {a21, a22, a23, . . .}

А3 = {a31, a32, a33, . . .}

. . . . . . . . . . . . . . . . .

Пусть B = . Построим последовательность подобно тому, как это было сделано при доказательстве счетности Q.

b1 = a11, b2 = a12, b3 = a21, b4 = a31, b5 = a22, . . . (1)

Если множества Аi попарно пересекаются (Аi Аj  ), то в последовательность (1) не включаются те элементы, которые уже занумерованы. Таким образом, построено взаимно однозначное соответствие между множествами B и N. Следовательно, множество B счетно.

3. Всякое бесконечное множество содержит счетное подмножество.

Доказательство. Пусть М – произвольное бесконечное множество. Выберем в нем произвольный первый элемент и обозначим его a1 , затем – элемент a2 и т.д. Получаем последовательность a1, a2, . . . , которая не может оборваться на каком-то элементе, т.к. М бесконечно. Следовательно, данная последовательность образует счетное подмножество множества М.

Доказанная теорема позволяет утверждать, что среди бесконечных множеств счетное множество является самым "маленьким".

Если множество конечно или счетно то говорят, что оно не более, чем счетно.3.

Примеры несчетных множествРассмотренные примеры и свойства могут создать впечатление, что все бесконечные множества счетны. Однако, это далеко не так, и для доказательства этого достаточно построить контрпример, т.е. предъявить бесконечное множество, не являющееся счетным.

Теорема 2.1. Множество всех бесконечных бинарных последовательностей, т.е. состоящих из 0 и 1, несчетно.

Доказательство. Предположим противное, т.е. что эти последовательности можно занумеровать. Пусть P1, P2, . . . – последовательности, где

P1 = {a11, a12, a13, . . .}, P2 = {a21, a22, a23, . . .}

и т.д., где аij = 0 или аij = 1.

Построим последовательность P, не содержащуюся в этом списке. Такая последовательность существует, например, P ={1– a11, 1–a22, 1–a33, . . .}. Очевидно, что ее элементы равны 0 или 1, причем она не равна никакой другой последовательности из списка, потому что отличается от P1 по крайней мере первым элементом, от P2 – по крайней мере вторым и т.д. Таким образом, построенная последовательность отличается от любой из занумерованных последовательностей хотя бы одним элементом. Следовательно, множество всех бинарных последовательностей занумеровать невозможно, а это означает, что оно несчетно.

Другим важным примером бесконечного несчетного множества является множество вещественных (действительных) чисел R.

Перечислим основные свойства действительных чисел.

1. Любое вещественное число можно представить конечной или бесконечной десятичной дробью. И обратно, для любой десятичной дроби существует вещественное число, которое она представляет.

2. Множество вещественных чисел является непрерывным, т.е. оно сплошь заполняет числовую ось.

Задание. Доказать, что множество вещественных чисел несчетно. Указание: воспользоваться способом доказательства несчетности множества бинарных последовательностей.

ВОПРОС №5

Методы построения функций принадлежности нечетких множеств

В приведенных выше примерах использованы прямые методы, когда эксперт либо просто задает для каждого xE значение A(x), либо определяет функцию совместимости. Как правило, прямые методы задания функции принадлежности используются для измеримых понятий, таких как скорость, время, расстояние, давление, температура и т.д.

Косвенные методы определения значений функции принадлежности используются в случаях, когда нет элементарных измеримых свойств, через которые определяется интересующее нас нечеткое множество. Как правило, это методы попарных сравнений, в которых указываются не абсолютные значения функции принадлежности для каждого х, а, например, величины отношений A(xi) /A(xj). Результат попарных сравнений можно представить матрицей отношений A = {aij}, где aij = A(xi) /A(xj). (операция деления). Далее матрица А обрабатывается с помощью специальных методов, анализирующих степень согласованности оценок разных пар, после чего вычисляется абсолютные значения функции принадлежности для каждого хi. Например, доказано, что хорошая оценка получается, если положить A(xi) равными компонентам собственного вектора матрицы А.

Задание. Пусть E = {1, 2, 3, ..., 100} и соответствует понятию “возраст“. Прямым методом построить нечеткие множества

а) “пожилой”;

б) “пора замуж”.

2. Операции над нечеткими множествами

1. Включение. Пусть A и B – нечеткие множества на универсальном множестве E. Говорят, что A содержится в B, если x E A(x) > B(x). Обозначение: A  B.

2. Равенство. A и B равны, если xE A(x) = B(x). Обозначение: A = B.

3. Дополнение. Пусть  = [0, 1], A и B – нечеткие множества, заданные на E. A и B дополняют друг друга, если xE A(x) = 1 – B(x). Обозначение: B = или A = . Очевидно, что .

4. Пересечение. AB – наибольшее нечеткое подмножество, содержащееся одновременно в A и B;

A B(x) = min{A(x), B(x)}.

5. Объединение. А  В – наименьшее нечеткое подмножество, включающее как А, так и В, с функцией принадлежности

A B(x) = max {(A(x), B(x)}.

6. Разность. А \ B = А  с функцией принадлежности:

A\B(x) = min { A(x), 1 – B(x)}.

Например, пусть: A = 0,4/ x1  0,2/ x2  0/ x3  1/ x4;

B = 0,7/ x1  0,9/ x2  0,1/ x3 1/ x4; C = 0,1/ x1  1/ x2  0,2/ x3  0,9/ x4.

Здесь:

1. A  B, т.е. A содержится в B, С несравнимо ни с A, ни с B.

2. A  B  C.

3. = 0,6/ x1  0,8/ x2  1/ x3  0/ x4; = 0,3/ x1  0,1/ x2  0,9/ x3  0/ x4.

Для нечетких множеств можно строить визуальное представление. Рассмотрим прямоугольную систему координат, на оси ординат которой откладываются значения A(x), на оси абсцисс в произвольном порядке расположены элементы E. Если E по своей природе упорядочено, то этот порядок желательно сохранить в расположении элементов на оси абсцисс. Такое представление делает наглядными простые операции над нечеткими множествами.

На рис. 1 темная часть соответствует нечеткому множеству A. На Рис. 2 – 4 даны , A , A , соответственно.

ВОПРОС №6

определению композиции это означает, что найдется такое zA, что (x, z)(R1  R2) и (z, y)R3. Первое включение возможно только тогда, когда одновременно выполнено (x, z)R1 и (x, z)R2. Это, в свою очередь, означает, с учетом (z, y)R3, что одновременно (x, y) R1 o R3 и (x, y)R2 o R3, а, следовательно, (x, y)(R1 o R3)  (R2 o R3), что и доказывает требуемое соотношение.

Замечание. Покажем, почему неверно обратное включение. Пусть (x, y) (R1 o R3)  (R2 o R3), тогда (x, y) (R1 o R3) и (x, y) (R2 o R3). Первое включение означает существование такого элемента z1 из A, что (x, z1)R1 и (z1, y) R3; второе – существование такого z2A, что (x, z2)R2 и (z2, y)R3, причем необязательно z1 = z2. Значит, не всегда существует такой элемент z, что (x, z)R1 и (x, z)R2, а, следовательно, не будет принадлежности пересечению R1 и R2.

Свойство 7в.

Возьмём любую пару (x, y)R1, что эквивалентно (y, х)R1–1. Пусть теперь R1  R2, т.е. из (x, y)R1 следует (x, y)R2. Перейдя к обратным отношениям, получим, что из (y, х)R1–1 вытекает (y, х)R2–1, что и означает требуемое свойство.

Свойство 8а).

Докажем предварительно равенство =.

Пусть (x, y) . Следовательно, (y, x) R или, другими словами, (y, x)R. Отсюда, ( x, y) R–1, что означает  (x, y) . Если же (x, y)  , то (x, y) R–1 и (y, x)R. Тогда (y, x)R или, что то же самое, (x,y)(R )–1.

Для доказательства свойства 8а) воспользуемся доказанным равенством и известными свойствами операций над множествами и отношениями.

(R1  R2)d = = =

= (R1 R2)–1 =R1–1  R2–1 = R1d  R2d.

3. Способы задания отношений

Традиционное задание отношений аналогично тому, как это принято в теории множеств, что не всегда удобно. Поэтому, наряду с таким заданием, применяются другие способы.

1. Матричное задание. Оно используется когда А – конечное или счетное множество А = {xi}. Тогда бинарное отношение R можно задавать с помощью матрицы R = {xij}, элементы которой определяются соотношением:

2. Табличное задание. Этим способом можно задавать произвольное n-арное отношение. Он используется, когда Аi – конечные или счетные множества Аi = {xij}. Строки таблицы соответствуют различным n-мерным элементам отношения, столбцы – наборам элементов из множеств Аi.

3. Задание с помощью графа. Для конечного или счетного множества А бинарное отношение можно задавать с помощью графа Г(R), который является геометрическим образом бинарного отношения. Граф – фигура состоящая из точек (вершин) соединенных линиями (дугами). Вершины графа соответствуют элементам множества А, то есть xi, а наличие дуги, соединяющей вершины xi и xj, означает, что (xi, xj)R. Чтобы подчеркнуть упорядоченность пары на дуге ставится стрелка.

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

1) Г(R–1) получается из Г(R) изменением направления стрелок на противоположные.

2) Граф Г(АА) содержит дуги, соединяющие любую пару (xi, xj). Такой граф называется полным.

4. Задание верхними и нижними срезами. Этот способ может быть использован для любых множеств и бинарных отношений. Пусть на множестве А задано отношение R. Верхний срез GR(x) отношения R в точке x А – это множество элементов yА таких, что (y, x)R, т.е.

GR(x) = { yA | (y, x)R }.

Если рассматривать R как отношение предпочтения, то GR (x) – это множество элементов, лучших, чем х.

Нижний срез HR(x) отношения R в точке xА – это множество элементов yА, таких, что (x, y)R, т.е.

HR(x) = { yA | (x, y)R }.

Свойства нижних и верхних срезов. Для любого хA и любого отношения Ri  AA выполняются соотношения.

1. а) GRR(x) = GR(x)  GR(x); б) HRR(x) = HR(x)  HR(x)

2. a) GR(x) = A \ GR(x); б) HR(x) = A \ HR(x).

3. a) GR–1(x) = HR(x); б) HR–1(x) = HR(x).

4. GAA(x) = HAA(x) = A.

ВОПРОС №7

3. Разбиение и эквивалентность

Def. Система (конечная или бесконечная) непустых подмножеств А1, A2,..., Аn... множества А называется разбиением, если:

1) объединение множеств Аi образуют все A (т.е. Аi=А);

2) множества Аi попарно не пересекаются (т.е. для любых ij справедливо Аi  Aj =  ).

Теорема о разбиении. Отношение I АА, будет отношением эквивалентности тогда и только тогда, когда существует разбиение А1, А2,..., Аn,... множества А, что из xIy следует существование такого Аi, что x, yАi.

Другими словами, отношение I является отношением эквивалентности в том и только в том случае, когда множество А можно разбить на пересекающиеся классы, в каждом из которых все элементы эквивалентны между собой. Такие классы называют классами эквивалентности или фактор-множествами.

Доказательство. Предположим, что I – отношение эквивалентности, т.е. оно является рефлексивным, симметричным, транзитивным. Наша задача – построить такое разбиение, чтобы между элементами каждого класса выполнялось отношение I. Введем для каждого xА множество Вx, состоящее из элементов эквивалентных х, т.е. Вx = {zA | xIz }.

Покажем, что два любых множества Bx и By либо совпадают, либо не пересекаются. Пусть zBx  By. Это означает, что одновременно zIx и zIy. Тогда, в силу симметричности и транзитивности, получаем xIy. Пусть теперь v – произвольный элемент из Bx, т.е. выполнено отношение vIx. Тогда, вследствие транзитивности отношения I и соотношения xIy, получим vIy, т.е. vBy. Точно также можно доказать, что если vBy, то vBx. Это означает, что всякий элемент v из Bx одновременно принадлежит и By и наоборот. Следовательно, два множества Bx и By, имеющие хотя бы один общий элемент, совпадают между собой.Наконец, в силу того, что множества Bx построены для всех элементов х из A, и, в силу рефлексивности I, элемент х принадлежит своему множеству Bx, объединение Bx включает в себя все множество A. Это означает, что система {Bx} образует разбиение A, т.е. в одну сторону теорема доказана.

Докажем обратное. Пусть имеем разбиение множества А на непересекающиеся классы. Определим отношение I следующим образом: элемент x находится с элементом y в отношении I тогда и только тогда, когда они оба принадлежат одному классу. Тогда это отношение обладает свойством рефлексивности, т.к. сам элемент х принадлежит классу, элементом которого является.

Обладает отношение I и свойством симметричности, т.к. если x и y принадлежат какому-то классу, то это же можно сказать и про y и x.

Наконец, если имеют место отношения xIy и yIz, то это значит, что x, yB и y, zB, где B – какой-то класс. Таким образом, x, zB, т.е. между x и z установлено отношение I. Следовательно, I обладает транзитивностью. Значит, I – отношение эквивалентности. Теорема полностью доказана.

4. Качественный порядок

Дополним отношение строгого упорядочения Pуп свойством транзитивности. Назовем полученное отношение качественным порядком Pкач. Рассмотрим два примера такого отношения.

1) Пусть х, у – вещественные числа. Введем качественный порядок следующим соотношением:

хРкачу  x > у + 1.

Очевидно, что в данном случае отношение Ркач асимметрично и транзитивно, но оно не является негатранзитивным. Покажем это.

Дополнение к введенному отношению определим как

хРкач у   <=>    х  у + 1

Положим у = 0; х = 0.9; z = – 0.9. Тогда, очевидно, выполняются отношения (х, y) Ркач ; (y, z) Ркач ; (х, z)  Ркач. Т.е. условие негатранзитивности не выполняется.

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

2) Введем на множестве точек n-мерного евклидова пространства следующее отношение Par, называемое отношением Парето:

х, уРаr    i : хi  yi и   j : хj > уj.

Отношение Парето называется также безусловным критерием предпочтения (БКП). Оно означает, что точка x по всем координатам имеет не меньшие значения, чем точка y и хотя бы по одной координате имеется строгое превосходство. В двумерном случае данное отношение можно изобразить графически. Возможны следующие ситуации:

а) x1 < y1 б) x1 > y1 в) x1 < y1

x2 > y2 x2 = y2 x2 < y2

нет отношения Раr; есть отношение Раr, есть отношение Раr,

  x лучше y; y лучше x.Задание. Доказать, что отношение Раr является качественным порядком.

ВОПРОС №9

2) Для хi существует такой у  П(Х), что xi Par у. В этом

случае необходимо исключить y из П(Х) и продолжить сравнение хi с оставшимися точками пока не будет просмотрено все текущее множество П(Х). Если процесс сравнения не прекратился раньше, чем было просмотрено все П(X), то хi необходимо включить в П(Х).

3) Для хi не существует такого у  П(Х), чтобы у Par xi или

xi Par у. В этом случае y не исключают и продолжают сравнение хi с оставшимися точками также, как и в случае 2).

Обычно множество недоминируемых точек содержит значительно меньше элементов, чем исходное т.е k = |П(Х)|<<|Х| = m. В этом случае нужно провести O(mk) сравнений, т.е. значительно меньше, чем при всевозможных парных сравнениях.

Данный алгоритм даст верное решение, если для любых множеств X и Y выполняется условие:

CR(X  Y) = CR( X  CR(Y)) (1)

ТЕОРЕМА. Соотношение (1) выполняется, если функция выбора обладает свойствами Н и

О.

ДОКАЗАТЕЛЬСТВО. Вспомним свойства

- наследования: (Y  X) => C(X)  Y  C(Y);

- отбрасывания: (C(X)  Y  X) => (C(Y) = C(X)).

Покажем, что при их выполнении CR(XY)  XCR(Y).

Пусть х  CR(XY). Если х  X, то х  XCR(XY). Пусть теперь х  Y, тогда х  CR(XY)Y. В силу свойства наследования получим, что Y  XY, поэтому CR(XY)Y C R(Y). Зна-

чит, x  CR(Y), а, следовательно, x  XCR(Y), что доказывает

утверждение.

Обозначим A = XY, B = XCR(Y). По доказанному ранее

CR(XY)  XCR(Y)  XY. Тогда по свойству отбрасывания

CR(A) = CR(B) или СR(XY) = СR(XСR(Y)), что и требовалось

доказать.

Условие (1) в частности выполняется, если R - качественный

порядок (см. п.11, ТЕОРЕМА 5). T.к отношение Парето таковым является, то алгоритм позволяет построить искомое конфликтное множество.

ВОПРОС №11

3.1. Алгоритм генерации r-размещений с повторениями. В обычных размещениях с повторениями на j-месте должны стоять числа из набора 1,…, n. Рассмотрим более общую задачу, пусть на j-месте должны стоять числа из диапазона от хj до уj включительно, т.е. рассмотрим расстановки с ограничениями (в обычной расстановке хj = 1, уj = n для всех j).

Пример 1.9. Пусть r = 3; х1 = 1, у1 = 2; х2 = 2, у2 = 3; х3 = 1, у3 = 4. Этим условиям отвечают следующие размещения с повторениями: (1 2 1), (1 2 2), (1 2 3), (1 2 4), (1 3 1), (1 3 2), … (2 3 4).

Обозначим А[j] – номер предмета, находящегося на j-м месте, j = 0,…r. Предлагается следующий алгоритм.

begin A[0]:=0; y[0]:=1;

for j := 1 to r do A[j] := x[j]; k := 2;

while k >= 1 do

begin writeln(A[1],…, A[r]); k := r;

while A[k] >= y[k] do k := k – 1;

if k >= 1 then

begin A[k] := A[k] + 1;

for j := k + 1 to r do A[j] := x[j];

end;

end;

end.

Рассмотрим работу алгоритма при исходных данных примера 1.9. Смысл операторов “A[0]:=0; y[0]:=1;” разъясним позже. Первоначально (2-я строка) всем A[j] присваиваются их начальные значения, т.е. х[j]: A[1] := 1; A[2] := 2; A[3] := 1. Переменной k присваивается значение 2, чтобы 1-й раз сработал цикл “while k >= 1”. В алгоритме k – номер изменяемого элемента массива А. Из примера 1.9 ясно, что первоначально меняется последний r-й элемент, т.е. k = r = 3 и А[3] вместо 1 приобретает значение 2, затем 3, и т.д. Остальные элементы пока остаются неизменными.

Так будет продолжаться до тех пор, пока А[k] не станет больше или равным у[k], т.е. A[3] >= 4. Это означает, что элемент А[k] достиг своего максимального значения и теперь меняться должен другой элемент – а именно тот, для которого условие A[k] >= y[k] еще не выполнилось. В примере 1.9 это будет А[2], текущее значение которого пока было постоянно и равнялось 2. Значение A[2] увеличивается на 1, становится равным 3, а все последующие элементы j = k + 1,… (здесь это A[3]) “сбрасываются”, т.е. опять приобретают начальное значение х[j]. В дальнейшем меняется опять только A[r].

Так будет продолжаться, пока все A[j] не достигнут своего максимального значения – y[j]. Тогда переменная k станет равной 0, условие “while k >= 1” уже будет ложным, и алгоритм закончит работу.

Замечание. Для корректной работы алгоритма необходимо для массивов А и у ввести фиктивные элементы А[0]:=0 и у[0]:=1 (1-я строка алгоритма), чтобы выполнился оператор “while A[k] >= y[k]” при k = 0.

3.2. Алгоритм генерации n-перестановок без повторений. Наиболее известны два алгоритма генерации перестановок: в лексикографическом (как в словаре) и антилексикографическом порядках.

Пример 1.10. 3-перестановки в лексикографическом порядке: (1 2 3), (1 3 2), (2 1 3), (2 3 1), (3 1 2), (3 2 1). Интерпретируя каждую перестановку как 3-х значное число и читая полученные числа в обычном порядке, мы получаем возрастающую последовательность.

3-перестановки в антилексикографическом порядке: (1 2 3), (2 1 3), (1 3 2), (3 1 2), (2 3 1), (3 2 1). Интерпретируя каждую перестановку как 3-х значное число и читая полученные числа в обратном порядке (справа – налево), мы получаем убывающую последовательность.

С точки зрения порядка следования переставляемых чисел в алгоритме с лексикографическим порядком перестановки начинаются с двух последних элементов, а в алгоритме с антилексикографическим порядком перестановки начинаются с двух первых элементов.

Рассмотрим антилексикографический алгоритм, как более простой. Отметим два свойства антилексикографических перестановок.

1. В первой перестановке элементы располагаются в возрастающем порядке, а в последней – в убывающем.

2. При фиксированном последнем элементе первые n – 1 элементов образуют антилексикографическую последовательность.

Воспользовавшись 2-м свойством, построим рекурсивный алгоритм генерации. Обозначим P[j] – массив переставляемых номеров. Операция P[i]  P[j] означает перестановку элементов P[i] и P[j].

Procedure Reverse (m); {Обращение последовательности из m номеров}

begin i := 1; j := m;

while i < j do

begin P[i]  P[j]; i := i + 1; j := j + 1; end;

end;

ВОПРОС №12

руководитель внимательно посмотрел список и сказал, что в сведениях есть ошибка. Как он это узнал?

Решение. Обозначим a1 – свойство принадлежности к мужскому полу; a2 – хорошая успеваемость; a3 – занятие спортом. Тогда N = 45, N(1) = 25, N(2) = 30, N(3) = 28, N(1, 2) = 16, N(1, 3) = 18, N(2, 3) = 17, N(1, 2, 3) = 15. Итого N(0) = 45 – 25 – 28 + 16 + 18 + 17 – 15 = – 2 – ошибка.

1.2. Модификации формулы. Формулу (2.1) можно обобщить для определения числа элементов, обладающих в точности k свойствами (0  k  n):

N(k) = + …+ (– 1)sk+ … + (–1)nk N(1, 2, … , n). (2.4)

2. Формулы обращения

2.1. Теорема обращения. Пусть имеем два семейства комбинаторных чисел {an,k} и {bn,k}, зависящих от целочисленных параметров n и k, причем 0  k  n.

Теорема 2.1. Пусть для любых n и k, 0  k  n справедливы зависимости и пусть существуют такие числа n,k,i, что для любых k  n и m  n выполняются равенства

Тогда для всех k  n имеет место формула обращения:

.

Доказательство.

= == bn,k,

что и требовалось доказать.

1.2. Примеры использования формулы обращения. Зависимость между числами n,k,i и n,k,i, фигурирующая в условиях теоремы 2.1, по сути означает, что n,k,i и n,k,i, образуют систему взаимно обратных матриц, т.е. смысл теоремы весьма прост, если не сказать – тривиален. Для произвольных чисел an,k и bn,k она не дает никакой ценной информации, поскольку найти требуемые числа n,k,i в общем случае столь же трудно, как и решить исходную систему уравнений относительно bn,k. Однако, для многих специальных случаев, в частности, комбинаторных чисел, удается найти n,k,i в явном виде. В этом особенность данной формулы. Рассмотрим ее применение для обращения биномиальных коэффициентов.

Лемма 2.1.

Теорема 2.3.

Если , то .

Доказательство аналогично.

ВОПРОС №161. Машинное представление графа

Приведем вначале сравнительную характеристику существующих способов представления графа в памяти ЭВМ, их достоинства и недостатки.

Рассмотрим конечный граф G=(V, E), где |V|=n, |E|=m.

Матрица инциденций.

Ориентированный граф задается прямоугольной матрицей B(nm), элементы которой определяются по правилу:

где a – любое натуральное число, отличное от 1. У неориентированного графа оба элемента матрицы, соответствующие вершинам, инцидентным ребру ej, равны 1.

Это представление графа является самым неудобным, так как объем занимаемой памяти равен nm единиц, причем в каждом столбце только две ненулевые ячейки. Кроме нерационального использования памяти недостатком этого способа представления является неудобный доступ к информации. Например, для ответа на вопросы:

а) существует ли ребро (дуга) (vi, vj);

б) к каким вершинам ведут ребра (дуги) из вершины vi

требуется, в худшем случае, перебор nm элементов, т.е. порядка nm шагов алгоритма. От этого недостатка свободен следующий способ представления графа.

Матрица смежности.

Элементы квадратной матрицы A(nn) определяются следующим образом:

Проверка существования ребра (дуги) (vi, vj) осуществляется за один шаг, в отличие от матрицы инциденций, однако, проверка свойств графа на основе такого представления требует, в худшем случае, порядка n2 шагов алгоритма. При этом способе объем неиспользованной памяти по-прежнему велик.

Заметим, что для сокращения объема используемой памяти возможно использование 1-го бита для хранения элемента aij, но при этом, выигрывая в памяти, мы затрудняем доступ к информации. В этом случае придется применять операции для работы с битами информации, используя различные маски.

При работе со взвешенными графами для хранения весов ребер (дуг) требуются дополнительные одномерные массивы размера m (для случая матрицы инциденций) или матрицы размера nn (для случая матрицы смежности). Это обстоятельство делает неприемлимым использование матрицы смежности для взвешенных графов, так как количество неиспользованных единиц памяти увеличивается в k раз, где kчисло весов ребер (дуг).

Съэкономить объем используемой памяти можно, применяя представление графа в виде

Таблицы ребер.

Она представляет собой матрицу размером m2, каждая строка которой содержит вершины инцидентные i-му ребру (i-ой дуге). Для работы со взвешенными графами нужно добавить к матрице столбцы, соответствующие весам ребер (дуг).

Однако, этому способу представления графа присущ тот же недостаток, что и матрице инциденций, - неудобство доступа к информации, хотя число шагов при поиске ребра здесь значительно меньше (порядка m). Поиск можно ускорить, введя лексикографический порядок в упорядочении пар и применяя двоичный поиск.

Наиболее удобной и экономичной формой представления графа являются

Списки инцидентности.

Для каждой вершины viV создается список записей, характерезующих ребра (дуги), инцидентные этой вершине. Таким образом, это представление использует объем памяти порядка (n+m), поиск вершины смежной с данной требует порядка (n+m) шагов, проверка свойств графа осуществляется за число шагов порядка . Поэтому остановимся подробнее на этом способе задания графа.

Каждая запись содержит две части: информационную и ссылочную. В информационную часть включаются поля:

а) вершина vj, смежная с вершиной vi;

б) веса ребер (дуг) при работе со взвешенными графами;

в) другая вспомогательная информация о ребре (дуге), если это необходимо для работы с графом.

Ссылочная часть содержит:

а) ссылку на следующую запись списка;

б) ссылку на предыдущую запись списка (для двунаправленных списков);

в) ссылку на запись, содержащую вершину vi, в списке инцидентности вершины vj (для неориентированного графа).

Типы «запись» и «ссылка на запись» должны быть предварительно описаны в программе. Например, описание

type ref = Elem;

ВОПРОС №17

2.2. Алгоритм поиска в глубину.

При реализации многих алгоритмов на графах возникает необходимость организовать систематический перебор вершин графа, при котором каждая вершина просматривается точно один раз. Например, в задаче поиска максимального потока в сети, …

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

Основная идея алгоритма поиска в глубину состоит в последовательном движении из заданной вершины вдоль одного из ребер вглубь графа до тех пор, пока не дойдем до вершины, из которой нельзя попасть ни в какую непросмотренную вершину. Такую вершину назовем обработанной. После этого возвращаемся в предыдущую вершину и повторяем поиск. Если после возврата в начальную вершину и ее обработки останутся непросмотренные вершины, то повторим поиск, начиная из любой оставшейся вершины.

Для реализации поиска каждой вершинеставится в соответствие логическая переменная , которая равна , если данная вершина еще не просмотрена, и , если вершина просмотрена. Вначале поиска считаем все переменные непросмотренными. Просмотр вершины означает изменение флага и вывод номера вершины. Пусть поиск начинается из вершины , тогда помечаем ее как просмотренную. Если список инцидентности этой вершины содержит хотя бы одну непросмотренную вершину , то переходим в нее, т.е. осуществляем один шаг вглубь графа. Затем повторяем те же действия для вершины и т.д. Если список инцидентности текущей вершины пуст или содержит только просмотренные вершины, то считаем, что вершина обработана, и возвращаемся в предыдущую вершину, т.е. делаем шаг назад.

Например, для графа, изображенного на рис. 5 последовательность обхода вершин из начальной вершины 1 имеет вид: 1, 2, 4, 5, 3, 5, 6, 5, 4, 7, 4, 2, 1.

Повтор вершин в списке обхода объясняется тем, что во время обратного шага приходится возвращаться в уже просмотренную вершину. Анализ флага позволяет исключить просмотренные вершины из последовательности поиска в глубину. Поэтому, последовательность просмотра вершин для графа (рис. 3) имеет вид: 1, 2, 4, 5, 3, 6, 7.

Рис. 5

Следовательно, каждая вершина просматривается и выводится не более одного раза. Если граф является связным, то будут просмотрены все вершины графа. Это нетрудно показать, предположив противное, что существует непросмотренная вершина w. Отсюда следует, что непросмотренными являются все смежные с ней вершины, так как граф – связен, то существует маршрут связывающий вершины v и w, и за конечное число шагов получим, что начальная вершина v тоже не просмотрена.

Описанный в алгоритме порядок работы с вершинами, при котором вершина, просмотренная последней, обрабатывается первой, реализуется с помощью механизма стека. Приведем здесь вариант процедуры поиска в глубину, использующий этот механизм.

При построении алгоритмов мы будем пользоваться неформальным языком описания алгоритмов. Такой язык по синтаксису похож на язык программирования Паскаль, но он разрешает использование математических обозначений. Это позволяет сосредоточится на сути алгоритма и уйти от технических вопросов его реализации. Для реализации алгоритма на одном из языков программирования необходимо формализовать его в соответствии с правилами языка. Всюду в дальнейшем мы будем использовать следующие обозначения:

  1. СПИСОК [ v ] – список инцидентности вершины v;

  2. for uСПИСОК [ v ] – для всех вершин, содержащихся в списке инцидентности верины v;

  3. СТЕК, ОЧЕРЕДЬ - поместить вершину v в СТЕК или ОЧЕРЕДЬ;

  4. СТЕК; ОЧЕРЕДЬ - извлечь вершину v из СТЕКА или ОЧЕРЕДИ.

procedure DEPTH( v );

begin СТЕК; СТЕК;

4. Отображения ВОПРОС №2

Пусть Х – некоторое числовое множество. Говорят, что на множестве Х определена функция f, если каждому числу xХ ставится в соответствие определенное число y = f(x). Множество Х – область определения функции, а множество Y = {f(x) | xX} – область значений функции. Если в качестве множеств Х и Y рассматривать множества произвольной природы, а не только числовые, мы приходим к понятию отображения.

Def. Пусть X и Y – два произвольных множества. Говорят, что на X определено отображение f, принимающее значения из Y (f : X Y), если каждому элементу x из X ставится в соответствие единственный элемент y = f(x) из Y.

Множество элементов xX, для которых определено отображение f, называется областью определения f и обозначается f.

Если имеется какой-либо элемент хX, то соответствующий ему элемент yY будем называть образом x. Пусть A – некоторое подмножество множества X (AX), образ множества A определяется как множество образов элементов множества A и обозначается f(A), т.е. f(A) = {f(x) | xA}. Образ области определения называется областью значений отображения f и обозначается f (т.е. f = f(f) = f(X)).

Если задать yY, то множество соответствующих ему x, т.е. таких, что y = f(x), будем называть прообразом y и обозначать f –1(y), f –1(y) = {xX | y = f(x)}. В общем случае обратное отображение f –1 неоднозначно. Пусть B – некоторое подмножество множества Y (BY), прообраз множества B определяется как множество прообразов элементов множества B и обозначается f –1(B), т.е. f –1(B) = { xA | f(x) = y, y  B}.

Отображение i : X  X такое, что i(x) = x для любого xX называется тождественным отображением.

Пусть f : X  Y и g : Y  Z. Отображение h : X  Z, такое, что каждому элементу xX ставится в соответствие единственный элемент h(x) = g(f(x)), называется композицией (или суперпозицией) отображений f и g и обозначается g о f.

Отображение f : X  Y называется сюръекцией X на Y, если множество образов всех элементов из X совпадают с множеством Y. Это обозначается как f(X) = Y. Другое эквивалентное определение сюръекции – это отображение, при котором каждый элемент из Y имеет прообраз в множестве X.

Если для любых x1, x2X таких, что x1  x2, получается, что f(x1)  f(x2), т.е. разным элементам соответствуют различные образы, то это отображение f называется инъекцией.

Отображение f, которое является одновременно сюръекцией и инъекцией, называется биекцией, или взаимно однозначным отображением. 

Если между А и В установлено биективное отображение, то говорят, что множества А и В эквивалентны. Эквивалентность множеств обозначается A ~ B.

Легко видеть, что эквивалентность множеств обладает свойством транзитивности, т.е. если A ~ B и B ~ C, то A ~ C. Признаки эквивалентности множеств дают следующие

Теоремы Кантора-Бернштейна

1. Если A  B  C, причем A ~ C, то A ~ B.

2. Если A эквивалентно подмножеству множества B, а B эквивалентно подмножеству множества A, то A ~ B.

(Без доказательства).

Основные свойства отображений можно сформулировать в виде следующих теорем.

Теорема 1.1.–1 (A  B) = f –1 (A)  f –1 (B) – прообраз объединения двух множеств равен объединению их прообразов.

Доказательство. Пусть xf –1 (A)  f –1 (B). Тогда или xf –1 (A) или хf –1 (B). В первом случае y = f(x)А, во втором yВ. В любом случае yА  В, поэтому xf –1 (A  B).

Докажем обратное включение. Пусть xf –1 (A  B), тогда y = f(x)  A  B. Значит или yА, или yВ. Если yА, то f –1 (y)  f –1 (A). Так как xf –1 (y), то отсюда следует, что xf –1 (A). Если же yВ, то f –1 (y)  f –1 (B), что влечет xf –1 (В). В любом случае xf –1 (A)  f –1 (B). Поэтому, если xf –1 (A  B), то xf –1 (A)  f –1 (B), что и требовалось доказать.

Теорема 1.2.–1 (A  B) = f –1 (A)  f –1 (B) – прообраз пересечения двух множеств равен пересечению их прообразов.

Доказательство. Пусть xf –1 (A  B), тогда y = f(x)A  B. Значит, yА и yВ. Если yА, то f –1 (y)  f –1 (A), а если yВ, то f –1 (y)  f –1 (B). Эти включения должны выполняться одновременно, следовательно, f –1 (y)  f –1 (A)  f –1 (B), а значит, хf –1 (A)  f –1 (B). Таким образом, f –1 (A  B)  f –1 (A)  f –1 (B).

Докажем обратное включение. Пусть xf –1(A)  f –1(B), тогда x f –1(A) и xf –1(B). Если xf –1(A), то y = f(x)A. Если же xf –1(B), то y = f(x)B. Так как yA и yB, то yAB и поэтому f –1(y)  f –1(A  B). Значит,  хf –1(A  B) и отсюда следует, что f –1(A)  f –1(B)  f –1(A  B).

Эти два включения означают, что f –1(AB) = f –1(A)f -1(B), что и требовалось доказать.

Теорема 1.3. f (A  B) = f (A)  f (B) – образ объединения двух множеств равен объединению их образов.

Доказательство. Пусть yf(A  B), тогда для любого x из множества f –1(y) выполняется принадлежность хA  B. Поэтому xA или xB. В первом случае y = f(x)f(A), во втором – y = f(x)f(B). Так как yf(A) или yf(B), то yf(A)  f(B) и, следовательно, f(A  B)  f(A)  f(B).

ВОПРОС №4

4. Множества мощности континуума и выше Для мощности множества вещественных чисел R есть специальное обозначение – с. Любое множество, имеющее такую мощность называется континуумом (от английского continue – продолжаться).

Введение понятия мощность континуума порождает два вопроса.

1. Существует ли множество мощностью больше чем с?

2. Существует ли множество промежуточной мощности между счетным и континуумом?

На первый взгляд, если отрезок прямой имеет мощность континуума, то множеством мощности больше с является любая плоская фигура, например, квадрат. Однако, это не так и справедлива

Теорема 2.2. Открытый единичный квадрат на плоскости имеет мощность равную с.

Доказательство. Построим отображение f точек квадрата на его сторону. Возьмем любую точку внутри квадрата с координатами (x, y). Пусть в десятичном представлении x = 0,a1a2a3..., а y = 0,b1b2b3... . Образуем число z = f(x, y) = = 0,a1b1a2b2a3b3..., которое является координатой точки на стороне квадрата. Таким образом, мы отобразим точки квадрата на его сторону.

Возьмем две различные точки квадрата А = (x1, y1) и B = (x2, y2) и определим zA = f(A), zB = f(B). Ясно, что при А ≠ В либо x1  x2 либо y1  y2, А раз так, то эти числа отличаются хотя бы одним десятичным знаком, и значит zA  zB. Значит, две разные точки A и B квадрата отображаются в две разные точки на отрезке прямой. Поэтому отображение f инъективно. 

Инъективность означает, что точек в квадрате не больше, чем на отрезке. С другой стороны, их не может быть меньше, поскольку отрезок является подмножеством квадрата. Следовательно, построенное отображение f взаимно однозначно.

Тем не менее, множества мощности выше континуума существуют, более того, справедлива

Теорема 2.3. Для любого множества А существует множество В большей мощности.

Доказательство. Пусть имеется множество А. Рассмотрим множество В, являющееся множеством всех функций, определенных в точках множества А и равных 0 или 1в этих точках. Покажем, что мощность множества В больше мощности А.

Рассмотрим на множестве А функцию из B, определенную по правилу

где aА. Поставим каждой точке аА в соответствие функцию fa(x)В и рассмотрим полученное множество

B1 = { fa(x)B | aA } B.

Очевидно, что нами установлено взаимно однозначное отображение А  В1. Следовательно, | A | = | B1 |, а значит | A |  | B |. Покажем, что | A |  | B|. Это эквивалентно тому, что не существует взаимно однозначного отображения А на все В.

Предположим противное, что существует биективное отображение   : А  В, которое каждому аА ставит в соответствие элемент bВ и обратно, каждой функции из B – элемент множества A. Обозначим  (a) = f(a)(x), и рассмотрим функцию

g(x) = 1 – f(а)(x).

По свойствам элементов множества В имеем, что значение f(а)(x) равно 0 или 1, тогда это свойством обладает и функция g(x). Следовательно, g(x)В. Значит, по предположению, существует такая точка bА, что ей однозначно соответствует g(x), т.е. g(x) = f(b)(x). Возьмем х = b, тогда получим

g(b) = 1 – f(b)(b) = f(b)(b).

Отсюда f(b)(b)=1/2, что противоречит условию принадлежности функции f(b)(x) множеству В.

Поэтому, такого отображения  не существует. Значит, | A |  | B | и | A |  | B|, т.е. мощность В строго больше мощности А.

Из теоремы следует, что множества самой большой мощности не существует.

Эквивалентный способ построения множества большей мощности, чем А получим, если определим B как множество, элементами которого являются всевозможные подмножества множества A. Множество всех подмножеств некоторого множества A называется булеаном и обозначается 2A (2A={ C | C  A}). Тогда m(2A) = 2|A|.

Множество, мощность которого равна 2c, называется множеством мощности гиперконтинуума.

Что касается проблемы существования множества промежуточной мощности, то оказалось, что это утверждение невозможно доказать на основе аксиом теории множеств, но оно и не противоречит им.

ВОПРОС №5

Свойства операций. Пусть А, В, С – нечеткие множества, тогда выполняются следующие соотношения:

а) – коммутативность;

б) – ассоциативность;

в) – идемпотентность;

г) – дистрибутивность;

д) A = A, где – пустое множество, т.е. (x)=0 xE;

A = ;

AE = A, где E – универсальное множество;

AE = E;

е) – теоремы де Моргана.

В отличие от четких множеств, для нечетких множеств в общем случае A ≠ , A  E, что, в частности, проиллюстрировано выше в примере наглядного представления нечетких множеств.

5. Свойства бинарных отношений ВОПРОС №6

1. Рефлексивность. Отношение R называется рефлексивным, если (х, х)R для любого хA. Примеры рефлексивных отношений: отношения "", "" на множестве R.

2. Антирефлексивность. Отношение R называется антирефлексивным, если (х, х)R для любого хA. Примеры антирефлексивных отношений: отношения "<", ">" на множестве R.

Если R – антирефлексивное отношение, то xGR(x) и хHR(x) для любого хA .

3. Симметричность. Отношение R называется симметричным, если для любых x, yA из того, что (x, y)R следует (y, x)R и обратно. Примеры симметричных отношений: отношения "=" и "".

Если отношение R симметрично, то для любого хA

а) GR(x) = HR(x); б) R = R–1.

4. Антисимметричность. Отношение R называется антисимметричным, если для любых x и y из A из одновременного выполнения условий (x, y)R и (y, x)R следует, что x = y. Пример антисимметричного отношения. Пусть А – множество людей в данной очереди. Отношение R – "не стоять за кем-то в очереди" будет антисимметричным.

Пусть х = ВАСЯ, а y = ИВАНОВ. Тот факт, что (x, y)R означает, что "ВАСЯ не стоит в очереди за ИВАНОВЫМ", (y, x)R – "ИВАНОВ не стоит за ВАСЕЙ". Очевидно, что одновременное выполнение обоих включений может быть, только если ВАСЯ и есть ИВАНОВ, т.е. x = y.

Отношение "" также антисимметрично: если x  y и y  x, то x = y.

5. Асимметричность. Отношение R асимметрично, если R  R-1= , т.е. пересечение отношения R с обратным отношением пусто.

Эквивалентное определение асимметричности: из двух отношений (x, y)  R и (y, x)R одно не выполняется.

Примеры асимметричных отношений: ">", "<", "быть начальником".

Если R – асимметричное отношение, то из xRy следует yx.

Для любого отношения R вводятся понятия симметричной части отношения Rs = R R–1 и асимметричной части отношения Ra = R \ Rs. Если отношение R симметрично, то R= Rs, если отношение R асимметрично, то R = Ra.

Примеры. Если R – "", то R–1 – "<", Rs – "=", Ra – ">".

6. Транзитивность. Отношение R транзитивно, если для любыx x, y, zA из того, что (x, y)R и (y, z)R следует (x, z)R.

Свойства транзитивного отношения:

а) RoR  R;

б) для любого хA из yGR(x) следует, что GR(y)  GR(x).

Нетранзитивным является отношение "". Пусть x = 2, y = 3, z = 2, тогда справедливо x  y и y  z, но x = z, т.е. (x, z)R.

Отношение R1 называется транзитивным относительно отношения R2, если:

а) из (x, y) R1 и (y, x) R2 следует, что (x, z) R1;

б) из (x, y) R2 и (y, x) R1 следует, что (x, z) R1.

7. Негатранзитивность. Отношение R называется негатранзитивным, еслиR транзитивно.

Примеры. Отношения R1 –">" и  R2 –" " негатранзитивны, так как отношенияR1 – "",R2 – "=" транзитивны. Возможно одновременное выполнение свойств транзитивности и негатранзитивности. Например, отношение R1 одновременно транзитивно и негатранзитивно, а R2 , как известно, транзитивным не является.

8. Полнота. Отношение R полно, если для любых x, yА либо (x, y)R, либо (y, x)R, либо оба отношения выполняются одновременно.

Свойства полных отношений:

а) GR(x)  HR(x) = А для любого хA;

б) полное отношение рефлексивно.

9. Слабая полнота. Отношение R называется слабо полным, если для любых х  y из А или (x, y)R, или (y, x)R.

Пример слабо полного отношения. Пусть А – множество предприятий, "неблагополучных" в смысле своего бюджета. Отношение R "быть должным" является слабо полным, так как каждое из этих предприятий или кому-либо должно, или ему кто-то должен, но быть должным самому себе нельзя и (x, x)R.

10. Ацикличность. Бинарное отношение R ациклично, если Rn R–1=  для любого nN . Иными словами, если из любой конечной цепочки отношений х1Rx2, x2Rx3,..., xn-1Rxn следует, что x1  хn, то отношение R ациклично.

Связи между свойствами отношений

1. Отношение R слабо полно тогда и только тогда, когда Rd антисимметрично.

Доказательство. Пусть R слабо полно и x  y. Рассмотрим три случая.

1) (x, y)R.Тогда, по определению обратного отношения (y, x)R-1, а по определению двойственного отношения – (y, x)Rd

2) (y, x)R, тогда (x, y)R–1 и, следовательно, (x,y)R–1 = Rd.

3) (x, y)R и одновременно (y, x)R. Отсюда, (y, х)Rd и (x, y) Rd.

Так как R – слабо полное отношение, то для любых x  y выполняется либо случай а), либо б), либо в). Ни в одном из этих случаев включения (x, y)Rd и (y, x)Rd не могут выполняться одновременно. Следовательно, отношение Rd антисимметрично.

Докажем, обратное, что из антисимметричности Rd следует слабая полнота отношения R. Рассмотрим эквивалентное определение антисимметричности. Если x  y, то либо (x, y)Rd и (y, x) Rd, либо (x, y)Rd и (y, x)Rd, либо

ВОПРОС №8

10. Функция выбора. Основные понятия

Задача выбора возникает когда из некоторого конечного или

бесконечного множества надо отобрать подмножество в каком-то смысле хороших элементов. Подмножество отбираемых элементов называется выбором, а правило их отбора - функцией выбора.

Более строго функцию выбора можно определить следующим образом. Пусть А - множество элементов из которых осуществляется выбор, ХА - множество допустимых решений (предъявление), а С(Х)Х - множество отобранных точек (выбор). Отображение  : ХC(Х) называется функцией выбора. Алгоритм реализующий эту функцию выбора называется механизмом выбора.

Рассмотрим примеры наиболее распространенных механизмов выбора.

1) Скалярный оптимизирующий механизм - выбор вариантов, при которых некоторая скалярная функция f(х) достигает максимума.

Сопт(Х) = { хХ | х=arg max f(x) }

2) Условно-оптимальный механизм - выбор по схеме математического программирования, т.е. выбор таких хХ, при которых достигается условный максимум скалярной функции f0(x) при выполнении системы ограничений.

Смп(Х) = { хХ | х=arg[ max f0(x)|f i(х)0, i=1,..,m] }

3) Механизм доминирования по бинарному отношению R – выбор тех хХ, которые с любым элементом из Х находится в отношении R (элемент х лучше любого y в смысле отношения предпочтении R).

СR(Х)={ хХ |  yХ : (x,y)R }

  4)Механизм блокировки по бинарному отношению R - выбор тех элементов xX, для которых в Х нет элемента лучше в смысле отношения предпочтения R.

СR(Х) = { хХ |  yХ : (x,y)R }

5) Механизм ограничений по бинарному отношению R отбирает те элементы х, которые с фиксированной точкой u образует пару в R.

Сu(Х) = { хХ |  (x, u)R }

6) Паретовский механизм осуществляет выбор таких элементов х, для которых нет элемента y лучшего чем х сразу по всем критериальным функциям f i(х).

Сpar(Х) = { хХ | не  yХ : f i(y)f i(x)  i=1,..,m }

7) Турнирный механизм - выбор такого х, при котором достигает максимума турнирная функция f R(x). Ее можно трактовать, как число очков, набранных элементом х во время турнира со всеми элементами из Х.

СT(Х) = { хХ | х=arg max f R(x) };

R(x) =  f R (x,y) y

При решении задачи выбора возникают 2 подзадачи.

1) Задача анализа - организация выбора по заданному механиз-

му выбора и предъявлению.

2) Задача синтеза - построение механизма выбора по известно-

му выбору на предъявлении Х и результату выбора С(х).

11. Классификация функций выбора

Обозначим  - множество всех возможных функций выбора. Простейшая классификация различает следующие подмножества  :

а)   >0 - подмножество функций непустого выбора, т.е. таких

функций, выбор по которым содержит хотя бы один элемент.

б)  1 - подмножество функций однозначного выбора, т.е. таких функций, выбор по которым содержит ровно один элемент.

Ясно, что 1   >0   .

  Приведем без доказательства следующие теоремы о функциях выбора.

ТЕОРЕМА 1. Бинарное отношение R порождает функцию непустого выбора, основанную на механизме доминирования или блокировки тогда и только тогда, когда R ациклично.

ТЕОРЕМА 2. Бинарное отношение R порождает функцию однозначного выбора, основанную на механизме доминирования или блокировки тогда и только тогда, когда R ациклично и слабополно.

Более тонкая классификация функций выбора основывается на наличии или отсутствии у них следующих свойств.

1) H: (YX) => C(X)YC(Y) - свойство наследования.

Наличие этого свойства означает, что элемент b, выбираемый на множестве Х, будет также выбран на любом более узком содержащем его подмножестве Y. Иными словами, при переходе к рассмотрению элемента b на более узком множестве, его свойство быть выбранным сохраняется (наследуется).

2) C: X = YZ => (C(Y)C(Z))C(X) - свойство согласия.

Наличие этого свойства означает, что элемент b, выбираемый одновременно на любых составных частях некоторого множества Х, будет также выбран на всем Х.

3) О: (C(X)YX) => (C(Y) = C(X)) - свойство отбрасыва-

ния или независимости от отбрасывания отвергнутых вариантов. Оно означает, что выбор на любом множестве Y, содержащем выбор C(X) совпадает с C(X). Т.е. выбор не зависит от того, сколько "плохих"

ВОПРОС №10

2. Простейшие конфигурации

2.1. Размещения с повторениями. Так называются упорядоченные r-выборки из (n)-множества.

Дадим более подробное определение. Пусть дано неограниченное число предметов, относящихся к n различным видам. r-размещениями с повторениями называются различные расстановки из этих предметов по r штук в каждой, образованные по следующим правилам.

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

2. В каждую расстановку может входить несколько предметов одного вида.

Свойство. Число r-размещений с повторениями из предметов n типов обозначается и равно nr.

Доказательство. На 1-м месте может быть предмет одного из n видов. Следовательно, существует n способов выбрать 1-й предмет. При каждом фиксированном таком способе имеется n способов выбрать 2-й предмет, и т.д. В соответствии с правилом произведения всю группу из r предметов можно выбрать nr способами, что и требовалось доказать.

В примере 1.1.а) существует 125  250 тыс. различных паролей. (Если взломщик будет тратить по 1 секунде на проверку комбинации, то ему понадобиться 69 часов для проверки всех паролей).

Пример 1.3. В азбуке Морзе самый длинный код буквы состоит из 5 символов. Можно ли использовать коды длиной не более 4-х символов?

Решение. В соответствии с правилом суммы число различных кодов длиной не более 4 символов при использовании 2 видов символов (точка и тире) равно = 2 + 4 + 8 + 16 = 30. Значит, 4-х символьных кодов не хватит для кодирования даже всех букв кириллицы, не говоря о служебных символах. При использовании же 5-ти символьных кодов N = 30 + = 62, т.е. такой длины кода достаточно.

2.2. Размещения и перестановки без повторений. Размещениями без повторений называются упорядоченные r-выборки из n-множества. Такие расстановки по r элементов составляются из n неповторяющихся предметов.

Свойство. Число r-размещений без повторений из n предметов обозначается и равно n(n – 1)…(n – r + 1) = .

Доказательство. 1-й предмет можно выбрать n способами, 2-й – (n – 1) способами, т.к. число кандидатов на это место уже n – 1, и т.д. В соответствии с правилом произведения получаем выражение из r сомножителей:

.

В примере 1.1.б) число способов выбора 4-х членов в руководство комитета из 25 человек равно = 25242322 = 303600.

В частном случае при r = n получаем = Рn = n! Данная конфигурация называется перестановкой из n неповторяющихся предметов – упорядоченная n-выборка из n-множества.

2.3. Перестановки с повторениями. Так называют упорядоченные n-выборки из (m)-множества (n > m). Если некоторые элементы такой выборки совпадают, то могут существовать неразличимые (совпадающие) перестановки.

Найдем количество различных перестановок. Обозначим a, b,…, z – переставляемые объекты; nj – количество повторений j-го элемента, j = 1,…,m, ; Р(n1, n2,…, nm) – число таких перестановок. Рассмотрим 1-ю перестановку:

ВОПРОС №11

Procedure Antilex (m); {Генератор перестановок из m номеров}

Begin if m = 1 then writeln (P[1],…, P[n])

else

for i := 1 to m do {*}

begin Antilex (m – 1);

if i < m then

begin P[i]  P[m]; Reverse (m – 1); end;

end;

end;

begin for i := 1 to n P[i] := i; Antilex (n); {Головная}

end.

Замечание. Для корректной работы алгоритма необходимо в каждой процедуре внутренние переменные i, j и др. описывать как локальные.

3.3. Алгоритм генерации k-сочетаний без повторений. Будем генерировать сочетания в лексикографическом порядке.

Пример 1.11. Подобные 3-сочетания из 5 выглядят так: (1 2 3), (1 2 4), (1 2 5), (1 3 4), … (1 4 5), (2 3 4), … – т.е. генерируется возрастающая последовательность 3-значных чисел. Лексикографическая последовательность сочетаний обладает следующими свойствами.

1. В каждом сочетании i-й член ai удовлетворяет условию: ai  n – k + i. Например, a3  5 – 3 + 3 = 5, a2  5 – 3 + 2 = 4, a1  5 – 3 + 1 = 3.

2. Пусть р – максимальный номер элемента, для которого в данный момент выполняется строгое неравенство aр  n – k + p. В сочетаниях примера 1.11 значения р соответственно равны: 3, 3, 2, 3, …, 1, 3,… Тогда члены сочетания следующего за (a1, a2, …, ak) получаются по формуле:

То есть ; и т.д. Предлагается следующий алгоритм:

begin for i := 1 to k do A[i] := i;

p := k;

while p >= 1 do

begin If A[k] = n then p := p – 1; {Находим р}

else p := k;

if p >= 1 then for i := k downto p do

A[i] := A[p] + i – p + 1;

end;

end.

.

ВОПРОС №13

4. Производящие функции

4.1. Определение производящих функций. Последовательности {un}, фигурирующей в какой-либо задаче, например, комбинаторной, удобно поставить в соответствие формальный степенной ряд

u(x) = ,

который называется производящей функцией данной последовательности. Слова “формальный ряд” означает, что эту формулу мы трактуем только как удобную запись последовательности. Для нас сейчас несущественно, при каких значениях х ряд сходится и сходится ли вообще, т.к. вычислять значение u(x) мы никогда не будем.

Пример 2.5. Известно, что = 1 + х + х2 + … + хn + … Следовательно, функция является производящей для последовательности 1,…, 1.

Пример 2.6. Согласно формуле бинома Ньютона (1 + х)n = =. Следовательно, функция (1 + х)n является производящей для конечной последовательности .

4.2. Операции с производящими функциями. Рассмотрим основные технические приемы, применяемые в работе с производящими функциями.

1. Линейная комбинация. Если функция u(x) соответствует последовательности {un}, а v(x) – последовательности {vn}, то функция au(x) + bv(x) (a и b – константы) является производящей для последовательности { aun + bvn}.

2. Сдвиг. Если функция u(x) соответствует последовательности {un}, то функции хmu(x) соответствует последовательность … – сдвиг вправо.

Аналогично, функция является производящей для последовательности um, um+1, … – сдвиг влево.

3. Умножение. Если функция u(x) соответствует последовательности {un}, а v(x) – последовательности {vn}, то функции u(x)v(x) соответствует последовательность {wn}, где

– формула Коши. Например, w0 = u0v0; w1 = u0 v1 + u1 v0; w2 = u0 v2 + u1 v1 + u2 v0.

Пример 2.7. Пусть u(x) соответствует последовательности {un}, а v(x) = – производящая функция для последовательности 1,…, 1 (см. пример 2.5). Тогда функция

= u0 + (u0 + u1) x + (u0 + u1 + u2) x2 +… (2.11)

является производящей для последовательности частичных сумм.

4. Дифференцирование и интегрирование. Если u(x) соответствует последовательности {un}, то по правилу дифференцирования рядов

u(x) = 0 + u1 + 2 u2 x + 3 u3 x2 + ….

То есть u(x) является производящей функцией для последовательности {k uk}.

Аналогично

То естьявляется производящей функцией для последовательности .

Пример 2.8. = . Следовательно, функция является производящей для последовательности {k}.

Далее,

положительными, надо перед корнем в формуле u(x) брать знак “–”. Заменим индекс суммирования k на k +1. В результате получим:

ВОПРОС №16

Elem = record

num: integer;

ves: array [1 .. kv] of real;

sled, pred, ref_vi: ref;

end;

определяет запись, характерезующую ребро взвешенного неориентированного графа с числом весов kv, и ссылку на эту запись (типизированный указатель). В данном примере используется двунаправленные списки.

Ссылки на первую запись каждого списка хранятся в массиве, размер которого равен числу вершин графа. В программе должна быть описана переменная типа «массив», элементы которого имеют тип «ссылка на запись». Например,

var mas_ref: array [1 .. n] of ref;

Если вершина vi является изолированной, то mas_ref [vi]= nil.

Структуру представления графа в памяти ЭВМ можно схематично представить следующим образом:

На этом рисунке изображены фрагменты списков инцидентности неориентированного графа, соответствующие ребру графа . У ориентированного графа в каждой записи будет отсутствовать третье ссылочное поле, и не будет дублирования в списке инцидентности конечной вершины дуги.

Например, неориентированный граф

имеет cледующее представление в памяти

Рис. 3

Для ориентированных графов могут формироваться как списки вершин, следующих за текущей, так и предшествующих ей вершин.

Для формирования машинного представления графа необходимо сформировать список инцидентности для каждой вершины графа и заполнить массив ссылок на эти списки. Формирование списка инцидентности может осуществляться по принципу стека (LIFO), когда новая запись включается в начало списка, или по принципу очереди (FIFO), когда новая запись ставится в конец списка.

Напомним, что для включения записи в список нужно выделить область динамической памяти, соответствующую размеру записи, и заполнить ее поля.

При работе с графом часто требуется выполнить действия, изменяющие его структуру. К ним относятся:

  1. Добавление ребра (дуги) (vi, vj) в граф G.

Для этого нужно:

а) добавить запись с вершиной vj в список инцидентности вершины vi;

б) для неориентированного графа добавить запись с вершиной vi в список инцидентности вершины vj.

  1. Удаление ребра (дуги) (vi, vj) из графа G (осуществляется аналогично добавлению ребра (дуги)).

  2. Удаление вершины vi из графа G.

Для этого нужно удалить все ребра (дуги) инцидентные вершине vi (т.е. удалить все записи из списка вершины vi, а для неориентированных графов – и соответствующие записи из списков смежных с ней вершин) и изменить ссылку в массиве ссылок на списки инцидентности mas_ref [vi]= nil.

Часто кроме изменения структуры графа для более эффективной работы алгоритмов требуется сортировка (упорядочение) списков инцидентности. При этом применяются известные алгоритмы сортировки, следует лишь заметить, что при изменении порядка записей в списке изменяются только поля sled, pred в записях списка.

Ввод графа осуществляется из текстового файла одного из двух видов: «таблица смежности» или «таблица ребер». Такие файлы по-разному формируются и интерпретируются для неориентированных и ориентированных графов: для неориентированного графа задаются ребра графа, а для ориентированного – дуги. То есть, ребро неориентированного графа задается один раз, а соответствующие ему записи автоматически включаются в списки инцидентности обоих его концов.

Файл «таблица смежности» состоит из блоков, соответствующих вершинам графа. Каждый блок имеет следующую структуру:

начальная вершина: список смежных с ней вершин

соответствующие ребрам веса

Количество строк с весами ребер равно kv, число вершин списка равно числу весов в строках. Блоки в таком файле могут располагаться в произвольном порядке, причем, если вершина не является начальной ни для одного ребра (дуги) или ребро уже включено в список инцидентности другого его конца, то соответствующий ей блок может отсутствовать в файле.

ВОПРОС №17

следующие свойства:

;

.

NOWY [v ]False; Write ( v ); {вершина просмотрена}

while СТЕК do

begin ttop(СТЕК);

Pmas_ref [t];

{поиск ноой вершины в списке вершины t}

while (P<>nil) and (not Nowy [P^.num])

do PP^.sled;

if P  nil then {найдена новая вершина}

begin tP^.num; СТЕК;

NOWY [ t ]False; Write ( t )

end

else {вершина t использована}

t

end

end;

Основная программа поиска имеет вид.var NOWY : array [1..n] of boolean;

begin for v V do NOWY [ v ]True ;

for v V do

if NOWY [ v ] then DEPTH (v)

end .В первом цикле программы производится инициализация массива . Далее для первой непросмотренной вершины вызывается процедура поиска. Если граф – связный, то после возврата в основную программу поиск будет закончен. В противном случае при первом вызове процедуры DEPTH будут просмотрены все вершины одной связной компоненты графа, затем поиск повторится, начиная с первой непросмотренной вершины. Таким образом, обращение к процедуре DEPTH(v) из основной программы происходит всякий раз при переходе к очередной связной компоненте графа. Начнем поиск с начальной вершины 1. При вызове процедуры DEPTH(1) получаем следующую последовательность вершин: 1, 2, 6, 3, после чего происходит выход из процедуры в основную программу, т.к. список смежности исходной вершины исчерпан. При следующем вызове процедуры просмотр начнется с первой непросмотренной вершины 4, принадлежащей следующей связной компоненте графа.

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

2.2. Алгоритм поиска в ширину.

Основная идея такого поиска – последовательный просмотр списков инцидентности вершин, смежных с данной. При поиске в ширину, попав в новую вершину, просматривают все смежные с ней непросмотренные вершины и заносит их в список, после чего эта вершина считается обработанной. Далее переходят в новую вершину, стоящую первой в списке необработанных вершин. Иными словами, просмотр осуществляется по принципу очереди: чем раньше вершина просмотрена, тем раньше она будет обработана.

Например, для графа, изображенного на рис. 5, последовательность просмотра вершин с помощью поиска в ширину имеет вид: 1, 2, 4, 7, 5, 6, 3.

Сложность реализации алгоритма в том, что рекурсивные процедуры действуют по принципу стека, а не очереди. Поэтому в этом случае возможен только нерекурсивный вариант алгоритма.

procedure BREADTH( v ) ;

begin ОЧЕРЕДЬ; {ОЧЕРЕДЬ – локальная структура }

ВОПРОС №2

Докажем обратное включение. Пусть yf(A)  f(B), тогда yf(A) и f –1(y)  A или yf(B) и f –1(y)  B. Соответственно получаем, что xA или xB, т.е. xA  B и тогда y = f(x)f(A  B). Доказано включение f(A)  f(B)  f(A  B). Следовательно, f(A  B) = f(A)  f(B). что и требовалось доказать.

Замечание. Образ пересечения двух множеств не обязательно совпадает с пересечением их образов. Рассмотрим пример.

Пусть A и B – множества точек на плоскости:

A = { (x, y) | 0  x  1, y = 2 },

B = { (x, y) | 0  x  1, y = 1 }.

С помощью проектирования точек на ось ОХ построим отображение А и В на множество С = { (x, y) | 0  x  1, y = 0 }. Так как f(A) = C, f(B) = C, то f(A)  f(B) = C. Но множества A и B не пересекаются и f(A  B) = f() = , т.е. мы показали, что f(A  B)  f(A)  f(B).

Теоремы 1, 2, 3 остаются в силе при любом конечном и бесконечном числе множеств. Например, теорема 1.1 примет вид:

. (1)

где A1, A2, . . . – некоторая система множеств.

Докажем (1) с помощью метода математической индукции.

1. При n = 2 равенство f –1(A1  A2) = f –1(A1)  f –1(A2) справедливо согласно теореме 1.1.

2. Предположим, что равенство верно при любом n  k.

3. Докажем, что равенство верно при n = k+1. Обозначим B = .

Тогда f –1) = f –1 (B  Ak+1) = f –1 (B)  f –1 (Ak+1),

так как для двух множеств В и Ak+1 теорема верна. Но по предположению индукции для k множеств теорема также верна, поэтому

–1 (B)=.

Отсюда следует требуемое равенство.

ВОПРОС №6

(x, y)Rd и (y, x)Rd. В первом случае получим, что (x, y)R, во втором – (y, x)R, в третьем – (x, y)R и (y, x)R. Это утверждение означает, что отношение R слабо полно.

2. Отношение R асимметрично тогда и только тогда, когда Rd полно.

Доказательство. Пусть R – асимметрично. Тогда по определению, R R–1 = . Рассмотрим два случая.

1) (x, y)R. Тогда (х, y)R–1, значит, (x, y)Rd.

2) (x, y)R. Тогда (x, y)R и (y, x) R–1 = Rd.

В любом случае либо (x, y)Rd, либо (y, x)Rd, а это означает, что Rd полно.

Докажем обратное следствие. Пусть Rd полно. Снова рассмотрим два случая:

а) (x, y)Rd, тогда (y, x)R;

б) (y, x)Rd, тогда (x, y)R.

Так как Rd полно, то либо случай а), либо случай б) всегда будет иметь место, а отсюда следует невозможность одновременного выполнения yRx и xRy. Это означает, что R асимметрично.

Задание 1. Доказать, что асимметричное отношение антирефлексивно.

Задание 2. Доказать, что ацикличное отношение асимметрично.

Задание 3. Доказать, что если отношение антирефлексивно и транзитивно, то оно ациклично.

ВОПРОС №8

элементов пришлось отбросить при выборе.

4) K: (YX) => (C(Y) = Y(X)) - свойство строгого нас-

 ледования (константности).

Перечислим ряд закономерностей, которые вытекают из названных свойств функций выбора.

Пусть (H), (C), (O), (K)   - множества функций выбора,

удовлетворяющих соответствующим свойствам.

ТЕОРЕМА 3. (K)(H)(C)(O). Т.е. если функция выбора

обладает свойством K, то она обладает одновременно свойствами H, C, O.

ТЕОРЕМА 4. Для того чтобы функции выбора порождалась бинарным отношением R посредством механизма доминирования или блокировки, необходимо и достаточно, чтобы она принадлежала области (H)(С).

ТЕОРЕМА 5. Для того чтобы функция выбора порождалась качественным порядком необходимо и достаточно, чтобы она принадлежала области (H)(С)(O).

ТЕОРЕМА 6. Для того чтобы функция выбора порождалась слабым порядком необходимо и достаточно, чтобы она принадлежала области (К).

Свойства Н, С, О кажутся очень естественными при выборе. Тем не менее, несложно привести пример, когда эти свойства не выполняются .

Пусть Х - множество точек на плоскости ограниченных прямоугольником АBCD: A(0,0), B(0,4), C(2,4), D(2,0)

Ставится следующая задача выбора: на множестве Х найти геометрическое место центров кругов, включенных в Х, максимального радиуса. Покажем что соответствующая функция выбора не обладает ни одним из свойств H, K, O, C.

1) Пусть Х = АBCD; Y = АEFD; E(0,2), F(2,2) (Рис. 1). Тогда

множеством центров кругов максимального радиуса, вписанных в ABCD, яввляется отрезок PQ (C(X)=PQ), где P(1,3), Q(1,1). Тогда C(X)Y = QR. Очевидно, что C(Y)=Q. Получили, что на множестве X нашлось такое подмножество Y, что хотя

YX, тем не менее множество YC(Х) не включено в C(Y), т.е нарушаются условия H и K.

2) Пусть Y = MNOT: M(0,1), N(0,3), O(2,3), T(2,1) (Рис. 2).

Так как, по прежнему, C(X) = PQ, а C(Y)=R(3,3), то

C(X)YX.Равенство C(X)=C(Y) при этом не выполняется, т.е нарушается условие O.

ВОПРОС №10

Объекты “а” можно переставлять n1! способами, но поскольку все они одинаковы, то такие перестановки не дают новых комбинаций. Следовательно, число действительно различных перестановок за счет совпадения первых n1 элементов будет в n1! раз меньше, чем в случае всех различающихся элементов. Аналогично, совпадение n2 элементов “b” уменьшает число различных перестановок в n2! раз, и т.д. Поскольку при несовпадении всех n элементов количество перестановок было бы равно n!, то

Р(n1, n2,…, nm) = .2.4. Сочетания без повторений. Так называются неупорядоченные r-выборки из n-множества (r < n).

Свойство. Число r-сочетаний без повторений из n предметов обозначается и равно .

Доказательство. Каждое неупорядоченное r-сочетание можно упорядочить r! способами и получить r-размещение. Следовательно, сочетаний в r! раз меньше, чем размещений, т.е.

= Р(r, n – r).

В примере 1.1.в) 6 делегатов из 125 человек можно выбрать = 4.691109 способами2.5. Сочетания с повторениями. Это неупорядоченные r-выборки из (n)-множества. Они получаются, например, если необходимо r неразличимых предметов разместить по n ящикам, в частности возможно n > r.

Свойство. Число r-сочетаний с повторениями из n предметов обозначается и равно .

2.6. Свойства чисел сочетаний

1. =. Это свойство вытекает из формулы числа сочетаний.

2. = + .

Доказательство. Разобьем все r-сочетания на два класса. К первому классу отнесем сочетания, содержащие объект an, ко второму классу – не содержащие an. Так как в первом классе меняются только r – 1 элементов из n – 1 возможных, то он содержит r – 1-сочетания из n – 1-множества, следовательно, в нем элементов. Второй класс содержит все r-сочетания из n – 1-множества, т.к. в них нет одного элемента – an. Следовательно, в нем элементов. Общее число сочетаний, согласно правилу суммы равно + , что и требовалось доказать.

ВОПРОС №13

(2.12)

Следовательно, является производящей функцией для последовательности .

Сопоставляя (2.12) с (2.11) получаем

,

где – гармонические числа.

4.3. Пример использования производящих функций

Решим с помощью производящих функций следующую комбинаторную задачу.

Пример 2.9. На окружности находится 2n точек. Сколькими способами можно их попарно соединить так, чтобы полученные отрезки не соединялись друг с другом?

Решение. Обозначим un – число способов соединить 2n точек. Построим рекуррентное соотношение.

Формально положим u0 = 1 (нет точек, нет пересечений, следовательно, способ единственный). u1 = 1 – очевидно, т.к. две точки соединяются единственным способом, и пересечений нет. u2 = 2. Способы соединения изображены на рис. 2.1.

Пусть n > 1. Выберем одну из 2(n + 1) точек, обозначим ее А. Соединим А с вершиной В, выбрав ее так, чтобы с обеих сторон от соединяющей их линии находилось четное число точек. Пусть слева будет 2k точек, справа – 2(n – k). 2k точек можно соединить между собой uk способами, 2(n – k) точек – unk способами. При этом линии не пересекутся, т.к. 2k и 2(n – k) точек расположены по разные сторона от АВ.

Следовательно, при фиксированном k получим ukunk способов соединения. Но k меняется от 0 до n. Следовательно,

un +1 = u0un + u1un–1 + … + unu0. (2.13)

Получили искомое нелинейное рекуррентное соотношение, фор-мула общего решения которого нам, к сожалению, неизвестна.

Чтобы получить явную формулу для un, построим для этой последовательности производящую функцию.

u(x) = u0 + u1х + u2 x2 + u3 x3 + …. (2.14)

Имеем, согласно формуле Коши:

[ u(x) ]2 = (u0)2 + (u0u1 + u1u0 ) х + (u0u2 + u1u1 + u2u02 + …

Видно, что коэффициенты для разложения [ u(x) ]2 можно получить с помощью формулы (2.13).

Из (2.14) имеем: = u1 + u2 x + u3 x2 + ….

Подставим выражение uk согласно (2.13). С учетом того, что u1 = (u0)2 получим: . Следовательно, имеем квадратное уравнение относительно u(х). Решив его, получим .

По формуле бинома имеем:

++…= 1 –.

Умножим каждое k-е слагаемое на 1 = . Тогда коэффициент k-го члена ряда равен:

ВОПРОС №17

ОЧЕРЕДЬ ; NOWY [ v ]False ;

while ОЧЕРЕДЬ <> do

begin p ОЧЕРЕДЬ ; Write ( p ) ;

for u СПИСОК [ p ] do

if NOWY [ u ] then

begin ОЧЕРЕДЬ u;

NOWY [ u ]False

end

end

end;

Как мы уже говорили, основная программа отличается от соответствующей программы поиска в глубину только именем вызываемой во втором цикле процедуры. Аналогично можно показать, что алгоритм корректен, а его вычислительная сложность также равна .

2.4. Модификации алгоритмов

С помощью алгоритмов поиска в глубину и в ширину легко решаются следующие задачи:

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

Для этого в основной программе вводится переменная, обозначающая число связных компонент, которая увеличивается при обнаружении каждой непросмотренной вершины в этой программе.

  1. Поиск маршрута (пути) между двумя фиксированными вершинами u и v и определение его длины.

Поиск начинается из вершины u и продолжается, пока не встретится вершина v или не произойдет возврат в основную программу. Если поле возврата из процедуры вершина v не найдена, значит нужного маршрута (пути) не существует, и задача не имеет решения. Длиной маршрута (пути) в невзвешенной графе назовем количество ребер (дуг), составляющих маршрут (путь).

Маршрут (путь) может строится с помощью любого алгоритма поиска. При поиске в глубину маршрут (путь) может не быть кратчайшим, но он легко восстанавливается, так как содержится в стеке. Для его вывода достаточно при возврате из рекурсивной процедуры печатать верхний элемент стека, при использовании нерекурсивной процедуры нужно печатать содержимое стека, одновременно очищая его. Для определения длины маршрута (пути) вводим переменную, обозначающую число ребер (дуг), которая увеличивается при каждом вызове рекурсивной процедуры, кроме первого, и уменьшается перед возвратом из нее, если вершина еще не найдена. Аналогичные действия проводятся и в нерекурсивной процедуре поиска.

При поиске в ширину маршрут (путь) является кратчайшим, но его труднее восстанавливать. Для этого нужно организовать массив, i-ым элементом которого является вершина, предшествующая вершине i при обходе, этот элемент заполняется при помещении вершины i в очередь. Для нахождения длина маршрута (пути) вводится переменная – число слоев, которая увеличивается при переходе к новому слою, предварительно необходимо считать число вершин в каждом слое.

  1. Построение остова графа.

Напомним, что остовом называется остовный подграф, являющийся деревом. Такой подграф можно построить с помощью алгоритма поиска любого вида. Для этого во время поиска параллельно строится новый граф: если найдена новая еще непомеченная вершина u в списке инцидентности вершины v, то ребро (v,u) добавляется в строящийся граф. Если исходный граф - несвязный, то задача не имеет решения. Для связного исходного графа получим, что построенный граф является связным, так как новые ребра достраиваются к уже просмотреннымвершинам, которые между собой связаны. Этот граф не содержит циклов, так как в него не добавляется ребро оба конца которого просмотрены, то есть связаны маршрутом. Следовательно, построенный граф является деревом.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]