Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРАКТ_1_МАТЕМ_ВВЕДЕНИЕ.doc
Скачиваний:
23
Добавлен:
02.04.2015
Размер:
544.77 Кб
Скачать

1.3. Дискретная математика

Простейшие комбинаторные конфигурации

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

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

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

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

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

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

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

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

Пример 1.7. Из 25 человек, членов комитета, надо выбрать: председателя, вице-председателя, секретаря и казначея (4 человека). Совмещение должностей не допускается.

В этом примере повторение элементов невозможно, т.к. не допускается совмещение должностей. Кроме того, в данной 4-выборке важен порядок выбора, т.к. надо не просто выбрать заданное число человек, но необходимо связать каждого выбранного с определенной должностью. Следовательно, здесь речь идет о размещении без повторений. Число способов выбора 4-х членов в руководство комитета из 25 человек равно = 25242322 = 303600.

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

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

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

Пример 1.8. Из 125 человек надо выбрать 6 делегатов на конференцию.

В данном примере порядок выбора не играет роли, следовательно, имеет место 6-сочетание из 125-множества. 6 делегатов из 125 человек можно выбрать = 4.69110 9 способами

Пример 1.9. В лотерее из 36 номеров будут выбраны 5. Какова вероятность угадать ровно 3 номера из 5?

Решение. 3 номера из 5 верных можно выбрать способами. На каждый угаданный номер могут приходиться любые 2 из 31 невыбранных номеров, т.е.сочетаний. Окончательное число благоприятных случаев равно. Общее же число случаев равно количеству выпадения 5 номеров из 36, т.е..

Отсюда вероятность угадывания равна  0.0123 – немногим более 1%.

Комбинаторные алгоритмы

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

Главная сложность составления таких ”генераторов” состоит в необходимости сделать их структуру независимой от размерности порождаемых ими множеств, которая может очень сильно варьироваться в различных задачах. Например, алгоритм генерации r-размещений с повторениями очень легко реализовать с помощью r вложенных циклов:

for j1 := 1 to n do

for j2 := 1 to n do

…………………..

for jR := 1 to n do writeln (j1, j2, … jR);

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

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

1. Алгоритм генерации r-размещений с повторениями. В размещениях с повторениями на k-месте должно стоять число из набора 1,…, n независимо от чисел, стоящих на предыдущих позициях.

Пример 1.11. Пусть r = 3; n =2. Надо получить следующие векторы Х: (1 1 1), (1 1 2), (1 2 1), (1 2 2), (2 1 1), … (2 2 2).

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

Procedure Razm_P(k);

begin

if k=r+1 then write(A[1],…A[r]);{Комбинация получена}

else

for y:=1 to n do

begin A[k]:=y; Razm_P(k+1);

end;

end;

begin

Razm_P(1);

end.

Назначение процедуры Razm_P(k)– получение k-й компоненты вектора Х = (A[1],…A[r]). Если k = r+1 – это означает, что вектор полностью получен, и надо его использовать (вывести на экран). В противном случае надо получить следующую компоненту. Так как на ее месте может стоять любое число от 1 до n, то перебор элементов обеспечивается циклом for y:=1 to n do без каких-либо ограничений.

2. Алгоритм генерации n-перестановок. Обозначим X[j] – массив переставляемых номеров объектов, dop[j] – массив логических переменных, соответствующих X[j]; если X[j] уже зафиксирован, то dop[j] = False – использовать X[j] повторно нельзя, если же dop[j] = True, то использовать X[j] можно. Набор dop[j], j=1,…k, равных True в данном варианте алгоритма определяет множество допустимых значений для у. Массивы dop и X объявляются как глобальные переменные.

Procedure Lex(k);

begin if k=n+1 then {Комбинация получена}

for i:=1 to n do write(x[i]:4);

else

for y:=1 to n do