В этом плане комбинаторику можно называть “логикой вариантов” и это будет вполне резонно – в этой науке больше чистой логики, чем математики.
Для демонстрации необходимости знаний комбинаторики и в качестве первой практической задачи рассмотрим несколько простых, практических вопросов.
· Вам, очевидно, известно, что внутренний, “машинный” язык компьютера люди построили по образу и подобия человеческого языка: буквы, слова, предложения.
Обстоятельства надежности записи и чтения на этом языке привели к решению сделать компьютерный язык предельно бедным. В нем всего две буквы (“0” и “1”, “+ " и “–”, “да” и “нет”, – в зависимости от физического процесса записи), всегда 8 букв в слове, отсутствует пробел между словами (это была бы третья буква).
И вот возникает вопрос – а сколько вариантов у машинного слова, т.е. у одного байта? Еще проще – если одним байтом записывать числа, то сколько положительных целых чисел можно охватить 1 байтом? В поисках ответа можно терпеливо выписывать все возможные варианты слов из 8 нулей и единиц: 00000000, 00000001, 00000010 и т.д. до 11111111. Но ведь это долго и надо быть уверенным, что ничего не пропустили!
Так вот – законы комбинаторики позволяют мгновенно решить эту задачу и получить ответ – вариантов записи байта ровно 256.
Это чисто практический вопрос – ведь компьютер с возможностью считать в целых числах от –128 до 127 никто не купит.
Ну, если целые числа хранить в 2-х машинных словах, в 2-х байтах или в 16 “разрядах”.? Уж это новое число вариантов никто не согласится вычислять простым перебором! А ответ комбинаторики все тот же прост – в этом случае есть возможность работать с целыми числами от –32768 до 32767.
Оказывается, что эти числа не надо запоминать, поскольку алгоритм их расчетов очень прост и посилен человеку, осилившему только арифметику.
· Рассмотрим второй пример решения практического вопроса с использованием правил комбинаторики. Пусть решается вопрос об установлении проводной связи между 25 предприятиями фирмы по следующему принципу – каждое предприятие должно иметь отдельный канал связи со всеми остальными. Сколько таких каналов придется установить в фирме?
Для решения вопроса можно нарисовать выпуклый 25–угольник и провести в нем все диагонали, пересчитав в конце их число и не забыв добавить число сторон. Человек, знающий комбинаторику, во-первых, не сделает ошибки –25·24=600 каналов. Во-вторых, он мгновенно укажет верный ответ – всего требуется 300 каналов. Комментарии излишни…
Для освоения наиболее популярных применений комбинаторики нам потребуется использовать, по крайней мере, два ее основных понятия – перестановки и сочетания.
Перестановками называют операции над упорядоченным рядом из n различных объектов, в процессе которых “списочный состав” ряда не изменяется, но “места” объектов в этом ряду изменяются от варианта к варианту. Не будем тратить время на обоснование расчетной формулы для произвольного n, а попробуем найти число перестановок в ряду из 1, 2 и 3 предметов.
Воспользуемся для этого простенькой схемой:
n=1 A 1 вариант.
n=2 AB BA 1·2= 2 варианта.
n=3 ABC ACB BCA BAC CAB CBA 1·2·3= 6 вариантов.
Можно доказать строго, что в общем случае число перестановок в ряду из n элементов составит
{8–1}Сочетаниями называют операции над множеством из n различных объектов, в процессе которых образуют подмножества из k элементов, взятых из исходного множества, так, чтобы варианты подмножеств отличались друг от друга хотя бы одним элементом.
Опустим доказательство формулы для расчета числа сочетаний из n по k в общем виде и приведем лишь примеры для числа сочетаний из 3 по 2 и из 5 по 3.
· Элементы исходного множества A, B, C.
Варианты подмножеств: AB, AC, BC – всего три.
· Элементы исходного множества A, B, C, D, E.
Варианты подмножеств: ABC, ABD, ABE, ACD, ACE, ADE, BCD, BCE, BDE, CDE – всего десять.
В общем случае число вариантов сочетаний или просто – число сочетаний из n по k определяется по формуле
= {8–2}Существует еще один способ вычисления числа сочетаний из n по k – с использованием коэффициентов в развернутой форме бинома (p+q)n. В самом деле, например, при n=3 коэффициенты при степенях разложения составляют 1, 3, 3, 1 – а это и есть сочетания из 3 по 0, 1, 2, 3 и 4 элементов.
Известна также схема простого расчета биномиальных коэффициентов, которая носит названия треугольника Паскаля:
Для n
1 | 1 | 1 | ||||||
1 | 2 | 1 | 2 | |||||
1 | 3 | 3 | 1 | 3 | ||||
1 | 4 | 6 | 4 | 1 | 4 | |||
1 | 5 | 10 | 10 | 5 | 1 | 5 | ||
1 | 6 | 15 | 20 | 15 | 6 | 1 | 6 | |
1 | 7 | 21 | 35 | 35 | 21 | 7 | 1 | 7 |
Первый элемент любого основания равен 1, второй – номеру основания, а все последующие – сумме двух "вышестоящих".
При вычислении моментов распределения случайных величин полезно использовать некоторые удобные (как для прямого расчета, так и для составления компьютерных программ) выражения.
· Пусть требуется просуммировать ряд чисел T1, T2, ……Tk, …Tm и мы замечаем, что они отличаются друг от друга на одну и ту же величину d, т.е. образуют арифметическую прогрессию. В этом случае полезна замена –
{8–3}Таким образом, среднее значение для ряда таких чисел составит:
. {8–4}· Для вычисления суммы чисел натурального ряда или суммы квадратов этих чисел удобны формулы:
; . {8–5}· Если некоторая случайная величина Y может быть выражена через другую в виде
Y= a·X+b, то справедливы соотношения:
M(Y) = a·M(X)+b; D(Y) = a2 · D(X). {8–6}
· Если некоторая случайная величина X имеет математическое ожидание M(X) и среднеквадратичное отклонение S(X) , то "нормированная" случайная величина:
{8–7} имеет нулевое математическое ожидание и единичную дисперсию.Несмотря на относительную простоту, статистические расчеты требуют значительных затрат времени, повышенного внимания и, связанного с этим риска ошибок. Кроме того, в большинстве случаев практики после расчетов выборочных значений и выдвижения гипотез почти всегда приходится обращаться к статистическим таблицам, т.е. к данным классических распределений.
Большую часть этих трудностей можно преодолеть – путем использования специальных статистических программ (или целого набора – пакета прикладных программ).
На сегодня программное обеспечение статистических расчетов выполнено, как правило, на уровне глобальных задач прикладной статистики, системного анализа и т.п. Надежных, простых в употреблении компьютерных программ практически нет – считается, что писать и распространять такие программы не престижно! С другой стороны, потребители таких программ – профессиональные статистики не испытывают затруднений в самостоятельном написании удобных (для себя) программ и даже пакетов. То, что есть – не хорошо и не плохо, просто это традиция и нарушать ее нет желания ни у фирм, производящих программы, ни у потенциальных пользователей.
Поэтому имеет смысл затратить некоторое время на анализ определенных трудностей, которые наверняка будут проявляться при программировании типовых статистических расчетов.
Оказывается, что здесь программиста поджидают "подводные камни", тупики и прочие неприятности, связанные не только с реальными возможностями компьютера, но и с самими формулами статистики, особенностями этой науки.
Пусть у нас имеется массив выборочных значений случайной величины и соответствующие частости (числа наблюдений) этих значений, то есть матрица из двух столбцов и m строк.
Обозначим такой массив W и рассмотрим вопрос о вводе исходных данных. Конечно же, мы быстро сообразим, что ввод надо организовать для пар значений Xi, ni – только в этом варианте можно снизить вероятность ошибок.
Вопрос об общем количестве наблюдений можно не ставить в начале диалога – освободить пользователя от необходимости вычислять N = n1 + n2 + … + nm. Организовать сигнал конца ввода не представляет проблем – скажем, ввести отрицательное число наблюдений на очередном шаге.
Как организовать подготовку данных для расчета выборочных моментов – например, выборочного среднего Mx и выборочной дисперсии Dx?