/
Автор: Кнут Д.Э.
Теги: приборы, устройства, аппараты с механизмами передачи или с подвижными механизмами компьютерные технологии программирование искусство программирования генерация всех сочетаний
ISBN: 978-5-8459-1132-2
Год: 2007
Похожие
Текст
НОВЫЕ РАЗДЕЛЫ КЛАССИЧЕСКОГО ТРУДА
Искусство
программирования
ТОМ 4
Генерация
всех сочетаний
и разбиений
ВЫПУСК
Дональд Э. Кнут
ИСКУССТВО
ПРОГРАММИРОВАНИЯ
том 4, выпуск з
THE ART OF
COMPUTER PROGRAMMING
VOLUME 4, FASCICLE 3
Generating All Combinations
and Partitions
donald e. knuth Stanford University
▼t
addison-wesley
upper saddle river, nj • boston • indianapolis • san francisco
new york • toronto • montreal • london • munich • paris • madrid
capetown • sydney • tokyo • singapore • mexico city
ИСКУССТВО
ПРОГРАММИРОВАНИЯ
том 4, выпуск з
Генерация всех сочетаний
и разбиений
дональд э. кнут Станфордский университет
москва • санкт-петербург • киев
2007
ББК 32.973.26-018.2.75
К53
УДК 681.142.2
Издательский дом "Вильяме"
Зав. редакцией С.Н. Тригуб
Перевод с английского и редакция канд. техн. наук И. В. Красикова
По общим вопросам обращайтесь в Издательский дом "Вильяме" по адресу:
info@williamspublishing.com, http://www.williamspublishing.com
115419 , Москва, а/я 783; 03150, Киев, а/я 152
Кнут, Дональд, Э.
К53 Искусство программирования, том 4, выпуск 3: генерация всех сочетаний
и разбиений. : Пер. с англ. - М. : ООО "И.Д. Вильяме", 2007. - 208 с. : ил. -
Парал. тит. англ.
ISBN 978-5-8459-1132-2 (рус.)
Эта книга представляет собой один из выпусков очередных томов всемирно
известной работы Искусство программирования, не нуждающейся ни в представлении,
ни в рекламе. В данный выпуск вошли разделы четвертного тома, посвященные
вопросам генерации всех сочетаний и разбиений. Материалы выпуска в будущем
войдут в четвертый том серии, посвященный комбинаторным алгоритмам — возможно,
с определенными дополнениями и исправлениями на основе отзывов читателей
данного выпуска.
ББК 32.973.26-018.2.75
Все названия программных продуктов являются зарегистрированными торговыми марками
соответствующих фирм.
Никакая часть настоящего издания ни в каких целях не может быть воспроизведена в какой бы то
ни было форме и какими бы то ни было средствами, будь то электронные или механические, включая
фотокопирование и запись на магнитный носитель, если на это нет письменного разрешения издательства
Addison-Wesley Publishing Company, Inc.
Rights to this book were obtained by arrangement with Addison-Wesley Longman, Inc.
Copyright © 2005 by Pearson Education
Russian language edition published by Williams Publishing House according to the Agreement with R&I
Enterprises International, Copyright © 2007
ISBN 978-5-8459-1132-2 (рус.)
ISBN 0-201-85394-9 (англ.)
© Издательский дом "Вильяме", 2007
© by Pearson Education, Inc., 2005
Оглавление
Предисловие 7
7 Комбинаторный поиск 9
7.2 Генерация всех возможных объектов 9
7.2.1 Генерация основных комбинаторных объектов 9
7.2.1.1 Генерация всех п-кортежей 9
7.2.1.2 Генерация всех перестановок 9
7.2.1.3 Генерация всех сочетаний 9
7.2.1.4 Генерация всех разбиений 52
7.2.1.5 Генерация всех разбиений множеств 83
Ответы к упражнениям 114
Предметный указатель 189
От издательства
Вы, читатель этой книги, и есть главный ее критик и комментатор. Мы ценим
ваше мнение и хотим знать, что было сделано нами правильно, что можно было
сделать лучше и что еще вы хотели бы увидеть изданным нами. Нам интересно
услышать и любые другие замечания, которые вам хотелось бы высказать в наш
адрес.
Мы ждем ваших комментариев и надеемся на них. Вы можете прислать нам
бумажное или электронное письмо, либо просто посетить наш Web-сервер и оставить
свои замечания там. Одним словом, любым удобным для вас способом дайте нам
знать, нравится или нет вам эта книга, а также выскажите свое мнение о том, как
сделать наши книги более интересными для вас.
Посылая письмо или сообщение, не забудьте указать название книги и ее
авторов, а также ваш обратный адрес. Мы внимательно ознакомимся с вашим мнением
и обязательно учтем его при отборе и подготовке к изданию последующих книг.
Наши координаты:
E-mail: inf oQwilliamspublishing. com
WWW: http: //www. williamspublishing. com
Информация для писем из:
России: 115419, Москва, а/я 783
Украины: 03150, Киев, а/я 152
Предисловие
В предисловии к первому изданию я просил читателей не обращать
внимания на ошибки. В этом издании я так не поступаю и выражаю
благодарность тем читателям, кто не внял моей просьбе.
— Стюарт Сатерленд (Stuart Sutherland),
Международный словарь психологии (The International Dictionary of
Psychology) (1996)
Эта брошюра представляет собой третий выпуск книги Искусство
программирования, том 4: Комбинаторные алгоритмы. Как пояснялось в выпуске 1 к тому 1,
я издаю материалы в такой форме в связи с тем, что работа над томом 4 займет
еще много лет. Я не могу заставлять читателей ждать так долго; кроме того, мне
нужна обратная связь с ними.
В этом выпуске содержатся разделы 7.2.1.3, 7.2.1.4 и 7.2.1.5 очень большой главы,
посвященной комбинаторному поиску. В окончательном виде глава 7 должна будет
состоять из трех томов (4А, 4В и 4С) — конечно, если это позволит мое здоровье.
Глава будет начинаться с краткого обзора теории графов, после которого в
разделе 7.1 будут рассматриваться вопросы работы с битами и алгоритмы для работы
с булевыми функциями. Раздел 7.2 посвящен генерации всех возможных объектов
и начинается с подраздела 7.2.1 — генерации основных комбинаторных объектов.
В разделе 7.2.1.1 детально рассматривается вопрос о генерации всех п-элементных
кортежей, а генерации всех перестановок посвящен раздел 7.2.1.2. Затем наступает
очередь данной брошюры, в которой содержатся разделы 7.2.1.3, где
рассматриваются вопросы генерации сочетаний t элементов из n-элементного множества, 7.2.1.4
о разделении целых чисел на слагаемые и 7.2.1.5 о разбиении множеств. Выпуск 4
содержит разделы 7.2.1.6, посвященный деревьям, и 7.2.1.7, темой которого
является история комбинаторной генерации. Раздел 7.2.2 посвящен перебору с возвратом
в целом. Набросок содержания всей главы 7 можно найти на Web-сайте книги
Искусство программирования.
Написание этого материала доставило мне такое же удовольствие, которое я
испытал много лет назад при работе над томом 2 Искусства программирования. К
своему немалому удовольствию я тогда обнаружил, что основные принципы теории
вероятности и теории чисел естественным образом проявляются при изучении
алгоритмов для генерации случайных чисел и арифметики; при подготовке к написанию
раз дел а 7.2.1 я нашел, что основные принципы элементарной комбинаторики точно
так же естественным образом проявляются при изучении алгоритмов
комбинаторной генерации.
В настоящей брошюре вы найдете множество красивых узоров, образованных
сочетаниями, с повторениями и без них, и узнаете об их связи со знаменитыми
теоремами экстремальной комбинаторики. Затем я расскажу вам занимательнейшую
историю о разбиениях. Поверьте, теория разбиений — одна из интереснейших глав
во всей математике. В разделе 7.2.1.5 малоизвестный числовой треугольник,
открытый Пирсом (С. S. Peirce), поможет упростить и унифицировать изучение разбиений
множеств — еще одной интереснейшей темы. Попутно вы познакомитесь с двумя
важными математическими методами анализа алгоритмов — формулой сложения
Пуассона и мощным методом седловой точки. Как и в предыдущих выпусках, здесь
тоже есть игры и головоломки.
Изначально я намеревался изложить эти темы существенно более кратко, но
когда увидел, сколь фундаментальные идеи заложены в комбинаторике, то понял,
что не успокоюсь до тех пор, пока не смогу полностью изложить их.
Я благодарю Франка Раски (Frank Ruskey) за смелое решение предложить
ранние черновые варианты этого материала студентам и за то, что он поделился со мной
результатами этого эксперимента. Мне помогли и многие другие читатели моих
черновиков; особенно хочу отметить весьма ценные комментарии Джорджа Клементса
(George Clements) и Сванте Янсона (Svante Janson).
Я с удовольствием уплачу 2 доллара 56 центов тому, кто первым сообщит мне
о любой замеченной в данном выпуске1 ошибке — неважно, типографской,
технической или исторической. Все существенные предложения по улучшению текста я
оцениваю в 32 цента каждое. (Кроме того, если вы найдете лучшее решение
упражнения, то сможете покрыть себя неувядающей славой — ваше имя будет опубликовано
в окончательном издании книги. :-)
Обозначения, используемые в этой брошюре и не поясненные отдельно, имеют
тот же смысл, что и в первых трех томах Искусства программирования; их описания
приведены в конце каждого тома. Естественно, аналогичное описание обозначений
будет приведено в свое время и в томе 4.
Все примеры на машинном языке во всех будущих изданиях Искусства
программирования основаны на компьютере MMIX, который описан в выпуске 1 к тому 1.
Перекрестные ссылки на пока еще не написанный материал могут выглядеть
в тексте как '00'; это заполнитель, который будет заменен реальным числом в
будущем.
Приятного чтения!
Стэнфорд, Калифорния
Июнь 2005 Д.Э.К.
Слово "Каролева" не может находиться в канце страки, в таком слутчаи
страку надо разбить в трутом месте.
— Александр Хьюм (Alexander Hume), Орфографика аглицкого языка
(Orthographie... of the Britan Tongue)
Конечно же, имеется в виду оригинальное издание. — Примеч. пер.
Глава 7
Комбинаторный поиск
Начальные разделы этой главы представлены в выпусках 0 и 1 тома 4, запла-
7.2 Генерация всех возможных объектов
7.2.1 Генерация основных комбинаторных
объектов
В этом разделе рассматриваются методы обхода всех возможных объектов
некоторого комбинаторного универсума, поскольку часто приходится сталкиваться с
задачами, в которых необходим или желателен исчерпывающий перебор...
7.2.1.1 Генерация всех п-кортежей
Начнем с малого — рассмотрим, как получить все 2П строк из п бинарных
цифр...
7.2.1.2 Генерация всех перестановок
Следующей по важности после генерации кортежей из п элементов является
задача генерации всех перестановок некоторого заданного множества или
мультимножества. ..
-i- Полностью тексты разделов 7.2.1.1 и 7.2.1.2 можно найти в выпуске 2 тома 4.
7.2.1.3 Генерация всех сочетаний
Комбинаторика часто определяется как "изучение перестановок, сочетаний и т.п.",
так что теперь обратим наше внимание на сочетания. Сочетание из п элементов по
t (combination of п things, taken t at a time), которое часто называют просто
^-сочетанием п элементов, представляет собой способ выбора подмножества размера t из
данного множества размера п. Из уравнения 1.2.6-(2) мы знаем, что имеется ровно
(?) способов сделать это, а из раздела 3.4.2 — как выбрать ^-сочетание случайным
образом.
нированным к выпуску в 2006-2007 г.
10 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
Выбор t из п объектов эквивалентен выбору п — t оставшихся элементов. Эту
симметрию можно подчеркнуть, полагая везде далее, что
n = s + t, (1)
и говоря о ^-сочетании п элементов как о (s, ^-сочетании. Таким образом, (s,t)-
сочетание представляет собой способ разделить s Н-1 объектов на два набора
размеров s и t.
Если я спрашиваю, сколько существует способов выбрать 21 элемент из 25, то
на самом деле спрашиваю, сколькими способами можно выбрать 4 элемента
из 25. Способов выбрать 21 элемент столько же, сколько и оставить 4.
— Август де Морган (Augustus de Morgan),
Эссе о вероятностях (An Essay on Probabilities) (1838)
Имеется два основных способа представления (s, ^-сочетаний: можно
перечислить выбранные элементы ct... с2с1, а можно работать с бинарными строками
an_i... aiao, для которых
an_i Н Ь ai + а0 = t. (2)
Последнее представление содержит s нулей и t единиц, соответствующих невыбран-
ным и выбранным элементам. Представление в виде списка ct... с2с1 лучше
подходит для случаев, когда элементы являются членами множества {0,1,...,п — 1}
и мы перечисляем их в убывающем порядке:
n > ct > • • • > с2 > ci ^ 0. (3)
Бинарная запись объединяет эти два представления, поскольку список элементов
ct... с2с1 соответствует сумме
71-1
2* + ... + 2С2 + 2C1 = а^к = (<*п-1 • • • аюо)2 . (4)
fc=0
Конечно, мы также можем перечислить позиции bs .. .6261 нулей в строке an-i • • •
aia0, где
n > bs > • • • > 62 > 61 ^ 0. (5)
Сочетания важны не только потому, что они вездесущи в математике, но и
потому, что они эквивалентны многим другим конфигурациям. Например, каждое (5, t)-
сочетание соответствует сочетанию s + 1 объекта по t с повторениями, именуемому
также мультисочетанием (multicombination), а именно последовательности целых
чисел dt... d2di> обладающей тем свойством, что
s ^ ck ^ • • • > d2 ^ di ^ 0. (6)
Одна из причин заключается в том, что dt.. .d2d\ удовлетворяет (6) тогда и только
тогда, когда ct... c2ci удовлетворяет (3), где
ct = dt + £-l, c2 = d2 + 1, ci=di (7)
7.2.1 ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 11
Таблица 1. (3,3)-сочетания и их эквиваленты
0,50,40,30,2(11(10
С3С2С1
dzd,2d\
Р3Р2Р1Р0
qz42q\qo Путь
000111
543
210
000
210
4111
3000 Н
001011
542
310
100
310
3211
2100 Н
001101
541
320
ПО
320
3121
2010 Н
001110
540
321
111
321
3112
2001 Н
010011
532
410
200
010
2311
1200 ffl
010101
531
420
210
020
2221
1110 ffl
010110
530
421
211
121
2212
1101 ffl
011001
521
430
220
030
2131
1020 ffl
011010
520
431
221
131
2122
1011 ffl
011100
510
432
222
232
2113
1002 ffl
100011
432
510
300
ПО
1411
0300 ffl
100101
431
520
310
220
1321
0210 ffl
100110
430
521
311
221
1312
0201 ffl
101001
421
530
320
330
1231
0120 ffl
101010
420
531
321
331
1222
0111 ffl
101100
410
532
322
332
1213
0102 ffl
110001
321
540
330
000
1141
0030 ffl
110010
320
541
331
111
1132
0021 И
110100
310
542
332
222
1123
0012 ffl
111000
210
543
333
333
1114
0003 ffl
(см. упражнение 1.2.6-60). Есть и другой полезный способ связать сочетания с
повторениями и обычные сочетания, предложенный Соломоном Голомбом (Solomon
Golomb) [АММ, 75 (1968), 530-531], а именно: определить
{Cj, если Cj ^ s; , ч
' (8)
eCj-s, если Cj > s.
В этом виде числа ... е\ не обязательно находятся в убывающем порядке, но
мультимножество {ei, в2,..., et} эквивалентно {ci, С2,..., ct} тогда и только тогда, когда
{ei, ег,..., et} является множеством (см. табл. 1 и упражнение 1).
Следует отметить, что (s, ^-сочетание также эквивалентно композиции1
(composition) п -f 1 из t + 1 частей в виде упорядоченной суммы
n + l= pt + ---+Pi+po, гдер*,...,р1,р0 ^ 1. (9)
Связь с (3) в этом случае выглядит следующим образом:
pt = n-ct, Pt-l = ct - Q-i, Pi=c2-ci, p0 = ci + l. (10)
1 Здесь можно было бы говорить о разбиении, однако во избежание путаницы в дальнейшем,
будем переводить composition как "композиция", чтобы отличать ее от неупорядоченной суммы,
которой является разбиение. — Примеч. пер.
12 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
Аналогично: если qj = pj — 1, то мы получаем композицию s из £+1 неотрицательных
частей:
s = qt + • • • + qi + qo, где • • •, Qu Qo > 0, (11)
которая связана с (6) соотношениями
qt = s-dt, qt-i = dt - dt-i, ..., qi = d2 - du q0 = d\. (12)
Кроме того, легко видеть, что (s, ^-сочетание эквивалентно пути длиной s + £
из угла в угол на сетке sxt, поскольку такой путь содержит s вертикальных и t
горизонтальных шагов. Итак, сочетания можно изучать, как минимум, в восьми
различных обликах. В табл. 1 проиллюстрированы все (|) = 20 возможных сочетаний
для случая s = t = 3.
На первый взгляд такое количество представлений может только запутать, но
большинство из них можно легко вывести непосредственно из бинарного
представления ап-\.. .aido- Рассмотрим, например, "случайную" битовую строку
023 • • • aia0 = 011001001000011111101101, (13)
в которой имеется 5 = 11 нулей и t = 11 единиц, так что п = 24. Дуальное сочетание
bs ... b\ перечисляет позиции нулей, а именно:
23201917161413121141
поскольку крайняя слева позиция имеет номер п—1, а крайняя справа — 0. Основное
сочетание q ... с\ перечисляет позиции единиц:
222118151098765320.
Соответствующее мультисочетание dt.. .d\ указывает количество нулей справа от
каждой единицы:
101086222222110.
Сочетание pt.. .ро перечисляет расстояния между последовательными единицами,
если представить наличие дополнительных фиктивных единиц слева и справа от
бинарной строки:
21335111112121.
И наконец, неотрицательное сочетание qt--.qo подсчитывает, сколько нулей
находится между "ограждениями"-единицами:
10224000001010;
т.е. мы имеем
an_i... сцао = O^IO*"11... 109l1090. (14)
Пути в табл. 1 также имеют простую интерпретацию (см. упражнение 2).
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 13
Лексикографическая генерация. В табл. 1 сочетания an_i... а\ао и ct... с\
приведены в лексикографическом порядке, который одновременно представляет собой
лексикографический порядок dt... di. Заметим, что дуальные сочетания bs .. .Ь\
и соответствующие композиции pt... ро и qt... qo расположены в обратном
лексикографическом порядке.
Лексикографический порядок обычно предлагает наиболее удобный способ
генерации комбинаторных конфигураций. На самом деле алгоритм 7.2.1.2L уже решает
задачу генерации сочетаний в виде an_i... aiao, поскольку (s, ^-сочетания в форме
битовой строки представляют собой не что иное, как перестановки мультимножества
{s-0,£-l}. Этот алгоритм общего назначения может быть упрощен при
использовании для данного частного случая (см. также упражнение 7.1.3-19, в котором
представлена замечательная последовательность из семи битовых операций,
преобразующих любое заданное бинарное число (an_i.. .а\ао)2 в лексикографически
следующее t-сочетание в предположении, что п не превосходит длину машинного
слова).
Однако обратимся к генерации сочетаний в ином виде, а именно ct... С2С1; такой
вид в большей степени подходит для тех применений сочетаний, которые обычно
требуются, и является более компактным, чем битовая строка, при значениях £,
малых по сравнению с п. В первую очередь мы должны вспомнить о том, что при
очень небольших значениях t с задачей отлично справляются вложенные циклы.
Например, при t = 3 достаточно приведенных ниже инструкций.
Для сз = 2,3,..., п — 1 (в указанном порядке) выполнить:
Для С2 = 1,2,..., сз — 1 (в указанном порядке) выполнить: ^
Для с\ = 0,1,..., С2 — 1 (в указанном порядке) выполнить:
Посетить сочетание С3С2С1.
(См. аналогичную ситуацию в 7.2.1.1-(3).)
С другой стороны, когда t — переменная или ее значение не столь малое, мы
можем лексикографически генерировать сочетания при помощи следующего общего
способа, обсуждавшегося после алгоритма 7.2.1.2L: поиска крайнего справа элемента
Cj, который может быть увеличен, после чего все последующие элементы Cj-i... с\
получают минимально возможные значения.
Алгоритм L (Сочетания в лексикографическом порядке). Этот алгоритм
генерирует все ^-сочетания с*... С2С1 из п чисел {0,1,..., п — 1} для данных п ^ t ^ 0.
В качестве ограничителей используются дополнительные переменные q+i и ct+2-
L1. [Инициализация.] Установить Cj <— j — 1 для 1 ^ j < t; установить также
Ct+l <- п и Ct+2 <- 0.
L2. [Посещение.] Посетить сочетание q ... С2С1.
L3. [Поиск j.] Установить j <— 1. Затем, пока сj + 1 = Cj+i, установить Cj <— j — 1
и j <— j + 1- Эти действия повторяются до тех пор, пока в конечном итоге не
выполнится условие с3; + 1 ф Cj+i.
L4. [Выполнено?] Завершить выполнение алгоритма, если j > t.
14 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
L5. [Увеличение Cj.\ Установить Cj <— сj +1 и перейти к шагу L2. I
Проанализировать время работы этого алгоритма несложно. Шаг L3
устанавливает Cj <— j — 1 сразу после посещения сочетания, для которого c^+i = с\ + j,
а количество таких сочетаний равно количеству решений неравенств
П > Ct > • • • > Cj+i ^ j. (16)
Эта формула представляет собой эквивалент (t — ^-сочетания из п — j объектов
{п — 1,... так что присваивание Cj <— j — 1 выполняется в точности (t^j) раз.
Суммирование для 1 ^ j ^ t говорит нам, что количество выполнений шага L3
составляет
(::0Ч:>-(ГИГ)-С:.> <">
или в среднем
C + l)/ G) = (* + 1)!(*-1)! / sU!=7TI (18)
выполнений за одно посещение. Это отношение меньше 1 при t ^ s, так что
алгоритм L достаточно эффективен для таких случаев.
Однако значение t j (s + 1) может оказаться весьма большим, когда t близко к п,
a s мало. Иногда алгоритм L выполняет присваивание Cj <— j — 1 без
необходимости, когда Cj и так равно j — 1. Дальнейшее исследование показывает, что не всегда
нужно искать индекс j, необходимый в шагах L4 и L5, поскольку зачастую
корректное значение j можно предсказать на основе только что выполненных действий.
Например, после того как мы увеличили с\ и сбросили последовательность с^с2с\
в начальное значение 210, очередное сочетание неизбежно приведет к увеличению
сз. Эти наблюдения приводят нас к более эффективной версии алгоритма.
Алгоритм Т (Сочетания в лексикографическом порядке). Этот алгоритм
подобен алгоритму L, но работает быстрее. В нем также предполагается, что t < п.
Т1. [Инициализация.] Установить Cj <— j — 1 для 1 ^ j ^ t\ затем установить
Ъ+1 +- П, q+2 <- 0 И j «- t.
Т2. [Посещение.] (В этот момент j — наименьший индекс, такой, что c^+i > j.)
Посетить сочетание q ... С2С1. Затем, если j > 0, установить х <— j и перейти
к шагу Т6.
ТЗ. [Простой случай?] Если с\ + 1 < С2, установить с\ <— с\ + 1 и вернуться к шагу
Т2. В противном случае установить j <— 2.
Т4. [Поиск j.] Установить Cj-\ <— j — 2 и х <— с3; + 1. Если х = c^+i, установить
j <— j + 1 и повторять этот шаг, пока не выполнится условие х ^ Cj+i.
Т5. [Выполнено?] Завершить выполнение алгоритма, если j > £.
Т6. [Увеличение с^.] Установить <— ж, j <— j — 1 и вернуться к шагу Т2. I
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ
15
Теперь на шаге Т2 j = 0 тогда и только тогда, когда с\ > 0, так что присваивания
на шаге Т4 никогда не будут избыточными. В упражнении 6 выполняется полный
анализ алгоритма Т.
Заметим, что параметр п используется только инициализирующими шагами L1
и Т1 алгоритмов L и Т, но не в основной их части. Таким образом можно
рассматривать процесс генерации первых (™) сочетаний из бесконечного списка, которые
зависят только от t. Это упрощение является результатом того, что при наших
соглашениях список ^-сочетаний п + 1 элемента начинается со списка ^-сочетаний
для п элементов; именно поэтому мы использовали лексикографический порядок
уменьшающихся последовательностей q ... с\, а не возрастающие
последовательности С\ ... с^.
Деррик Лемер (Derrick Lehmer) заметил еще одно приятное свойство алгоритмов
L и Т [Applied Combinatorial Mathematics, ed. by E. F. Beckenbach (1964), 27-30]:
Теорема L. Сочетание с%.. .c2c\ посещается после посещения ровно
других сочетаний.
Доказательство. Имеется (с£ ) сочетаний c't... с2с[, таких, что с£ = Cj для t ^ j > к
и с'к < Cfc, а именно с*... c^+i, за которыми следуют fc-сочетания из {0,..., Ск — 1}. I
Когда, например, t = 3, числа
(ИИМИК>(ИК)'-'(зМК>
соответствующие сочетаниям с^с2с\ в табл. 1, просто пробегают последовательность
0,1,2,..., 19. Теорема L дает нам простой способ для понимания комбинаторной
системы счисления степени t, которая позволяет представить каждое
неотрицательное целое N в виде суммы
единственным образом. [См. Ernesto Pascal, Giornale di Matematiche, 25 (1887), 45-49.]
Биномиальные деревья. Семейство деревьев, определяемое следующим образом:
(19)
(20)
для п > 0,
(21)
16 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
возникает в различных важных контекстах и проливает новый свет на генерацию
сочетаний. Например, т4 представляет собой
(22)
а дерево т5 в более художественном исполнении можно увидеть на фронтисписе
тома 1 этой серии книг.
Заметим, что Тп очень похоже на Tn_i, за исключением дополнительной копии
Tn_i; таким образом, всего дерево Тп имеет 2П узлов. Кроме того, количество узлов
на уровне t равно биномиальному коэффициенту (?) — именно благодаря этому
факту дерево и называется биномиальным. Последовательность меток,
встречающихся на пути от корня к каждому узлу на уровне £, определяет сочетание ct... ci,
и все сочетания слева направо расположены в лексикографическом порядке.
Таким образом, алгоритмы L и Т могут рассматриваться как процедуры обхода узлов
биномиального дерева Тп, находящихся на уровне t.
Бесконечное биномиальное дерево получается из (21) при п —* оо. Корень
этого дерева имеет бесконечно много ветвей, но каждый узел, за исключением
корня на уровне 0, представляет собой корень конечного биномиального поддерева. Все
возможные ^-сочетания появляются в лексикографическом порядке на уровне t
дерева Too.
Давайте познакомимся с биномиальными деревьями поближе, рассматривая все
возможные способы упаковки рюкзака. Говоря более строго, предположим, что у нас
есть п предметов, которые занимают соответственно wn_i,... ,wi,wo единиц
емкости рюкзака, где
wn-i ^ • • • ^ wi ^ w0 ^ 0. (23)
Мы хотим сгенерировать все бинарные векторы an_i... aiao, такие, что
a-w = an-iwn-i Н Ь aiWi + a0w0 ^ N, (24)
где N — общая емкость рюкзака. Задачу можно сформулировать эквивалентным
образом — найти все подмножества С множества {0,1,..., п — 1}, такие, что w (С) =
= ^2cecwc ^ такие подмножества будем называть допустимыми. Мы будем
записывать допустимые подмножества как с\... с*, где с\ > • • • > с* ^ 0. Нумерация
индексов отличается от нумерации, принятой в соглашении (3), поскольку в данной
задаче t является переменной.
Каждое допустимое подмножество соответствует узлу Тп, и наша цель состоит
в том, чтобы обойти все допустимые узлы. Ясно, что родительский узел допустимого
узла также является допустимым; это же утверждение справедливо и для левого
"братского" узла, если таковой имеется. Следовательно, описанная ниже простая
процедура вполне работоспособна.
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 17
Алгоритм F (Заполнение рюкзака). Этот алгоритм генерирует все возможные
способы с\... ct заполнения рюкзака для данных wn-\,..., w\, wq и N. Обозначим
6j = Wj — Wj-i для 1 ^ j < п.
F1. [Инициализация.] Установить t *— О, со<— пиг<- N.
F2. [Посещение.] Посетить сочетание с\... q, которое использует N — г единиц
емкости рюкзака.
F3. [Попытка добавить wo-] Если ct > 0 и г ^ u>o, установить t <— t + 1, ct <— О,
r «— r — Эдо и вернуться к шагу F2.
F4. [Попытка увеличения q.] Завершить работу алгоритма при t = 0. В противном
случае, если ct~\ > q + 1 и г ^ установить с* <— с* + 1, г <— г — SCt
и вернуться к шагу F2.
F5. [Удаление с*.] Установить г <— г + u>Ct, £ <— £ — 1 и вернуться к шагу F4. I
Обратите внимание, что этот алгоритм неявно посещает узлы Тп в прямом порядке,
пропуская недопустимые поддеревья. Элемент с > 0 размещается в рюкзаке, если он
может поместиться в нем, сразу после того, как процедура исследует все
возможности использования на этом месте элемента с — 1. Время работы алгоритма
пропорционально количеству посещенных допустимых сочетаний (см. упражнение 20).
Кстати, классическая "задача о рюкзаке" из исследования операций
отличается от описанной: в ней требуется найти допустимое подмножество С, такое, что
v (С) = Ylcec v (с) максимально, а каждому предмету с назначается значение v (с).
Алгоритм F не особенно хорош для решения этой задачи, так как он часто
рассматривает случаи, которые могут быть исключены. Например, если С и С являются
подмножествами {1,..., п — 1}, причем w (С) ^ w {С) ^ N — wq и v (С) ^ v (С),
алгоритм F исследует как Си {0}, так и С U {0}, но последнее подмножество
никогда не улучшит максимум. Мы рассмотрим методы для решения классической
задачи о рюкзаке позже; алгоритм F предназначен только для случаев, когда все
допустимые решения потенциально могут оказаться оптимальными.
Коды Грея для сочетаний. Вместо простой генерации всех сочетаний зачастую
предпочтительно посещение их таким образом, что каждое из них получается путем
малого изменения его предшественника.
Например, мы можем потребовать того, что Ньенхуис
(Nijenhuis) и Вильф (Wilf) называют "алгоритмом
двери-вертушки" (revolving door). Представим две комнаты, в которых
находятся соответственно s и t человек, и дверь-вертушку
между ними. Когда кто-то входит в соседнюю комнату,
другой одновременно покидает ее. Можно ли разработать такую последовательность
шагов, чтобы каждое (5, ^-сочетание встречалось ровно по одному разу?
Ответ — да, причем существует огромное количество таких схем. Например, одну
из них можно получить, если исследовать все n-битовые строки an_i... а\ао в
хорошо известном порядке, соответствующем бинарному коду Грея (раздел 7.2.1.1), но
выбрать из них только те, которые имеют ровно s нулей и t единиц. В результате
мы получим строки, образующие код двери-вертушки.
18 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
Вот доказательство этого факта. Код Грея определяется рекуррентным
соотношением Гп = ОГп-хДГ^! из 7.2.1.1-(5), так что его (s,^-подпоследовательность
удовлетворяет рекуррентному соотношению
Tst = 0Г(в_!)4, irf(
(25)
где st > 0. Мы также имеем Tsq = 0s и Го* = 1*. Следовательно, по индукции
понятно, что Гst начинается с 0s 1* и заканчивается 10slt_1 при st > 0. Переход,
соответствующий запятой в (25), выполняется от последнего элемента 0Г(в_х)$ к
последнему элементу 1Гв(4_х), а именно от ОЮ5-1!*-1 = 0105-111*~2 к 110slt-2 =
= 110s_101t-2 при t ^ 2, и удовлетворяет ограничению, накладываемому
правилом двери-вертушки. Случай t = 1 также подтверждается. Например, Г33 задается
столбцами
(26)
и Г23 можно обнаружить в первых двух столбцах этого массива. Еще один
поворот двери выполняет переход от последнего элемента к первому. (Эти свойства
rst были открыты Д.Э. Миллер (J.E. Miller) в ее диссертации [Columbia
University, 1971], а затем независимо Д.Т. Тангом (D.T. Tang) и Ч.Н. Лю (C.N. Liu) [IEEE
Trans., С-22 (1973), 176-180]; реализация без использования циклов была
представлена Дж.Р. Битнером (J.R. Bitner), Г. Эрлихом (G. Ehrlich) и Э.М. Рейнгольдом
(Е.М. Reingold), [САСМ, 19 (1976), 517-521].)
Когда мы преобразуем битовые строки а^а^а^а2а\ао из (26) в соответствующие
списки индексов С3С2С1, схема сочетаний становится очевидной:
000111
011010
110001
101010
001101
011100
110010
101100
001110
010101
110100
100101
001011
010110
111000
100110
011001
010011
101001
100011
210
431
540
531
320
432
541
532
321
420
542
520
310
421
543
521
430
410
530
510
(27)
Первый компонент сз появляется в неубывающем порядке, но для каждого
фиксированного значения сз значения С2 находятся в невозрастающем порядке. Для
фиксированных же пар значений С3С2 значения с\ вновь находятся в неубывающем
порядке. То же самое справедливо и в общем случае: все сочетания ct... С2С1 в коде
Грея двери-вертушки Tst находятся в лексикографическом порядке
(ct, -Ct-l,Ct_2, • • • , (-1)* 1 Ci)
(28)
Это свойство доказывается по индукции, поскольку при использовании списка
индексов при st > 0 (25) записывается как
rrt = r(._1)t,(e + t-i)rf(t_
(29)
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 19
Таким образом, эта последовательность может эффективно генерироваться при
помощи следующего алгоритма В.Г. Пейна (W.H. Payne) [ACM Trans. Math. Software,
5 (1979), 163-172].
Алгоритм R (Сочетания двери-вертушки). Этот алгоритм генерирует все t-
сочетания ct... С2С1 из {0,1,..., п — 1} в лексикографическом порядке
чередующейся последовательности (28) в предположении, что п > t > 1. Шаг R3 имеет два
варианта — в зависимости от того, четно значение t или нет.
R1. [Инициализация.] Установить сэ- <— j — 1 для t ^ j ^ 1, и cn+i <— п.
R2. [Посещение.] Посетить сочетание ct... С2С1.
R3. [Простой случай?] Если t нечетно: если ci+1 < С2, увеличить с\ на 1 и вернуться
к шагу R2, в противном случае установить j <— 2 и перейти к шагу R4. Если
t четно: если с\ > О, уменьшить с\ на 1 и вернуться к шагу R2, в противном
случае установить j <-2 и перейти к шагу R5.
R4. [Попытка уменьшения с3\ (В этот момент с3- — сэ-\ + 1.) Если Cj ^ j, установить
Cj +— Cj-i, Cj-i <— j — 2 и вернуться к шагу R2. В противном случае увеличить
j на 1.
R5. [Попытка увеличения Cj.] (В этот момент сд-\ = j — 2.) Если с3; + 1 < Cj+i,
установить Cj_i «— Cj, Cj <— сj 4-1 и вернуться к шагу R2. В противном случае
увеличить j на 1 и, если j ^ £, перейти к шагу R4. I
Упражнения 21-25 открывают новые свойства этой интересной последовательности.
Одно из них представляет собой красивую пару теореме L: сочетание ctct-i.. .С2С1
посещается алгоритмом R в точности после посещения
"-(**')- С'< -\')+■ • ■+<-'>■ (%+') -(-4' (v) - !• 1 <30»
других сочетаний. Это представление числа JV можно назвать "знакопеременной
комбинаторной системой счисления" степени t. Одно из следствий, например,
заключается в том, что любое положительное целое число может быть единственным
образом представлено в виде iV = (§) — (2) + (1 )> гДе а > 6 > с > 0. Алгоритм R
говорит нам, как добавить 1 к числу N в этой системе счисления.
Хотя строки (26) и (27) не расположены в лексикографическом порядке, они
представляют собой пример более общей концепции, называющейся облексным
порядком (genlex order), название которой придумано Тимоти Волшем (Timothy
Walsh). Говорится, что строки последовательности сх\,...,ак находятся в облекс-
ном порядке, когда все строки с общим префиксом расположены последовательно.
Например, все 3-сочетания, начинающиеся с 53, в (27) находятся рядом.
Облексный порядок означает, что строки могут быть размещены в структуре
луча (trie), как показано на рис. 31 в разделе 6.3, но с произвольным упорядочением
дочерних узлов каждого узла. При обходе луча в любом порядке, таком, что каждый
узел посещается непосредственно до или непосредственно после своих потомков, все
узлы с общим префиксом — т.е. все узлы подлуча — обходятся последовательно.
20 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
Это делает облексный порядок весьма удобным, поскольку он соответствует
рекурсивным схемам генерации. Многие алгоритмы генерации п-кортежей, с которыми
мы встречались, выдают тот или иной облексный порядок. Подобным образом
метод "простых изменений" (plain changes) (алгоритм 7.2.1.2Р) посещает перестановки
в облексном порядке соответствующей таблицы инверсий.
Метод двери-вертушки из алгоритма R представляет собой облексную
подпрограмму, которая на каждом шаге изменяет только один элемент сочетания. Однако
этот принцип не всегда выдерживается, так как зачастую приходится одновременно
изменять два индекса Cj, чтобы сохранялось условие q > • • • > с2 > с\. Например,
алгоритм R изменяет 210 на 320, и в (27) можно найти девять таких изменений.
Источник этого дефекта может быть отслежен в доказательстве того, что (25)
удовлетворяет свойству двери-вертушки: мы заметили, что за строкой 010s-1 llt-2
следует строка 110s-101t-2, когда t > 2. Следовательно, рекурсивное построение
Tst включает переходы вида 110а0 <-> 010а1, когда подстрока типа 11000 сменяется
строкой 01001 или наоборот — словом, когда две единицы пересекают одна другую.
Путь Грея для сочетаний называется гомогенным, или
однородным (homogeneous), если на каждом шаге
изменяется только один из индексов Cj. Гомогенная схема в виде
битовой строки характеризуется тем, что содержит только
переходы вида 10а <-> 0а1, а ^ 1, при переходе от строки
к следующей. При гомогенной схеме мы можем, например,
сыграть все t-нотные аккорды на n-нотной клавиатуре,
перемещая только один палец при переходе от одного аккорда к следующему.
Небольшая модификация (25) дает нам гомогенную облексную схему для (s, t)-
сочетаний. Основная идея состоит в построении последовательности, которая
начинается с 0s 1* и заканчивается 1*0S — при этом тут же напрашивается следующая
рекурсия: пусть Ка0 = 0s, Kot = 1', ^s(-i) = 0 и
Kat = 0tf(e_i)t, 10^_1)(,_1}, UKs(t_2) для st > 0. (31)
В местах запятых в этой последовательности расположена строка 01*0в_1, за
которой следует 101t-10s_1, и 105lt_1, за которой следует 110sl*~2. Оба эти перехода
однородны, хотя второй и требует переноса единицы через s нулей. Сочетания К33
при 5 = ^ = 3 представляют собой
000111
010101
101100
100011
001011
010011
101001
110001
001101
011001
101010
110010
001110
011010
100110
110100
010110
011100
100101
111000
(32)
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 21
в форме битовых строк, а соответствующая схема расположения пальцев имеет вид
210
420
532
510
310
410
530
540
320
430
531
541
321
431
521
542
421
432
520
543
(33)
При преобразовании однородной схемы для обычных сочетаний q ... с\ в
соответствующую схему (6) для сочетаний с повторениями dt...d\ сохраняется свойство,
что на каждом шаге изменяется только один индекс dj. При конвертировании в
соответствующие схемы (9) или (11) для сочетаний pt-.-Po или qt... qo при изменении
Cj происходит изменение только двух (соседних) частей.
Схемы, близкие к идеальной. Однако мы можем сделать еще лучше! Все (s, t)-
сочетания могут быть сгенерированы последовательностью строго гомогенных
переходов, представляющих собой либо 01 <-» 10, либо 001 <-> 100. Другими словами,
мы можем потребовать, чтобы на каждом шаге единственный индекс Cj изменялся
не более чем на 2. Назовем такие схемы близкими к идеальной (near-perfect).
Столь строгое требование в действительности делает разработку близких к
идеальной схем достаточно простой, поскольку доступным оказывается только
сравнительно небольшое количество вариантов. Т.А. Дженкинс (Т.A. Jenkyns) и Д. Мак-
Карти (D. McCarthy) заметили, что если ограничиться облексными методами,
близкими к идеальному на n-битовых строках, то все такие методы можно легко
охарактеризовать следующей теоремой [Ars Combinatoria, 40 (1995), 153-159].
Теорема N. Если st > 0, существует ровно 2s близких к идеальному способов
перечисления всех (s, t)-сочетаний в облексном порядке. В действительности для
каждого значения а, 1 ^ а < s имеется единственная такая последовательность Nsta,
которая начинается с 1*0* и заканчивается 0а1*05_а; прочие s возможностей получаются
из них изменением порядка следования их элементов на обратный, т.е. являются
последовательностями вида N^a.
Доказательство. Теорема определенно справедлива при s = t = 1; в остальных
случаях мы используем индукцию по s +1. Последовательность Nsta (если таковая
существует) должна иметь вид lXs(4_i), 0Y(s__i)t для некоторых близких к
идеальному облексных последовательностей Xs(4__i) и У(в_1)$. Если t = 1, то
последовательность A's(t-i) представляет собой единственную строку 0s; следовательно, Y(s-i)t
должна представлять собой Af(s-i)i(a-i) при а > 1 и N^_^n при а = 1. С другой
стороны, если t > 1, из условия близости к идеалу вытекает, что последняя строка
X(s-i)t не может начинаться с 1; следовательно, X(s_i)t = iVs(t-i)& для
некоторого Ь. Если а > 1, ^(s-i)t должно представлять собой АГ(5_1)^а_1), следовательно, b
должно быть 1. Аналогично: b должно быть 1 и при s = 1. В противном случае
мы имеем a = 1 < s, и это приводит к = -W^_i)tc Для некоторого с. Переход
от 10ь1*-105~ь к ос+11*08-1-с является близким к идеальному, только если с = 1
и Ь = 2. I
22 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
Таблица 2. Последовательности Чейза для (3,3)-сочетаний
Азз
_ Яй
— ^33
#33
= Сзз
543
531
321
420
543
520
432
410
541
530
320
421
542
510
430
210
540
510
310
431
540
530
431
310
542
520
210
430
541
531
421
320
532
521
410
432
521
532
420
321
Доказательство теоремы N дает следующую рекурсивную формулу, когда st > 0:
1^(г_1)1,0ЛГ(8_1Жа_1), если 1 < а ^ s;
UVe(t-i)2, (W£_1)tl, если 1 = а < a; (34)
[1А^1(^_1)1,01*, если 1 = а = s.
Конечно, также Nsoa = 0s.
Пусть Ast = N8ti и Вst = Nst2- Эти близкие к идеальному
последовательности, впервые рассмотренные Филлипом Дж. Чейзом (Phillip J. Chase) в 1976 году,
образуются в результате сдвига крайнего слева блока единиц вправо на одну или
две позиции соответственно и удовлетворяют следующим взаимно рекуррентным
соотношениям:
Ast = lSe(t_i),0i4g_1)t; Bst = Ii4e(t-i),0i4(e-i)t. (35)
"Чтобы сделать один шаг вперед, сделайте два шага вперед и один шаг назад; чтобы
сделать два шага вперед — сделайте первый шаг, а затем второй". Эти уравнения
выполняются для всех целых значений s и t, если мы определим Ast и Bst как 0 при
отрицательных s или £, за исключением Aqo = Boo — £ (пустая строка). Таким
образом, Ast в действительности выполняет min (s,1) шагов вперед, a Bst — min (s,2)
шагов вперед. Например, в табл. 2 приведены листинги для s = t = 3 с
использованием эквивалентной записи в виде списка индексов С3С2С1 вместо битовой строки
a^a^a^a2CL\CLo-
Чейз заметил, что компьютерная реализация этих последовательностей
становится проще, если мы определим
. ,*st, если s + t нечетно; ^ J A^t, если s +1 четно; ( ч
Cst = S _ , . ^st = dd , . (3d)
если s + t четно; 1 если s + t нечетно.
[Congressus Numerantium, 69 (1989), 215-242.] Тогда мы имеем
С t = i ic,«(t-i)»0^(a-i)t» если 5 + * нечетно;
\lCs(t-i)50C(5_i)t, если четно;
Q ^ = Г0C(e_i)t, lCs(t_i), если 5 +£ четно;
]0C(s_i)tl lCs(t-i), если s + t нечетно.
Когда бит а3- готов к изменению, путем проверки на четность j можно сказать,
в каком месте рекурсии мы находимся.
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 23
На самом деле последовательность Cst может быть сгенерирована удивительно
простым алгоритмом, основанным на общих идеях, применимых к любой облексной
схеме. Назовем бит ctj в облексном алгоритме активным, если его изменение
предполагается до того, как будет изменено что-либо слева от него (другими словами,
узел активного бита в соответствующем луче не является крайним правым
дочерним узлом своего родителя). Предположим, что у нас есть вспомогательная таблица
wn ... w\Wo, где Wj = 1 тогда и только тогда, когда либо бит a,j активен, либо j < г,
где г — наименьший индекс, такой, что аг ф ао; мы также полагаем wn = 1. В таком
случае для поиска следующей за an_i... а\ао битовой строки можно использовать
приведенный ниже метод.
Установить j *— г. Если Wj = О, установить Wj <— 1, j <— j + 1
и повторять эти действия, пока не будет достигнуто Wj = 1.
Выполнение прекращается при j = п; в противном случае устано- ,„q\
вить Wj <— 0. Изменить aj на 1 — a,j и выполнить все прочие из- ^ '
менения в aj-i... ао и г, которые применяются в конкретной
используемой облексной схеме.
Красота этого Подхода основана на том факте, что цикл гарантированно
эффективен: можно доказать, что операция j <— j + 1 будет выполняться в среднем менее
одного раза для каждого шага генерации (см. упражнение 36).
Анализируя переходы при изменении битов в (37) и (38), можно легко
конкретизировать остальные детали.
Алгоритм С (Последовательность Чейза). Этот алгоритм посещает все (s,t)-
сочетания an_i.. .aiao, где п = s + t, в близкой к идеальной последовательности
Чейза Сst.
С1. [Инициализация.] Установить aj *— 0 для 0 < j < s, а3; <— 1 для s ^ j < п
и Wj; «— 1 для 0 ^ j; ^ п. Если s > 0, установить г <— 5; в противном случае
установить г «— t.
С2. [Посещение.] Посетить сочетание an_i... а\а$.
СЗ. [Поиск j и ветвление.] Установить j <— г. Если Wj = 0, установить Wj <— 1,
j <— j; + 1 и повторять эти действия до тех пор, пока не будет выполнено
условие Wj = 1. Прекратить работу алгоритма, если j — щ в противном случае
установить wj <— 0 и выполнить ветвление: перейти к С4, если j нечетно
и aj ф 0, к С5, если j четно и aj ф 0, к Сб, если j четно и aj = 0, и к С7,
если j нечетно и aj = 0.
С4. [Переход вправо на единицу.] Установить a^_i <— 1, аэ; <— 0. Если г = j > 1,
установить г <— j — 1; если же г = j — 1, установить г <— j. Вернуться к С2.
С5. [Переход вправо на два.] Если а^_2 0, перейти к шагу С4. В противном случае
установить а^_2 ^— 1, aj <— 0. Если г — j, установить г <— max (j — 2,1); если
же г = j — 2, установить г <— j — 1. Вернуться к С2.
Сб. [Переход влево на единицу.] Установить aj <— 1, aj_i ^— 0. Если г = jf > 1,
установить г <—- j — 1; если же г — j — 1, установить г <— j. Вернуться к С2.
24 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
С7. [Переход влево на два.] Если а3-\ ф О, перейти к шагу Сб. В противном случае
установить а3 «— 1, а3-2 <— 0. Если г = j — 2, установить г <— j; если же
г = j — 1, установить г <— j — 2. Вернуться к шагу С2. I
*Анализ последовательности Чейза. Магические свойства алгоритма С
требуют дальнейшего исследования, и более близкое рассмотрение оказывается весьма
поучительным. Для данной битовой строки an_i ...aiao определим ап = 1, ип =
= п mod 2 и
= (1 — Uj+i) a^+i, = (u3 + j) mod 2, = (vj + a3) mod 2 (40)
для n > j ^ 0. Например, у нас может быть п = 26 и
«25 • • • aia0 = 11001001000011111101101010,
U25 • • • ^iu0 = 10100100100001010100100101,
г>25 • • • = 00001110001011111110001111, ^ '
^25 • • • ™1™о = 11000111001000000011100101.
Используя эти определения, можно по индукции доказать, что v3 = 0 тогда и
только тогда, когда бит а3 в рекуррентных соотношениях (37)-(38), которые генерируют
an_i.. .aiao, "управляется" С, а не С, за исключением случая, когда а3 является
частью заключительной серии нулей или единиц с правого конца. Следовательно,
wj согласуется со значением, вычисленным алгоритмом С в момент, когда
посещается ап-\. ..aiao, для г ^ j < п. Эти формулы могут использоваться для
определения точного места появления данного сочетания в последовательности Чейза
(см. упражнение 39).
Если мы хотим работать со списком индексов ct... с2с1, а не с битовыми строками
an_i... aiao, удобно слегка изменить обозначения, записав Ct (п) вместо Cst и Ct (п)
вместо Cst, где s +1 = п. Тогда Со (п) = Со (п) = е, а рекуррентные соотношения
для t > 0 приобретают вид
Ct+i (n + 1) = [nCt ^ ' ^ ' еСЛИ П Ч6ТНО; (42)
1 nCt (п), Ct+i (п), если п нечетно;
Я / , 1 \ J Ct+i (n) > (п), если гс нечетно;
Ct+i (n +1) = < я я (43)
I Ct+i (n), nCt (п), если п четно.
Эти новые уравнения могут быть развернуты, что дает, например,
Ct+i (9) = SCt (8), 6Ct (6), 4Ct (4),..., 3Ct (3), 5Ct (5), 7Ct (7);
Ct+i (8) = 7Ct (7), 6Ct (6), 4Ct (4),..., 3Ct (3), 5Ct (5);
Ct+i (9) = 6Ct (6), 4Ct (4),..., 3Ct (3), 5Ct (5), 7Ct (7), 8Ct (8);
Ct+г (8) = 6Ct (6), 4Ct (4),..., 3Ct (3), 5Ct (5), 7Ct (7).
(44)
Обратите внимание на то, что одна и та же схема доминирует во всех четырех
последовательностях. Смысл "..." в средине зависит от значения t: мы просто пропускаем
все члены nCt (п) и nCt (п) при п < t.
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 25
За исключением краевых эффектов в самом начале и конце, все раскрытия
формул в (44) основаны на бесконечной прогрессии
...,10,8,6,4,2,0,1,3,5,7,9,..., (45)
которая представляет собой естественный способ размещения неотрицательных
целых чисел в бесконечной в обе стороны последовательности. Если мы опустим в (45)
все члены, меньшие t для некоторого заданного числа t ^ 0, то оставшиеся члены
будут поддерживать то свойство, что соседние элементы отличаются либо на 1,
либо на 2. Ричард Стенли (Richard Stanley) предложил для этой последовательности
название endo-order, исходя из первых букв фразы "even numbers decreasing, odd..."
("четные числа уменьшаются, нечетные..."2). (Заметим, что если оставить только
члены, меньшие N и дополнить их до N, то эта последовательность превратится
в последовательность "органных труб"; см. упражнение 6.1-18.)
Можно запрограммировать рекурсии (42) и (43) непосредственно, но
интереснее развернуть их с использованием (44), получив таким образом итеративный
алгоритм, аналогичный алгоритму С. Такой алгоритм требует только О (t) памяти
и особенно эффективен, когда t мало по сравнению с п. Детальнее этот вопрос
рассматривается в упражнении 45.
* Перестановки мультимножества, близкие к идеальной. Последовательности
Чейза естественным образом приводят к алгоритму, который будет генерировать
перестановки любого мультимножества {so • 0, si • 1,..., Sd • d} близким к идеальному
способом, что означает следующее:
i) каждый переходимеетвидлибо dj+idj <-> aja,j+i, либоaj+idjdj-i «-> а3-\а3а3+\
ii) переходы второго вида обладают тем свойством, что а3 = min (а3-\, а3+\).
Алгоритм С говорит нам, как добиться этого при d = 1, и мы можем
распространить его на большие значения d при помощи следующей рекурсивной конструкции
[САСМ 13 (1970), 368-369, 376]. Предположим, что
а0,ол,... ,aw-i —
произвольный близкий к идеальному список перестановок {si • 1,..., Sd • d}. После
этого алгоритм С с s = sont = siH \-Sd говорит нам, каким образом сгенерировать
список
Aj =a3Qs,...,0aa30s-a, (46)
в котором все переходы представляют собой либо Ох хО, либо ООх <-> яЮО;
последняя запись содержит а = 1 или 2 ведущих нуля, в зависимости от значений s и t.
Таким образом, все переходы последовательности
Л0, Af, Л2,..., (Лдг_1 или Л^_х) (47)
близки к идеальным; понятно, что этот список содержит все перестановки.
2По всей видимости, наиболее адекватным переводом на русский язык могла бы быть "чун-
упорядоченная последовательность". — Примеч. пер.
26 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
Например, вот перестановки {0,0,0,1,1,2}, сгенерированные таким способом:
211000,210100,210001,210010,200110,200101,200011,201001,201010,201100,
021100,021001,021010,020110,020101,020011,000211,002011,002101,002110,
001120,001102,001012,000112,010012,010102,010120,011020,011002,011200,
101200,101020,101002,100012,100102,100120,110020,110002,110200,112000,
121000,120100,120001,120010,100210,100201,100021,102001,102010,102100,
012100,012001,012010,010210,010201,010021,000121,001021,001201,001210.
* Идеальные схемы. Почему мы должны заниматься близкими к идеальным
генераторами наподобие С8и вместо того чтобы потребовать, чтобы все переходы имели
наиболее простой вид 01 <-> 10?
Одна из причин в том, что идеальные схемы не всегда существуют. Например,
в 7.2.1.2-(2) было показано, что нет способа сгенерировать все шесть
перестановок множества {1,1,2,2} с перестановками смежных элементов; таким образом, нет
и идеальной схемы для (2,2)-сочетаний. В действительности наши шансы получить
идеал составляют примерно 1 к 4.
Теорема Р. Генерация всех (s, t)-сочетаний as+t-i • • • «i«o путем обменов смежных
элементов 01 <-> 10 возможна тогда и только тогда, когда s ^ 1, или t ^ 1, или st
нечетно.
Доказательство. Рассмотрим все перестановки мультимножества {s • 0, £ • 1}. Из
упражнения 5.1.2-16 мы знаем, что число таких перестановок т^, имеющих к
инверсий, представляет собой коэффициент при zk в z-номиальном коэффициенте
Каждый обмен смежных элементов изменяет количество инверсий на ±1, так что
идеальная схема генерации возможна, только если приблизительно половина всех
перестановок имеет нечетное количество инверсий. Более точно значение ()_1 =
= то—гп\ + Ш2 должно быть равно 0 или ±1. Однако в упражнении 49 показано,
что
и если не выполняется ни одно из условий s ^ 1, t ^ 1, st нечетно, то эта величина
превышает 1.
И наоборот: идеальные схемы легко построить при s ^ 1 или £ ^ 1, и они также
возможны при нечетном st. Первый нетривиальный случай — 5 = t — 3, для
которого имеется четыре существенно разных решения; наиболее симметричный из них
следующий:
(49)
210-310-410-510-520-521-531-532-432-431-
(50)
421-321-320-420-430-530-540-541-542-543
(см. упражнение 51). Несколько авторов построили Гамильтоновы цепи в
соответствующих графах для произвольных нечетных чисел s и t; например, метод Идеса
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 27
(Eades), Хикки (Hickey) и Рида (Read) [JACM, 31 (1984), 19-29] представляет собой
интересный пример программы с рекурсивными подпрограммами. Однако, к
сожалению, ни одна из известных конструкций не является достаточно простой, чтобы
можно было кратко описать ее или реализовать с приемлемой эффективностью.
Таким образом, практическая важность генераторов идеальных сочетаний все еще не
доказана. I
Резюмируя, мы увидели, что изучение (s, ^-сочетаний приводит ко многим
привлекательным схемам, одни из которых имеют большую практическую ценность,
а другие — просто элегантны и красивы. На рис. 26 показаны основные схемы,
доступные для s = t = 5 (в этом случае имеется ( 5°) = 252 сочетаний).
Лексикографический порядок (алгоритм L), код Грея двери-вертушки (алгоритм R),
гомогенная схема Кьь из (31) и близкая к идеальной схема Чейза (алгоритм С) показаны
на рис. 26, а-г соответственно. На рис. 26, д показана близкая к идеальной схема,
которая настолько близка к идеальной, насколько это возможно, оставаясь в облекс-
ном порядке массива с (см. упражнение 34); на рис. 26, е представлена идеальная
схема Идеса-Хикки-Рида. И наконец, на рис. 26, ж-з показаны сочетания,
полученные путем поворотов а3а3-\... ао <— clj-i • •. clqclj и обменов а3 <-> ао, наподобие
алгоритмов 7.2.1.2С и 7.2.1.2Е (см. упражнения 55 и 56).
* Сочетания мультимножества. Если мультимножество может иметь
перестановки, то оно может иметь и сочетания. Например, рассмотрим мультимножество
{Ь, Ь, 6, г, г, г, w, w}, представляющее корзину, в которой содержатся
четыре синих мяча, по три зеленых и красных и два белых. Есть 37 способов выбрать
пять мячей из этой корзины; вот эти способы в лексикографическом порядке:
gbbbb, ддЬЬЪ, дддЪЪ, rbbbb, rgbbb, rggbb, rgggb, rrbbb, rrgbb, rrggb,
rrggg, rrrbb, rrrgb, rrrgg, wbbbb, wgbbb, wggbb, wgggb, wrbbb, wrgbb, , .
wrggb, wrggg, wrrbb, wrrgb, wrrgg, wrrrb, wrrrg, wwbbb, wwgbb, wwggb,
wwggg, wwrbb, wwrgb, wwrgg, wwrrb, wwrrg, wwrrr.
Этот факт может показаться незначительным и/или понятным лишь посвященным,
но, как мы увидим из теоремы W, лексикографическая генерация сочетаний
мультимножества дает оптимальное решение важной комбинаторной задачи.
Якоб Бернулли (James Bernoulli) заметил в своей работе [Ars Conjectandi (1713),
119-123], что мы можем перечислить все такие сочетания, рассматривая
коэффициент при z5 в произведении (l -I- z + z2) (l + z + z2 + z3)2 (l + z + z2 + z3 + z4). Это
наблюдение легко понять, поскольку мы получим все возможные варианты выбора
из корзины, если перемножим полиномы
(1 + w + ww) (1 + г + rr + rrr) (1 + д + дд + ддд) (1 + b + bb + bbb + bbbb).
Сочетаниям мультимножества можно поставить в соответствие разбиения чисел
с ограничениями на слагаемые (bounded compositions). Например, 37 мультисочета-
ний, перечисленных в (51), соответствуют 37 решениям
5 = г3 + r2 4- ri + г0, 0 ^ г3 ^ 2, 0 < r2, п ^ 3, 0 ^ r0 ^ 4,
а именно:
5 = 0 + 0 + 1 + 4 = 04-0 + 2 + 3 = 0 + 0 + 34-2 = 0-1-1 + 0 + 4 = .- . = 2 + 3 + 0 + 0.
28 КОМБИНАТОРНЫЙ ПОИСК
Рис. 26. Примеры схем
(5,5)-сочетаний: а)
лексикографическая; б) двери-
вертушки; в) гомогенная;
г) близкая к идеальной;
д) еще более близкая
к идеальной; е) идеальная;
ж) суффиксная; з) с правым
обменом а) б)
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 29
Разбиения чисел с ограничениями на слагаемые, в свою очередь, являются
частным случаем факторных таблиц (contingency table), играющих важную роль в
статистике. И все эти комбинаторные конфигурации могут быть сгенерированы как при
помощи кодов наподобие кода Грея, так и в лексикографическом порядке. В
упражнениях 60-63 раскрываются некоторые из основных используемых при этом идей.
*Тени. В математике часто встречаются множества сочетаний. Например,
множество 2-сочетаний (множество неупорядоченных пар), по сути, представляет собой
граф, а множество t-сочетаний для произвольного t называется однородным
гиперграфом (uniform hypergraph). Если вершины выпуклого многогранника несколько
смещены, так что никакие три из них не лежат на одной прямой, никакие
четыре—в одной плоскости и вообще, никакие t + 1 из них не лежат в (t — 1)-мерной
гиперплоскости, то получившиеся (t — 1)-мерные грани представляют собой
"симплексы", вершины которых имеют большое значение в компьютерных приложениях.
Исследователи выяснили, что такие множества сочетаний имеют важные свойства,
связанные с лексикографической генерацией.
Если а — произвольное ^-сочетание q...c2c1, его тенью (shadow) да
является множество всех его (t — 1)-элементных подмножеств ct-i... с2с1, ..., с*... с3с1,
q...c3c2, например 95310 = {310,510,530,531}. Мы можем также представить t-
сочетание как битовую строку an_i... aiao; в этом случае да является множеством
всех строк, полученных заменой 1 на 0: 9101011 = {001011,100011,101001,101010}.
Если А — произвольное множество ^-сочетаний мы определим его тень
как множество всех (t — 1)-сочетаний в тенях его членов, например 995310 = {10,30,
Эти определения применимы также к сочетаниям с повторениями, т.е. к мульти-
сочетаниям: 95330 = {330,530,533} и 995330 = {30,33,50,53}. В общем случае, если
А — множество ^-элементных мультимножеств, дА является множеством (t — 1)-
элементных мультимножеств. Заметим, однако, что само дА никогда не содержит
повторяющихся элементов.
Верхняя тень (upper shadow) да по отношению к универсуму U определяется
аналогично, но идет от ^-сочетаний к (t + 1)-сочетаниям:
Если, например, U = {0,1,2,3,4,5,6}, то мы получим #5310 = {53210,54310,65310};
с другой стороны, если U = {оо • 0, со • 1,..., со • 6}, то #5310 = {53100,53110,53210,
53310,54310,55310,65310}.
Следующая фундаментальная теорема, имеющая множество применений в
различных отраслях математики и информатики, говорит нам, насколько малыми
могут быть тени множеств.
Теорема К. Если А — множество, состоящее из N t-сочетаний универсума U =
(52)
31,50,51,53}.
Qoc = {13 С U | a е 9/3} для a е U;
qA = U {да | а е а} для AQU.
(53)
(54)
= {0,1,..., 71- 1}, то
\dA\ > \дРт\ и \qA\ > \gQNnt
(55)
30 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
где P/vt обозначает первые N сочетаний, сгенерированные алгоритмом L, а
именно первые N в лексикографическом порядке сочетаний ct...c2c\, удовлетворяющих
условию (3), a qnnt обозначает последние N в лексикографическом порядке
сочетаний, удовлетворяющих условию (3). I
Теорема М. Если А — множество, состоящее из N t-мультисочетаний элементов
универсума U — {со • 0, оо • 1,..., со • s}, то
\dA\ > \dPNt\ и \qA\ > \eQNst\, (56)
где Put обозначает первые N в лексикографическом порядке мультисочетаний dt...
d2d\, удовлетворяющих условию (6), a qnst обозначает последние N в
лексикографическом порядке мультисочетаний, удовлетворяющих условию (6). I
Обе эти теоремы являются следствием более строгого результата, который
будет доказан позже. Теорема К называется теоремой Крускала-Катоны, поскольку
она была открыта И.Б. Крускалом (J.B. Kruskal) [Math. Optimization Techniques,
ed. by R.Bellman (1963), 251-278], а позже заново открыта Г. Катоной (G. Katona)
[Theory of Graphs, Tihany 1966, ed. by Erdos and Katona (Academic Press, 1968),
187-207]; ранее неполное доказательство было приведено М.П. Шутценбергером
(М.Р. Schutzenberger) в его менее известной публикации [RLE Quarterly Progress
Report, 55 (1959), 117-118]. Теорема M была доказана Ф.С. Маколеем (F.S. Macaulay)
многими годами ранее [Proc. London Math. Soc, (2) 26 (1927), 531-555].
Перед тем как приступить к доказательству (55) и (56), рассмотрим более
внимательно, что означают эти формулы. Из теоремы L мы знаем, что первые N из всех
t-сочетаний, посещенных алгоритмом L, — те, которые предшествуют щ ... п2п\, где
N= (Т) + --+ (?) + (Т)' щ >--->-2>ni>0
является комбинаторным представлением N степени t. Иногда такое представление
имеет меньше t ненулевых членов, потому что п3- может быть равно j — 1; уберем
нули и запишем
лг=(п/)+(Г-0+'"+(?)' n*>n*-i>--->n»>w>1-
Теперь первые (п{ ) сочетаний ct... с\ представляют собой rj-сочетания {0,... ,nt — 1};
следующие (^'.Г]1) — те, в которых с* = щ и ct~\...c\, — (t — 1)-сочетание из
{0, — 1} и т.д. Например, если t = 5 и N = (§) + (4) + (з), то первые
N сочетаний будут
PN5 = {43210,..., 87654} U {93210,..., 96543} U {97210,..., 97321} . (58)
Тень данного множества P/v5> к счастью, легко представить — это
dPN5 = {3210,..., 8765} U {9210,..., 9654} U {9710,..., 9732} , (59)
т.е. первые (|) + (3) + (\) сочетаний в лексикографическом порядке для t — 4.
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 31
Другими словами, если мы определим функцию Крускала Kt как
*Н-.)+(";)+-+(.-1> т
где N имеет единственное представление (57), то
dPNt = P(KtN)(t-i)- (61)
Теорема К говорит нам, например, что граф с миллионом ребер может содержать
не более
/1414\ /1009Л
( 3 ) + ( 2 )=470700300
треугольников, т.е. не более 470 700300 множеств вершин {u,v,w} с ребрами u—v—
w—u. Дело в том, что, согласно упражнению 17, 1000 000 = (14214) 4- (10109) и ребра
^(юооооо)2 поддерживают ( 14214) 4- (10109) треугольников; если бы треугольников было
больше, граф должен был бы содержать, как минимум, «з470700301 = (14214) +
+ (10i09) + (о) = 1000 001 РебеР в их тенях.
Крускал определил сопутствующую функцию
для работы с подобными задачами. Функции к и Л связаны интересным
соотношением, доказываемым в упражнении 72:
из М + N = (^*^ слеДУет + XtN = (^^^, если st > 0. (63)
Возвращаясь к теореме М, размеры дРт и QQNst оказываются равными
дРт
HtN и qQnsi =N + ksN (64)
(см. упражнение 81), где функция \xt удовлетворяет уравнению
"•-("':1')+(n«-1)+-+C-.1) т
при N, имеющем комбинаторное представление (57).
В табл. 3 показано, как ведут себя упомянутые функции KtN, XtN и fitN для
малых значений tn N. Когда t и N велики, эти функции могут быть хорошо
аппроксимированы при помощи замечательной функции т(х), введенной Теиджи Такаги
(Teiji Takagi) в 1903 г. (рис. 27 и упражнения 82-85).
Теоремы К и М являются следствиями более общей теоремы дискретной
геометрии, открытой Да-Лун Вангом (Da-Lun Wang) и Пинг Вангом (Ping Wang) [SIAM
J. Applied Math., 33 (1977), 55-59], с которой мы сейчас познакомимся.
Рассмотрим дискретный n-мерный тор Т(т\,... ,тп), элементы которого представляют
собой целочисленные векторы х = (х\,..., хп), где 0 ^ х\ < mi,..., 0 ^ хп < тп.
32 КОМБИНАТОРНЫЙ ПОИСК 7.2.1
Таблица 3. Примеры функций Крускала-Маколея к, А и /i
N
= 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
kiN
= 0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
k2N
= 0
2
3
3
4
4
4
5
5
5
5
6
6
6
6
6
7
7
7
7
7
K3N
= 0
3
5
6
6
8
9
9
10
10
10
12
13
13
14
14
14
15
15
15
15
K4N
= 0
4
7
9
10
10
13
15
16
16
18
19
19
20
20
20
23
25
26
26
28
k5N
= 0
5
9
12
14
15
15
19
22
24
25
25
28
30
31
31
33
34
34
35
35
XiN
= 0
0
1
3
6
10
15
21
28
36
45
55
66
78
91
105
120
136
153
171
190
X2N
= 0
0
0
1
1
2
4
4
5
7
10
10
11
13
16
20
20
21
23
26
30
X3N
= 0
0
0
0
1
1
1
2
2
3
5
5
5
6
6
7
9
9
10
12
15
X4N
= 0
0
0
0
0
1
1
1
1
2
2
2
3
3
4
6
6
6
6
7
7
X5N
= 0
0
0
0
0
0
1
1
1
1
1
2
2
2
2
3
3
3
4
4
5
Hi N
= 0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
/х2АГ
= 0
1
2
2
3
3
3
4
4
4
4
5
5
5
5
5
6
6
6
6
6
HaN
= 0
1
2
3
3
4
5
5
6
6
6
7
8
8
9
9
9
10
10
10
10
VaN
= 0
1
2
3
4
4
5
6
7
7
8
9
9
10
10
10
11
12
13
13
14
№ N
= 0
1
2
3
4
5
5
6
7
8
9
9
10
11
12
12
13
14
14
15
15
k5n-N T(X)
22 2/3
14
7
1/2
1/4
0° (б) (б) (K) (?) V V2 2/3 1
Рис. 27. Аппроксимация функции Крускала функцией Такаги
(гладкая кривая на левом графике представляет собой нижнюю
границу k^N — N из упражнения 80)
Определим сумму и разность двух таких векторов х и у как в формулах 4.3.2-(2)
и 4.3.2-(3):
х + у = ((xi + yi) mod mi,..., (xn + yn) mod mn), (66)
x-y = ((xi - yi) mod mi,..., (xn - yn) mod mn). (67)
Определим также так называемый перекрестный порядок (cross order) таких
векторов, говоря, что х =^ у тогда и только тогда, когда
vx < vy или (vx = vy и х > у лексикографически); (68)
здесь, как обычно, v (xi,...,хп) = х\Л \-хп. Например, при mi = 7712 = 2 и тз = 3
12 векторов х 1x2x3 в перекрестном порядке представляют собой
000,100,010,001, ПО, 101,011,002,111,102,012,112 (69)
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 33
(скобки и запятые для удобства опущены). Дополнением (complement) вектора
в Т (mi,..., mn) является вектор
х = (mi - 1 - a?i,... ,mn - 1 - хп). (70)
Заметим, что х =^ у выполняется тогда и только тогда, когда х)ру. Следовательно,
rank (х) + rank (х) = Т — 1, где Т = mi... mn, (71)
если rank (х) обозначает количество векторов, предшествующих х в перекрестном
порядке.
Удобно называть векторы "точками" и именовать точки ео, ei,..., ет-i в
возрастающем перекрестном порядке. Таким образом, мы имеем e-j = 002 в (69), а в общем
случае ег = ет-i-r- Заметим, что
ei = 100...00, е2 = ОЮ...ОО, еп = 000...01;
это так называемые единичные векторы (unit vectors). Множество
Sn = {ео, ei,..., едг-i} ,
(72)
(73)
состоящее из первых N в возрастающем перекрестном порядке точек, называется
стандартным множеством (standard set), и в случае N = п + 1 будем писать
Е = {ео,еь...,еп} = {ООО.. .00,100.. .00,010.. .00,... ,000.. .01} . (74)
Любое множество точек X имеет размах (spread) Х+, ядро (core) Х? и двойника
(dual) Х~, определяемых правилами
Х+ = {х е St | х G X или х — е\ G X или ... или х — еп е X} ;
X0 = {xeST\xeXnx + eieXn ... и х + епеХ};
Х~ = {х е ST | х i X} .
Можно определить размах X алгебраически, записав
Х+ = X + Е,
где X + Y означает {х + у \ х е X и у eY}. Понятно, что
Х+ С Y тогда и только тогда, когда 1СУ°.
(75)
(76)
(77)
(78)
(79)
Эти понятия могут быть проиллюстрированы в двухмерном случае mi = 4, т2 — 6
при помощи более или менее случайного тороидального размещения X = {00,12,13,
14,15,21,22,25}, для которого мы имеем (графически)
•
•
+
•
+
•
т
о
•
+
+
•
+
•1
т
oTi
•
о
• |
о|#
+
о!
Oj#
+
°1
• 1 +
i
+
(80)
Х° и Х+
и X"
34 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
Здесь X на первых двух диаграммах состоит из точек, помеченных как • и о, Х°
включает только о, а состоит из + , • и о. Заметим, что если мы повернем
диаграмму для Х~° и Х~+ на 180°, то получим диаграмму для Х° и Х+, но с (•, о, +, ),
замененными соответственно на (+, ,«,о). В действительности тождества
Х° = Х~+~ и Х+ = Х~°~ (81)
выполняются в общем случае (см. упражнение 86).
Теперь мы готовы к изложению теоремы Ванга и Ванга.
Теорема W. Пусть X — произвольное множество, состоящее из N точек
дискретного тора Г (mi,... ,mn), где mi ^ • • • ^ mn. Тогда \Х+\ ^ \S^\ и \Х°\ ^ \S%\.
Другими словами, стандартные множества Sn имеют наименьший размах и
наибольшее ядро среди всех iV-точечных множеств. Мы докажем этот результат при
помощи следующего общего подхода, впервые использованного Ф.Д.В. Випплом
(F.J.W. Whipple) для доказательства теоремы М [Proc. London Math. Soc, (2) 28
(1928), 431-437]. Первый шаг состоит в доказательстве того, что размах и ядро
стандартных множеств стандартны.
Лемма S. Существуют функции а и (3, такие, что = 5ajv и = S@n-
Доказательство. Мы можем считать, что N > 0. Пусть г — максимальное значение,
для которого er Е S^, и пусть aN = г + 1; мы должны доказать, что eq Е S^- для
0 < q < г. Допустим, что eq = х = (хь..., хп) и ег = у = (yi,..., уп), и пусть к —
наибольший индекс, для которого Хк > 0. Поскольку у е S^, существует индекс j,
такой, что y — ej€SN- Этого достаточно для доказательства того, что x — ek^y — ej,
и упражнение 88 делает это.
Вторая часть следует из (81) при (3N — Т — а(Т — N), поскольку S% = St-n- '
Очевидно, что теорема W справедлива при n = 1, поэтому по индукции
предположим, что она доказана для n—1 размерностей. Следующий шаг состоит в сжатии
(compress) данного множества X в к-й позиции путем разделения его на два
непересекающихся множества
Хк (a) = {х Е X | хк = а} (82)
для 0 ^ а ^ тк и замены каждого Хк (а) множеством
хк(а) = {(si,...,sk-i,a,sk,...,sn-i) | (sb...,sn_i) eS\Xk(a)\} (83)
с тем же количеством элементов. Множества S, использующиеся в (83), стандартны
в (п — 1)-мерном торе Т (mi,... ,mk-\,mk+\,... ,mn). Заметим, что (х\,... ,хк-\,а,
хк+г,..., хп) ^ (yi,. • •, Ук-i, а, ,..., уп) тогда и только тогда, когда (хг,..., хк-\,
xk+i,...,xn) ^ (2/i,...,2/fc-bt/fc+i,...,2/n); следовательно, Х'к(а) = Хк(а) тогда
и только тогда, когда (п — 1)-мерные точки {х\,..., хк-\,хк+\,..., хп), где (xi,...,
хк-\, a, Xfc+i,..., хп) Е X малы настолько, насколько это возможно при проекции на
(п — 1)-мерный тор. Пусть
СкХ = Х'к (0)UX[ (1)U...UI[ (mk - 1)
(84)
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 35
представляет собой сжатие X по fc-ой координате. Упражнение 90 доказывает тот
фундаментальный факт, что сжатие не увеличивает размер размаха:
Х+| > (СкХ)+
для 1 ^ к ^ п.
(85)
Кроме того, если сжатие изменяет X, то оно заменяет некоторые элементы другими
элементами меньшего ранга. Таким образом, достаточно доказать теорему W только
для полностью сжатых множеств X, у которых X = С^Х для всех к.
Рассмотрим, например, случай п = 2. У полностью сжатого в двух измерениях
множества все точки передвинуты влево в своих строках и вниз в своих столбцах,
как в одиннадцатиточечных множествах
или
или
или
или
крайнее справа множество стандартное и имеет наименьший размах. Упражнение 91
завершает доказательство теоремы W для двух размерностей.
Если п > 2, пусть х = (xi,..., хп) G X и xj > 0. Из условия С^Х = X вытекает,
что если 0 ^ г < j и г ф к ф j, то х + — е3, € X. Применение этого факта к трем
значениям к дает нам, что х + — е3 £ X для любых 0 ^ г < j. Следовательно,
Хп (а) + Еп (0) С Хп (а - 1) + еп для 0 < а < т, (86)
где га = тп и Еп (0) — сокращенная запись множества {ео,..., en_i}.
Пусть Хп (а) содержит Na элементов, так что N = \Х\ = No + N\ Н Ь ATm_i,
и пусть У = Х+. Тогда
Уп (а) = {Хп ((а - 1) mod га) + еп) U (Х„ (а) + Яп (0))
представляет собой стандартное множество в п— 1 размерностях и (86) говорит нам,
что
Nm-i ^ /3iVm_2 ^ агт_2 < • • • < JVi < /ЭД> < iV0 < aN0,
где а и /3 относятся к координатам от 1 до п — 1. Таким образом,
\Y\ = \Yn (0)| + |У» (1)| + \Yn (2)| + • • • + \Yn (га - 1)| =
= aiVo + N0 + iVi + • • • + Nm-2 = ctN0 + N — iVm_i.
Доказательство теоремы W теперь имеет красивое завершение. Пусть Z = 5дг
и положим \Zn (а)\ = Ма. Мы хотим доказать, что \Х+\ ^ т.е. что
aJV0 + N - JVm_i > aM0 + N - Мш_ь
(87)
поскольку аргументы из предыдущего абзаца применимы как к X, так и к Z. Мы
докажем (87), показав, что iVm_i ^ Mm-i и аг0 > Mq.
36 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
используя (п — 1)-мерные функции аир, определим
= Nm^N'm_2 = aNU-г,- ..,Щ= аЩ, Щ = aN[; (88)
Ng = N0, N{' = 0Ng, Щ = (3N", •••,<-!= «-2• (89)
тогда ^ Na ^ N'J для 0 ^ a < га и отсюда следует, что
= лг£ + w{ + • • - + ^ N ^ N» = N» + N[' + • • • + iv^_!. (90)
в упражнении 92 доказывается, что стандартное множество Z' = S'N имеет ровно
N'a элементов с п-й координатой, равной а, для каждого а. из дуальности а и /3
аналогично доказывается, что стандартное множество Z" = S'^ содержит ровно N"
элементов с п-й координатой, равной а. следовательно,
mm_i = \Zn (га - 1)| ^ \Z'n (га - 1)| = Nm-u
m0 = |zn(0)|^|z;,(0)|=ivo,
поскольку, согласно (90), z'czc Z". из (81) мы также имеем ^ \Z°\. i
теперь мы готовы доказать теоремы к и м, которые в действительности
являются частными случаями более общей теоремы клементса (clements) и линдстрема
(lindstrom), которая применима к произвольным мультимножествам [ j.
Combinatorial Theory, 7 (1969), 230-238]:
Следствие С. Если А — множество N t-сочетаний, содержащееся в
мультимножестве U = {s0 • 0,5i • 1,..., Sd • d}, где s0 ^ si ^ • • • ^ sd, то
\dA\Z\dPm\ и \gA\Z\eQm\, (91)
где p/vt обозначает N лексикографически наименьших мультисочетаний dt... Gfcdi
из U, a Qpft обозначает N лексикографически наибольших мультисочетаний.
Доказательство. мультисочетания из U могут быть представлены как точки х\,
... ,хп тора т (mi,...,тп), где п = d + 1 и гаj = sn_j + 1; пусть х3 — количество
вхождений п — j в мультисочетание. такое соответствие сохраняет
лексикографический порядок. например, если U = {0,0,0,1,1,2,3}, его 3-сочетаниями в
лексикографическом порядке являются
000,100, по, 200,210,211,300,310,311,320,321, (92)
а соответствующие им точки Х1Х2Х3Х4 выглядят как
0003,0012,0021,0102,0111,0120,1002,1011,1020,1101,1110. (93)
пусть Tw — точки тора, вес которых х\ + • • • + хп = w. тогда каждое
допустимое множество А ^-сочетаний является подмножеством Tt. более того — и в этом
главное — размах то u Т\ u • • • u Tt~\ u А равен
(т0 и 7\ и • • • u tt_i и л)+ = т0+ и тх+ и • • • и т£_х и =
= routiu-"utt_iuea
(94)
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 37
таким образом, верхняя тень дА просто равна (то u Т\ u • • • u Tt-\ u а)+ п т$+ь
и теорема w, по существу, гласит, что из \А\ = N следует \qA\ ^ \q{Sm+n пт«)|,
где м = \Tq u • • • u Tt-i\. следовательно, по определению перекрестного порядка
Sm+n^Ti состоит из N лексикографически наибольших ^-мультисочетаний, а
именно QNt.
доказательство того факта, что \дА\ ^ \dPwt\i теперь вытекает из
дополнительности (см. упражнение 94). i
Упражнения
1. [м##] поясните, почему правило голомба (8) устанавливает однозначное
соответствие между множествами {ci,..., ct} С {0,..., п — 1} и мультисочетаниями
{ei,..., et} С {оо • 0,..., оо • п — t}.
2. [16] какой путь в сетке 11 х 13 соответствует битовой строке (13)?
► 3. [21] (p.p. феничел (r.r. fenichel), 1968.) покажите, что разложения <& + ••• +
+ 9i + (7о числа s на t + 1 неотрицательных частей могут быть сгенерированы в
лексикографическом порядке при помощи простого алгоритма без циклов.
4. [16] покажите, что любая композиция qt-.-qo числа s из t + 1 неотрицательных
частей соответствует композиции rs ... г0 числа t из s + 1 неотрицательных частей.
какая композиция соответствует 10224000001010 при таком соответствии?
► 5. [20] какой хороший способ генерации всех целых решений следующей системы
неравенств можно предложить?
a) п > xt ^ xt-i > xt-2 ^ xt-3 > • • • > xi ^ 0, где t нечетно.
b) п ^> xt ^> xt-i ^> • • Х2 ^> х\ ^> 0, где а ^> Ь означает а ^ Ь + 2.
6. [М22] как часто выполняется каждый шаг алгоритма т?
7. разработайте алгоритм, который обходил бы "дуальные" сочетания bs ... 6261
в уменьшающемся лексикографическом порядке (см. формулу (5) и табл. 1).
подобно алгоритму т, ваш алгоритм должен избегать излишних присваиваний и
ненужных поисков.
8. [М23] разработайте алгоритм, который генерирует все (s, ^-сочетания ап-\...
а\ао лексикографически в виде битовых строк. общее время работы алгоритма
должно составлять О ((™))> в предположении, что st > 0.
9. [м£#] пусть все (s,^-сочетания an_i...aiao перечислены в
лексикографическом порядке и 2Ast — общее количество изменений битов между соседними
строками. например, л33 = 25, поскольку в табл. 1 между 20 строками всего
2 + 2 + 2 + 4 + 2 + 2 + 4 + 2 + 2 + 64-2 + 2 + 4 + 2 + 2 + 44-2 + 24-2 = 50
изменений битов.
a) покажите, что Ast = min (s, i) + A^s_i^t + As(t_i) при st > 0; Ast = 0 при st = 0.
b) докажите, что Ast < 2(5+').
38 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
► 10. [21] Чемпионат США по бейсболу (World Series) является состязанием, в
котором чемпион Американской лиги (А) играет с чемпионом Национальной лиги (N),
пока один из них не выиграет у другого четыре раза. Как лучше всего перечислить
все возможные сценарии АААА, A A AN A, A A ANN А, ..., NNNN? Каков простейший
способ назначить последовательные целые числа этим сценариям?
11. [19] Какой из сценариев упражнения 10 чаще всего встречался в XX веке?
Какой не встречался ни разу? [Указание: результаты чемпионата World Series легко
найти в Интернете.]
12. [НМ32] Множество V n-битовых векторов, замкнутое относительно сложения
по модулю 2, называется бинарным векторным пространством (binary vector space).
a) Докажите, что каждое такое V содержит 2* элементов для некоторого
целого числа t и может быть представлено как множество {х\а\ ф • • • ф xtctt\0 ^
хг,..., xt ^ t}, где векторы а\,..., at образуют "канонический базис" со
следующим свойством: существует t-сочетание q ... С2С1 из 0,1,..., п — 1, такое, что
если ojfc — бинарный вектор ацп-1) - • • afciufco? то мы имеем
a>kcj = [j = к] для l^j,k^t; aki = 0 для 0 < / < ck, 1 ^ k ^ t.
Например, канонические базисы при n = 9, t = 4 и C4C3C2C1 = 7641 имеют
общий вид
а1 = *00*0**10,
а2 = *00*1000 0,
а3 = *0100000 0,
а4 = *1000000 0;
существует 28 способов заменить восемь звездочек нулями и/или единицами,
и каждый из них образует канонический базис. Назовем t размерностью V.
b) Сколько может быть t-мерных пространств с n-битовыми векторами?
c) Разработайте алгоритм для генерации всех канонических базисов (а\,.. .,ctt)
размерности t. Указание: соответствующие сочетания с*... с\ должны
лексикографически возрастать, как в алгоритме L.
d) Каким будет миллионный посещенный вашим алгоритмом базис при п = 9
и * = 4?
13. [25] Одномерная конфигурация Изинга (Ising configuration) длины п, весом t и с
энергией г представляет собой бинарную строку an_i... ao, такую, что ]Cj=o аз ~ *
и X^i1 bj = г, где bj = aj ф aj-\. Например, ai2 ... ao = 1100100100011 имеет вес 6
и энергию 6, поскольку Ь\2 ... Ь\ = 010110110010.
Разработайте алгоритм для генерации всех таких конфигураций для данных п,
t и г.
14. [26] При генерации бинарных строк an_i...aiao (s,^-сочетаний в
лексикографическом порядке нам иногда требуется изменять 2 min (s, t) бит при переходе
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 39
от одного сочетания к следующему. Например, в табл. 1 за 011100 следует 100011.
Следовательно, мы, по-видимому, не можем надеяться сгенерировать все сочетания
при помощи алгоритма без циклов, если только не будем посещать их в некотором
другом порядке.
Покажите, что в действительности все же есть способ вычисления
лексикографического предшественника данного сочетания за О (1) шагов, если каждое сочетание
представлено в виде двухсвязного списка следующим образом: имеются массивы
I [0][п] и г [0],..., г [п], такие, что I [г = j для 0 ^ j ^ п. Если хо = / [0]
и хj = / [xj-i] для 0 < j < п, то dj = [xj > s] для 0 ^ j < п.
15. [М22] Используйте то, что дуальные сочетания Ь3 ... 6261 располагаются в
обратном лексикографическом порядке, для доказательства простой связи суммы
СО—СК0
с суммой
(:)♦■••♦©♦(?)•
16. [ М21] Каково миллионное сочетание, сгенерированное алгоритмом L, при
равном (а) 2? (Ь) 3? (с) 4? (d) 5? (е) 1000000?
17. [НМ25] Каким образом можно вычислить комбинаторное представление (20)
для данных Nut?
► 18. [20] Какое бинарное дерево мы получим при представлении биномиального
дерева Тп с указателями на "правого ребенка" и "левого брата", как в
упражнении 2.3.2-5?
19. [21] Вместо того чтобы помечать ветви биномиального дерева Т4 так, как
показано в (22), мы можем пометить каждый узел битовой строкой соответствующего
сочетания:
0111 1011 1101 1110
1111
Если пометить таким образом Т^, опуская начальные нули, то прямой порядок
обхода даст нам бинарные числа в обычном возрастающем порядке; так, миллионный
узел превратится в 11110100001000111111. А каким будет миллионный узел при
обходе в обратном порядке?
20. [М20] Найдите производящие функции g и h, такие, что алгоритм F находит
ровно [zN] g (z) возможных сочетаний и устанавливает t <— t + 1 ровно [zN] h (z)
раз.
40 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
21. [М22] (Д.Э. Миллер (J.E. Miller), 1971) Докажите закон знакопеременных
сочетаний (30).
22. [М23] Каково миллионное сочетание, посещенное алгоритмом R, если t равно
(а) 2? (Ь) 3? (с) 4? (d) 5? (е) 1000000?
23. [М23] Предположим, мы изменили алгоритм R, добавив установку j <— t + 1
на шаге R1, и j <— 1, если из R3 осуществляется непосредственный переход в R2.
Найдите распределение вероятности j и его среднее значение. Как эта величина
связана со временем работы алгоритма?
► 24. [М#5] (В.Г. Пейн (W.H. Payne), 1974.) Продолжим выполнение предыдущего
упражнения. Пусть jk — значение j при А;-м посещении в алгоритме R. Покажите,
что \ jk+i — jk\ ^ 2, и поясните, как отказаться от использования циклов в алгоритме
с применением данного свойства.
25. [М35] Пусть Q...C2C1 и с[...с/2с,1 — N-e и N'-e сочетания, сгенерированные
методом двери-вертушки (алгоритм R). Докажите, что \N — N'\ > Y^k=i (к-i)'
если множество С = {ct,..., С2С1} имеет т > 0 элементов, не входящих в С' =
— {cv - - • ? с2> ci}-
26. [26] Обладают ли элементы тернарного (троичного) рефлексивного кода Грея
свойствами, аналогичными свойствам кода Грея двери-вертушки Tst, если мы
возьмем только те n-кортежи an_i... aiao, у которых
a) ап-\ + Ь а\ + ao = t\
b) {ап_ь... ,аьа0} = {г • 0, s • 1, t • 2}?
► 27. [25] Покажите, что существует простой способ генерации всех сочетаний не
более t элементов из {0,1,...,п — 1} с использованием только лишь переходов в духе
кода Грея 0«->1и01<->10. (Другими словами, на каждом шаге должны
выполняться вставка элемента, удаление элемента или сдвиг элемента на ±1.) Примером
такой последовательности является
0000,0001, ООП, 0010, ОНО, 0101,0100,1100,1010,1001,1000
при п = 4 и t = 2. Указание: подумайте о китайских кольцах.
28. [M£i] Истинно или ложно следующее утверждение: последовательность всех
(5,^-сочетаний an_i.. .aiao в виде битовых строк находится в облексном порядке
тогда и только тогда, когда соответствующие последовательности в индексном виде
bs... 6261 (для нулей) и ct... С2С1 (для единиц) находятся в облексном порядке.
► 29. [М28] (Ф.Д. Чейз (P.J. Chase)) Для данной строки символов +, - и 0 назовем
R-блоком подстроку вида -fc+15 которой предшествует 0 и за которой не следует -.
L-блоком назовем подстроку вида за которой следует 0; в обоих случаях k ^ 0.
Например, строка S00++-++E30009 имеет два L-блока и один R-блок, выделенные
рамкой. Заметим, что блоки не могут пересекаться.
Для таких строк мы образуем последующую строку при наличии хотя бы одного
блока путем замены крайнего справа О-^4"1 на -+к0, если крайний справа блок
является R-блоком; в противном случае заменяем крайний справа +-fe0 на 0+/е+1. Кроме
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 41
того, обращаем первый знак, если таковой имеется, который находится справа от
измененного блока, например:
-S00++- -» -0S0H+- -ОЕЗО0 -> -0+-S0 -+ -0Е30+ -00+++-
где запись а —> /3 означает, что /? является следующим за о; элементом.
a) Какие строки не содержат блоков (а значит, не имеют последующих
элементов)?
b) Может ли существовать цикл строк ао —> а\ —> —> oik-i —> «о?
c) Докажите, что если а —> /3, то —/3 —► —а, где "—" означает "обратить все знаки"
(следовательно, каждая строка имеет не более одного предшественника).
d) Покажите, что если ао —► сх\ > а& и А; > 0, то строки ао и не содержат
все их нули в одних и тех же позициях (таким образом, если ао имеет s знаков
и t нулей, к должно быть меньше, чем (s^*)).
e) Докажите, что каждая строка а, содержащая s знаков и t нулей, принадлежит
ровно одной цепочке ао —> ol\ —+ • • • —■> а^+^_г
30. [М3#] В предыдущем упражнении определены 2s способов генерации всех
сочетаний из s нулей и t единиц посредством отображений + и 0, - и 0 и 0 и 1.
Покажите, что каждый их этих способов дает однородную облексную
последовательность, определяемую соответствующим рекуррентным соотношением. Является
ли последовательность Чейза (37) частным случаем этой более общей конструкции?
31. [М23] Сколько всего облексных последовательностей (5, ^-сочетаний может
быть при использовании представления
a) в виде битовых строк ап-\... а\ао\
b) в виде списка индексов ct... с2с1?
► 32. [М32] Сколько всего облексных последовательностей строк (5, ^-сочетаний
ап-\... aiao
a) обладают свойством двери-вертушки;
b) однородны?
33. [НМЗЗ] Сколько облексных последовательностей в упражнении 31,6 близки
к идеальным?
34. [М32] Продолжая выполнение упражнения 33, поясните, как при не слишком
больших s и t найти такие схемы, которые как можно более близки к идеальным
в том смысле, что количество "неидеальных" переходов Cj <— с3, ± 2 минимально.
35. [М##] Сколько шагов последовательности Чейза C8t используют неидеальные
переходы?
42 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
► 36. [M#i] Докажите, что метод (39) при генерации всех (s, ^-сочетаний an_i... aiao
выполняет операцию j <— j> + 1 ровно — 1 раз, для любой облексной схемы
сочетаний в виде битовых строк.
► 37. [27] Какой алгоритм получается при использовании общего облексного метода
(39) для получения (s, ^-сочетаний an_i... aiao:
a) в лексикографическом порядке;
b) в порядке двери-вертушки из алгоритма R;
c) в однородном порядке (31)?
38. [26] Разработайте облексный алгоритм наподобие алгоритма С для обратной
последовательности С^.
39. [M#i] Сколько сочетаний предшествует битовой строке
11001001000011111101101010
в последовательности Чейза Cst при s = 12 и t = 14? (См. пример (41).)
40. [М22] Каково миллионное сочетание в последовательности Чейза C8t при 5 = 12
и t = 14?
41. [М27] Покажите, что имеется перестановка с (0), с (1), с (2),...
неотрицательных целых чисел, такая, что элементы последовательности Чейза Cst получаются
путем дополнения s + t младших битов элементов с (к) для 0 ^ к < 2s+t,
которые имеют вес v (с (к)) = s. (Таким образом, последовательность с (0),.... с (2П — 1)
содержит в качестве подпоследовательности все C3t, для которых s + t — п, так
же, как бинарный код Грея д (0),...,д (2П — 1) содержит все последовательности
двери-вертушки Tst.) Поясните, как вычислить бинарное представление с (к) =
= (... a2aiao)2 на основе бинарного представления А; = (... &2&iM2-
42. [НМ34] Используйте производящую функцию вида Ylstdst^8^ для анализа
каждого шага алгоритма С.
43. [20] Докажите или опровергните следующее утверждение: если s (х) и р (х)
обозначают соответственно преемника и предшественника х в чун-порядке (см. с. 25),
то s (х + 1) = р (х) + 1.
► 44. [М21] Пусть Ct (п) — 1 обозначает последовательность, получаемую из Ct (п)
путем исключения всех сочетаний с ci = 0 и последующей заменой ct... ci на (ct — 1)...
(ci — 1) в оставшихся сочетаниях. Покажите, что последовательность Ct (п) — 1
близка к идеальной.
45. [32] Воспользуйтесь чун-порядком и наброском расширения из уравнений (44)
для генерации сочетаний q ... с2с1 последовательности Чейза Ct (п) при помощи
нерекурсивной процедуры.
► 46. [33] Постройте нерекурсивный алгоритм для дуальных сочетаний bs ... 62^1
последовательности Чейза Cst, & именно для позиций нулей в an_i... aiao-
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 43
47. [26] Реализуйте близкий к идеальному метод генерации перестановок
мультимножества из (46) и (47).
48. [М21] Предположим, что ao,ai,... ,ojjv_i — любая последовательность
перестановок мультимножества {s\ • 1,..., sd • d}, гДе ак отличается от ак+1 обменом
двух элементов. Пусть /?о,. • •, /?м-1 — любая последовательность (s, ^сочетаний
двери-вертушки, где s = so, t = si -f • • • + s<*, а M = Далее, пусть Aj —
последовательность из М элементов, полученная путем применения обменов двери-
вертушки к начальной строке aj | /?о, где а | Р означает строку, полученную
заменой элементами а единиц в /3 с сохранением порядка слева направо. Например,
если А),... ,/?м-1 — ОНО, 0101, 1100, 1001, ООН, 1010, а а,- = 12, то
представляет собой 0120, 0102, 1200, 1002, 0012, 1020. (Последовательность двери-вертушки не
обязательно однородна.)
Докажите, что последовательность (47) содержит все перестановки {so • 0, s\ • 1,
..., sd • d} и что соседние перестановки отличаются друг от друга обменом двух
элементов.
49. [НМ23] Пусть q — первообразный m-корень корень единицы, такой, как е27гг/ш.
Покажите, что
► 50. [НМ25] Распространите формулу из предыдущего упражнения на
q-мультиномиальные (g-multinomial) коэффициенты
51. [25] Найдите все Гамильтоновы пути в графе, вершины которого представляют
собой перестановки {0,0,0,1,1,1}, причем дуги соединяют вершины,
получающиеся при перестановке двух соседних элементов. Какие из этих путей эквивалентны
относительно операции замены нулей единицами и/или лево-правого отражения?
52. [М37] Обобщая теорему Р, найдите необходимое и достаточное условие того,
что все перестановки мультимножества {so * 0,..., sd • d} могут быть сгенерированы
при помощи переходов ojoj-i o,j-ia,j.
53. [М46] (Д.Г. Лемер (D.H. Lehmer), 1965.) Предположим, что N перестановок
{so • 0,..., sd - d} не могут быть сгенерированы при помощи идеальной схемы,
поскольку (N + х)/2 из них имеют четное количество инверсий, где х ^ 2. Можно ли
сгенерировать их все при помощи последовательности N + x — 2 обменов а$к +-> а$к_1
для 1 ^ к < N+x—1, где имеется х— 1 случаев "шпор" с 6к = Sk-i, возвращающих нас
к перестановкам, с которыми мы только что сталкивались? Например, подходящая
последовательность Si... J94 для 90 перестановок {0,0,1,1,2,2}, где х = (2^2^2) г ~
= 6, имеет вид 234535432523451а42ад51а42ад51а4, где а = 45352542345355, если
начать с 0,50,40,30,2(110,0 = 221100.
54. [М^^] Для каких значений s и t могут быть сгенерированы все (s,
^-сочетания, если в дополнение к обменам смежных элементов a,j <-> a,j-\ разрешить обмен
конечных элементов ап-\ +-+ ао?
44
КОМБИНАТОРНЫЙ ПОИСК
7.2.1
► 55. [33] (Франк Раски (Frack Ruskey), 2004.)
a) Покажите, что все (s, ^-сочетания as+t-i • • • ai^o можно эффективно
сгенерировать путем последовательных циклических сдвигов cljCLj-i .. .ао <— a7_i...
aoaj.
b) Какие команды MMIX превращают {as+t-\ • • .«1^0)2 в следующий за ним
элемент при s + t < 64?
56. [М49] (Бак (Buck) и Видеманн (Wiedemann), 1984.) Можно ли сгенерировать
все (£, ^-сочетания a2t-\ • • • «i«o путем повторных обменов ао с некоторыми другими
элементами?
► 57. [22] (Франк Раски (Frack Ruskey).) Может ли пианист проиграть все 4-нотные
аккорды, размах которых не превышает одной октавы, перемещая всякий раз при
переходе к новому аккорду только один палец? Это задача генерации всех сочетаний
ct... ci, таких, что п > ct > • • • > с\ ^ 0 и ct — с\ < га, где t = 4 и
a) га = 8, п = 52, если рассматривать только белые клавиши пианино;
b) га = 13, п = 88, если учесть и черные клавиши.
58. [20] Рассмотрите задачу о пианисте из упражнения 57 с дополнительным
условием, что аккорды не содержат соседних нот. (Другими словами, c^+i > сj + 1 при
t > j ^ 1. Такие аккорды обычно более гармоничны.)
59. [М25] Имеется ли идеальное решение задачи о пианисте с четырьмя нотами,
в которой на каждом шаге палец перемещался бы на соседнюю клавишу?
60. [23] Разработайте алгоритм для генерации всех ограниченных композиций
t = rs-\ h ri + r0, где 0 < Гj; ^ TUj ДЛЯ S ^ j ^ 0.
61. [32] Покажите, что все ограниченные композиции могут быть сгенерированы
путем изменения на каждом шаге только двух из частей.
► 62. [М#7] Факторная таблица представляет собой матрицу размером га х п из
неотрицательных целых чисел (а^), обладающую заданными суммами строк =
= YTj=\ aij и столбцов Cj = YhL\ а0> причем гН Ь гш = с\ л v сп.
a) Покажите, что факторные таблицы размером 2 х п эквивалентны
ограниченным композициям.
b) Какая факторная таблица является наибольшей в лексикографическом
порядке для (7*1,..., rm; ci,..., сп), если считывать элементы матрицы построчно
слева направо и сверху вниз в порядке (ац, ai2,..., а\п, a2i,..., атп)?
c) Какая факторная таблица является наибольшей в лексикографическом
порядке для (п,..., rm; ci,..., сп), если считывать элементы матрицы по столбцам
сверху вниз и по строкам слева направо в порядке (ац, агь ..., ami, ai2,...,
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 45
d) Какая факторная таблица является наименьшей в лексикографическом
порядке для (ri,..., rm; ci,..., сп) при построчном и постолбцовом считывании?
e) Поясните, как сгенерировать все факторные таблицы для (г\,..., гт; с\,..., сп)
в лексикографическом порядке?
63. [M^i] Покажите, что все факторные таблицы для (r*i,..., rm; ci,..., сп) могут
быть сгенерированы при помощи изменений на каждом шаге ровно четырех
элементов матрицы.
► 64. [МЗО] Постройте облексный цикл Грея для всех из 2s{s~^t) подкубов, которые
имеют s цифр и t звездочек, с использованием только следующих преобразований:
*0 <-> 0*, *1 «-> 1*. О <-> 1. Например, вот один такой цикл при s = t = 2:
(00 * *, 01 * *, 0 * 1*, 0 * *1,0 * *0,0 * 0*, *00*, *01*, *0 * 1, *0 * 0, * * 00, * * 01,
* *11, * * 10, *1 * 0, *1 * 1, *11*, *10*, 1 * 0*, 1 * *0,1 * *1,1 * 1*, 11 * *, 10 * *).
65. [М^0] Подсчитайте общее количество облексных путей Грея в подкубах, в
которых используются только преобразования, разрешенные в упражнении 64. Сколько
из этих путей являются циклами?
► 66. [22] Покажите, что для данных п ^ t ^ 0 существует путь Грея через все
канонические базисы (oji, ..., а*) из упражнения 12, в котором на каждом шаге
выполняется изменение только одного бита. Например, приведем один такой путь
для п = 3 и t = 2:
001 101 101 001 001 ОН 010
010' 010' 110' НО' 100' 100' 100*
67. [46] Рассмотрим конфигурации Изинга из упражнения 13, для которых ао = 0.
Существует ли цикл Грея для этих конфигураций при заданных n, t и г, в котором
все переходы имеют вид 0^1 10fc или 01^ <-> lfc0? Например, в случае п = 9, t = 5,
п — 6 имеется единственный цикл
(010101110,010110110,011010110,011011010,011101010,010111010).
68. [М01] Если а является ^-сочетанием, то что такое (а) дга\ (b) dt+1a?
► 69. [М22] Насколько велико наименьшее множество ^-сочетаний Л, для которого
выполняется соотношение \дА\ <\А\1
70. [М25] Чему равно максимальное значение ntN — N при N ^ 0?
71. [М20] Сколько t-клик может иметь граф с миллионом ребер?
► 72. [М22] Покажите, что если N имеет комбинаторное представление степени t
(57), то существует простой способ найти комбинаторное представление степени s
дополняющего числа М = (s^) — N для iV < Как следствие, выведите (63).
73. [М23] (Э.Д.В. Хилтон (A.J.W. Hilton), 1976.) Пусть А — множество s-сочетаний,
а В — множество t-сочетаний, и оба содержатся в U = {0,..., п — 1}, где п ^ s + £.
Покажите, что если А и В перекрестно пересекающиеся (cross-intersecting) в том
смысле, что аП(3 ф 0 для всех a G А и /3 £ Б, то такими же являются и множества
Qmus и QNnt, определенные в теореме К, где М = \А\ и N = \В\.
46 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
74. [М21] чему равны \gPNt\ и \gQNnt\ в теореме к?
75. [м#0] правая часть (60) не всегда является комбинаторным представлением
степени (t — 1) для «*лг, поскольку v — 1 может быть равно 0. покажите, однако,
что положительное целое N имеет не больше двух представлений, если мы допустим
v = 0 в (57), и оба они дают одно и то же значение KtN в соответствии с (60).
следовательно,
Ккпк+1 (fc* х) + +•■•+(*_!+„_,) а» 1 < * < t-
76. [м20] найдите простую формулу для /с* (iv + 1) - «*лг.
► 77. [М26] докажите следующие свойства функции к, работая только с
биномиальными коэффициентами, без привлечения теоремы к:
a) щ (M + N) < кгМ + /с*лг.
b) Kt (M + N) ^ max (,ctm, N) + Kt-iN.
Указание: (7) + • • • + (7) + (?) + (7) равно (m^n<) + • • • + (mi*ni) + (mt*nt) +
h h (mifni), где v и л обозначают максимум и минимум.
78. [М22] покажите, что теорема к следует из неравенства (ь) (см. предыдущее
упражнение), и наоборот: оба неравенства являются следствиями теоремы к.
Указание: любое множество ^-сочетаний А может быть записано как А = А\ + л00, где
Ах = {аеА\0<£а}.
79. [М23] докажите, что для t ^ 2 соотношение М ^ /х*лг справедливо тогда
и только тогда, когда М + \t-\M ^ N.
80. [НМ26] (л. ловас (l. lovesz), 1979.) функция (*) монотонно возрастает от 0
до оо при увеличении х от t — 1 до оо; следовательно, мы можем определить
KtN = ^ Х ^, если iv =
докажите, что kttv ^ «tiv для всех целых £ ^ 1 и iv ^ 0. Указание: неравенство
становится равенством при целых значениях х.
► 81. [М27] покажите, что формула (64) дает минимальный размер тени в
теореме м.
82. [НМ31] функция такаги на рис. 27 определяется для 0 ^ х ^ 1 формулой
- ?
т(х) = £Чг* (t)dt,
где rk (t) — (-l)L2 *J — функция радемахера из 7.2.1.1—(16).
а) докажите, что т (х) непрерывна на отрезке [0..1], но ее производная не
существует ни в одной точке.
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 47
b) Покажите, что т (х) — единственная непрерывная функция, удовлетворяющая
уравнению т (\х) = г (1 — \х) = \х +\т (х) при 0 ^ х ^ 1.
c) Чему равно асимптотическое значение т (ё) при малых е?
d) Докажите, что значение т (х) при рациональном х рационально.
e) Найдите все корни уравнения т (х) = 1/2.
f) Найдите все корни уравнения т (х) = maxo^z^i т (х).
83. [НМ46] Определите множество R всех рациональных чисел г, таких, что
уравнение т(х) = г имеет несчетное количество решений. Если т (х) рационально, а х —
иррационально, верно ли, что т (х) Е Ri (Предупреждение: эта задача может
оказаться настоящим наркотиком.)
84. [НМ27] Докажите для Т = (2г^г) следующую асимптотическую формулу:
с) аМ ^ N тогда и только тогда, когда М ^ (3N.
88. [М20] Поясните, в чем полезность перекрестного порядка, завершив
доказательство леммы S.
89. [16] Вычислите функции а и (3 для тора 2x2x3 (69).
90. [М22] Докажите фундаментальную лемму о сжатии (85).
91. [М24] Докажите теорему W для двухмерных торов T(Z,m), I ^ т.
92. [М28] Пусть х = х\...хп-\ — N-й элемент тора Т (mi,..., mn_i) и пусть
S — множество всех элементов Т (mi,..., mn_i, m), которые =^ х\... хп-\ (m — 1)
в перекрестном порядке. Пусть Na элементов S имеют последним компонентом а
(О < а < тп). Докажите, что iVm_i = N и Na-i = ocNa для 1 ^ a < m, где a —
функция размаха для стандартных множеств в Т (гп\,..., mn_i).
93. [М25] (а) Найдите N, для которого результат теоремы W ложен, если
параметры mi, 7П2, • • •, ™>п не располагаются в неубывающем порядке. (Ь) Где в
доказательстве теоремы используется гипотеза о том, что mi ^ m2 ^ • • • ^ mn?
85. [НМ21] Свяжите функции XtN и iitN с функцией Такаги т(х).
86. [М20] Докажите закон дуальности размаха/ядра Х~+ = Х°~.
87. [M#i] Истинны или ложны утверждения:
a) X С У° тогда и только тогда, когда У~ С
b) = Х°;
48 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
94. [М20] Покажите, что <9-часть следствия С вытекает из 0-части. Указание:
дополнениями мультисочетаний (92) по отношению к U являются 3211, 3210, 3200,
3110, 3100, 3000, 2110, 2100, 2000, 1100, 1000.
95. [17] Объясните, почему теоремы К и М вытекают из следствия С.
► 96. [М22] Пусть S — бесконечная последовательность («о, si, 52,...)
положительных целых чисел, и пусть
п-1
= [zk] JJ(l+ * + ...+ гл*)\
j=o
таким образом, (S^) при sq = s\ = S2 = - • - = I — обычный биномиальный
коэффициент (£).
Обобщая комбинаторную систему счисления, покажите, что каждое
неотрицательное целое N имеет единственное представление
где щ ^ nt-i ^ • • • ^ п\ ^ 0 и ... ,п{\ С {s0 • 0, si • 1, S2 • 2,...}.
Воспользуйтесь этим представлением для получения простой формулы для чисел |<9P/vt|
в следствии С.
► 97. [М26] В тексте раздела было замечено, что вершины выпуклого многогранника
могут быть слегка смещены так, что все его грани будут представлять собой
симплексы. В общем случае любое множество сочетаний, которое содержит тени всех
своих элементов, называется симплициальным комплексом (simplicial complex);
таким образом, С является симплициальным комплексом тогда и только тогда, когда
изаС/Зи/ЗеС вытекает, что аеС.
Если С содержит в точности Nt сочетаний размера t, то (No, iVi,..., Nn) является
вектором размеров симплициального комплекса С из п вершин.
a) Чему равны векторы размеров пяти правильных многогранников (тетраэдр,
куб, октаэдр, додекаэдр и икосаэдр) при небольшой подстройке их вершин?
b) Постройте симплициальный комплекс с вектором размеров (1,4,5,2,0).
c) Найдите необходимое и достаточное условие допустимости данного вектора
(7V0,7Vi,...,7Vn).
d) Докажите, что вектор (iVo, N\,..., iVn) является допустимым тогда и только
тогда, когда допустим его "дуальный" вектор (А/о, N±,..., Nn), где Nt = (™) —
-Nn-t.
e) Перечислите все допустимые векторы размеров (No, Ni, N2, N3, N4, N5) и
дуальные им. Какие из этих векторов самодуальны?
98. [30] Продолжая выполнение упражнения 97, найдите эффективный способ
подсчета количества допустимых векторов (No, N\,..., Nn) при n ^ 100.
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 49
99. [М#5] Клаттером (clutter)3 называется множество С сочетаний, несравнимых
в том смысле, что из аС(Зи а,/ЗеС вытекает а = (3. Вектор размеров клаттера
определяется так же, как и в упражнении 97.
a) Найдите необходимое и достаточное условие того, что (Mo, Mi,..., Мп) —
вектор размеров клаттера.
b) Перечислите все такие векторы размеров для п = 4.
► 100. [М#0] (Клементе (Clements) и Линдстрем (Lindstrom).) Пусть А — "симплици-
альный мультикомплекс", множество подмультимножеств мультимножества U
в следствии С, обладающее тем свойством, что дА С А. Насколько большим может
быть общий вес и А = ^2 {\а\ \ a Е А} при \А\ = N?
101. [М25] Если /(xi,... ,жп) — булева формула, обозначим через F (р)
вероятность того, что / (xi,..., хп) = 1, если каждая переменная Xj независимо равна 1
с вероятностью р.
a) Вычислите G (р) и Н (р) для булевых формул g (w, х, у, z) = wxz V wyz V xyz,
h (w, x, y, z) = wyz V xyz.
b) Покажите, что существует монотонная булева функция f (w,x,y,z) такая, что
F (р) = G(p), но не существует такой функции, что F (р) = Н(р). Поясните,
как проверить это условие в общем случае.
102. [НМ35] (Ф.С. Маколей (F.S. Macaulay), 1927.) Полиномиальным идеалом
(polynomial ideal) / для переменных {х\,... ,xs} является множество полиномов,
замкнутое по отношению к операциям сложения, умножения на константу и
умножения на любую из переменных. Он называется однородным (homogeneous), если
состоит из линейных комбинаций множества однородных полиномов, т.е.
полиномов наподобие ху + z2, у которых все члены имеют одну и ту же степень. Пусть
Nt — максимальное число линейно независимых элементов степени t в /. Например,
при s = 2 множество всех a(xo,xi,X2) (xqx\ — 2xix%) + /3(хо,#i,х2)xoXix2l где a
и (3 пробегают по всем возможным полиномам от {хо,х\,х2}, представляет собой
однородный полиномиальный идеал с No = N1 = N2 = О, N3 = 1, N4 = 4, N5 = 9,
N6 = 15, ....
a) Докажите, что для любого такого идеала / существует другой идеал в
котором все однородные полиномы степени t представляют собой линейные
комбинации Nt независимых одночленов (monomial). (Одночлен представляет собой
произведение переменных наподобие х\х2х§.)
b) Используйте теорему М и (64) для того, чтобы доказать, что A^+i ^ Nt + KsNt
для всех t ^ 0.
c) Покажите, что неравенство Nt+i > Nt+K,sNt выполняется только для
конечного количества t (это утверждение эквивалентно "основной теореме Гильберта",
доказанной Д. Гильбертом (D. Hubert) в Gottinger Nachrichten (1988), 450-457;
Math. Annalen, 36 (1890), 473-534.)
3Дословно — беспорядком. — Примеч. пер.
50 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
► 103. [М##] Тень подкуба а\.. . ап, где каждое dj является 0, 1 либо *, получается
путем замены некоторых * на 0 или 1, например:
дО * 11 * 0 = {ООН * 0,0111 * 0,0 * 1100,0 * 1110} .
Найдите множество P/vst, такое, что если А — произвольное множество N подкубов
cl\ ... ап с s цифрами и t звездочками, то \дА\ ^ \PNst\-
104. [M^i] Тень бинарной строки а\.. .ап получается путем удаления одного из ее
битов, например:
Ш0010010 = {10010010,11010010,11000010,11001000,11001010,11001001} .
Найдите множество P/vn, такое, что если А — произвольное множество N бинарных
строк аг.. .an, то \дА\ ^ \Рмп\-
105. [М#0] Универсальным циклом t-сочетаний (universal cycle of t-combinations)
{0,1,..., n — 1} является цикл из (™) чисел, блоки которых из t последовательных
элементов пробегают все ^-сочетания {ci,..., q}. Например,
(02145061320516243152630425364103546)
является универсальным циклом для t = 3 и п — 7.
Докажите, что такие циклы невозможны, если только (") не кратно п.
106. [М21] (Л. Пуансо (L. Poinsot), 1809.) Найдите "красивый" универсальный цикл
2-сочетаний {0,1,..., 2т}. Указание: рассмотрите разности последовательных
элементов по модулю (2т + 1).
107. [22] (О. Терквем (О. Terquem), 1849.) Из теоремы Пуансо следует, что все 28
костей домино из традиционного набора "дубль-шесть" можно расположить
циклически так, что очки на соседних домино будут одинаковы:
Сколько всего таких циклов может быть?
108. [АШ] Найдите универсальные циклы 3-сочетаний множеств {0, ...,n—1},
у которых п mod 3^0.
109. [М31] Найдите универсальные циклы 3-мультисочетаний множеств {0,...,
п — 1}, у которых п mod 3^0 (т.е. сочетаний dio^cfe, в которых разрешены
повторения). Например, при п = 5 таким циклом является
(00012241112330222344133340024440113).
110. [26] Криббедж (cribbage) — карточная игра для колоды из 52 карт, каждая
из которых имеет масть (4к,0,9,4) и достоинство (А, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q,
К). Одна из особенностей игры состоит в вычислении счета для сочетания 5 карт
С = {с1,С2,сз,С4,Сб}, где одна карта ск называется стартером. Счет представляет
собой сумму очков, вычисляемую следующим образом для каждого подмножества
S множества С и каждого выбора к. Пусть |5| = s.
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 51
i) пятнадцать: если ]г {v (с) \с £ S} — 15, где (г; (а), v (2), v (3),..., v (9), v (10),
v (j), v (q), v (k)) = (1,2,3,..., 9,10,10,10,10), то засчитывается два очка.
ii) пары: если s = 2 и обе карты одного и того же достоинства, засчитывается два
очка.
iii) "тропа" (run): если s ^ 3 и достоинства карт следуют друг за другом, и если С
не содержит тропы длиной 5-1-1, засчитывается s очков.
iv) масть (flush): если s = 4 и все карты S имеют одну и ту же масть, и если ск £ S,
засчитывается 4 -I- [ск имеет ту же масть, что и другие карты] очков.
v) козырный валет (nob): если 5 = 1 и ск ф S, засчитывается 1 очко, если карта —
валет (j) той же масти, что и ск.
например, если у вас на руках {j£, 5ф, 5<>, 6<?} и стартером является 44k, то ваш
счет 4 х 2 за пятнадцать, 2 — за пару, 2 х 3 за тропы и 1 за козырного валета, итого —
17 очков.
сколько в точности вариантов сочетаний карт и стартера приводят к счету,
равному х очкам (х = 0,1,2,...)?
► 111. [М26] (п. эрдеш (p. erdos), ч. ко (с. ко) и р. радо (r. rado).) предположим,
что А — множество г-сочетаний n-множества, причем ап/з ^ 0 для любых а, /3£ А.
покажите, что \А\ ^ (£-i)> если r ^ п/2- Указание: рассмотрите дп~2гВ, где В —
множество дополнений А.
52 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
7.2.1.4 Генерация всех разбиений
Великолепная книга Ричарда Стенли (Richard Stanley) Перечислительная
комбинаторика (Enumerative Combinatorics, 1986) начинается с рассмотрения "двенадца-
тизадачия" — массива размером 2x2x3 фундаментальных комбинаторных задач,
часто возникающих на практике (табл. 1). Все 12 задач Стенли можно описать в
терминах распределения заданного количества шаров по заданному количеству урн.
Например, имеется девять способов поместить два шара в три урны, если и шары
и урны помечены.
(Порядок шаров внутри урны игнорируется.) Но если шары не помечены, то
некоторые из размещений неразличимы, так что возможны только шесть различных
способов размещения.
(1)
Если урны не помечены, то размещения наподобие и , по сути,
одинаковы, следовательно, различимы только два из исходных девяти размещений. Если
же у нас имеется три помеченных шара, то вот все различные способы их
размещения в трех непомеченных урнах.
(2)
И наконец, если ни шары, ни урны не помечены, то приведенные пять способов
размещения сводятся только к трем.
(3)
Двенадцатизадачие рассматривает все возможные распределения для помеченных
и непомеченных урн и шаров, а также необязательное требование, чтобы в каждой
урне содержалось не менее (не более) одного шара.
В предыдущих разделах данной главы мы рассмотрели n-кортежи, перестановки,
сочетания и композиции; две из двенадцати записей табл. 1 тривиальны —
размещение п вещей по т приемным карманам. Таким образом, мы можем завершить наше
изучение классической комбинаторной математики рассмотрением оставшихся пяти
записей таблицы, которые включают разбиения (partitions).
Начнем с того, что слово "разбиение" в математике имеет множество
значений. Оно возникает всякий раз, когда выполняется разделение
некоторого объекта на подобъекты.
— Джордж Эндрюс (George Andrews), Теория разбиений
(The Theory of Partitions) (1976)
7.2.1 ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 53
Таблица 1. Двенадцатизадачие
Шары в урнах
Без ограничений
^ 1
> 1
п помеченных шаров,
га помеченных урн
n-кортежи из га
вещей
n-перестановки га
вещей
разбиения
{1,..., п} наш
упорядоченных
частей
п непомеченных шаров,
га помеченных урн
п- мультисочетаний
из га вещей
n-сочетания га
вещей
композиции п из га
частей
п помеченных шаров,
га непомеченных урн
разбиения
{1,..., п) на ^ га
частей
п вещей в т
приемных
карманов
разбиения
{1,... ,п} на га
частей
п непомеченных шаров,
га непомеченных урн
разбиения п на
^ т частей
п вещей в т
приемных
карманов
разбиения пнага
частей
Одно и то же имя имеют две достаточно разные концепции: разбиение
множества — это способы его разделения на непересекающиеся подмножества; таким
образом, (2) представляет собой иллюстрацию пяти разбиений {1,2,3}, а именно:
{1,2,3}, {1,2} {3}, {1,3} {2}, {1}{2,3}, {1}{2}{3}. (4)
Разбиения целого числа представляют собой способы записи его в виде суммы
положительных целых чисел, независимо от их порядка. Так, в (3) показаны три
разбиения числа 3, а именно
3, 2 + 1, 1 + 1 + 1. (5)
Мы будем следовать общей практике и называть разбиения целых чисел просто
"разбиениями", не указывая их объекта; другой вид мы будем называть "разбиениями
множеств", чтобы ясно указывать различия между этими видами разбиений. Оба
вида разбиений важны, так что мы изучим их по очереди.
Генерация всех разбиений целых чисел. Разбиение числа п формально можно
определить как последовательность неотрицательных целых чисел а\ ^ а2 ^ • • •,
такую, что п = а\ + а2 Н ; например, одно из разбиений 7 — а\ = а2 = 3, аз = 1
и а4 = as = • • • = 0. Количество ненулевых членов называется количеством частей,
а нулевые члены обычно опускаются. Таким образом, мы записываем 7 = 3 + 3 + 1,
или просто 331, чтобы сэкономить место, если контекст очевиден.
Простейший (и один из быстрейших) способ сгенерировать все разбиения —
посетить их в обратном лексикографическом порядке, начиная с 'п' и заканчивая
'11... 1'. Например, разбиения 8 в указанном порядке представляют собой
8,71,62,611,53,521,5111,44,431,422,4211,41111,332,3311,
3221,32111,311111,2222,22211,221111,2111111,11111111. ^ ^
Если разбиение состоит не из одних единиц, оно завершается некоторым числом
(х + 1), где х ^ 1, за которым следует ноль или несколько единиц. Следовательно,
очередное наименьшее разбиение в лексикографическом порядке получается путем
54 комбинаторный поиск
7.2.1
замены суффикса (х + 1) 1... 1 на х... хг для некоторого соответствующего остатка
г ^ х. процесс достаточно эффективен, если отслеживать наибольший индекс д,
такой, что aq Ф 1, как предложено д.к.с. маккеем (j.k.s. mckay) [САСМ, 13 (1970),
52], и заполнять массив единицами, как предложили а. зогби (a. zoghbi) и и. стой-
менович (i. stojmenovic) [internationa] Journal of Computer Math., 70 (1998), 319-332].
Алгоритм P (Разбиения в обратном лексикографическом порядке). этот
алгоритм генерирует все разбиения ai ^ а^^ • •• ^ о,т ^ 1 с а\+ аг + •• • + аш = п
и l^m^n при п ^ 1. значение ао также устанавливается равным 0.
Р1. [инициализация.] установить аш <— 1 для п ^ т > 1. затем установить т <— 1
и ао <— 0.
Р2. [сохранить заключительную часть.] установить аш <— п и q <— т — [п = 1].
РЗ. [посещение.] посетить разбиение aia2 ... am. затем, если а9 ф 2, перейти к
шагу р5.
Р4. [замена 2 на 1+1.] установить aq <— 1, д <— д — 1, га <— m + 1 и вернуться
к шагу рз. (в этот момент а& = 1 для д < а; ^ п.)
Р5. [уменьшение ад.] завершить работу, если д = 0. в противном случае установить
х <— ая — 1, aq *- ж, п <— ш — д + 1 и га <— д + 1.
Р6. [копирование ж при необходимости.] если п ^ ж, вернуться к шагу р2. в
противном случае установить am «— ж, га <— га + 1, п <— п — х и повторить данный
шаг. i
обратите внимание, что переход от одного разбиения к следующему выполняется
особенно просто, если имеется двойка; шаг р4 просто изменяет крайнюю справа
двойку на единицу и добавляет единицу справа. эта приятная ситуация, к счастью,
представляет собой наиболее распространенный случай. например, при п = 100
около 79% всех разбиений содержат 2.
если мы хотим генерировать все разбиения числа п на фиксированное
количество частей, к нашим услугам другой простой алгоритм. приведенный далее метод,
разработанный в диссертации к.ф. гинденбурга (c.f. hindenburg) в 18-м веке [In-
finitinomn Dignitatum Exponentis Indeterminati (gottingen, 1779), 73-91], посещает
все разбиения в солекопом (colex) порядке, т.е. лексикографическом порядке
"отраженных" последовательностей ат ... a2ai.
Алгоритм Н (Разбиение на т частей). этот алгоритм генерирует все целые
га-кортежи а\... am, такие, что а\ ^ ... ^ аш ^ 1 и а\ + • • • + аш = п, в
предположении, что п ^ га ^ 2.
hi. [инициализация.] установить а\ <— п—m+1 и а3; <— 1 для 1 < j < га. установить
также am+i < 1.
Н2. [посещение.] посетить разбиение а\...аш. затем, если a2 ^ а\ — 1, перейти
к шагу н4.
НЗ. [настройка а\ и ач\ установить а\ <— а\ — 1, а^ <— ач +1 и вернуться к шагу н2.
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 55
Н4. [поиск j.] установить j <— 3 и s <— а\ + а2 — 1. затем, если aj ^ а\ — 1,
установить s <— s + aj, j <— j + 1 и повторять эти действия до тех пор, пока не
будет выполнено условие aj < а\ — 1. (теперь 5 = а\ Л a^-i — 1.)
Н5. [увеличение aj.] завершить работу, если j > га. в противном случае установить
х +— a,j + 1, aj <— х, j <— j — 1.
H6. [настройка а\... aj.] пока j > 1, установить aj <— х, s<— s — xnj<—j — 1.
в конце установить а\ <— 5 и вернуться к шагу н2. i
например, при п = 11ит = 4 посещаемые алгоритмом разбиения —
8111,7211,6311,5411,6221,5321,4421,4331,5222,4322,3332. (7)
основная идея состоит в том, что солексный порядок переходит от одного разбиения
а\... ат к другому путем поиска наименьшего j, такого, что aj можно увеличить без
изменения aj+i... am. новое разбиение а[ ... а'ш будет иметь а[ ^ • • • > a'j = aj + 1
и а[ н ь a'j = а\Л h и эти условия достижимы тогда и только тогда, когда
aj < а\ — 1. кроме того, наименьшее такое разбиение а[.. .а!ш в солексном порядке
имеет а'2 = • - • = a'j = aj -\-1.
шаг нз обрабатывает простой случай j — 2, который наиболее распространен.
следует отметить, что значение j практически всегда достаточно мало; позже мы
докажем, что общее время работы алгоритма н не превышает количества
посещенных разбиений, умноженного на небольшую константу, плюс О (т).
Другие представления разбиений. мы определили разбиение как
последовательность неотрицательных целых чисел а\а2..., обладающую теми свойствами,
что а\ ^ а2 ^ • • • и а\ Л- а2 + • • • = п, но можно также рассматривать его как га-
кортеж неотрицательных целых чисел С1С2 ... сп, таких, что
ci + 2с2 н ь псп = п. (8)
здесь Cj — количество появлений числа j в последовательности а\а2 ...; например,
разбиение 331 соответствует количествам с\ = 1, с2 = 0, сз = 2, С4 = с$ = cq = c-j —
= 0. количество частей в таком случае составляет с\ + с2 + •••-+- сп. можно легко
разработать процедуру, аналогичную алгоритму р, для генерации разбиений в виде
количества частей (см. упражнение 5).
мы уже встречались с неявным представлением в виде количества частей в
формулах наподобие 1.2.9-(38), которые выражают симметричную функцию
hn = ^2 xdxXd2 ...xdn (9)
как
x 1 д2
^ lcici!2c2c2! nc-cn!'
Ci,C2,...,Cn^0
ci +2C2 + —\-ncn =n
(10)
где Sj — симметричная функция x\ Л-х^ h \-x°N. сумма в (9), по сути, берется по
всем n-мультисочетаниям N, в то время как сумма (10) берется по всем разбиениям
56 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
п. Таким образом, например, hs = ^S3 + ^5i#2 + и при N = 2 мы имеем
ж3 + х2у + ху2 + </3 = ^ (ж + у)3 + I (ж + у) (я2 + у2) + i (ж3 + у3).
Другие суммы по всем разбиениям встречаются в упражнениях 1.2.5-21, 1.2.9-11,
1.2.10-12 и т.д.; по этой причине разбиения занимают важное место в изучении
симметричных функций — класса функций, широко распространенного в
математике. [Глава 7 работы Ричарда Стенли (Richard Stanley) Enumerative Combinatorics,
2 (1999) представляет собой превосходное введение в современные аспекты теории
симметричных функций.]
Разбиения можно весьма привлекательно визуализировать, рассматривая массив
из п точек, у которого а\ точек в верхней строке, точек во второй строке и т.д.
Такое размещение точек называется диаграммой Феррерса в честь Н.М. Феррерса
(N.M. Ferrers) [Philosophical Mag., 5 (1853), 199-202]; наибольший квадратный под-
массив точек, содержащийся в такой диаграмме, называется квадратом Дюрфи по
имени В.П. Дюрфи (W.P. Durfee) [Johns Hopkins Univ. Circular, 2 (December 1882),
23]. Например, на рис. 28, а показана диаграмма Феррерса для разбиения 8887211
с квадратом Дюрфи размером 4x4. Квадрат Дюрфи содержит к2 точек, где к —
наибольший индекс, такой, что ак ^ /с; можно называть к следом (trace) разбиения.
а)8887211 Ь)75444443
Рис. 28. Диаграмма Феррерса
и квадрат Дюрфи двух
сопряженных разбиений
Для произвольного разбиения а вида а\а,2 ... сопряженным (conjugate) с ним
является разбиение аТ = &1&2 • • •> которое получается путем транспонирования строк
и столбцов соответствующей диаграммы Феррерса. Например, на рис. 28, 6
показано, что (8887211)т = (75444443). Если /3 = ат, то очевидно, что а = /?т; разбиение
(3 имеет а\ частей, а (3 — Ь\ частей. Имеется простое соотношение между
представлениями в виде количества частей с\... сп разбиения а и сопряженного разбиения
&1&2 • •а именно:
bj — = Cj для всех j ^ 1. (11)
Это соотношение позволяет легко вычислить сопряженное для данного разбиения
(см. упражнение 6).
Понятие сопряженности часто поясняет свойства разбиений, которые иначе
выглядели бы весьма загадочными. Например, теперь, зная определение ат, мы можем
легко увидеть, что значение j—1 на шаге Н5 алгоритма Н представляет собой вторую
наименьшую часть сопряженного разбиения (ai... аш)Т. Следовательно, среднее
количество работы, которую необходимо выполнить на шагах Н4 и Н6, по сути,
пропорционально среднему размеру второй наименьшей части случайного разбиения,
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 57
наибольшая часть которого равна га. Ниже мы увидим, что эта вторая наименьшая
часть почти всегда достаточно мала.
Кроме того, алгоритм Н выводит разбиения в лексикографическом порядке
сопряженных к ним. Например, соответствующими сопряженными к (7) являются
41111111,4211111,422111,42221,431111,43211,4322,4331,44111,4421,443; (12)
они представляют собой разбиения п = 11 с наибольшей частью, равной 4. Один из
способов генерации всех разбиений п состоит в том, чтобы начать с тривиального
разбиения 'п', затем поочередно применить алгоритм Н для га = 2,3,... ,п; такой
процесс даст все а в лексикографическом порядке ат (см. упражнение 7). Таким
образом, алгоритм Н можно рассматривать как дуальный к алгоритму Р.
Имеется, как минимум, еще один способ представления разбиений,
называющийся краевым представлением (rim representation). Предположим, что мы заменили
точки на диаграмме Феррерса квадратами, получив таким образом подобие
таблицы, как мы делали в разделе 5.1.4; например, разбиение 8887211 с рис. 28, а
превращается в
(13)
Правая граница этого образа может рассматриваться как путь от нижнего левого
угла в правый верхний угол квадрата размером п х п, а из табл. 7.2.1.3-1 мы знаем,
что такой путь соответствует (п, п)-сочетанию.
Например, (13) соответствует 70-битовой строке
О... 01001011111010001... 1 = о281102110115011103127, (14)
в которой мы размещаем в начале достаточное количество нулей, а в конце —
единиц, чтобы получить в точности по п каждых из них. Нули представляют шаги
вверх, а единицы — вправо. Легко видеть, что определенная таким образом битовая
строка имеет ровно п инверсий; и наоборот: каждая перестановка мультимножества
{n-0,n-1}, которая содержит ровно п инверсий, соответствует разбиению п.
Если разбиение имеет t различных частей, его битовая строка может быть записана
в виде
Qn-gi-<72 Qt |PiQ9i ;[P2Q<72 -[PtQqt 2n—pi—P2 Pt ^ (15)
где показатели степени pj и qj представляют собой положительные целые числа.
В таком случае стандартным представлением разбиения является
aia2 ... = (pj + • • • +pt)qt fa + • • • +pt-i)9t"1 • • • (pi)qi , (16)
т.е. в нашем примере (1 + 1 + 5 + I)3 (1 + 1 + 5)1 (1 + l)1 (I)2 = 8887211.
Количество разбиений. Вопрос, заданный в 1740 году Филиппом Ноде (Philipp
Naude), побудил Леонарда Эйлера (Leonhard Euler) написать две фундаментальные
статьи, в которых он подсчитывал количества разбиений различного вида, изучая
58 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
их производящие функции [Commemtarii Academiaae Scientiarum Petropolitanae, 13
(1741), 64-93; Novi Comment. Acad. Sci. Pet, 3 (1750), 125-169]. Он заметил, что
коэффициент при zn в бесконечном произведении
(1 + z + z2 + • • • 4- zj + • • •) (1 + z2 + z4 + • • • + z2k + • • •)
(1 + zs + z6 + • • • + + • • •)...
равен количеству неотрицательных целых решений уравнения j + 2к + 3/ Н = п;
а 1 + zm + z2m Н равно 1/(1 — zm). Следовательно, если мы запишем
ОО - оо
р(*>=П i3^ = 5>(»>*n. (17)
771=1 71=0
то количество разбиений п равно р(п). Функция P(z), в свою очередь, обладает
рядом поразительных математических свойств.
Например, Эйлер открыл наличие большого количества сокращений при
раскрытии скобок знаменателя Р (z):
(1-^2) (1_z3y=1_z_z2 + z5+z7_z12_z15 + z22 + z26_...=
= j2 (-i)n*(3n2+n)/2.
— oo<n<oo
(18)
Комбинаторное доказательство этого замечательного тождества, основанное на
диаграммах Феррерса, имеется в упражнении 5.1.1-14; можно также доказать его,
положив u = zhv = z2b еще более замечательном тождестве Якоби
оо оо
T[(l-ukvk-1)(l-uk-1vk)(l-ukvk)= Y, (-1)"«(»)«("»"), (19)
fc=l n=-oo
поскольку левая часть при этом становится равной
оо
П(1-г3*"2) (l-z3*-1)^-*3*);
k=i
см. упражнение 5.1.1-20. Из тождества Эйлера (18) вытекает, что количество
разбиений удовлетворяет рекуррентному соотношению
р(п) =р(п- 1)+р(п - 2)-р(п - 5)-р{п - 7) +р(п - 12)+р(п- 15) , (20)
на основании которого можно вычислить соответствующие значения быстрее, чем
выполняя вычисление степенных рядов (17).
п = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
р(п) = 1 1 2 3 5 7 11 15 22 30 42 56 77 101 135 176
Из раздела 1.2.8 мы знаем, что решение рекуррентного соотношения Фибоначчи
f (п) = / (п — 1) + / (п — 2) при положительных / (0) и / (1) растет
экспоненциально: f (п) = &(фп). Дополнительные члены р(п — 5) — р(п — 7)' в (20)
оказывают подавляющее влияние на количество разбиений; более того, если ограничиться
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 59
в рекуррентном соотношении только этими членами, полученный в результате ряд
осциллирует между положительными и отрицательными значениями. Следующие
члены, '+р(п — 12) + р(п — 15)', восстанавливают экспоненциальный рост.
Реальная скорость роста р(п) имеет порядок А^/п для некоторой константы
А. Например, в упражнении 33 доказывается, что р(п) растет со скоростью, как
минимум, е2^™/п. Еще один простой способ получить неплохую верхнюю границу
состоит в логарифмировании (17)
i^) = El^ = EEV; (21)
771=1 771=1 71=1
затем следует рассмотреть его поведение вблизи 2 = 1, положив z = е~ь:
hP(e-)= £ ^ = £V-T<E^ = m- (22)
771,71^ 1 71^1 71^1
Далее, поскольку p (n) ^ p (n + 1) < p (n + 2) < • • • и e* > 1, получаем
< £ P (*) e^-V* = entP (e~<) < еп*+^г (23)
1 6 fc=0
для всех £ > 0. Приравнивание t = y/£(2)/n дает
p (n) < Ce2C^/Vn~, где С = ^/СМ = тг/л/б. (24)
Более точную информацию о величине InP (e-t) можно получить,
воспользовавшись формулой суммирования Эйлера (раздел 1.2.11.2) или преобразованием Мел-
лина (раздел 5.2.2); см. упражнение 25. Однако рассмотренные методы недостаточно
мощны для определения точного поведения P(e_t), так что самое время добавить
в наш арсенал новые методы.
Производящая функция Эйлера Р (z) идеально подходит для формулы
суммирования Пуассона [J. Ecole Royale Polytechnique, 12 (1823), 404-509, § 63], в
соответствии с которой
оо М °?
f(n + 0)= Jim £ e2™i$ е-2"™У/(у)<1у, (25)
71= —ОО 771= —м _*^0
где / — "хорошо себя ведущая" функция. Эта формула основана на том факте, что
в левой части находится периодическая функция от 0, а в правой — ее разложение
в ряд Фурье. Функция / достаточно хорошая, если, например, J*^ \f (y)\dy < оо,
poo
-оо
а также
i) либо f (п + в) является аналитической функцией комплексной переменной в
в области \3в\ ^ е для некоторого £>0и0^3ЭД^1,и левая часть
равномерно сходится в этом прямоугольнике;
ii) либо / (в) = \ lime_»o (/ (0 — е) + f {в + е)) = д(в) — h (в) для всех
действительных чисел 0, где д и h — монотонно возрастающие, а д (±оо) и h (±оо) конечны.
60 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
[peter henrici, Applied and Computational Complex Analysis, 2 (new york: wiley,
1977), theorem 10.6.2.] формула пуассона не панацея для задач суммирования
любого вида, но если она применима, то ее результаты, как мы увидим, могут быть
впечатляющи.
умножим формулу эйлера (18) на z1/24 для "завершения квадрата":
£ (-ifJW (26)
^ ' п= —ОС
тогда для всех t > 0 имеем е~*/24/р (е-*) = j^L-oo / (^), где
f(y) = е-**(у+*)2 cosny; (27)
и эта функция / подходит для формулы суммирования пуассона, так как
удовлетворяет обоим критериям, приведенным выше. таким образом, мы можем попытаться
проинтегрировать е_27гтг2// (у) и для т = 0 получить результат
ОО .
— оо
к этому мы должны добавить
оо ~ оо °?
(e"4e-2^)/(i/)(lp2^ f(y)cQ82irmydy; (29)
™=1-оо ™=1-оо
этот интеграл также оказывается берущимся. будучи объединены, все результаты
(см. упражнение 27) дают
р(е-*) V t ±? к ' V t р(е-4-2/*)-
(30)
небольшой сюрприз — мы доказали еще один замечательный факт о Р (z) —
приведенную далее теорему.
Теорема D. Производящая функция (17) для разбиений удовлетворяет
функциональному соотношению
lnp(e-.) = ie) + ilni._^+lnP(e—л) (31)
при m>o. i
эта теорема была открыта дедекиндом (dedekind) [Crelle, 83 (1877), 265-292, § 6],
который для функции z1/24/P(z) использовал запись rj (г), где z = е27ггт; его
доказательство основано на существенно более сложной теории эллиптических функций.
заметим, что, когда t — малое положительное число, 1пр ^е-471"2/^ крайне мало;
например, при t = 0.1 получаем ехр (—47r2/t) «3.5 х 10~172. таким образом, теорема d
дает нам практически все, что необходимо знать о значении Р (z) при z, близком к 1.
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 61
Г.Г. Харди (G.H. Hardy) и С. Рамануджан (S. Ramanujan) использовали это
знание для вывода асимптотического поведения р (п) при больших п, и их работа была
продолжена многие годы спустя X. Радемахером (Н. Rademacher), открывшим ряд,
который не только асимптотичен, но и сходится [Proc. London Math. Soc. (2), 17
(1918), 75-115; 43 (1937), 241-254]. Формула Харди-Рамануджана-Радемахера для
р (п) поистине одно из наиболее изумительных тождеств; она гласит, что
Здесь /3/2 означает модифицированную сферическую функцию Бесселя
(32)
г /ч /^\3/2^ 1 (*2/4)* (2z /coshz sinhz\
gor(fc + 5/2) L =H{—-—y (33)
а коэффициент Ak (n) определяется формулой
Лк (n) = £V*]«P (bci _ I*)), (34)
где о (/г, к, 0) — сумма Дедекинда, определенная в уравнении 3.3.3-(16). В результате
Лх(п) = 1, Л2(п) = (-1)п, А3 (п) = 2со8(24п^1)7Г, (35)
и в общем случае А ь (п) лежит между —кик.
Доказательство (32) может увести нас слишком далеко, но основная идея
состоит в использовании "метода седловой точки", рассматривающегося в разделе 7.2.1.5.
Член для к = 1 выводится из поведения P(z) при z, близком к 1; следующий член
выводится из поведения z вблизи —1, здесь можно применить преобразование,
подобное (31). В общем случае к-й член (32) учитывает поведение Р (z) при z,
стремящемся к e27Tlh/k для несократимых дробей h/k со знаменателем /с; каждый к-й корень
единицы представляет собой полюс для каждой из дробей 1/(1 — zk), 1/(1 - z2k),
1/(1 — z3k), ... в бесконечном произведении Р (z).
Старший член (32) может быть существенно упрощен, если нам достаточно
грубого приближения:
7Га/2п/3 / . ч ч
"<">=1^-(1+0("~"2))- (36)
Если же такой точности недостаточно, можно воспользоваться более детальным
приближением:
*w=wM\/5)(i+°(^))- -'--й- <з7)
Например, р (100) имеет точное значение 190 569 292; формула (36) дает нам р (100)«
« 1.993 х 108, в то время как (37) — гораздо лучшую оценку 190 568 944.783.
62 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
Э. Одлызко (A. Odlyzko) заметил, что при больших п формула Харди-Рамануд-
жана-Радемахера дает близкий к оптимальному способ вычисления точного
значения р(п), поскольку арифметические операции могут быть выполнены примерно
за О (logp(n)) = О (п1/2) шагов. Основной вклад вносят несколько первых членов
(32); затем ряд стремится к членам, не превышающим порядка /с-3/2, обычно
порядка к~2. Кроме того, около половины коэффициентов (п) оказываются равными
О (см. упражнение 28). Например, при п = 10е члены для к = 1,2,3 приблизительно
равны 1.47х 101107,1.23х 10550 и -1.23х 10364 соответственно. Сумма первых 250
членов приближенно равна 1471684986.. .73818.01, в то время как истинное значение
равно 1471684986.. .73818; при этом 123 из 250 членов равны нулю.
Количество частей. Удобно ввести обозначение
(38)
для количества разбиений п, состоящих ровно из га частей. Тогда для всех целых
тип выполняется рекуррентное соотношение
(39)
п
п —
1
+
п — т
т
га —
1
га
поскольку | mz_\ | подсчитывает разбиения, наименьшая часть которых равна 1,
а | n~m | — прочие разбиения. (Если наименьшая часть равна 2 или больше, мы
можем вычесть 1 из каждой части и получить разбиение п — га на га частей.)
Аналогичные рассуждения приводят к заключению, что | m+n | — количество разбиений
п на не более чем га частей, а именно на га неотрицательных слагаемых. Мы также
знаем из транспонирования диаграмм Феррерса, что | ш | представляет собой
количество разбиений п, у которых наибольшая часть равна га. Таким образом, | ш \ —
число, которое стоит того, чтобы его изучить. Граничные условия
п
п
0
= 8по и
т
= 0 для т < 0 или п < 0
(40)
делают простой табуляцию | т \ для небольших значений параметров, и мы можем
получить массив чисел аналогично знакомым треугольникам для (^), [£], {т}
и (^), с которыми мы встречались ранее (табл. 2). Производящая функция имеет
вид
Е
z =
(l-z)(l-z2)...(l-zm)'
(41)
Почти все разбиения п состоят из в (y/nlogn) частей. Этот факт, открытый
П. Эрдешем (P. Erdos) и Д. Ленером (J. Lehner) [Duke Math. J., 8 (1941), 335-345],
имеет весьма поучительное доказательство.
Теорема Е. Пусть С = 7г/\/б иш = ^ y/nhin + Ху/п + О (1). Тогда
р(п)
т + п
п
= F(x) (l + OJn"1/2^))
(42)
7.2.1 ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ
63
О
1
2
3
4
5
6
7
8
9
10
11
1
0
0
0
0
0
0
0
0
0
0
О
О
о
1
1
2
2
3
3
4
4
5
5
О
О
О
1
1
2
3
4
5
7
8
10
О
О
О
О
1
1
2
3
5
б
9
11
О
О
О
О
О
1
1
2
3
5
7
10
О
О
о
о
о
о
о
1
1
2
3
5
О
О
О
О
О
О
О
О
О
1
1
2
О
О
О
О
О
О
О
О
О
о
1
1
о
о
о
о
о
о
о
о
о
о
о
1
для всех е > 0 и всех фиксированных х при п —> оо, где
F(x) =е-е~Сх/с. (43)
Эта функция F (х) достаточно быстро стремится к 0 при х —> — оо и быстро
возрастает до 1 при х —> -Ьоо; таким образом, это функция распределения вероятностей.
На рис. 29, б показана соответствующая функция плотности распределения
вероятностей f (х) = F' {х), которая сосредоточена в основном в области — 2 < х < 4.
Для сравнения на рис. 29, а показаны значения | ш \ = | m+n | — | т^}^п | ПРИ n = ЮО;
в этом случае ^y/n\nn « 18.
-2 -1 0 1 2 3 4 *
Рис. 29. Разбиения п на т частей, при a) п = 100; б) п —► оо
(см. теорему Е)
Доказательство. Воспользуемся тем фактом, что | m+n | — количество разбиений п,
у которых большая часть ^ т. Тогда, согласно принципу включения и исключения
Таблица 2. Количества разбиений
64 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
(формула 1.3.3-(29)), имеем
га + п
т
Р(п)~^Р(п-3)+ J2 P(n-h-j2)-
j>m 32>3i>m
^2 Р(п~ h- 32- h) + '
33>32>ji>m
поскольку p (n — ji — • • • — jr) — количество разбиений n, которые используют
каждую из частей {ji,..., jr} хотя бы один раз. Запишем это как
р(п)
т + п
т
= 1 - Ех + Е2 - Е3 + • • • , Ег = ]Г
р{п- ji
jr)
Зг>'>Л>т
р(п)
. (44)
Для того чтобы вычислить Ег, нам нужна хорошая оценка отношения р^п^ •
Нам везет, поскольку из (36) вытекает, что
P(n-t)
р(п)
exp [iCyJn^t -\n(n-t) + 0 ((n - £)~1/2) - 2Сч/п -f In nj =
= exp (-Ctn-1?2 + О (n-1/2^)) при 0 ^ ^ n1/2^.
(45)
Далее, если t ^ n1/2"1"6, мы имеем p (n — t)/p (n) ^ p (n — n1/24"6) jp (n) « exp (—Cn£),
значение, которое асимптотически меньше, чем любая степень п. Следовательно,
мы безопасно можем использовать приближение
Р (п ~ 1) r^ at
р(п) ~
а = ехр (-Сп"1/2) ,
(46)
для всех значений t ^ 0. Например, мы имеем
P(n-j)=g^l/1+0/ -1/2+2,
J>m !-qV V
-Cx
(l + 0(n-^2+2e))+0(ne-Cn'),
^ p(n) 1-aV V )) ^ pin
3>m ^v y n^j>n1/2+e ^v
p(n-_i)
)
поскольку a/(l —a) = n1^2/С -\- О (l) и am = n l/2e Cx. Аналогичные доводы
(см. упражнение 36) доказывают, что при г = О (logn)
(47)
Наконец — и это замечательное свойство принципа включения-исключения в
общем случае — частичные суммы (44) всегда "берут в вилку" истинное значение, в том
смысле, что
1 - Ei + Е2
^2r-l ^
1
р(п)
т + п
т
< 1 - Ei + Е2
E2r-i + £2г (48)
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 65
при всех г (см. упражнение 37). Когда 2г близко к Inn и п велико, член £2г
чрезвычайно мал; таким образом, мы получаем (42), за исключением того, что вместо е
используется 2е. I
Теорема Е говорит о том, что наибольшая часть случайного разбиения почти
всегда представляет собой -^у/птп + О (у/п) и при достаточно большом п
остальные части также имеют тенденцию к предсказуемости. Предположим, например,
что мы берем все разбиения числа 25 и накладываем одну на другую их диаграммы
Феррерса, заменяя точки квадратами, как в случае краевого представления. Какие
ячейки будут заниматься наиболее часто? На рис. 30 показан результат: случайное
разбиение стремится к типичному виду, приближающемуся к предельной кривой
при п —» оо.
0 >/л 2у[п
Рис. 30. Кривая Темперли (49),
ограничивающая случайное разбиение
Г. Темперли (Н. Temperley) [Proc. Cambridge Philos. Soc, 48 (1952), 683-697]
привел эвристические обоснования того, что основные части а& большого случайного
разбиения а\... аш будут удовлетворять приближенному закону
е-ск/у/ъ + e-cak/v* ~ 1? (49)
и его формула была впоследствии подтверждена в строгом виде. Например,
теорема Б. Питтеля [Advanced in Applied Math., 18 (1997), 432-488] позволяет нам
заключить, что след случайного разбиения почти всегда равен 1^ у/п & что
1 /2
согласуется с (49) с ошибкой не более О (у/п\пп) ; таким образом, около 29% всех
точек Феррерса лежат в пределах квадрата Дюрфи.
С другой стороны, если мы рассмотрим только разбиения п на га частей, где га —
фиксированная величина, ограничивающая кривая будет иной: почти все разбиения
имеют
п , га , .
ак^-\п- 50
га к
при достаточно большом га. На рис. 31 показан случай п = 50, га = 5. В
действительности тот же предел справедлив при га, растущем с ростом п, но со скоростью,
меньшей у/п [см. А. Вершик и Ю. Якубович, Moscow Math. J., 1 (2001), 457-468].
66 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
п/т 2п/т
Рис. 31. Ограничивающая кривая (50) при наличии т частей
Краевое представление разбиений дает нам дальнейшую информацию о дважды
ограниченных разбиениях, когда ограничено не только количество частей, но и
размер каждой части. Разбиение, которое имеет не более га частей, каждая из которых
не превосходит /, располагается в пределах прямоугольника га х Z. Все такие
разбиения соответствуют перестановкам мультимножества {га • 0, / • 1}, имеющим ровно
п инверсий; инверсии перестановок мультимножества мы уже изучали в
упражнении 5.1.2-16. В частности, в упомянутом упражнении выводится неочевидная
формула для количества способов получения п инверсий.
Теорема С. Количество разбиений п, которые состоят не более чем из га частей,
не превышающих по размеру I, равно
z
/+1) (1 - zl+2) (1 -
(l-z) (l-z2) (l-z™)
(51)
Этот результат получен А. Коши (A. Cauchy) [Comptes Rendus Acad. Sci., 17 (Paris,
1843), 523-531]. Обратите внимание, что при n —» оо числитель становится равным
просто 1. Интересное комбинаторное доказательство более общего результата
приведено в упражнении 39. I
Анализ алгоритмов. Теперь мы знаем более чем достаточно о количественных
аспектах разбиений, чтобы с высокой степенью точности вывести поведение
алгоритма Р. Предположим, что шаги Р1, ..., Р6 этого алгоритма выполняются
соответственно Т\ (п), ..., Т6 (п) раз. Очевидно, что Т\ (n) = 1 и Т3 (n) = р (п); из закона
Киргофа вытекает, что Т2 (п) = Т5 (п) и Т4 (n) -f Т5 (n) = Т3 (п). Мы переходим
к шагу Р4 по одному разу для каждого разбиения, содержащего 2; понятно, что это
происходит р (п — 2) раз.
Таким образом, единственная возможная загадка алгоритма Р — количество
выполнений шага Р6, в котором возможен переход к самому себе. Однако
небольшое размышление открывает нам, что алгоритм сохраняет значение ^ 2 в массиве
а\а2 ... только на шагах Р2 и Р6; и каждое такое значение в конечном итоге
уменьшается на 1 либо на шаге Р4, либо на шаге Р5. Следовательно,
tz(n)+t6(n)=p(n)-l, (52)
где Т2 (п) — количество раз, когда шаг Р2 устанавливает аш равным значению ^ 2.
Пусть Т2 (п) = Т2 (п) + Т2 (п), так что Т2 (п) — количество раз, когда шаг Р2
устанавливает аш <— 1. Тогда Т2 (n) + Т4 (п) — количество разбиений, заканчивающихся
на 1, следовательно,
Г2'(п) + Т4(п)=р(п-1). (53)
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 67
Итак, мы получили достаточное количество уравнений, чтобы определить все
искомые величины:
(Т1(п),...,Те(п)) =
= (1,р(п) -р(п - 2) ,р{п) ,р(п - 2) ,р(п) -р(п - 2) ,р{п - 1) - 1). (54)
Из асимптотики р (п) мы также знаем среднее количество вычислений на одно
разбиение:
Щ 3$)-(0*...-£*l--S.)+o(I), (55)
р(п) р(п) ) \ у/П у/П у/п у/пJ \ПJ
где С = 7г/\/б« 1.283 (см. упражнение 45). Общее количество обращений к памяти
на одно разбиение составляет, таким образом, 4 — ЗС/у/п + О (1/п).
если кто-то захочет сгенерировать все разбиения, он не только должен
выполнить непомерную работу, но и быть безмерно внимательным,
чтобы не ошибиться.
— леонард эйлер (leonard euler),
разбиение чисел (de partitione numerorum) (1750)
Алгоритм А более сложен для анализа, но мы можем, как минимум, доказать
верхнюю границу времени его работы. Ключевой величиной является значение j,
наименьшего индекса, для которого aj < a\ — 1. Последовательные значения j для
га = 4 и п = 11 равны (2,2,2,3,2,2,3,4,2,3,5), и мы замечаем, что j = bi-i + 1,
где Ь\... 6/ — сопряженное разбиение {а\... аш)т (см. (7) и (12)). Шаг НЗ выделяет
случай j — 2, поскольку он не только наиболее часто встречается, но и очень легко
обрабатывается.
Пусть сш (п) — суммарное общее значение j — 1, просуммированное по всем | ^ |
разбиениям, сгенерированным алгоритмом Н. Например, С4(11) = 1 + 1 + 1 + 2 +
+ 1 + 1 + 2 + 3 + 1 + 2 + 4 = 19. Мы можем рассматривать сш (n)/| ^ | как хороший
показатель времени работы на одно разбиение, поскольку время работы наиболее
трудоемких шагов Н4 и Нб грубо пропорционально j — 2. Это отношение cm (n)/\% \
не ограниченно, поскольку сш (га) = га, в то время как | ™ \ = 1. Однако следующая
теорема показывает, что алгоритм Н достаточно эффективен.
Теорема Н. Мера стоимости сш (гг) алгоритма Н не превышает 3 | ^ | + га.
Доказательство. Мы можем легко проверить, что ст (п) удовлетворяет тому же
рекуррентному соотношению, что и | ^ |, а именно
Cm (n) = cm_i (п - 1) + сш (п - га) для га, n ^ 1, (56)
если мы искусственно определим сш (n) = 1 при 1 ^ п < га (см. (39)). Однако
граничные условия теперь иные:
Cm (0) = [га > 0]; с0 (п) = 0. (57)
В табл. 3 показано поведение сш (п) при малых га и п.
68 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
п
с0 (п) а (п)
С2 (п)
сз (п)
С4 (п)
С5 (п)
се (п)
с7 (п)
с8 (п)
С9 (п)
сю (п) сп (п)
0
0 1
1
1
1
1
1
1
1
1
1 1
1
0 1
1
1
1
1
1
1
1
1
1 1
2
0 1
2
1
1
1
1
1
1
1
1 1
3
0 1
2
3
1
1
1
1
1
1
1 1
4
0 1
3
3
4
1
1
1
1
1
1 1
5
0 1
3
4
4
5
1
1
1
1
1 1
6
0 1
4
6
5
5
6
1
1
1
1 1
7
0 1
4
7
7
6
6
7
1
1
1 1
8
0 1
5
8
11
8
7
7
8
1
1 1
9
0 1
5
11
12
12
9
8
9
1 1
10
0 1
6
12
16
17
13
10
9
9
10 1
11
0 1
6
14
19
21
18
14
11
10
10 11
Для доказательства теоремы мы докажем на самом деле более строгий результат:
Ст (п) < 3
+ 2га — 72 — 1 при га ^ га ^ 2.
(58)
В упражнении 50 показано, что это неравенство выполняется при га ^ га ^ 2га,
а значит, доказательство будет завершено, если мы докажем его для га > 2га. В этом
случае по индукции мы имеем
с<т (п) = ci (п - га) + с2 (га - га) + с3 (п - га) Н Ь ст (п - га) ^
< 1+ 3
+ 3
п — т
2
п — т
га
+ 3-n + raj^3
+ 2га — 1 — п + га^ =
п — т
3
+ 5-п + га +••• +
п — т
+ 3
п — т
+ ••• + 3
п — т
1
2
га
3 + га2 — (га — 1) (п — га) =
= 3
+ 2га2 — га — (га — 1) /г — 3;
а 2га2 — га — (га — 1) га — 3^ 2га — га — 1, так как га ^ 2га + 1. I
*Код Грея для разбиений. При генерации разбиений в виде количества частей
с\... сп (как в упражнении 5) на каждом шаге изменяется не более четырех
значений Cj. Однако мы можем предпочесть минимизировать изменения отдельных
частей, генерируя разбиения таким образом, чтобы следующее за а\а2 • • • ап разбиение
получалось простой установкой aj «— aj + 1 и <— — 1 для некоторых j и к, как
Таблица 3. Стоимости алгоритма Н
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 69
в алгоритме двери-вертушки в разделе 7.2.1.3. Это оказывается всегда возможным;
для п = б имеется единственный способ такой генерации:
111111,21111,3111,2211,222,321,33,42,411,51,6. (59)
В общем случае | n+m | разбиений п не более чем на га частей всегда могут быть
сгенерированы подходящим путем Грея.
Заметим, что а —> /? — допустимый переход от одного разбиения к другому тогда
и только тогда, когда мы получаем диаграмму Феррерса для /3 путем перемещения
только одной точки в диаграмме Феррерса для а. Таким образом, аТ —> (Зт также
является допустимым переходом. Отсюда следует, что каждый код Грея для
разбиения не более чем на га частей соответствует коду Грея для разбиений на части, не
превосходящие га. Мы будем работать именно с этим последним ограничением.
Общее количество кодов Грея для разбиений очень велико: для п = 7 их 52, для
п — 8 — 652, для п — 9 — 298 896, для п — 10 — 2 291100 484. Однако реально простое
построение их неизвестно. Вероятно, причина в том, что лишь некоторые разбиения
имеют только двух соседей, а именно разбиения dn^d при 1 < d < п и п, кратном
d. У таких разбиений предшествующими и последующими должны быть разбиения
{(d + 1) dnld~2 (d — 1), dn/d~l (d — 1) l}, и это требование, похоже, исключает любой
простой рекурсивный подход.
Карла Сэведж (Carla Savage) [J. Algorithms, 10 (1989), 577-595] нашла способ
преодоления этих трудностей ценой всего лишь небольшой сложности. Пусть
[n/mj
/х (га, n) = mm"., га (n mod га) (60)
представляет собой лексикографически наибольшее разбиение п с частями, не
превышающими га. Наша цель состоит в построении рекурсивно определенных путей
Грея L (га, п) и М (га, п) от разбиения 1п до /i (га, п), где L (га, п) проходит по всем
разбиениям, части которых ограничены га, в то время как М (га, п) пробегает не
только по этим разбиениям, но и включает разбиения, наибольшая часть
которых равна га + 1, при условии, что все прочие части строго меньше га. Например,
L (3,8) - 11111111, 2111111, 311111, 221111, 22211, 2222, 3221, 32111, 3311, 332, в то
время как М (3,8) —
11111111,2111111,221111,22211,2222,3221,
3311,32111,311111,41111,4211,422,332; ^
дополнительные разбиения, начинающиеся с 4, дают нам "пространство подгонки"
(wiggle room) в других частях рекурсии. Мы определим L (га, п) для всех п ^ 0,
а М (га, п) — только для п > 2га.
70 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
Почти работоспособна следующая конструкция, проиллюстрированная для
упрощения при т = 5:
1(5)
L(3)
4Ь(оо)я } при п < 7; {
5L(oo)
М(4)
54£(4)й ^ прип^Э;
55L(5)
( Ь(3)
4L(2)fi
5L(2)
431
44
53
> при n =
(62)
М(5)=<
L(4)
5L(4)R
6L(3)
64£(оо)Я
55L(oo)
> при 11 ^ n ^ 13; {
L(4)
5М(4)Д
6L(4)
554L(4)7
555L(5)
> при n ^ 14. (63)
Здесь параметр га в L (m, га) и M (m, n) опущен, поскольку может быть выведен из
контекста; предполагается, что каждые L и М генерируют разбиения для любого
количества, остающегося после вычитания предыдущих частей. Так, например, (63)
указывает, что
М (5,14) = L (4,14), 5М(4,9)Д, 61,(4,8), 5 54£(4,0)Я, 5 5 5L (5,-1);
последовательность L (5, —1) в действительности пустая, a L (4,0) представляет
собой пустую строку, так что последняя часть М(5,14) равна 5 54 = /х(5,14), как
и должно быть. Запись L (оо) означает L(co, га) = L(ra,ra), путь Грея всех
разбиений га, начинающихся с 1п и заканчивающихся га1.
В общем случае L (гаг) и М (гаг) определяются для всех гаг > 3, по сути, одними
и теми же правилами, если цифры 2, 3, 4, 5 и 6 в (62) и (63) заменить соответственно
на гаг — 3, т — 2, га — 1, га и га + 1. Диапазоны га ^ 7, га = 8 и га ^ 9 превращаются
в га ^ 2т —3, га = 2т —2, га ^ 2гаг— 1; диапазоны 11 ^ га ^ 13 и га > 14 становятся
диапазонами 2m-fl ^ га ^ Згаг—2 и га ^ Зт—1. Последовательности L (0), L (1), L (2)
имеют очевидные определения, поскольку эти пути единственны при гаг ^ 2.
Последовательность М (2) представляет собой Г, 21п"2,31п_3,221n~4,2221n"6,..., р (2, га) при
га ^ 5.
Теорема S. Пути Грея L'(гаг, га) для m,n ^ 0 и Мг (гаг, га) для га ^ 2гаг +1^5
существуют для всех разбиений с описанными выше свойствами, за исключением
случая L' (4,6). Кроме того, V и М' удовлетворяют взаимным рекурсиям (62) и (63),
за исключением нескольких случаев.
Доказательство. Выше мы отмечали, что (62) и (63) почти работоспособны;
читатель может убедиться, что затруднения возникают только в случае L (4,6), ко-
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ
71
гда (62) дает
L (4,6) = L (2,6), 3L (1,3)Я , 4L (1,2), 321, 33, 42 =
= 111111, 21111, 2211, 222, 3111, 411, 321, 33, 42.
(64)
Если га > 4, все в порядке, поскольку переход от конца L (га — 2,2га — 2) к началу
(га — 1) L (га — 3, га — 1)R является переходом от (га — 2) (га — 2) 2 к (га — 1) (га — 3) 2.
Удовлетворительного пути L (4,6) не существует, поскольку все коды Грея через эти
девять разбиений должны заканчиваться одним из следующих разбиений: 411, 33,
3111, 222, 2211.
Для того чтобы нейтрализовать эту аномалию, необходимо исправить
определения L (га, п) и М (га, п) в восьми местах, где вызывается "некорректная
подпрограмма" L (4,6). Один из простых путей состоит в следующих определениях:
Таким образом, мы опускаем в L (4,6) 222 и 2211; мы также перепрограммируем
L (3,5) так, чтобы 2111 было по соседству с 221. В этом случае, как демонстрирует
упражнение 60, всегда легко "состыковать" два разбиения, отсутствующие в L (4,6).1
Упражнения
► 1. [М21\ Найдите формулу для общего количества размещений в каждой из задач
двенадцатизадачия. Например, количество n-кортежей из га вещей равно гап.
(Воспользуйтесь обозначением из (38) там, где это можно, и будьте аккуратны, чтобы
ваши формулы выполнялись даже при значениях га = 0 или п = 0.)
► 2. [20] Покажите, что небольшое изменение шага HI дает алгоритм, который
генерирует все разбиения п не более чем на га частей.
3. [Mi7] Разбиение а\ + • • • + ат числа п на га частей а\ ^ ... ^ аш оптимально
сбалансировано, если |а» — a,j\ ^ 1 для 1 ^ i,j ^ т. Докажите, что имеется ровно
одно такое разбиение, какими бы ни были п ^ га > 1, и приведите простую формулу,
выражающую j-ю часть a,j как функцию от j, га и п.
4. [М22] (Гидеон Эрлих (Gideon Ehrlich), 1974.) Каково лексикографически
наименьшее разбиение п, в котором все части ^ г? Например, при п = 19 и г = 5
ответ — 766.
► 5. [23] Разработайте алгоритм, который генерирует все разбиения п в виде
количества частей с\... сп из (8). Сгенерируйте их в солексном порядке, т.е.
лексикографическом порядке сп ... с\, который эквивалентен лексикографическому порядку
соответствующих разбиений а\а<1 — Для эффективности поддерживайте таблицу
связей loh .. • /П) такую, что если различные значения к, для которых ск > 0,
представляют собой к\ < • • ♦ < kt, то
lo = ki, 1кг =к2, lkt-i=h, ht = 0.
(Так, разбиение 331 будет представлено как с\... cj = 1020000, lo = l,h = 3 и /3 = 0;
прочие связи /4, hi h могут принимать любые значения.)
1/(4,6) = 111111, 21111, 3111, 411, 321, 33, 42;
1/(3,5) = 11111, 2111, 221, 311, 32.
(65)
72 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
6. [20] Разработайте алгоритм для вычисления bib2 • • • = (o>ia2 • • )Т для заданного
а\а2 —
7. [М20] Предположим, что а\... ап и а[.. .а'п — разбиения п, такие, что а\ ^
• • • ^ ап ^ 0 и а[ ^ • • • > а'п ^ 0, и пусть им соответствуют сопряженные разбиения
Ъ\...Ъп = (ai...an)T и ^...6^ = (а[ .. .а'п)т. Покажите, что bi...bn < b[...b'n
тогда и только тогда, когда ап ... а\ < а'п ... а[.
8. [15] Пусть (pi.. .pt, qi.. .qt) — краевое представление разбиения а\а2 ..как
приведено в (15) и (16). Какой вид в этом случае имеет сопряженное разбиение
(aia2...)T = bife...?
9. [22] Пусть a\d2 ... am и b\b2 ... ^m = («1^2 • • • ^m)T — сопряженные разбиения.
Покажите, что мультимножества {а\ -f 1, «2 + 2,..., am + m} и {bi + 1,62 + 2,...,
Ьш-\-гп} равны.
10. [21] При рассмотрении разбиений зачастую полезными оказываются бинарные
деревья двух простых видов: а) дерево, которое включает все разбиения всех целых
чисел; 6) дерево, которое включает все разбиения данного целого п (на рисунке
показано дерево для п = 8).
Выведите общее правило, лежащее в основе этих конструкций. Какой порядок
обхода дерева соответствует лексикографическому порядку разбиений?
11. [М22] Сколько имеется способов заплатить один евро монетами достоинством
1, 2, 5, 10, 20, 50 и/или 100 центов? А если можно использовать не больше двух
монет каждого достоинства?
► 12. [М21] (Л. Эйлер (L. Euler), 1750.) Воспользуйтесь производящей функцией для
доказательства того, что количество способов разбиения п на различные части равно
количеству способов разбиения п на нечетные части. Например, 5 = 4 + 1 = 3 + 2;
5 = 3 + 1 + 1 = 1 + 1 + 1 + 1 + 1.
Примечание: два следующих упражнения используют комбинаторные методы
для доказательства расширений этой знаменитой теоремы.
► 13. [М22] (Ф. Франклин (F. Franklin), 1882.) Найдите взаимно однозначное
соответствие между разбиениями п, которые имеют ровно к четных частей, и разбиениями
п, в которых можно сформировать к пар равных частей. (Например, в разбиении
8666433211111 имеются пары 66, 33, 11 и 11, так что к = 4. Случай к = 0
соответствует результату, полученному Эйлером.)
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 73
14. [М28] (Д.Д. Сильвестер (J.J. Sylvester), 1882.) Найдите взаимно однозначное
соответствие между разбиениями п на различные части а\ > а2 > • • • > ат, в
которых имеется ровно к "просветов" aj > aj+i + 1, и разбиениями п на нечетные части
с к + 1 разными значениями. (Например, при к = 0 это построение доказывает, что
количество способов записать п как сумму последовательных целых чисел равно
количеству четных делителей п.)
15. [М20] (Д.Д. Сильвестер (J.J. Sylvester).) Найдите производящую функцию для
количества разбиений, являющихся самосопряженными (т.е. таких, что а = ат).
16. [M#i] Найдите производящую функцию для разбиений следа к и
просуммируйте ее по к для получения нетривиального тождества.
17. [М26] Объединенным разбиением (joint partition) п называется пара
последовательностей (ai,..., ar; &i,..., bs) положительных целых чисел, у которых
Таким образом, при s = 0 мы получаем обычное разбиение, а при г = О — разбиение
на различные части.
a) Найдите простую формулу для производящей функции ur+svszn, где
суммирование выполняется по всем объединенным разбиениям пег обычных частей
ai и s различных частей bj.
b) Аналогично, найдите простую формулу для ^vszn, где суммирование
выполняется по всем объединенным разбиениям, которые состоят ровно из г 4- s = t
частей, для заданного значения t.
c) Какое тождество вы вывели?
► 18. [М25] (Дорон Зайльбергер (Doron Zeilberger).) Покажите, что существует
взаимно однозначное соответствие между парами последовательностей целых чисел
(ai,a2,... ,ar; &i,62, • • • >Ы> таких, что
и парами последовательностей целых чисел (ci, с2,..., cr+5; di, d2,..., dr+5), таких,
что
с\ > с2 ^ • • • ^ cr+5, dj в {О,1} для 1 < jг + s,
связанных уравнениями для мультимножеств
{ai,a2,...,or} = {cj\dj = 0} и {bi,b2, •.. ,Ьв} = {cj + r + s-j\dj == 1}.
В результате получаем интересное тождество
Ь\> - > Ь8 и ai Ч Ь ar + &i Н Ь &s = п.
6i > Ь2 > • • • > b.
и
,r+s s aiH bar+6H |-6S _
*>i> - >bs>0
ci^ •• ^ct>0
di,...,dt€{0,l}
74 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
19. [M£i] (Э. Гейне (Е. Heine), 1847.) Докажите четырехпараметрическое
тождество
(1 - wxzm) (1 - wyz171)
п ^~
Л"Д (! - wzm) (1 - wxyzrn)
_™wk{x-l)(z-l)--.(x-zk~l) (у - 1) (у - z) • ■ • (у - г^1) zfc
~ f^0 (1 - г) (1 - г2)... (1 - z*) (1 - wz) (1 - гиг2)... (1 - wzk) '
Указание: выполните суммирование по А: или I в формуле
Ek i kAz~ az) (z ~ az2) ''' (z ~ azk) (z ~ bz) (z — bz2) • • • [z — bzl)
kl>0UVZ (1-г)(1-г2).-.(1-г')
и рассмотрите упрощение, возникающее при Ъ = auz.
► 20. [M£i] Сколько приблизительно времени займет вычисление таблицы
разбиений чисел р(п) для 1 ^ п ^ N с использованием рекуррентного соотношения
Эйлера (20)?
21. [M£i] (Л. Эйлер (L. Euler).) Пусть q (п) — количество разбиений на различные
части. Как лучше вычислить q (п), зная значения р (1), ..., р (п)?
22. [НМ21] (Л. Эйлер (L. Euler).) Пусть а(п) — сумма всех положительных
делителей положительного целого числа п. Тогда о (п) = п + 1 для простого п и может
оказаться существенно больше п для "высокосоставного" п. Докажите, что,
несмотря на достаточно хаотичное поведение, о (п) удовлетворяет почти такому же
рекуррентному соотношению (20), что и количество разбиений:
а (п) = а (п - 1) + а (п - 2) - а (п - 5) - а (п - 7) + а (п - 12) + а (п - 15)
для п ^ 1, с тем отличием, что, если в правой части встречается член '<т (0)', вместо
него используется значение 'п'. Например, сг (11) = 1 + 11 = о (10) 4- сг (9) — а (6) —
- а (4) = 18 + 13 - 12 - 7; о (12) = 1 + 2 + 3 + 4 + 6 + 12 = <т (11) + а (10) - а (7) -
- а (5) + 12 = 12 + 18 - 8 - 6 + 12.
23. [НМ25] Используйте тождество Якоби (19) для доказательства еще одной
открытой им формулы:
оо оо
П (1 - zkf = 1 - Zz + 5z3 - 7z« + 9z10 -••• = £ (-1)" (2n + 1) *("*').
fc=l 71 = 0
24. [ЛШ] (С. Рамануджан (S. Ramanujan), 1919.) Пусть A (z) = J]£Li (l - zk)4.
a) Докажите, что [zn] A (z) кратно 5, если n mod 5 = 4.
b) Докажите, что тем же свойством обладает [zn] A (z) В (г)5, где В —
произвольный степенной ряд с целыми коэффициентами.
c) Следовательно, р (п) кратно пяти, если п mod 5 = 4.
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 75
25. [НМ27] Улучшите оценку lnP(e-t) (22) при помощи (а) формулы
суммирования Эйлера и (Ь) преобразования Меллина. Указание: дилогарифмическая функция
Li2 (х) — х/I2 + х2/22 + х3/З2 Ч удовлетворяет соотношению Li2 (x) + Li2 (1 — х) =
= С(2) - (Inж) 1п(1 -х).
26. [iVM£#] В упражнении 5.2.2-44 и 5.2.2-51 мы рассмотрели два способа
доказательства того, что
ос .
^ e-fc2/n = _ 1) + О (п"м) для всех М > 0.
fc=i
Покажите, что формула суммирования Пуассона дает более строгий результат.
27. [НМ23] Вычислите (29) и завершите вычисления, приводящие к теореме D.
28. [нм42] (Д.Г. Лемер (D.H. Lehmer).) Покажите, что коэффициенты Харди-
Рамануджана-Радемахера Ak (гг), определенные в (34), обладают следующими
замечательными свойствами:
a) если к нечетно, то A2k (кт + 4п + [к2 — 1) /8) = А2 (га) Ak (п);
b) если р — простое, ре > 2 и кА.2р, то
Арек (к2т + р2еп - (к2+р2е - 1)/24) = (-1)Ь6=4] Аре (га) А* (п);
c) в этой формуле к2 + р2е — 1 кратно 24, если р или А; делятся на 2 или 3; в
противном случае деление на 24 должно выполняться по модулю рек\
d) если р — простое, \Аре (п)\ < 2^>21ре/2;
e) если р — простое, Аре (п) ф 0 тогда и только тогда, когда 1 — 24п —
квадратичный вычет по модулю р и либо е = 1, либо 24n mod р ф 1;
f) вероятность того, что Ак (п) = 0, если к делится ровно на t простых чисел, не
меньших 5, а п — случайное число, приблизительно равна 1 — 2~ь.
► 29. [М16] Обобщая (41), вычислите сумму Eai^a2^am^i zi'z22'' 'Cm-
30. [М17] Найдите формулы для сумм
(*)£
п — кт
га — 1
о») £
га — к
(Эти суммы конечны, поскольку при больших к суммируемые члены равны 0.)
31. [м24] (А. де Морган (A. De Morgan), 1843.) Покажите, что | 2 | = [п/2\ и | § | =
= 1_(п2 "Ь 6)/12J; найдите аналогичную формулу для | \ |.
32. [Mi5] Докажите, что | т | ^ р(п — га) для всех га, n ^ 0. В каком случае
неравенство превращается в равенство?
76 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
33. [НМ20] Воспользуйтесь тем фактом, что имеется ровно (^-i) композиций п
из га частей (см. определение композиции в 7.2.1.3-(9)), для доказательства нижней
границы Затем установите га = [у/п\ для получения элементарной нижней
границы р (п).
► 34. [НМ21] Покажите, что | п m^ | — количество разбиений п на га
различных частей. Таким образом,
га! (га
35. [НМ21] Рассмотрим распределение вероятностей Эрдеша-Ленера (43).
a) Какое значение х наиболее вероятно?
b) Какое значение х является медианой?
c) Какое значение х является средним значением?
d) Чему равно стандартное отклонение?
36. [нм24] Докажите ключевую оценку (47), необходимую для теоремы Е.
37. [М22] Докажите лемму (48) о том, что при использовании принципа включения-
исключения частичные суммы "берут в вилку" истинное значение, проанализировав,
сколько раз разбиение ровно с q различными частями, превосходящими га,
учитывается в г-й частичной сумме.
38. [М#0] Какова производящая функция для разбиений п ровно на га частей с
наибольшей частью /?
► 39. [М25] (Ф. Франклин (F. Franklin).) Обобщая теорему С, покажите, что при
О ^ k ^ га
1 J (1 - z) (1 - z2)... (1 - zm)
представляет собой количество разбиений а\а2 ... числа п на га или меньшее
количество частей, обладающих тем свойством, что а\ ^ a^+i +1.
40. [М22] (А. Коши (A. Cauchy).) Что представляет собой производящая функция
для разбиений на га частей, где все части различны и меньше /?
41. [нм42] Расширьте формулу Харди-Рамануджана-Радемахера (32) для
получения сходящегося ряда для разбиений п не более чем на га частей, ни одна из
которых не превосходит I.
42. [нм42] Найдите ограничивающую область, аналогичную (49), для случайных
разбиений п не более чем на в у/п частей, причем части не превосходят ipy/n, в
предположении, что в if > 1.
43. [М21] Сколько для заданных пик имеется разбиений числа п, таких, что
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 77
► 44. [М22] У какого количества разбиений числа п две наименьшие части равны?
45. [НМ21] Вычислите асимптотическое значение р (п — 1)/р (п) с относительной
ошибкой О (п-2).
46. [М20] Что больше — Т'2 (п) или Т2 (п) — в тексте анализа алгоритма Р?
► 47. [НМ22] (А. Ньенхуис (A. Nijenhuis) и Г.С. Вильф (H.S. Wilf), 1975.)
Приведенный далее простой алгоритм, основываясь на таблице количеств разбиений
р (0), р (1),..., р (п), генерирует случайное разбиение числа п с использованием
представления в виде количества частей (8). Докажите, что он генерирует все разбиения
с одинаковой вероятностью.
N1. [Инициализация.] Установить m <— п и с\... сп <— 0... 0.
N2. [Выполнено?] Завершить работу, если га = 0.
N3. [Генерация.] Сгенерировать случайное целое число М в диапазоне 0 ^ М <
< гпр (тп).
N4. [Выбор частей.] Установить s <— 0. Затем для j = 1,2,..., п и для к = 1,2,...,
[m/j\ многократно устанавливать s <— s+kp (m — jk) до тех пор, пока не будет
выполнено условие s > М.
N5. [Обновление.] Установить с& <— с& + j, m *— m — jk и вернуться к шагу N2. I
Указание: на шаге N4, основанном на тождестве
m [т/л
]Г ^2 kp(m- jk) = mp (m),
j=i k=l
выбирается пара значений^', к) с вероятностью kp (m — jk)/(mp (га)).
48. [hm40] Проанализируйте время работы алгоритма из предыдущего
упражнения.
► 49. [НМ26]
a) Какой вид имеет производящая функция F (z) для суммы наименьших частей
всех разбиений п? (Ряд начинается с z + 3z2 + 5z3 + 9z4 + 12z5 -I .)
b) Найдите асимптотическое значение [zn] F (z) с относительной ошибкой О (п~1).
50. [НМЗЗ] Обозначим в рекуррентных соотношениях (56) и (57) с (га) = ст (2га).
a) Докажите, что ст (га + к) = га — к + с (к) для 0 ^ к ^ га.
b) Следовательно, (58) выполняется для га ^ п ^ 2га, если с (га) < Зр(т) для
всех га.
c) Покажите, что с (га) — га равно сумме вторых наименьших частей всех
разбиений га.
78
КОМБИНАТОРНЫЙ ПОИСК
7.2.1
d) Найдите взаимно однозначное соответствие между всеми разбиениями тг, у
которых вторая наименьшая часть равна к, и всеми разбиениями чисел, не
превышающих п, у которых наименьшая часть равна к + 1.
e) Опишите производящую функцию J2m>o 0 (m) гШ•
f) Сделайте вывод, что с (га) < Зр (га) для всех га > 0.
51. [М^#] Выполните детальный анализ алгоритма Н.
► 52. [ЛШ] Какой вид имеет миллионное разбиение, сгенерированное алгоритмом Р
для п = 64? Указание: р (64) = 1 741 630 = 1 000000+ | Ц | + | fg | + | 487 | + | f | + | 237 | +
+ |222 М118| + |105|.
► 53. [М21] Какой вид имеет миллионное разбиение, сгенерированное алгоритмом Н
для га = 32 и п = 100? Указание: 999 999 = | ™ | + | ff | + | 57° | + | f | + | f | + | 246 | + | ^ |.
► 54. [М50] Разбиение а = а\а2 .. • мажоризирует (majorize) разбиение /3 = b\b2 ...,
что записывается как а )р (3 или (3 ^ а, если ai + • • • + а& ^ &i + • • • + для всех
/с > 0.
a) Истинно или ложно утверждение: из а ^= /3 вытекает а ^ /3
(лексикографически)?
b) Истинно или ложно утверждение: из а /3 вытекает /Зт ат?
c) Покажите, что два любых разбиения п имеют наибольшую нижнюю границу
с*Л/3, такую, что а )? 7 и /3 )? 7 тогда и только тогда, когда аЛ/3 7. Поясните,
как можно вычислить а А (3.
d) Аналогично, поясните, как вычислить наименьшую верхнюю границу а V /3,
такую, что 7 а и 7 /3 тогда и только тогда, когда 7 )р а V /3.
e) Если а имеет / частей, а /3 имеет m частей, то сколько частей имеют а Л (3
и a V/3?
f) Истинно или ложно утверждение: если а состоит из различных частей и (3
состоит из различных частей, то же самое можно сказать иобс*Л/Зиа\//3.
► 55. [М#7] Продолжая выполнение предыдущего упражнения, назовем а
покрытием (cover) /3, если a )>= /3, а/^ииза^7^/? следует 7 = а или 7 = (3. Например,
на рис. 32 показано отношение покрытия между разбиениями числа 12.
a) Будем записывать а>- /3, если а = а\а2 ... и (3 = b\b2 ... представляют собой
разбиения, для которых bk = — [А; = /] + [& = / + 1] для всех к ^ 1 и некоторого
/ ^ 1. Докажите, что а покрывает /3 тогда и только тогда, когда а 1^/3 или
/Зт^ат.
b) Покажите, что есть простой способ выяснить, верно ли, что а покрывает /3,
путем рассмотрения краевого представления а и /3.
c) Пусть п = (п22) + (^ ), где П2 > ni ^ 0. Покажите, что ни одно разбиение п не
покрывает больше п2 — 2 разбиений.
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 79
I 321111111 I 122221111 I
I 3111111111 I I 222111111 I
I 2211ШШ1
[ 21111111111")
Г11111111111Г)
Рис. 32. Решетка мажоризации для
разбиений 12 (см. упражнения 54-58)
d) Будем называть разбиение \х минимальным, если не существует разбиения Л,
такого, что /х^ Л. Докажите, что ц минимально тогда и только тогда, когда цт
имеет различные части.
e) Предположим, что а = ао >- а\ > >- ak и а = а'0 >- а[ > >- а!к,, где ak и а'к, —
минимальные разбиения. Докажите, что к = к' и ak = а'к,.
f) Поясните, как вычислить лексикографически наименьшее разбиение на
различные части, которое мажоризирует данное разбиение а.
g) Опишите лексикографически наименьшее разбиение Лп числа п на различные
части. Чему равна длина всех путей п1 = ао>- а\ > >- Л^?
80 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
h) Чему равна длина длиннейшего и кратчайшего путей вида п1 = од, oji ,..., ol\ =
= 1п, где aj покрывает ojj+i для всех 0 ^ j < I?
► 56. [М27] Разработайте алгоритм для генерации всех разбиений а, таких, что А ^
а ^ ji, для данных разбиений А и А ^ д.
Примечание. Такой алгоритм имеет множество применений. Например, для
генерации всех разбиений, которые имеют т частей, причем ни одна из частей не
превосходит мы можем положить А минимальным разбиением такого вида, т.е.,
как в упражнении 3, \п/т~\ ... |_n/raj, а р — наибольшим, т.е. ((n -m + 1) i™-1) д
(/Ln/'J (n mod /)). Аналогично, согласно известной теореме Х.Г. Ландау (H.G.
Landau) [Bull. Math. Biophysics, 15 (1953), 143-148], разбиения (m), такие, что
т ILW2J
представляют собой "векторы счетов" в круговом турнире, т.е. разбиения а\... аш,
когда игрок на j-м месте побеждает в aj играх.
57. [М22] Предположим, что матрица (a%j) из нулей и единиц имеет суммы
элементов строк гi = ^2j ац и суммы элементов столбцов Cj = ^ а^. Тогда А = г\г2 •..
и р = с\с2 •.. — разбиения n = J^ij ач- Докажите, что такая матрица существует
тогда и только тогда, когда А =^ рт.
58. [М##] (Симметричные средние.) Пусть а = а\... аш и /? = Ь\... Ьш —
разбиения п. Докажите, что неравенство
J_ <Tai ra™ > — Tbl rpbm
выполняется для любых неотрицательных значений переменных (#i,...,xm), где
сумма берется по всем га! перестановкам {1,..., га}, тогда и только тогда, когда а
/?. (Например, это неравенство сводится к (у\ + • ♦ - + уп)/п ^ (уг • • • Уп)1^п в частном
случае га = п, а = п0... 0, (5 = 11... 1, Xj = уУп.)
59. [М22] Путь Грея (59) симметричен в том смысле, что обращенная
последовательность 6,51,...,111111 имеет тот же вид, что и сопряженная последовательность
(111111)т, (21111)т, (6)т. Найдите все пути Грея ai,..., ap(n), симметричные
в данном смысле.
60. [23] Завершите доказательство теоремы S, изменяя определения L (га, п)
и М (га, п) во всех местах, где в (62) и (63) вызывается L (4,6).
61. [26] Реализуйте схему генерации разбиений на основе теоремы S, всегда
указывающей две части, которые должны измениться между посещениями.
62. [46] Докажите или опровергните следующее утверждение: для всех достаточно
больших целых чисел п и 3 ^ га < п, таких, что п mod га ф 0, и для всех разбиений
а числа п, у которых ai ^ га, существует путь Грея для всех разбиений с частями,
не превышающими га, начинающийся с 1п и заканчивающийся oj, за исключением
а = 1п и а = 21п"2.
га — 1
=^а^ (га-1) (га-2)... 21,
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 81
63. [47] Для каких разбиений А и /х имеется код Грея по всем разбиениям а, таким,
что Л =^ а ^ ц!
► 64. [32] {Бинарные разбиения.) Разработайте алгоритм без применения циклов,
который посещает все разбиения п на степени 2, где каждый шаг заменяет 2к + 2к
на 2fc+1 или наоборот.
65. [23] Хорошо известно, что каждая коммутативная группа из га элементов
может быть представлена в виде дискретного тора Т (mi,..., mn) с операцией
сложения 7.2.1.3-(6б), где m = тп\.. .ran, a rrij кратно raJ+i при 1 ^ j < п. Например,
для га = 360 = 23 • З2 • 51 имеется шесть групп, соответствующих разложениям
(гаьга2,га3) = (30,6,2), (60,6,1), (90,2,2), (120,3,1), (180,2,1) и (360,1,1).
Поясните, как систематически сгенерировать все такие разложения при помощи
алгоритма, который на каждом шаге изменяет ровно два множителя rrij.
► 66. [М25] (Р-разбиения.) Предположим, что вместо требования а\ ^ а2 ^ • • • мы
рассматриваем все неотрицательные композиции п, удовлетворяющие некоторому
заданному частичному порядку. Например, П.А. Мак-Мэган (P.A. MacMahon)
заметил, что все решения "холмистых" (up-down) неравенств а± ^ а2 ^ аз < а\ можно
разделить на пять неперекрывающихся типов:
&i ^ а2 ^ аз > 04; ai ^ а2 ^ а± > аз;
а2 > ai ^ аз ^ а\\ а2 > ai ^ > аз; а2 ^ а± > а\ ^ аз.
Все эти типы легко перечислимы, поскольку, например, a2 > ai ^ а± > аз
эквивалентно а2 — 2 ^ ai — 1 ^ а4 — 1 ^ аз; количество решений при аз^0иа1+а2 +
+ аз + 04 = п равно количеству разбиений и — 1 — 2 — 0 — 1не более чем на четыре
части.
Объясните, как решить общую задачу такого вида: дано отношение -<
некоторого частичного порядка для га элементов. Рассмотрим все га-кортежи ai... ат с тем
свойством, что aj ^ а&, если j -< к. Полагая, что индексы выбраны таким образом,
что из j -< к вытекает j < к, покажите, что все соответствующие га-кортежи делятся
на N классов, по одному для каждого из выходов алгоритма топологической
сортировки 7.2.1.2V. Какой вид имеет производящая функция для всех неотрицательных
ai... am, сумма которых равна п? Каким образом можно сгенерировать их всех?
67. [М25] (П.А. Мак-Мэган (P.A. MacMahon), 1886.) Идеальным разбиением п
является мультимножество, которое имеет ровно п + 1 подмультимножеств, и эти
мультимножества представляют собой разбиения целых чисел 0,1,..., п. Например,
мультимножества {1,1,1,1,1}, {2,2,1} и {3,1,1} являются идеальными
разбиениями 5.
Поясните, как построить идеальные разбиения п, имеющие наименьшее
количество элементов.
68. [М23] Какое разбиение п на га частей имеет наибольшее произведение ai... am
при (а) заданном га; (Ь) произвольном га?
69. [М#0] Найдите все п < 109, такие, что уравнение #i +х2 Н \-хп — х\х2 . •. хп
имеет единственное решение в натуральных числах х\ ^ х2 ^ • • • ^ хп. (Имеются,
например, единственные решения для п = 2,3 и 4; однако 5 + 2 + 1 + 1Н-1 = 5- 2-1-Ы,
3 + 3 + 1 + 1 + 1 = 3- 3-1-Ыи2 + 2 + 2 + 1 + 1 = 2.2-2.1.1.)
82 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
70. [М#0] ("Болгарский пасьянс".) Даны п карт, разделенные произвольным
образом на одну или несколько стопок. Затем многократно выполняются следующие
действия — из каждой стопки берется по одной карте, и они образуют новую стопку.
Покажите, что, если п = 1 + 2 + Ь га, этот процесс всегда достигает
самовоспроизводящегося состояния со стопками размером — 1,...,1}. например, если
п = 10, и мы начинаем со стопок размером {3,3,2,2}, то получим такую
последовательность разбиений:
3322 -> 42211 5311 -> 442 -> 3331 -> 4222 -> 43111 532 4321 -> 4321 ->•■■.
Какие циклы состояний возможны для других значений п?
71. [М46] Продолжая предыдущее упражнение, чему равно максимальное
количество шагов, которые могут быть выполнены до того, как Болгарский пасьянс с п
картами достигнет циклического состояния?
72. [М#5] Предположим, мы записали все разбиения п, например
6,51,42,411,33,321,3111,222,2211,21111,111111
для п = 6, и заменили все j-e появления числа к на j:
1,11,11,112,12, 111, 1123,123,1212,11234,123456.
a) Докажите, что эта операция порождает перестановку отдельных элементов.
b) Сколько всего раз встречается элемент к?
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 83
7.2.1.5 Генерация всех разбиений множеств
Перейдем теперь к рассмотрению другого вида разбиений. Разбиения
множества представляют собой способы рассматривать множество как объединение
непустых непересекающихся подмножеств, именуемых блоками (block). Например, в
начале предыдущего раздела были перечислены пять различных разбиений множества
{1,2,3} (7.2.1.4-(2) и 7.2.1.4-(4)). Эти пять разбиений более компактно можно
записать в виде
123, 12|3, 13|2, 1|23, 1|2|3 (1)
с использованием вертикальной черты для отделения одного блока от другого.
В этом списке элементы каждого блока могут быть записаны в любом порядке, как
и сами блоки, так что '13|2', '31|2', '2|13' и '2|ЗГ — это одно и то же разбиение.
Можно стандартизировать представление путем соглашения, например, о перечислении
элементов каждого блока в возрастающем порядке, а сами блоки располагать в
порядке возрастания их наименьших элементов. При этих соглашениях разбиениями
множества {1,2,3,4} являются
1234,123|4,124|3,12|34,12|3|4,134|2,13|24,13|2|4,
14|23,1|234,1|23|4,14|2|3,1|24|3,1|2|34,1|2|3|4, ( '
получаемые путем добавления 4 всеми возможными способами к блокам (1).
Разбиения множеств появляются в самых разных контекстах. Политики и
экономисты, например, часто говорят о "коалициях"; архитекторы вычислительных
систем — о "шаблонах обращения к кэш-памяти", поэты — о "схемах рифм" (см.
упражнения 34-37). В разделе 2.3.3 мы встречались с отношением эквивалентности
между объектами, а именно бинарным отношением, обладающим свойствами
рефлексивности, симметричности и транзитивности, определяющим разбиение этих объектов
на так называемые "классы эквивалентности". Верно и обратное: каждое разбиение
множества определяет отношение эквивалентности; в частности, если П является
разбиением множества {1,2 , п}, можно записать
j = k (modulo П), (3)
если j и к принадлежат одному и тому же блоку П.
Один из наиболее удобных способов представления разбиения множества в
компьютере состоит в кодировании его ограниченно растущей строкой (restricted growth
string), т.е. строкой а\а2 ... ап, в которой
а\ = 0 и aJ+i ^ 1 + max (ai,..., aj) для 1 ^ j < п. (4)
Идея заключается в том, чтобы aj — ak тогда и только тогда, когда j = А*, причем
выбирать наименьшее доступное число для aj5 где j — наименьшее число в своем
блоке. Например, ограниченно растущие строки для 15 разбиений (2) представляют
собой соответственно
0000,0001,0010, ООП, 0012,0100,0101,0102,
0110,0111,0112,0120,0121,0122,0123. ( '
84
КОМБИНАТОРНЫЙ ПОИСК
7.2.1
Такое соглашение наводит на мысль о следующей простой схеме генерации
разбиений, предложенной Джорджем Хатчинсоном (George Hutchinson) [СACM, 6 (1963),
613-614].
Алгоритм Н (Ограниченно растущие строки в лексикографическом
порядке). Для данного п ^ 2 этот алгоритм генерирует все разбиения {1,2, ...,п}
путем посещения всех строк а\а2...ап, удовлетворяющих условию
ограниченного роста (4). Поддерживается вспомогательный массив &i&2...&n? гДе fy+i = 1 +
+ max (ai,..., а^); значение bn из соображений эффективности реально содержится
в отдельной переменной га.
HI. [Инициализация.] Установить а\... ап <— 0... О, Ь\... 6n_i <— 1... 1, га <— 1.
Н2. [Посещение.] Посетить ограниченно растущую строку а\.. .an, которая
представляет разбиение нат + [ап = га] блоков. Затем, если ап = га, перейти к ша-
НЗ. [Увеличение ап.] Установить ап <— ап + 1 и вернуться к шагу Н2.
Н4. [Поиск j.] Установить j <— п — 1; затем, пока aj = bj, устанавливать j <— j - 1.
Н5. [Увеличение aj.] Завершить работу алгоритма, если j = 1. В противном случае
установить aj <— aj + 1.
Н6. [Обнуление aJ+i... ап.] Установить т <— Ъj + [a^ = fy] и jf «— j -f 1. Затем, пока
j < n, устанавливать ^— 0, bj *—mnj*—j + Наконец, установить an 0
и вернуться к шагу Н2. I
В упражнении 47 доказывается, что шаги Н4-Н6 выполняются редко, а циклы в
шагах Н4 и Н6 почти всегда короткие. Вариант этого алгоритма с использованием
связанного списка имеется в упражнении 2.
Коды Грея для разбиения множества. Один из способов быстрого прохода по
всем разбиениям множества состоит в изменении только одной цифры в ограниченно
растущей строке а\.. .ап на каждом шаге, поскольку изменение aj просто означает
перемещение элемента j из одного блока в другой. Элегантный способ построения
такого списка был предложен Гидеоном Эрлихом (Gideon Ehrlich) [JACM, 20 (1973),
507-508]. Можно последовательно добавлять цифры
к каждой строке а\...ап-\ в списке разбиений п — 1 элементов, где m = 1 +
+ max (а\,..., an_i), чередуя оба варианта. Таким образом, список '00, 01' для п = 2
превращается в '000, 001, 011, 012, 010' для п = 3, который, в свою очередь, для
п = 4 превращается в
гу Н4.
0,m,m — 1,..., 1 или 1,..., т — 1, т, 0
(в)
0000,0001, ООП, 0012,0010, ОНО, 0112,0111
0121,0122,0123,0120,0100,0102,0101.
(7)
В упражнении 14 показано, что схема Эрлиха приводит к простому алгоритму,
который дает порядок кода Грея без особых дополнительных усилий по сравнению
с алгоритмом Н.
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 85
Предположим, однако, что нас не интересуют все разбиения; мы можем
захотеть рассмотреть только те из них, которые состоят ровно из га блоков. Можно
ли пройти по этой меньшей коллекции ограниченно растущих строк так, чтобы
на каждом шаге изменялась только одна цифра строки? Да; очень красивый
способ генерации такого списка был открыт Франком Раски (Frank Ruskey) [Lecture
Notes in Сотр. Sci., 762 (1993), 205-206]. Он определил две такие
последовательности, Атп и А'тп, которые начинаются с лексикографически наименьшей га-блочной
строки 0n-m01... (m — 1). Различие между ними в том, что если п > т + 1, то Атп
заканчивается 01... (m — 1) 0n_m, а А'шп заканчивается 0n_m_101... (m — 1) 0. Вот
рекурсивные соотношения Раски для 1 < га < п:
А = \ Am-i)n (т - 1), Атп (га - 1),..., А*п1, Атп0, если га четно;
m(n+i) | A'(m_1)n (га - 1), Ашп (га - 1),..., А*п1, Атп0, если га нечетно;
А, = f А[т-\)п (т ~ х)' Атп (га - 1),..., Лшп1, А*п0, если га четно;
m(n+1) {А{т_1)п (га - 1), (га - 1),..., Лшп1, А*п0, если га нечетно.
Конечно, базовые случай представляют собой простые одноэлементные списки
А1п = А'1п = {0п} и А™ = {01... (п-1)}. (Ю)
При таких определениях {|} = 25 разбиений {1,2,3,4,5} на три блока представляют
собой
00012,00112,01112,01012,01002,01102,00102,
00122,01122,01022,01222,01212,01202,
11)
01201,01211,01221,01021,01121,00121, v J
00120,01120,01020,01220,01210,01200.
(Эффективная реализация этого метода приведена в упражнении 17.)
В схеме Эрлиха (7) крайние справа цифры строки а\... ап меняются наиболее
часто, но в схеме Раски основные изменения происходят ближе к левому краю.
Однако в обоих случаях на каждом шаге изменяется только один элемент aj5 и эти
изменения очень просты: либо aj изменяется на ±1, либо происходит переход
между двумя крайними значениями 0 и 1-f max (oi,..., aj-i). При тех же ограничениях
последовательность А'1п, А'2п,..., А'пп проходит по всем разбиениям в возрастающем
порядке количества блоков.
Количество разбиений множества. Мы видели, что имеется 5 разбиений
множества {1,2,3} и 15 разбиений множества {1,2,3,4}. Быстрый способ вычисления
этих величин был открыт Ч.С. Пирсом (C.S. Peirce) [American J. of Mathematics, 3
(1880), 48], который представил следующий треугольник чисел:
(12)
1
2
1
5
3
2
15
10
7
5
52
37
27
20
203
151
114
87
86 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
Здесь элементы wn\,wn2,.. •, ъопп п-й строки подчиняются простому рекуррентному
соотношению
тлпк = tu(n_i)fc + t*7n(fc+i) Для 1 ^ & < п;
^nn = ^(n-i)i при п > 1, a W\\ — 1.
Треугольник Пирса имеет много замечательных свойств, некоторые из них
рассматриваются в упражнениях 26-31. Например, wnk представляет собой количество
разбиений {1,2,...,п}, у которых к — наименьший из блоков.
Элементы диагонали и первого столбца треугольника Пирса, которые говорят об
общем количестве разбиений, широко известны как числа Белла, в связи с тем, что
Э.Т. Белл (Е.Т. Bell) написал ряд важных статей о них [АММ, 41 (1934), 411-419;
Annals of Math., 35 (1934), 258-277; 39 (1938), 539-557]. Следуя Луи Комте (Louis
Comtet), мы будем обозначать числа Белла как wn, чтобы не путать их с числами
Бернулли Вп. Вот несколько первых чисел Белла:
п = 0123456 7 8 9 10 11 12
шп = 1 1 2 5 15 52 203 877 4140 21147 115 975 678 570 4 213 597
Обратите внимание на быстрый рост последовательности, но не такой быстрый, как
п\; ниже мы докажем, что wn = 0 (n/logn)n.
Числа Белла wn = wn\ при п ^ 0 должны удовлетворять рекуррентной формуле
tz7n+i = wn + {^jzon-i + (^jwn-2 H = 5^ ^k)Wn~k'
(14)
поскольку каждое разбиение множества {1,..., п + 1} получается для некоторого к
путем выбора к элементов из {!,... ,п} для размещения в блоке, содержащем
элемент n + 1, с последующим разбиением оставшихся элементов wn-k способами. Это
рекуррентное соотношение, найденное Ёшисуке Мацу нагой (Yoshisuke Matsunaga)
в 18-м веке (см. раздел 7.2.1.7), приводит к красивой производящей функции
оо
z
U(z) = J2^n-=eeZ -1, (15)
п=0
открытой У.А. Уитвортом (W.A. Whitworth) [Choice and Chance, 3rd ed. (1878),
3.XXIV]. Если мы умножим обе части (14) на zn/n\ и просуммируем по п, то получим
п=0 \/с=0 / \т=0 /
и (15) является решением данного дифференциального уравнения при П (0) = 1.
Числа von много лет изучались из-за их любопытных свойств, связанных с данной
формулой, задолго до того, как Уитворт указал их комбинаторную связь с
разбиениями множества. Например,
к=0 /с=0
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 87
[Mat. Sbornik, 3 (1868), 62; 4 (1869), 39; G. Dobinski, Archiv der Math, und Physik, 61
(1877), 333-336; 63 (1879), 108-110]. Христиан Крамп (Christian Kramp),
рассматривая разложение ee* [Der polynomische Lehrsatz, ed. by C.F. Hindenburg (Leipzig:
1796), 112-113], привел два способа вычисления коэффициентов, а именно: либо
с использованием (14), либо суммируя р (п) членов, по одному для каждого
обычного разбиения п. (См. формулу Арбогаста (Arbogast), упражнение 1.2.5-21. Крамп,
близко подошедший к открытию этой формулы, похоже, предпочитал свой метод,
основанный на разбиениях, не понимая, что он требует более чем полиномиального
времени при все больших и больших п; для коэффициента при z10 он вычислил
значение 116 015 вместо верного 115 975.)
* Асимптотические оценки. Изучить, насколько быстро с ростом п увеличивается
значение wn, можно с использованием теории комплексных вычетов: если степенной
ряд J2T=o ак2,к СХ°ДИТСЯ везде в области \z\ < г, то
1 Г а0 + a\z + a2z2 +
-dz, (17)
где интеграл берется по простому замкнутому пути, который обходит против
часовой стрелки начало координат и остается внутри окружности \z\ — г. Пусть f (z) =
= YlT=o akZk~n — подынтегральная функция. Мы можем выбрать любой описанный
путь, но зачастую имеются специальные методы, применимые, когда путь проходит
через точку zo, в которой производная /' (zo) равна нулю, поскольку поблизости
этой точки
/ (zo + ее") = f (zo) + !!Ы£*е™ + О (е3). (18)
Если, например, / (zo) и f"(zo) действительны и положительны, скажем, / (zo) = и
и j" (zo) = 2v, то эта формула гласит, что значение / (zo ± е) приближенно равно
и + ve2, в то время как f (zo ± is) приближенно равно и — ve2. Если z проходит
от zo — is до zo + ге, то значение f (z) возрастает до максимального значения и,
после чего вновь снижается; однако большее значение u + ve2 достигается функцией
слева и справа от этого пути. Другими словами, альпинист, путешествующий по
комплексной плоскости с рельефом, высота которого в точке z равна SR/ (г), в точке
zo обнаруживает "перевал"; рельеф здесь имеет вид седла (рис. 33). Полный интеграл
от / (z) одинаков для любого пути, но получить результат лучше при выборе пути,
проходящего через седловую точку zo в направлении возрастания мнимой части.
Этот важный метод, разработанный П. Дебаем (P. Debye) [Math. Annalen, 67 (1909),
535-558], так и называется — "метод седловой точки".
Познакомимся с методом седловой точки на примере, для которого мы знаем
ответ:
1 1 Г ez
, = ^-.o—dz. (19)
(п-1)! 2m]zn v }
Наша задача — найти хорошее приближение значения интеграла в правой части
при больших п. Будет удобнее работать с функцией / (z) = ez/zn, если записать ее
как e9(z\ где д (z) — z — nlnz; тогда седловая точка достигается там, где значение
производной д' (zq) = 1 — n/zo равно 0, т.е. в точке zo = п. Если z = п + it, мы
88 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
Рис. 33. Поведение
аналитической
функции вблизи седловой
точки
получим
/ ч \^9{к) (п) ч* , *2 it3 t4 it5
поскольку (z) — (—\)k (k — \)\n/zk при к ^ 2. Проинтегрируем / (z) по
прямоугольному пути от n — im через n + ш, — n + гга и —га — гга назад к гг — гга:
га —п
h&dz = h \ /(»+«)*+2й }/(*+<»»)*+
—га п
—га п
+ 7^- f /(-пН-«)А+-^т [/(*-гга)А.
27Г J 27гг J
га —п
Ясно, что если выбрать га = 2га, то на трех последних отрезках пути |/(г)| ^
2"п/ (га), поскольку |ег| = e^z и |z| ^ max (SRz, Sz); так что мы остаемся с
га
2ттг J zn 2тт J V2nnn /
—га
Теперь вернемся к методике, которой мы неоднократно пользовались ранее,
например для вывода формулы 5.1.4-(53): если / (t) — хорошее приближение / (t) при
t е А и если суммы YlteB\A f М и ^2tec\A f W малы? то ИСгеС / (0 является
хорошим приближением для YlteB f №• Эта идея применима как к суммам, так и к
интегралам. [Этот общий метод, разработанный Лапласом (Laplace) в 1782 году,
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 89
,п-п2е/2
часто называется "trading tails"4; см. CMath § 9.4.] Если \t\ < п1/24"6, мы имеем
n" V 3n2 + 4n3 18n4+t7r
При |£| > п1,/2+е мы имеем
е*(п+«) | < |/ (n + in1'2*') | = ^ ехр (-2 In (l + n2^1)) = О ^-
Кроме того, можно пренебречь неполной гамма-функцией
оо 2
J e-t2^2nhkdt = 2(*-1)/Vfc+1)/2r ^) = О (n0(1)e"n2£/2) .
Таким образом, мы можем применить метод Лапласа и получить приближение
оо
J-i^-dz-— I e~*<™ (1+*L+*--JlL-+0 О"3/2! dt =
2тггЬ" 2тт™ J ^1+3n2 + 4n3 18п4 У ))йЪ
— ОО
где = e~t2/(2n4kdt. Конечно, Ik — 0 при нечетном к. В противном случае
можно оценить значение Ik при помощи широко известного факта
ОО > /
r r-at%2/, г((2г + 1)/2) >/5F А
е * dt - а(2(+1)/2 = (2а)№+1)/2 11 & ~ !) (2°)
при а > 0 (см. упражнение 39). Собирая воедино все рассмотренные результаты,
получаем для всех е > 0 асимптотическую оценку
<^ = vi^(1+0+l;-il+o("9'"3/2))- <21>
полностью согласующуюся с приближением Стирлинга, которое мы выводили
совершенно иным методом в 1.2.11.2—(19). Прочие члены в разложении д (п + it)
позволяют доказать, что истинная ошибка в (21) всего лишь О (п-2), поскольку та же
процедура дает асимптотический ряд общего вида еп/(y/^nn~1/2)(l + ci/n + c2/n2; +
Н Ь ст/пш 4- 0(n~m_1)) для всех га.
4Дословно — "торговля хвостами". — Примеч. пер.
90 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
То, что мы занялись выводом этого результата, оправдывается важной
технической деталью: функция In z не является однозначной на пути интегрирования,
поскольку возрастает на 2ш при движении вокруг начала координат. На самом деле
этот факт лежит в основе механизма, который заставляет работать теорему о
вычетах. Однако наш вывод корректен, поскольку неоднозначность логарифма не влияет
на подынтегральную функцию / (z) = ez/zn при целом п. Кроме того, если п не
целое, мы можем немного изменить вывод, оставив его совершенно строгим, путем
взятия интеграла по пути, начинающемуся в — оо, обходящему начало координат
против часовой стрелки и возвращающемуся в — оо. Это даст нам интеграл Ганкеля
для гамма-функции 1.2.5-(17); таким образом мы можем вывести асимптотическую
формулу
1
Г (х) 2тгг
е2 , ех { 1
= ф —= 1 - + о (х-2) , (22)
справедливую для всех действительных чисел х —» оо.
Так что метод седловой точки работает — хотя это и не простейший способ
получения этого конкретного результата. Теперь применим его к выводу приближения
чисел Белла:
l^h = T-\e9(z)dz' g(z) = e'-nlnz. (23)
[п — 1)! 2ше J
Седловая точка для нового подынтегрального выражения теперь находится в точке
z0 = f > 0, где
^ = п. (24)
(В действительности мы должны писать чтобы указать, что £ зависит от п;
однако это излишне загромоздило бы следующие далее формулы.) Предположим
на минутку, что добрый волшебник сказал нам, чему равно значение £. Тогда мы
можем взять интеграл по пути z = £ + it, и получить
ну гем интегрирования по соответствующему прямоугольному пути можно
доказать, как мы делали это выше, что хорошим приближением интеграла в (23)
является
п-е~1/2 к
eg{0-na2t2-nia3t3+na4t4+ ^ ^ $ + ~ 1)! ^5)
-Пе-1/2
(см. упражнение 43). Замечая, что a,ktk под знаком интеграла представляет собой
о (vk£-k/2)^ мы получим асимптотическое разложение в виде
eet-'(n-l)' ( h ь2 ьт /logn\m+1\
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 91
где (£ -|- 1)зк Ьк — полином степени 4к от £ (см. упражнение 44). Например:
= _2?-3€'-20е3-18е + 2 (27)
24(£ + 1)3
4£8 - 156£7 - 695£6 - 696£5 + 1092£4 + 2916£3 + 1972£2 - 72£ + 4
02 = « . (28)
1152 (£ + 1)
В (26) можно воспользоваться приближением Стирлинга (21) для доказательства
того, что
^-^exp^^-l + ^-^-iln^ + ^-l-^ + O^)2); (29)
а в упражнении 45 доказывается аналогичная формула:
u.^exp^^-l + ^-Iln^+l)-!-^^^)2). (30)
Следовательно, мы имеем wn/wn-\ « = п/£. Точнее,
— =i(l + 0(±)). (31)
Шп П \ \п,
Но чему равно асимптотическое значение £? Из определения (24) вытекает, что
£ = Inn - ln£ = Inn - In (Inn - In 0 = Inn - In Inn + О (loflogn ) ; (32)
V log n у
и мы можем идти по этому пути, как показано в упражнении 49. Однако
асимптотический ряд для £, полученный таким образом, никогда не даст точность лучше,
чем <9(l/(logn)m) для все большего и большего значения га; таким образом, при
умножении на п в формуле (29) для von-\ или формуле (30) для wn мы получим
огромную неточность.
Следовательно, если мы хотим использовать (29) или (30) для вычисления
хорошего приближения чисел Белла, то наилучшая стратегия — начать с вычисления
точного значения £, не используя плохо сходящиеся ряды. Метод Ньютона,
рассматривавшийся в примечаниях перед описанием алгоритма 4.7N, дает эффективную
итеративную схему
£0 = In п, &+1 = Т-^ГТ (1 + 6> - In & ), (33)
которая быстро сходится к точному значению. Например, для п = 100 пятая
итерация дает значение
£5 = 3.3856301402900501848882443645297268674917-, (34)
верное до сорокового знака. Использование этого значения в (29) приводит к
последовательным приближениям
(1.6176088053..., 1.6187421339..., 1.6187065391..., 1.6187060254...) х 10
114
92 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
при учете соответственно членов до &о, &ь b2, Ь%; истинное значение wgg представляет
собой 115-значное целое число 16187060274460... 20741.
Теперь, когда мы знаем количества разбиений множества Я7П, попробуем
выяснить, сколько из них состоят ровно из т блоков. Оказывается, что почти все
разбиения {1,..., п} имеют порядка п/£ = блоков с примерно £ элементами в каждом
блоке. Например, на рис. 34 показана гистограмма чисел { ^ } для п = 100 и «
« 29.54.
. X.
-.11 Ilk,—, , , , , , ,
I 1 i~*1 "'""Г"|П"—i 1 1 1 1 1 1
т 0 10 20 30 40 50 60 70 80 90 100
Рис. 34. Числа Стирлинга {*™ } имеют наибольшие значения при т = 28 и т = 29
Величину { ^ } можно исследовать при помощи применения метода седловой
точки к формуле 1.2.9 (23), которая гласит, что
= 4 [*»] (е* _ 1)- = 1^ И»"-D-(»+i) ш*^ (35)
Пусть а = (п 4- 1)/га. Функция д (z) = а 1 In (ez — 1) — In z имеет седловую точку
а > 0 при
— = а. (36)
Заметим, что а > 1 при 1 ^ га ^ п. Это значение а можно получить как
а = а-0, /3 = Т (ае~а), (37)
где Т — "функция дерева" из 2.3.4.4-(30). Фактически /3 — значение в диапазоне от
0 до 1, для которого
fie'0 = ае~а; (38)
функция хе~х возрастает от 0 до е-1 при увеличении х от 0 до 1, после чего вновь
уменьшается до 0. Поэтому /3 определяется единственным образом и мы имеем
е° = ^. (39)
Все такие пары а и (3 можно получить с использованием обратных формул
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 93
например, значения а = 1п4и/? = 1п2 соответствуют а = In 2.
Можно, как ранее, показать, что интеграл в (35) асимптотически эквивалентен
интегралу от e^n+1^9^dz по пути z = a + it (см. упражнение 58). В упражнении 56
доказывается, что ряд Тейлора вблизи z = а
t*(l-(3) ^(й)
= 9 \?) ~
обладает тем свойством, что
9(a + it)=g (а) - - £ ^-д™ (а) (41)
д{к> (а) | < 2 (к - 1)! (1 - 0)/<тк для всех к > 0. (42)
Таким образом, мы можем легко убрать множитель N = (n 4- 1) (1 — (3) из
степенного ряда (п + 1)д (г), и метод седловой точки приводит нас к формуле
(43)
\mj ml (a-p)n-mp™V2^N У~ * N 1 N2 * ' Nl ' ~ V^+1
при N —► оо, где (1 — /3)2к bk — полином от а и /?. (Величина (а — (3)п~ш (Зш в
знаменателе проистекает из того факта, что (еа — 1)т/ап = (а//3 — 1)т/(а — /3)п, в
соответствии с (37) и (39).) Например:
. 6 - /?3 - 4а/?2 - а2/3 5 (2 -/З2 - а/3)2
61 = 8(1 = 0 24 (I-/?)2 • (44)
В упражнении 57 доказывается, что N —» оо тогда и только тогда, когда п — ш —> со.
Асимптотическое разложение для { ^ }, аналогичное (43), но несколько более
сложное, было впервые получено Лео Мозером (Leo Moser) и Максом Виманом (Мах
Wyman) [Duke Math. J., 25 (1957), 29-43].
Формула (43) выглядит немного страшновато из-за того, что она создана с
учетом применимости для всего диапазона количества блоков т. Значительное
упрощение формулы возможно при относительно малых и относительно больших
значениях га (см. упражнения 60 и 61); однако эти упрощения не дают точных результатов
в важных случаях, когда { ^ } имеет наибольшее значение. Рассмотрим подробнее
эти важные случаи, определяющие форму пика на рис. 34.
Пусть = п, как в (24), и положим га = ехр (£ + г/л/п) = пег/^/£; мы будем
считать, что \r\ ^ ne, а значит, га близко к е^. Старший член (43) можно переписать
как
п!_ 1
94 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
и приближение Стирлинга для (п + 1)! приводит к очевидным сокращениям в этом
выражении. При помощи вычислительной алгебры мы находим
тп 1 / / л 1\ 1 / 2 г2
:ехрп£-1 + ---£ + г2 +
ш! ^ г \ \^ а 2 ^ С
'г
2
4 + щ)Тп+0
а также
а п П\/п
о~0т _
e*p(-£-^=+0({V-));
Таким образом, окончательный результат имеет вид
Возведенное в квадрат выражение равно нулю, когда
g(2£ + 3) +0(#п-3/2\.
2(^+1)^ ^ /'
таким образом, максимум достигается, когда количество блоков равно
Сравнивая (47) и (30), мы видим, что наибольшее число Стирлинга { ^ } для данного
значения п приблизительно равно £zun/\/2пп.
Метод седловой точки применим к существенно более сложным задачам, чем
рассмотренные в этом разделе. Превосходное описание ряда эффективных методов
можно найти в книгах N.G. de Bruijn, Asymptotic Methods in Analysis (1958),
главы 5 и 6; F.W.J. Olver, Asymptotics and Special Functions (1974), глава 4; R. Wong,
Asymptotic Approximations of Integrals (2001), главы 2 и 7.
* Случайные разбиения множества. Размеры блоков в разбиении множества
{1,... ,п} представляют собой обычное разбиение числа п. Следовательно, нас
может заинтересовать, к какому виду разбиений оно может относиться. На рис. 30
в разделе 7.2.1.4 показан результат суперпозиций диаграмм Феррерса для всех
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 95
р (25) = 1958 разбиений 25; эти разбиения стремятся к симметричной кривой 7.2.1.4-
(49). В отличие от этого, на рис. 35 показан результат суперпозиции
соответствующих диаграмм для всех ш25 ~ 4.6386 х 1018 разбиений множества {1,..., 25}.
Очевидно, что "форма" случайного разбиения множества существенно отличается от
таковой для случайного разбиения целого числа.
О 6 ^
Рис. 35. Случайное разбиение
множества при п = 25
Это изменение связано с тем, что некоторые разбиения целого числа появляются
в виде размеров блоков разбиения множества только в редких случаях, в то время
как другие весьма распространены. Например, разбиение n = 1 + Ц hi возможно
только единственным способом, в то время как разбиение п = 2 + 2 Н Ь 2 может
реализоваться (п — 1) (п — 3)... (1) способами. При п = 25 разбиение целого числа
25 = 4 + 4 + 3 + 3 + 3 + 2 + 2 + 2 + 1 + 1
в действительности возникает более чем в 2% случаев от общего количества
разбиений множества. (Это конкретное разбиение наиболее частое в случае п = 25. Ответ
к упражнению 1.2.5-21 гласит, что ровно
ci!l!cic2!2!c2 ...cn!n!c- v '
разбиений множества соответствуют разбиению целого числа п = ci • 1 + с2 • 2 Н Ь
+ Сп • П.)
Можно легко определить среднее количество /с-блоков в случайном разбиении
множества {1,..., п}: если мы запишем все wn возможных разбиений, каждый
конкретный /с-блок встретится ровно wn-k раз. Следовательно, среднее количество
составляет
96 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
Разложение (31), как доказывается в упражнении 64, дает нам
к >
2(£ + 1)2п
при к ^ п2/3,
(50)
где £ определено в (24). Следовательно, если, скажем, к ^ п£, формула (49)
упрощается до
к
п-
(!)'(i+o0))4(i+o("s*-'»- (»)
В среднем имеется около £ блоков размером 1, £2/2! блоков размером 2 и т.д.
Дисперсия этих величин мала (см. упражнение 65), и оказывается, что случайное
разбиение ведет себя, по сути, так, как если бы количество /с-блоков подчинялось
распределению Пуассона со средним £к/к\. Гладкая кривая, показанная на рис. 35,
проходит через точки (/ (к) ,к) в координатах диаграммы Феррерса, где
/ (к) = £fc+1/(fc + 1)! + £*+7(* + 2)! + £*+7(* + 3)! +
tk+2
(52)
представляет собой приближенное расстояние от верхней линии, соответствующей
размеру блока к ^ 0 (при больших п эта кривая становится все более близкой к
вертикали) .
Наибольший блок стремится содержать примерно е£ элементов. И еще:
вероятность того, что блок, содержащий элемент 1, имеет размер менее £ + а<\/?,
приближается к вероятности того, что нормальное отклонение не превышает а. [См. John
Haigh, J. Combinatorial Theory, A13 (1972), 287-295; V.N. Sachkov, Probabilistic
Methods in Combinatorial Analysis (1997), глава 4 — перевод книги на русском языке,
изданной в 1978 г.; Yu. Yakubovich, J. Mathematical Sciences, 87 (1997), 4124-4137 —
перевод статьи на русском языке, опубликованной в 1995 г.; В. Pittel, J.
Combinatorial Theory, A79 (1997), 326-359.]
Красивый способ генерации случайного разбиения множества {1,...,п} был
предложен А.Д. Стамом (A.J. Stam) [Journal of Combinatorial Theory, A35 (1983),
231-240]: пусть M — случайное целое число, принимающее значение га с
вероятностью
гап
рт = —; ; (53)
em\wn
в силу (16) сумма всех вероятностей равна 1. После того как м выбрано,
сгенерируем случайный n-кортеж х1х2 ... хп, где каждое xj независимо равномерно
распределено между 0 и м — 1. Тогда в разбиении i=j тогда и только тогда, когда
xi = xj. Эта процедура корректно работает, поскольку каждый к-блок разбиения
получается с вероятностью ]Cm>0 (ra-/ran)pm = l/wn.
Например, для п = 25 имеем
р4
ръ
.00000372
.00019696
р6 «.00313161
р7~ .02110279
р8 « .07431024
р9 «.15689865
р10 «.21855285
рп « .21526871
Pi2 «.15794784
Pi3 ~ .08987171
Pi4 «.04093663
pis ~ .01531445
pie ~ .00480507
р17 « .00128669
pis ~.00029839
Р19 «.00006068
p20 ~ .00001094
Р21 ~ .00000176
Р22 « .00000026
р2з ~ .00000003,
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 97
а всеми остальными вероятностями можно пренебречь. Так, в большинстве случаев
можно получить случайное разбиение 25 элементов, рассматривая случайное 25-
значное число в системе счисления с основанием 9, 10, 11 или 12. Число М может
быть сгенерировано с использованием метода 3.4.1-(3); оно стремится приближенно
к п/( = (см. упражнение 67).
* Разбиения мультимножеств. Разбиения целых чисел и разбиения множеств
представляют собой крайние случаи существенно более общей задачи — разбиений
мультимножеств. Действительно, разбиения п, по сути, не что иное, как разбиения
мультимножества {1,1,...,1}, в котором имеется п единиц.
С этой точки зрения имеется, по сути, р (п) различных мультимножеств с п
элементами. Например, при п = 4 имеется пять различных случаев разбиений
мультимножества:
1234,123|4,124|3,12|34,12|3|4,134|2,13|24,13|2|4,
14|23,14|2|3,1|234,1|23|4,1|24|3,1|2|34,1|2|3|4;
1123,112|3,113|2,11|23,11|2|3,123|1,12|13,12|1|3,13|1|2,1|1|23,1|1|2|3;
(54)
1122,112|2,11|22,11|2|2,122|1,12|12,12|1|2,1|1|22,1|1|2|2;
1112,111|2,112|1,11|12,11|1|2,12|1|1,1|1|1|2;
1111,111|1,11|11,11|1|1,1|1|1|1.
Когда мультимножество содержит га различных элементов, п\ первого вида,
П2 второго, ..., пт последнего, общее количество разбиений мы обозначаем через
Р (rii, гг-2, • • •, пт). Пример (54) показывает, что
р(1,1,1,1) = 15, р(2,1,1) = 11, р(2,2) = 9, р(3,1) = 7, р(4) = 5. (55)
Разбиения с т = 2 часто называют "биразбиениями" (bipartitions), с т = 3 — "три-
разбиениями" (tripartitions), а в общем случае эти комбинаторные объекты известны
под названием мультиразбиений (multipartitions). Изучение мультиразбиений было
начато много лет назад П.А. Мак-Мэганом (P.A. MacMahon) [Philosophical
Transactions, 181 (1890), 481-536; 217 (1917), 81-113; Proc. Cambridge Philos. Soc, 22 (1925),
951-963]; однако предмет изучения настолько обширен, что до сих пор остается
масса нерешенных вопросов. В оставшейся части этого раздела и упражнениях к нему
мы бегло ознакомимся с некоторыми наиболее интересными и поучительными
аспектами этой теории.
Прежде всего стоит отметить, что мультиразбиений, по сути, являются
разбиениями векторов с неотрицательными целыми компонентами, а именно способами
разложения такого вектора на сумму векторов с теми же свойствами. Например,
девять разбиений мультимножества {1,1,2,2}, перечисленные в (54),
представляют собой не что иное, как девять разбиений двухкомпонентного вектора-столбца \,
а именно:
2 20 20 200 11 11 110 110 1100
2' 11' 02' 011' 20' 11' 101' 002' 0011* Vov)
Для краткости здесь опущены знаки "+", как и в случае одномерных разбиений
целых чисел. Каждое разбиение можно записать в каноническом виде, если
перечислить его части в невозрастающем лексикографическом порядке.
98 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
Для генерации разбиений любого заданного мультимножества достаточно
простого алгоритма. В приведенной далее процедуре мы представляем разбиения в
стеке, который содержит тройки элементов (с, и, v), где с обозначает номер компонента,
и > 0 — пока не разбитый остаток в компоненте с, a v ^ и — с-й компонент
текущей части. Тройки для удобства в действительности располагаются в трех массивах
(со, ci,...), (uo, wi,...) и (vo,vi,..а кроме того, поддерживается массив "кадров
стека" (/о, /ь ...), так что (/ + 1)-й вектор разбиения состоит из элементов от // до
/j+i — 1 в массивах с, и и v. Например, биразбиение 120113? представлено
следующими массивами:
3
0
1
2
3
4
5
6
7
8
9
10
11
сз
1
2
1
2
1
2
1
2
1
2
2
2
Uj
9
9
6
8
4
6
2
6
1
5
4
1
V3
3
1
2
2
2
0
1
1
1
1
3
1
0
II
см
II
II
СО
II
00
II
о
гЧ
II
т—1
II
<
Аогоритм М (Мультиразбиения в убывающем лексикографическом
порядке). Для данного мультимножества {п\ • 1,..., пш • га} этот алгоритм посещает
все его разбиения с использованием массивов /о/i... /п, coci... cmn, щщ ... wmn
и t>o^i... fmn, описанных выше, где n = п\ + • • • 4- пт. Мы полагаем, что га > О
и пь ... ,nm > 0.
Ml. [Инициализация.] Установить Cj <— j + 1 и ^ <— г/j <— nj+i для 0 < j < га;
установить также /о <— а <— / <— 0 и /1 «— Ь <— ш. (В последующих шагах
текущий кадр стека пробегает от а до Ь — 1 включительно.)
М2. [Вычесть v из гх.] (Здесь мы хотим найти все разбиения вектора и в текущем
кадре на части, лексикографически не превосходящие v. Сначала мы
используем само v.) Установить j <— а и к «— Ь. Затем, пока,? < 6, выполнять следующее:
установить Uk <— Uj—Vj, и если Wfc ^ Vj, установить Ск *— Cj,Vk <— Vj, fc «— fc +1,
j <— j +1. Но если ttfc меньше i>j после того, как оно было уменьшено, действия
изменяются: сначала установить Ск <— Cj,Vk <— ик и к <— к+1, если Ufc не равно
нулю; затем установить j <— j + 1. Пока j < 6, устанавливать <— Uj — vj5
с/с *— Cj, v]k *— Uk и к <— к + 1, если г/j 7^ Vj\ затем снова установить j <— j + 1
и повторять эти действия до тех пор, пока не будет выполнено условие j = b.
МЗ. [Внесение в стек, если не ноль.] Если к > 6, установить а <— 6, Ь <— fc, / <— Z + 1,
/j+i <— 6 и вернуться к шагу М2.
М4. [Посещение разбиения.] Посетить разбиение, представленное I + 1 векторами,
находящимися в стеке. (Для 0 ^ к ^ I вектор имеет Vj в качестве компонента
Cj для fk^j< /fc+l.)
М5. [Уменьшение v.] Установить j 6 - 1 и, если ^ = 0, установить j +— j — 1
и повторять это действие до тех пор, пока не будет выполнено условие Vj > 0.
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ
99
Таблица 1. Поразрядная сортировка и мультиразбиения
Шаг (0): исходное разбиение
655432100
321045642
663115207
4 2 1 3 3 1 1 2 5
®®®®©@®®®
Шаг (1): сортировка строки 4
064350521
230424156
761160352
5Л4 3 Зл2 2Л1 1 1
®®®©@®®@®
Шаг (2): сортировка строки 3
065251430
232516044
7 6 6 5Л3 2Л1 1 0
5 4 2 1 1 1 3 3 2
®®@©®®®©®
а4 = (9л1 4 5Л2 8Л3 6 7 ) а3 = ( 1 2 5 8Л7 9Л3 4 6 )
Шаг (3): сортировка строки 2
123060554
6Л5 4 4Л3Л2 2 1 0
251067631
113245213
@®©®®®@®@
Шаг (4): сортировка строки 1
6 5 5 4Л3Л2Л1 0 0
321045642
6 6 3 1 1 5 2 0 7
421331125
®@®®©®®®®
а2 = (6А4 8 9Л2Л1 357) Qi = (5 7 8 9Л3Л2Л1 4 6)
Затем, если j = а и Vj; = 1, перейти к шагу Мб. В противном случае установить
Vj <— v3— 1 и Vk Uk для j < к < b. Вернуться к шагу М2.
Мб. [Возврат.] Завершить работу алгоритма, если i = 0. В противном случае
установить i <r- i — 1, 6 <— а, а <— fi и вернуться к шагу М5. I
Ключевым в этом алгоритме является шаг М2, который уменьшает текущий
остаточный вектор и на наибольшую разрешенную часть v; этот шаг также при
необходимости уменьшает v до лексикографически наибольшего вектора, не
превосходящего v, который меньше или равен новому остаточному значению в каждом
компоненте. (См. упражнение 68.)
Завершим этот раздел рассмотрением интересной связи между мультиразбие-
ниями и процедурой сортировки по младшим цифрам из алгоритма поразрядной
сортировки 5.2.5R. Легче всего понять идею путем рассмотрения конкретного
примера. Взгляните на табл. 1, где шаг (0) представляет собой четырехкомпонентные
векторы-столбцы, упорядоченные лексикографически. В строке ниже приведены
использующиеся для идентификации векторов их порядковые номера (l}-®- На
шаге (1) выполняется устойчивая сортировка векторов с расположением четвертого
(младшего) компонента в порядке уменьшения; аналогично, шаги (2), (3) и (4)
выполняют устойчивую сортировку третьей, второй и первой строк. Теория
поразрядной сортировки гласит, что таким образом восстанавливается исходный
лексикографический порядок.
Предположим, что последовательности порядковых номеров после этих операций
устойчивой сортировки есть соответственно с*4, 0:30:4, а2а^а^ и а\а2а^а^, где все а
являются перестановками. В табл. 1 значения 0:4, аз, 0:2 и ai приведены в скобках.
А теперь перейдем к главному: где бы перестановка aj не имела спуск, числа в
строке j после сортировки также должны иметь спуск, поскольку сортировка устойчива
(эти спуски в таблице указаны символами "Л"). Например, там, где в аз за 8 идет 7,
мы имеем 3, следующее за 5 в строке 3. Следовательно, элементы а\... ад в строке
3 после шага (2) не являются произвольным разбиением их суммы; они должны
100 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
удовлетворять условиям
«1 ^ 0,2 ^ аз ^ «4 > &ь ^ «б > «7 ^ ^ ад. (58)
Однако числа (ai — 2, a2 — 2, аз — 2,04 — 2, as — 1, ав — 1,07, as, ад) образуют, по
сути, произвольное разбиение исходной суммы минус (4 + 6). Величина уменьшения
4 + 6 представляет собой сумму индексов, где наблюдается спуск; это число является
тем, что в разделе 5.1.1 мы называли "индексом" аз и обозначали как indc^.
Итак, мы видим, что любое разбиение т-компонентного числа не более чем на
г частей (с дополнительными нулями, добавленными для того, чтобы количество
столбцов было равно г), можно закодировать как последовательность перестановок
ai,..., аш множества {1,..., г}, такую, что произведение а\... am представляет
собой тождественную перестановку, вместе с последовательностью обычных
одномерных разбиений чисел (п\ — indai,..., пш — ind am) не более чем на г частей.
Например, вектор в табл. 1 представляет разбиение (26,27,31,22) на 9 частей;
перестановки ai,..., а?4 приведены в таблице, и мы имеем (indai,..., inda^) = (15,10,10,11);
соответственно разбиения представляют собой
26 - 15 = (322111100), 27 - 10 = (332222210),
31 - 10 = (544321110), 22 - 11 = (221111111).
И обратно: любые такие перестановки и разбиения дают мультиразбиения
(ni,..., пш). Если гига малы, при перечислении или доказательствах свойств муль-
тиразбиений может оказаться полезным рассмотрение r!m_1 последовательностей
одномерных разбиений, особенно в случае биразбиений. [См. Basil Gordon, J.
London Math. Soc, 38 (1963), 459-464.]
Неплохой обзор ранних работ, посвященных изучению разбиений на различные
части и/или на строго положительные части, можно найти в статье M.S. Cheema
and T.S. Motzkin, Proc. Symp. Pure Math., 19 (Amer. Math. Soc, 1971), 39-70.
Упражнения
1. [20] (Д. Хатчинсон (G. Hutchinson).) Покажите, что простое изменение
алгоритма Н приводит к генерации всех разбиений {1,..., п} не более чем на г блоков для
заданных п и г.
► 2. [22] При использовании разбиений множества на практике нам часто требуется
связать вместе элементы каждого блока. Соответственно удобно иметь массив
связей 1\.. .1п и массив заголовков hi.. .ht, так что элементами j-ro блока ^-блочного
разбиения являются i\ > • • • > г&, где
i1 = hj, i2 = lix, ik = hk-n и /^=0.
Например, представление 137|25|489|6 должно иметь t = 4, li...l9 = 001020348,
a hi... h4 = 7596.
Разработайте вариант алгоритма Н, который генерирует разбиения с
использованием этого представления.
3. [М##] Каково миллионное разбиение множества {1,..., 12}, сгенерированное
алгоритмом Н?
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ
101
► 4. [21] Обозначим через р (х\... хп) для произвольной строки х\... хп ограниченно
растушую строку, которая соответствует отношению эквивалентности j = к Xj =
= Xk. Классифицируем каждое пятибуквенное английское слово из Stanford Graph-
Base путем применения функции р\ например р (tooth) = 01102. Сколько из 52
разбиений пятиэлементного множества представлено таким способом английскими
словами? Каковы наиболее распространенные слова каждого типа?
5. [22] Угадайте очередные элементы двух последовательностей:
a) 0, 1, 1, 1, 12, 12, 12, 12, 12, 12, 100, 121, 122, 123, 123, ...
b) 0, 1, 12, 100, 112, 121, 122, 123, ...
► 6. [25] Предложите алгоритм для генерации всех разбиений множества {1,..., п},
в которых имеется ровно с\ блоков размером 1, с2 блоков размером 2 и т.д.
7. [М£0] Сколько перестановок а\... ап множества {1,..., п) обладают тем
свойством, что из dk-i > аь > aj вытекает j > к?
8. [20] Предложите способ генерации всех перестановок множества {1,... ,п},
которые имеют ровно га минимумов при проходе слева направо.
9. [М£0] Сколько ограниченно растущих строк а\...ап содержат ровно kj
вхождений j для заданных целых значений fco, ..., fcn_i?
10. [25] Полупомеченным (semilabeled) деревом называется ориентированное
дерево, листья которого помечены целыми числами {1,..., к}, но прочие узлы остаются
не помеченными. Так, имеется 15 полупомеченных деревьев с 5 вершинами:
Найдите взаимнооднозначное соответствие между разбиениями множества {1,..., п)
и полу помеченными деревьями с п + 1 вершинами.
► 11. [28] В разделе 7.2.1.2 мы узнали, что знаменитая головоломка Дьюдени (Du-
deney) semd -f more = money имеет единственное решение. Эта головоломка
соответствует разбиению множества в 13 позициях цифр, для которого соответствующая
ограниченно растущая строка р (sendmoremoney) равна 0123456145217. Можно
заинтересоваться вопросом — насколько везучим надо быть, чтобы встретиться с такой
конструкцией? Сколько ограниченно растущих строк длиной 13 определяют
головоломку вида а\а2а^а^ + a^a^ajag = адаюа\ 1^12^13?
12. [М31] (Решетка разбиений.) Если ПиП'- разбиения одного и того же
множества, мы записываем П =<: П', если х = у (modulo П) всегда, когда х = у (modulo П').
Другими словами, П ^ П' означает, что П' представляет собой "утончение" П,
получаемое путем разбиения нескольких (возможно, ни одного) блоков последнего; П,
в свою очередь, представляет собой "огрубление", или коалесценцию (coalescence) П',
получаемую путем объединения вместе нескольких (возможно, ни одного) блоков.
Это частичное упорядочение, как легко видеть, представляет собой решетку, причем
102 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
П V П' является наибольшим общим утончением ПиП', аПлП'-их наименьшую
общую коалесценцию. Например, если представить разбиения ограниченно
растущими строками 01(22^3^4, то соответствующая решетка для разбиений множества
{1,2,3,4} имеет вид
Пути, ведущие на приведенной диаграмме вверх, ведут от разбиения к его
утончению. Разбиения на t блоков находятся на уровне t снизу, а их потомки образуют
решетку разбиений множества {1,..., t}.
a) Объясните, как для заданных а\... ап и а[ ... а'п вычислить П V П'.
b) Объясните, как для заданных а\.. .ап и а[ .. .a'n вычислить П Л П'.
c) Когда в этой решетке П' покрывает П? (См. упражнение 7.2.1.4-55.)
d) Если П имеет t блоков с размерами si,..., s*, то сколько разбиений оно покры-
e) Если П имеет t блоков с размерами s\,..., St, то сколькими разбиениями оно
покрывается?
f) Истинно или ложно утверждение: если П V П' покрывает П, то П' покрывает
g) Истинно или ложно утверждение: если П' покрывает П Л П', то П V П' покры-
13. [М28] (Стефен К. Милн (Stephen С. Milne), 1977.) Если А — множество
разбиений {1,...,п}, его тенью дА является множество всех разбиений П', такое,
что П покрывает П' для некоторого П Е А (подобная концепция рассматривалась
в 7.2.1.3-(54).)
Пусть Пх,П2,... — разбиения множества {1, ...,гг} на t блоков в
лексикографическом порядке их ограниченно растущих строк. Пусть также П'1? ... — (t — 1)-
блочные разбиения, также находящиеся в лексикографическом порядке. Докажите,
что имеется функция fnt (iV), такая, что
вает?
ПЛП;.
вает П.
h) Пусть b (П) обозначает количество блоков П. Докажите, что
b (П) + b (П') ^ b (П V П') + Ь (П Л Пг).
7.2.1 ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 103
Указание: диаграмма из упражнения 12 демонстрирует, что (/43 (0),..., /43 (6)) =
14. [23] Разработайте алгоритм для генерации разбиений множества в порядке
кода Грея наподобие (7).
15. [М21] Каково последнее разбиение, сгенерированное алгоритмом из
упражнения 14?
16. [16] Список (11) представляет собой последовательность Раски Л35. Какой вид
имеет А'35?
17. [26] Реализуйте код Грея для m-блочных разбиений множества {1,..., п},
определяемый рекурсивными соотношениями Раски (8).
18. [М^#] Для каких п можно сгенерировать все ограниченно растущие строки
а\... ап так, чтобы на каждом шаге некоторое aj изменялось на ±1?
19. [28] Докажите существование кода Грея для ограниченно растущих строк, в
котором на каждом шаге значение некоторого aj изменяется либо на ±1, либо на ±2,
когда мы хотим сгенерировать
a) все тип строк а\... ап;
b) только { ^ } случаев, удовлетворяющих условию max (ai,..., ап) = т — 1.
20. [17] Если П — разбиение множества {1,..., п}, сопряженное к нему разбиение
Птопределяется правилом
Предположим, П содержит ограниченно растущую строку 001010202013; какова
соответствующая ограниченно растущая строка Пт?
21. [М27] Сколько разбиений множества {1,..., п) являются самосопряженными?
22. [М23] Если X — случайная переменная с заданным распределением, то
математическое ожидание Xй называется п-м моментом этого распределения. Чему
равен п-й момент, если X представляет собой
a) распределение Пуассона со средним значением 1 (формула 3.4.1-(40))?
b) количество фиксированных элементов в случайной перестановке множества
{1,..., т}, где га ^ п (формула 1.3.3-(27))?
23. [НМЗО] Пусть f (х) = ^2akXk и пусть /(w) обозначает Yjak^k-
a) Докажите символьную формулу / (w + 1) = zuf (w). (Например, если / (х) —
полином х2, эта формула гласит, что w2 + 2tui -f vjq = W3.)
b) Аналогично, докажите, что / (w + k) — w-f (w) для всех положительных це-
= (0,3,5,7,7,7,
7).
j = k (modulo Пт
)^n+l-j = n+ l- k (modulo П).
лых k.
104 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
c) Докажите, что если р — простое число, то шп+р = zun + wn+i (modulo р).
Указание: сначала покажите, что х9- — хр — х.
d) Следовательно, если N = рР~1 + рР~2 Н Ь р + 1, то wu+n = (modulo р).
24. [НМ35] Продолжая предыдущее упражнение, докажите, что числа Белла
удовлетворяют периодическому закону: ^п+ре-1^ = (modulo р), если р — нечетное
простое число. Указание: покажите, что
я— = 9е (х) + 1 (moduloре,ре~1дг (х),..., и p#e_i (х)), где ^ (х) = (хр - х - 1)р3 .
25. [М27] Докажите, что wn/wn-i < zcrn+i/wn ^ wn/wn-i + 1.
26. [М#5] В соответствии с рекуррентными уравнениями (13) числа zunk в
треугольнике Пирса подсчитывают пути от (пк) до (и) в бесконечном ориентированном
графе
Поясните, почему каждый путь от (nl) до (И) соответствует разбиению множества
{1,...,п}.
► 27. [М#5] "Циклом колеблющейся диаграммы" (vacillating tableau loop) порядка п
является последовательность разбиений целых чисел хк = ак\ак2а>кз • • •? У которых
a<ki > o,k2 ^ а>кз ^ • • • для 0 < /с ^ 2п, такая, что Л0 = Л2п = е0, и = хк-i +
+ (—l)fc etk для 1 ^ к ^ 2п и некоторых 0 ^ tk ^ щ et здесь обозначает единичный
вектор 0<-110n-t с 0 < t ^ п, а ео состоит из нулей.
a) Перечислите все такие циклы порядка 4. [Указание: их всего 15.]
b) Докажите, что ^2fc-i = 0 ровно у wnk циклов порядка п.
28. [М£5] {Обобщенные ладейные полиномы.) Рассмотрим расстановку а\-\ \-ат
квадратных ячеек по строкам и столбцам, когда строка к содержит ячейки в
столбцах 1,...,а&. Поместим ноль или большее количество ладей в ячейки так, чтобы
в каждой строке и в каждом столбце было не более одной ладьи. Пустую ячейку
назовем "свободной", если ни справа, ни снизу от нее нет ладьи. Например, на рис. 35
показаны два таких размещения. Одно — с четырьмя ладьями и строками длиной
(3,1,4,1,5,9,2,6,5); второе — с девятью ладьями на квадратной доске размером
9x9. Ладьи на рисунке показаны черными кружками; белые кружки размещаются
слева и над ладьями, так что свободные ячейки не содержат никаких кружков.
Пусть R{a\,... ,аш) — полином от х и у, полученный суммированием xryf по
всем корректным расстановкам ладей, причем г — количество ладей, а / —
количество свободных ячеек; например, левое размещение на рис. 35 добавляет х4у17
в полином R (3,1,4,1,5,9,2,6,5).
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 105
Рис. 36. Размещение ладей и свободные ячейки
a) Докажите, что R (аь ..., ат) = R(аь ..., а^_1, aJ+i, aJ? а^+2, • • •, «m); другими
словами, порядок длин строк значения не имеет, и можно считать, что а\ ^
• • • ^ am, как и в диаграмме Феррерса наподобие 7.2.1.4-(13).
b) Докажите, что если а\ > • • • ^ am, и &i... Ьп = (а\... аш)Т — сопряженное
разбиение, то R (ai,..., am) = R (6i,..., Ьп).
c) Найдите рекуррентное соотношение для вычисления R (ai,..., am), и
воспользуйтесь им для вычисления R (3,2,1).
d) Обобщите треугольник Пирса (12) путем замены правила сложения (13) на
Таким образом, w2i (х, у) = х + у, ти32 (ж, у) = х + ху + у2, wsi (х, у) = х2 +
+ 2хг/ + ху2 + у3 и т.д. Докажите, что получающееся таким образом значение
Ъ3пк{х>>у) представляет собой "ладейный" полином R (ai,..., an-i), где aj =
= и ~ 3 ~ [J < к\-
е) Полином wni (х, у) из пункта (d) можно рассматривать как обобщенное число
Белла zun (х, у), представляющее пути от (пГ) до цТ) в ориентированном графе
из упражнения 26, которые имеют данное количество "шагов х" на северо-
восток и "шагов у" на восток. Докажите, что
где сумма берется по всем ограниченно растущим строкам а\... ап длины п.
29. [М#£] Продолжая предыдущее упражнение, обозначим через Rr (ai,..., am) =
= [xr] R (ai,..., am) полином от у, который перечисляет все свободные ячейки при
расстановке г ладей.
а) Покажите, что количество способов расставить п ладей на доске размером
п х п, оставив при этом свободными / ячеек, представляет количество
перестановок {1,..., п}, в которых имеется / инверсий. Таким образом, в соответствии
с формулой 5.1.1—(8) и упражнением 5.1.2-16 мы имеем
™пк (Ж, у) = XW(n_1)k (X, у) + 2/G7n(fc+i) (х, у), 1 < к < п.
(x,t/)=
X
.n-l-max(ai,...,an)7/aiH han
#n n,..., n
= п\у = Ц(1+у + --- + ук-1).
n
106 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
тп
/ А ч
b) Что собой представляет rr (п,..., п) — производящая функция для г ладей на
доске размером т х п?
c) Докажите обобщенную формулу
П i-y = Е (ГЖ^(аь' * •'м'
где ai ^ ••• ^ ат, a t - неотрицательное целое число.
[Примечание: величина t\y/(t — к)\у = y\^Zl {(l — уг~^)/{I — у)) равна нулю
при к > t ^ 0. Таким образом, например, при t = 0 правая часть сводится
к rm (ai,..., am). Можно вычислить Дт, Дт-ь..., rq, последовательно
устанавливая t = 0,1,..., га.]
d) Покажите, что если а\ ^ a2 ^ • • • ^ am ^ 0 и ^ ^ • • • ^ а'т ^ 0, то
Д (ai, 02,..., аш) = Д «25 •, ^т) тогда и только тогда, когда
соответствующие мультимножества {ai + га, а^ + га — 1,..., ат + 1} и {a^ + m, + т ~~ 1?
..., + 1} одинаковы.
30. [#М#0] Обобщенное число Стирлинга {m}q определяется рекуррентным
соотношением
{■:•}.-(—{:}-■
Таким образом, { ^ }q представляет собой полином от a, а { ^ }г является обычным
числом Стирлинга { ^ }, поскольку оно удовлетворяет рекуррентному соотношению
1.2.6-(46).
a) Докажите, что обобщенное число Белла тп (х, у) = r (п — 1,..., 1) из
упражнения 28 (е) имеет явный вид
m=0 I ) у
b) Покажите, что обобщенные числа Стирлинга подчиняются рекуррентному
соотношению
c) Найдите производящую функцию для { ^ } , обобщающую формулы 1.2.9-(23)
и 1.2.9-(28).
31. [НМ23] Обобщая (15), покажите, что элементы треугольника Пирса имеют
простую производящую функцию, если вычислить сумму
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ
107
32. [М22] Пусть дп равно количеству ограниченно растущих строк а\... ап, у
которых сумма а\ Н \-ап четна, минус количество строк, у которых эта сумма нечетна.
Докажите, что
Sn = (1,0,-1,-1,0,1) при п mod 6= (1,2,3,4,5,0).
Указание: см. упражнение 28 (е).
33. [M#i] Сколько имеется разбиений множества {1,2,..., п}, у которых 1 ^=2, 2^3,
...,k-l£k?
34. [Ц] Поэтические произведения характеризуются схемами рифм (rhyme
schemes), которые представляют собой разбиения строк строфы, обладающие теми
свойствами, что j = к тогда и только тогда, когда строка j рифмуется со строкой к.
Например, лимерик обычно представляет собой 5-строчное стихотворение с
определенными ритмическими ограничениями и со схемой рифм, описываемой ограниченно
растущей строкой 00110.
Какие схемы рифм используются в классических сонетах (а) Джиттоне д'Ареццо
(около 1270); (Ь) Петрарки (около 1350); (с) Спенсера (1595); (d) Шекспира (1609);
(е) Элизабет Браунинг (1850)?
35. [М21] Пусть vo'n — количество схем n-строчных стихотворений, которые
являются "полностью рифмованными", в том смысле, что каждая строка
рифмуется, как минимум, еще с одной. Таким образом, мы имеем (^о,^,^,...) =
= (1,0,1,1,4,11,41,...). Дайте комбинаторное доказательство того, что t^n+^n+i =
36. [М##] Продолжая предыдущее упражнение, что собой представляет
производящая фуНКЦИЯ j2nwnztl/n-
37. [М18] А.С. Пушкин в своем романе в стихах "Евгений Онегин" (1833)
использовал тщательно разработанную структуру клаузул (т.е. стиховых окончаний,
состоящих из последнего ударного слога и следующих за ним безударных), основанную не
только на "мужских" окончаниях, состоящих из одного ударного слога (стрбй-водбй,
старожйл-давйл), но и на "женских" окончаниях, состоящих из ударного и
следующего за ним безударного слога (правил-заставил, расхбда-гбда).
он в том покое поселился, / где деревенский старожил
лет сорок с ключницей бранился, / в окно смотрел и мух давил.
все было просто: пол дубовый, / два шкафа, стол, диван пуховый,
нигде ни пятнышка чернил. / онегин шкафы отворил:
в одном нашел тетрадь расхода, / в другом наливок целый строй,
кувшины с яблочной водой, / и календарь осьмого года;
старик, имея много дел, / в иные книги не глядел.
а. с. пушкин.
евгений онегин
Каждая так называемая онегинская строфа состоит из 14 строк со строгой
схемой 01012233455477, причем рифмы являются женскими или мужскими в
соответствии с тем, четна ли соответствующая цифра или нечетна. Несколько современных
108 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
переводчиков Пушкина сумели выдержать эти правила при переводе на английский
и немецкий языки.
how do i justify this stanza? / these feminine rhymes? my wrinkled muse?
this whole passe extravaganza? / how can i (careless of time) use
the dusty bread molds of onegin / in the brave bakery of reagan?
the loaves will surely fail to rise / or else go stale before my eyes.
the truth is, i can г justify it. / but as no shroud of critical terms
can save my corpse from boring worms, / i may as well have fun and try it.
if it works, good; and if not, well, / a theory won't postpone its knell.
— викрам сет (vikram seth),
золотые ворота (the golden gate) (1986)
14-строчный стих согласно упражнению 35 может иметь любую из -ш'ы =
= 24011 157 полных схем рифм. Но сколько имеется схем, если мы получим
возможность наложить на каждый блок условие использования женской или мужской
рифм?
► 38. [М#0] Пусть а*; — циклическая перестановка (1,2,..., к). Темой данного
упражнения является изучение последовательностей к\к2...кп, именуемых а-циклами,
для которых а^ст^ ... сгкп представляет собой тождественную перестановку.
Например, при п = 4 имеется 15 сг-циклов, а именно
1111,1122,1212,1221,1333,2112,2121,2211,2222,2323,3133,3232,3313,3331,4444.
a) Найдите взаимно однозначное соответствие между разбиениями {1,2,...,п}
и <7-циклами длиной п.
b) Сколько сг-циклов длиной п обладают тем свойством, что 1 ^ fei,..., кп ^ га
для заданных тип?
c) Сколько а-циклов длиной п обладают тем свойством, что ki = j для заданных
г, j и п?
d) Сколько (7-циклов длиной п обладают тем свойством, что fei,..., кп ^ 2?
e) Сколько разбиений {1,...,п} обладают тем свойством, что 1^2, 2^3,
п — 1^п и п^е1?
39. [НМ16] Вычислите $™ e~tV t4t, где р и q — неотрицательные целые числа.
Указание: см. упр. 1.2.5-20.
40. [НМ20] Предположим, что метод седловой точки используется для оценки
[zn_1] ecz. В тексте при выводе (21) из (19) с = 1. Как должен измениться вывод,
если с — произвольная положительная константа?
41. [НМ21] Решите предыдущее упражнение при с = — 1.
42. [НМ23] Воспользуйтесь методом седловой точки для оценки [zn-1] е*2 с
относительной ошибкой О (l/n2).
7.2.1
ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ
109
43. [НМ22] Обоснуйте замену интеграла в (23) на (25).
44. [НМ22] Поясните, как вычислить bi, Ьг,... в (26) на основании а2, аз,... из (25).
► 45. [НМ23] Покажите, что в дополнение к (26) имеется также разложение
eV27m(£ + l) V п п2 пт Vrcm+1,
где Ь[ = - (2£4 + 9£3 + Щ2 + 6£ + 2)/ (24 (£ + I)3).
46. [#М#5] Оцените значение zunk в треугольнике Пирса при п —> оо.
47. [ЛШ] Проанализируйте время работы алгоритма Н.
48. [НМ25] Если п не является целым числом, интеграл в (23) может быть взят по
контуру Ганкеля для определения обобщенного числа Белла wx для всех
действительных х. Покажите, что, как в (16),
-1V —
~ ef^ к\
wx
е.
к=0
► 49. [НМ35] Докажите, что для больших п число £, определяемое уравнением (24),
равно
Ь + к]
In п — In In n + ^2
3,к^0 L*
3 + 1
^(р а_ 1_ ^_ In Inn
А:! ' Inn' Inn
► 50. [НМ21] Если f (n) e*<n> = n и f (n) > 0, то как между собой соотносятся £ (fc -f n)
и€(п)?
51. [HM27] Воспользуйтесь методом седловой точки для оценки tn = n! [zn] ez+z2/2,
количества инволюций на п элементах (или разбиений множества {1,..., п} на
блоки, размеры которых не превышают 2).
52. [НМ22] Семиинварианты, или кумулянты (cumulants) распределения
вероятностей определяются правилом 1.2.10-(23). Чему равны семиинварианты, когда
вероятность того, что случайное целое число равно к, равна (a) el~eiwn^h/к\\
00 ЕЛ*}ее"1-1"'/*!?
► 53. [НМЗО] Пусть G(z) = Y^k=oPkZk — производящая функция для дискретного
распределения вероятностей, сходящаяся при \z\ < 1 + 5; итак, коэффициенты pk
неотрицательны, G (1) = 1, а среднее и дисперсия равны соответственно р = G' (1)
и о2 = G" (1) + G' (1) — С (I)2. Если Xi,... ,Хп — независимые случайные
переменные с указанным распределением, то вероятность того, что Х\ + • • • -I- Хп = га,
равна [zm] G (z)n и часто возникает необходимость оценить эту вероятность при га,
близком к среднему значению рп.
Будем считать, что ро ф 0 и что не существует целого d > 1, которое является
общим делителем всех индексов к, для которых pk ф 0; эти предположения означают,
110 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
что га не обязано удовлетворять никаким специальным условиям конгруэнтности по
модулю d при больших п. Докажите, что
-г2/(2а2п) ,
L J а^Шь \п
где fin + г является целым числом. Указание: проинтегрируйте G (z)n/г^п+г по
окружности \z\ = 1.
54. [НМ20] Пусть а и /3 определены формулами (40). Покажите, что их
арифметическое и геометрическое средние равны соответственно = scoths и \/о$ =
= scschs, где s = а/2.
55. [НМ20] Предложите метод вычисления числа /?, требующегося в формуле (43).
► 56. [НМ26] Пусть д (z) = a"1 In (ez - 1) - In z и а = а - /3, как в (37).
a) Докажите, что (-<r)n+1 £(n+1) (а) = n! - £Lo (£) afc/3n"fc; числа Эйлера (J)
определены в разделе 5.1.3.
b) Докажите, что £n! < 5Z/c=o (fc) akPn~k < п' Для всех 0" > 0. Указание: см.
упражнение 5.1.3-25.
c) Проверьте неравенство (42).
57. [НМ22] С использованием обозначений из (43) докажите, что (а) n+1—m < 27V;
(b) JV<2(n + l-ra).
58. Завершите доказательство (43) следующим образом:
a) покажите, что для всех а > 0 существует число г ^ 2сг, такое, что г кратно 27г
и |еа_и* — l|/|cr + it\ монотонно убывает при 0 < t ^ г;
b) докажите, что $Т_г ехр ((п + 1) д (а + г£)) приводит к (43);
c) покажите, что соответствующими интегралами по прямолинейным путям z =
= t±ir, где —п < t ^ сг, и z = —п±it, где —т ^ £ ^ т, можно пренебречь.
► 59. [НМ23] Какое предсказание дает (43) для приближенного значения
60. [НМ25]
a) Покажите, что частичные суммы в тождестве
Ы ^ т" (т-1)" (т-2)" 0"
|mj т! 1! (т-1)! 2! (т-2)! " 1 ; т!0!
поочередно приближаются к конечному значению сверху и снизу.
b) Сделайте вывод о том, что
fcl-sm («-*)) ■*■•"<"-*■
c) Выведите аналогичный результат из (43).
при п —> оо,
7.2.1 ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 111
61. [нм26] Докажите, что, если т = п — г, где г < п£ и е ^ п1/2, формула (43)
дает
62. [нм40] Докажите строго, что если = п, то максимум { ^ } достигается либо
► 63. [м35] (Д. Питман (J. Pitman).) Докажите, что имеется следующий
элементарный способ определить максимум чисел Стирлинга, как и многих других величин:
предположим, что 0 < pj ^ 1.
a) Пусть / (z) = (1 + pi (z - 1))... (1 + Рп (z - 1)) как = [zk] f (z); таким образом,
dk представляет собой вероятность получить к "орлов" при п независимых
подбрасываниях монет с вероятностями выпадения орла р\,..., рп соответственно.
Докажите, что dk-i < dk при к < р = р\ Н + рп и dk ф 0.
b) Аналогично докажите, что a^+i < dk при к ^ р и dk ф 0.
c) Если / (х) = do -f- d\x + • • • + dnxn — некоторый ненулевой полином с
неотрицательными коэффициентами и п действительными корнями, докажите, что
dk-i < dk при к ^ р и afc+i < a& при к ^ /л, где р = f (1)// (1).
Следовательно, если am = max (ао,..., ап), то либо т = |_^J, либо m = |~//|.
d) Используя гипотезу (с) и полагая dj = 0 при j < 0 или j > п, покажите, что
существуют индексы s ^ t, такие, что а^+i — dk < dk — dk-i тогда и только
тогда, когда s ^ к ^ t (т.е. гистограмма последовательности (ао, аь..., ап)
всегда имеет колоколообразный вид).
e) Что говорят полученные результаты о числах Стирлинга?
64. [нм21] Докажите приближенное отношение (50) с использованием (30) и
упражнения 50.
► 65. [нм22] Чему равна дисперсия количества блоков размером к в случайном
разбиении множества {1,..., п}?
66. [м46] Какое разбиение числа п дает больше всего разбиений множества
67. [нм20] Чему равно среднее и дисперсия м в методе Стама (53)?
68. [20] До каких значений могут вырасти переменные / и ь в алгоритме М при
генерации всех р (щ,..., пт) разбиений мультимножества {п\ • 1,..., пт • т}?
► 69. [21] Модифицируйте алгоритм М таким образом, чтобы он выдавал только
разбиения не более чем на г частей.
► 70. [м22] Проанализируйте количество возможных r-блочных разбиений в п-эле-
ментных мультимножествах (а) {0,..., 0,1}; (b) {1,2,..., п — 1, п — 1}. Чему равно
общее количество разбиений, просуммированное по всем г?
при т
= [е^ — lj, либо при т
{1,...,п}?
112 КОМБИНАТОРНЫЙ ПОИСК
7.2.1
71. [М#0] Сколько разбиений мультимножества {п\ • 1,... , nm • га} состоит ровно
из двух частей?
72. [М26] Можно ли вычислить р(п, п) за полиномиальное время?
► 73. [М##] Можно ли вычислить за полиномиальное время р (2,..., 2) (всего п
двоек)?
74. Можно ли вычислить за полиномиальное время р (п,..., п) (всего п
значений п)?
75. [нм41] Найдите асимптотическое значение р(п, п).
76. [НМ36] Найдите асимптотическое значение р(2,..., 2) (всего в скобках п
двоек).
77. [НМ46] Найдите асимптотическое значение р (п,..., п) (всего в скобках п
значений п).
78. [20] Какие разбиения (15,10,10,11) приводят к перестановкам #1,0:2,0:3 и 0:4,
показанным в табл. 1?
79. [22] Последовательность ui,U2,u$,... называется универсальной для
разбиений множества {1,..., п}, если ее подпоследовательности (rxm+i, г^ш+2, • • •>^m+n)
при 0 ^ га < wn представляют все возможные разбиения множества с
выполнением соглашения "j = к тогда и только тогда, когда um+j = wm+fc". Например,
(0,0,0,1,0,2,2) — универсальная последовательность для разбиений множества
{1,2,3}.
Напишите программу для поиска всех универсальных последовательностей
разбиений множества {1,2,3,4} с такими свойствами:
i) и\ = U2 = U3 = U4 = 0;
ii) последовательность обладает свойством ограниченного роста;
in) 0 ^ Uj ^ 3; и
iv) u\q = U17 = u\s = 0 (т.е. последовательность, по существу, циклична).
80. [М##] Докажите, что универсальные циклы для разбиений {1,2,... , п}
существуют в смысле предыдущего упражнения при п ^ 4.
81. [29] Найдите способ так сложить обычную колоду из 52 карт, чтобы был
возможен следующий фокус Пять игроков по очереди снимают колоду (выполняя
циклическую перестановку) столько раз, сколько хотят. Затем каждый игрок берет по
одной карте с вершины колоды. Фокусник говорит им, чтобы они взглянули на свои
карты и образовали аффинную группу, объединив карты с другими обладателями
той же масти (валет пик, однако, рассматривается как "джокер" — его владелец
остается в одиночестве).
Увидев аффинные группы, но ничего не зная об их масти, фокусник, тем не
менее, может назвать все пять карт (если изначально они были сложены в колоду
соответствующим образом).
7.2.1 ГЕНЕРАЦИЯ ОСНОВНЫХ КОМБИНАТОРНЫХ ОБЪЕКТОВ 113
82. [22] Сколькими способами можно разделить следующие 15 костей домино
(возможно, перевернув часть из них) на три части по пять костей в каждой, чтобы
суммы частей (рассматривая кости как дроби) были одинаковы?
1 В I 1 I В 1 II I 1 й 11 I
114 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
Ответы к упражнениям
Раздел 7.2.1.3
1. Для данного мультисочетания сформируем последовательность ... егех путем
перечисления справа налево сначала несовпадающих элементов, затем элементов,
встречающихся дважды, потом трижды и т.д. Установим e_j «— s—j для 0 ^ j < s —
= n — t так, что каждый элемент для 1 ^ j ^t равен некоторому элементу справа
от него в последовательности et... е\ео ... e_s. Если первый такой элемент равен
eCj-s, мы получаем решение (3). И наоборот: каждое решение (3) дает единственное
мультисочетание {ei,...,е*}, потому что сj < s + j для 1 ^ j ^ t.
[Подобное соответствие было предложено Э. Каталаном (Е. Catalan): если 0 ^
е\ ^ • • • ^ et ^ s, то примем
{сь... ,ct} = {ei,.. .,et} U {s + j\l ^ j <t и ej = e^+i}.
Cm. Memoires de la Soc. roy. des Sciences de Liege (2), 12 (1885), Melanges Math., 3.]
2. Начнем с нижнего левого угла; затем будем идти вверх при каждом 0 и вправо —
при каждой 1. В результате получим путь
3. В этом алгоритме переменная г представляет собой наименьший положительный
индекс, такой, что qr > 0.
F1. [Инициализация.] Установить qj <— 0 для 1 ^ j^ t, и qo <— s (считаем, что
st > 0).
F2. [Посещение.] Посетить разложение qt...qo- Перейти к шагу F4, если qo = 0.
F3. [Простой случай.] Установить qo <— qo — 1, г <— 1 и перейти к шагу F5.
F4. [Сложный случай.] Завершить работу алгоритма при г = t. В противном случае
установить qo <— qr — 1, qr <— 0, г <— г + 1.
F5. [Увеличение qr.\ Установить qr <— qr -f 1 и вернуться к F2. I
[См. САСМ, 11 (1968), 430; 12 (1969), 187. Задача генерации таких разложений
в уменьшающемся лексикографическом порядке существенно сложнее.]
4. Можно обратить роль 0 и 1 в (14) так, что ОМО9'-11... ЮМО90 = Г-ОГ-^О...
01Г101Г°. Это дает нам
0110010210210410010010010010010110°101100 =
= 1°01201001101001101001001°016012011.
Лексикографический порядок ап-\.. .а\ао соответствует лексикографическому
порядку re...rir0.
Кстати, имеется также связь мультисочетаний: {dt,... ,d\} — {rs • s,...,r*o • 0}.
Например, {10,10,8,6,2,2,2,2,2,2,1,1,0} = {0 • 11,2 • 10,0 • 9,1 • 8,0 • 7,1 • 6,0 • 5,0 •
• 4,0-3,6-2,2. 1,1-0}.
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 115
5. (а) Установить Xj = Cj — [(j — 1)/2J в каждом ^-сочетании из n+ [t/2\. (b)
Установить Xj = Cj + j + 1 в каждом ^-сочетании из п — t — 2.
(Аналогичный подход находит все решения (х*,..., х\) неравенств Xj+\ ^ Xj + <^
для 0 ^ j < £ для заданных значений x*+i, (£*, • • •, So) и хо.)
6. Положим t > 0. Мы добираемся до шага ТЗ, когда с\ > 0, до Т5 — когда сч —
- с\ + 1 > 1, и до Т4 — для тех 2 < j < £ + 1, для которых Cj; = с\ + j - 1 ^ j. Таким
образом, соответствующие величины равны:
Tl: 1
- С")
- (-)
7. Процедура немного проще, чем требуется для алгоритма Т. Примем, что s <t.
51. [Инициализация.] Установить bj <— j + п — s — 1 для 1 < j < 5; затем установить
52. [Посещение.] Посетить сочетание 6S ... 62^1 • Завершить работу алгоритма, если
j > s.
53. [Уменьшение bj.] Установить bj <— bj — 1. Если bj < j, установить j <— j + 1
и вернуться к S2.
54. [Сброс bj-i... 61.] Пока j > 1, установить fcj_i <— 6j; — 1, j <— j — 1 и повторять
эти действия до тех пор, пока j не станет равным 1. Перейти к S2. I
(См. С. Дворжак (S. Dvorak), Сотр. J., 33 (1990), 188. Заметим, что если Хк =
= п — Ьк при 1 ^ к ^ 5, то этот алгоритм проходит по всем сочетаниям х8... х2х\
из {1,2,..., п} с 1 ^ х3 < • • • < Х2 < х\ ^ п в возрастающем лексикографическом
порядке.)
8. А1. [Инициализация.] Установить ап.. .ао <— 0S+11*, q *— t, г <— 0 (мы считаем,
что 0 < t < п).
А2. [Посещение.] Посетить сочетание an_i... aiao. Если q = 0, перейти к шагу А4.
A3. [Замена • • • 01q на ... 1019"1.] Установить aq <— 1, ag_i <— 0, q <— g — 1. Затем,
если g = 0, установить г <— 1. Вернуться к шагу А2.
116 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
А4. [Сдвиг блока единиц.] Установить аг <— 0 и г <— г + 1. Затем, если ar = 1,
установить aq <— 1, g <— g + 1 и повторить шаг А4.
А5. [Перенос влево.] Завершить работу, если г = щ в противном случае установить
ar <— 1.
А6. [Нечетно?] Если q > 0, установить г <— 0. Вернуться к шагу А2. I
На шаге А2 q и г указывают на крайние справа 0 и 1 в ап-\... ао соответственно.
Шаги А1, ..., Аб выполняются с частотой 1, (?), (ntz{), (?) - 1, (V), (п~г) - 1.
9. (а) Первые {п~[1) строк начинаются с 0 и имеют 2A^s_i)t изменений битов; другие
(""*) строк начинаются с 1 и имеют 2As(t_!) изменений. A v (01*0S_1 0 10slt_1) =
= 2min(s,£).
(b) Решение 1 (прямое). Пусть Bst = Ast + min (s, t) + 1. Тогда
Bst = B{s-i)t + + Is = *1 ПРИ st > °5 Bst = 1 при st = 0.
Следовательно,
min(s,t)
Если s ^ £, то эта величина
£( -* M • H . )-ттг-<2( « )•
fc=0
Решение 2 (непрямое). Алгоритм в ответе к упражнению 8 выполняет 2 (х + у)
изменений битов, если шаги (A3, А4) выполняются (я, у) раз. Таким образом,
[Таким образом, комментарий в ответе 7.2.1.1-3 применим и сочетаниям.]
10. Каждый сценарий соответствует (4,4)-сочетанию 646362^1 или С4С3С2С1, в
котором А побеждает в играх{8 — 64,8 — 63,8 — 62,8 — bi}, а N побеждает в играх
{8 — С4,8 — сз, 8 — С2,8 — ci}, поскольку мы можем считать, что проигравшая
команда побеждает в оставшихся играх в серии из 8 игр. (Или, что то же самое, мы можем
сгенерировать все перестановки {A, A, A, A, iV, AT, N, N} и опустить завершающие
серии А и N.) Американская лига побеждает тогда и только тогда, когда Ь\ Ф 0, что,
в свою очередь, выполняется тогда и только тогда, когда с\ = 0. Формула
1)+(»)+(?)+СО
позволяет назначить каждому сценарию уникальный номер от 0 до 69.
Например:
ANANAA &а7...аха0 = 01010011 о 6463626i = 7532 & с^със2сх = 6410,
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 117
и этот сценарии имеет ранг
в лексикографическом порядке. (Заметим, что член (су) равен нулю тогда и только
тогда, когда он соответствует завершающему N.)
11. AAA А (9 раз), NNNN (8 раз) и ANAAA (7 раз) встречались наиболее часто.
Из 70 возможных серий 27 не встречались ни разу, включая все четыре варианта,
начинающиеся с NNNA. Сценарий NNAAANN встретился первый раз в 2001 году.
12. (а) Пусть Vj — подпространство {an_i...ao G V\dk = 0 для 0 ^ к < j}, так
что {0...0} = VnC Vn-г С ... С V0 = V. Тогда {cb...,cj = {c\Vc ф Vc+l} и ак -
единственный элемент an-i • • • из V с aCj = [j = к] для 1 ^ j ^ t.
Кстати, матрица размером txn, соответствующая каноническому базису,
называется приведенной к построчно-эшелонному виду. Ее можно получить при
помощи стандартного алгоритма "триангуляризации" (см. упражнение 4.6.1-19 и
алгоритм 4.6.2N).
(b) 2-номиальный коэффициент (™)2 = 2t(n~1)2 + (™Zi)2 из упражнения 1.2.6-
58 обладает требуемыми свойствами, поскольку 2*(п~1)2 бинарных векторных
пространств имеют cf < п - 1 и (^Гх)2 имеют с* = п — 1. [Вообще говоря, количество
канонических базисов с г звездочками равно количеству разбиений г на не более
чем t частей, причем никакая часть не превосходит п — t, и это количество равно
[zr] (™)2 согласно формуле 7.2.1.4-(51). См. D.E. Knuth, J. Combinatorial Theory, 10
(1971), 178-180.]
(c) В приведенном далее алгоритме предполагается, что п > t > 0 и что d(t+i)j =
= 0 для t ^ j < п.
VI. [Инициализация.] Установить <— [j = /с — 1] для 1 ^ к ^ t и 0 ^ j < п.
Установить также q <— t, г <— 0.
V2. [Посещение.] (В этот момент мы имеем а^-\) = 1 для 1 ^ & ^ a, а(д+1)д = 0
и air = 1.) Посетить канонический базис (ai(n_i) ... ацОю,..., at^-i) • • • atiQ>to) •
Перейти к шагу V4, если я > 0.
V3. [Поиск блока единиц.] Устанавливать q <— 1,2,..., пока не выполнится условие
a(q+i)(q+r) — 0. Завершить работу алгоритма, если q + r — п.
V4. [Добавление 1 к столбцу q + r.] Установить к <— 1. Если а^я+г) = 1, установить
ak{q+r) <— 0, /с<—/с + 1и повторять эти действия до тех пор, пока не выполнится
условие <2fc(g+r) — 0. Затем, если к ^ q, установить ацд+г) <— 1; в противном
случае установить ag(g+r) <— 1, ag(g+r_i) <— 0, g <— g — 1.
V5. [Сдвиг блока вправо.] Если q = 0, установить г <— г + 1. В противном случае,
если г > 0, установить а^(^_1) 1 и a^r+k-i) *~ 0 для 1 ^ & ^ 1, затем
установить г <— 0. Перейти к шагу V2. I
Шаг V2 находит q > 0 с вероятностью 1 - (2П_< - 1) / (2П - 1) w 1 - 2~г, так что
можно сэкономить время, рассматривая этот случай отдельно.
118 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
(d) Поскольку
миллионное посещение дает бинарные столбцы 4,16/2,5,5,8/2,0,4/2,1,2/2, т.е.
ai = 00110001 1,
а2 = 00000010 0,
а3 = 1 0 1 1 1 0 0 0 0,
а4 = 01000000 0.
[Источник: Е. Calabi and H.S. Wilf, J. Combinatorial Theory, A22 (1977), 107-109.]
13. Пусть n = s + t. Имеется
(r(r-l)/2l)(ur-l)/2j)
конфигураций, начинающихся с 0, и
([(г-l)/2j) (f(r- 1)/2"|)
конфигураций, начинающихся с 1, поскольку конфигурация Изинга, начинающаяся
с 0, соответствует разбиению s нулей на [(г + 1)/2] групп и разбиению t единиц
на |_(r + l)/2j групп. Мы можем сгенерировать все такие пары разбиений и
объединить их в конфигурации. [См. Е. Ising, Zeitschrift fur Physik, 31 (1925), 253-258;
J.M.S. Simoes Pereira, CACM, 12 (1969), 562.]
14. Начнем с / [j] <— j — 1 и r [j — 1] <— j для 1 ^ jn; Z [0] <— n, r [n] <— 0. Чтобы
получить следующее сочетание в предположении, что t > 0, установим р *— s, если
I [0] > s; в противном случае р <— г [п] — 1. Завершаем работу алгоритма, если р ^ 0;
в противном случае устанавливаем q <— г [р], I [д] <— / [р] иг[ф]] <— д. Затем, если
г [д] > s и р < 5, устанавливаем г [р] <— г [гг], I [г [п]] *— р, г [s] <— г [д], / [г [д]] <— 5,
г[гг] <— 0, /[0] <— п; в противном случае устанавливаем г [р] <— г[д], Z [г [д]] <— р.
И наконец, устанавливаем г [д] <— р и Z [р] <— д.
[См. Korsh and Lipschutz, J. Algorithms 25 (1997), 321-335, где идея
распространена на алгоритм без циклов для перестановок мультимножеств. Предупреждение: это
упражнение, как и упражнение 7.2.1.1-16, носит в большей степени академический,
чем практический характер, поскольку подпрограмма для обхода связанного списка
может потребовать использования цикла, который сведет на нет все преимущества
генерации без использования цикла.]
15. (Указанный факт верен, поскольку лексикографический порядок ct... с\
соответствует лексикографическому порядку an_i...ao, который представляет
собой обратный лексикографический порядок последовательности дополнений 1...
1 ф an_i... ao-) По теореме L сочетание ct... с\ посещается перед тем, как
посещаются ровно
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 119
других сочетаний, так что должно выполняться
Общее тождество может быть записано как
где каждое Xj может быть только 0 или 1, и Xj = 1 — Xj\ это также следует из
уравнения
-{ +\ W- "-)-( ;+\ )-( +"+ )•
\х0 Н h xnJ \Хо Н 1- xnJ \х0 Н Ь жп/ \ж0 Н Ь Xn-i)
16. Поскольку
ЛЛЛЛЛЛ /1414\ /1008\
-СГИ'ГИ1")-
- га * CD * CD * СГ)-
-га-сг)*га*га*о-
ответы к упражнению следующие:
(a) 1414 1008;
(b) 182 153 111;
(c) 71 56 36 14;
(d) 43 32 21 15 6;
(e) 1000000 999999... 2 0.
17. По теореме L nt — наибольшее целое, такое, что N ^ ("*); остальные члены
образуют представление числа N — ("*) степени t—1.
Простой последовательный метод для t > 1 начинается сх = 1,с = £и
устанавливает с <— с-Ы, ж <— же / (с — ноль или несколько раз, пока не выполнится условие
х > N. После этого первая фаза завершается установкой ж <— х(с — t)/c, с <— с — 1,
и мы получаем х = (£) ^ JV < (с^1). Установим щ с, N *— N — х. Алгоритм
завершает работу установкой п\ <— N при £ = 2; в противном случае установим х *— xt/c,
t <— t — 1, с*— с — 1. До тех пор пока ж > iV, устанавливаем ж <— ж (с — £)/с, с <— с — 1
и повторяем данное действие. Этот метод требует О (п)арифметических операций,
если N < (™), так что он вполне подходит для решения поставленной задачи, если
только t не слишком малб, а N — не слишком велико.
120 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
При t = 2 упражнение. 1.2.4-41 говорит нам, что п2 = [\/2N + 2 + |J. В общем
случае щ равно где х — наибольший корень уравнения х- = t\N. Этот корень
можно приближенно найти, обращая ряд у = (х-)1^ = х— \ (t — 1) + ^ (t2 — l) x~l 4-
4- • • •, что дает х = 2/ 4- \ (t - 1) 4- ^g(t2 - l)/y 4- О (y~3). Если в этой формуле
принять у = (tlN)1^, то получается хорошее приближение, после которого мы
можем убедиться, что (^) ^ Л/" < или выполнить необходимое уточнение.
[См. A.S. Fraenkel and М. Мог, Сотр. J., 26 (1983), 336-343.]
18. Получится полное бинарное дерево с 2П — 1 узлами, с дополнительным узлом
наверху наподобие "дерева проигравших" в сортировке выбором с замещением (рис 63
в разделе 5.4.1). Таким образом, явные связи не являются необходимыми; правый
дочерний узел узла к — это 2к 4- 1, а левый "братский" узел — 2/с, для 1 ^ к < 2п~1.
Такое представление биномиального дерева имеет любопытное свойство,
заключающееся в том, что узел к = (0Qla)2 соответствует сочетанию, бинарная строка
которого 0alaR.
19. Это бинарное представление post (1000000), где post (2k+1 — l) = 2к, a post (n) =
= 2k 4- post (n - 2k 4-1) при 2k < n < 2fc+1 - 1, где к ^ 0. Таким образом, искомый
узел — 11110100001001000100. [Кстати, представление с указателями на "левого
ребенка" и "правого брата" представляет собой перевернутую пирамиду.]
20. / (z) = (1 + zw»-*) • • • (1 + " *), 9 (*) = (1 + *W0) / (*), Л (г) = z"*f (z).
21. Ранг с*...C2C1 равен (Ct*1) — 1 минус ранг ct-i.. .с2с\. [См. Н. Luneburg, Abh.
Math. Sem. Hamburg, 52 (1982), 208-227.]
22. Поскольку
—(Т)-(ТЬ
- CD-GO ♦(?)-
-(?)-(?)+(?)-(?)-
- (Г) - О+GO-(?)*©•
ответы к упражнению следующие:
(a) 1414 405;
(b) 182 97 21;
(c) 71 56 31 26;
(d) 43 39 32 12 3;
(e) 1000000 999999 999998 999996 ... 0.
23. Имеется (?Г.Г) сочетаний с j > г, при г = 1,2,..., t. (Если г = 1, то C2 = с\ 4-1;
если г = 2, то ci = 0, С2 = 1; если г = 3, то с\ = 0, С2 = 1, С4 = сз 4- 1 и т.д.) Таким
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 121
образом, среднее значение равно + (ntzl) + • • • + ("о*)) j(t) = ClVCt) =
= (n -h 1) / (п +1 — t). Среднее время работы одного шага приблизительно
пропорционально этой величине; таким образом, алгоритм достаточно быстр при малых £,
но становится медленным при t, близком к п.
24. В действительности jk — 2 < jk+i < jk + 15 когда jfc = t (modulo 2), и - 1 ^
jfc+i ^ jk + 2, когда jfc £t, поскольку R5 выполняется только тогда, когда с» = г — 1
для 1 ^ г < j.
Таким образом, в конце R2 мы можем добавить "если j ^ 4, установить j ^— j — 1 —
— [j нечетно] и перейти к R5", если t нечетно, и "если j > 3, установить j <— j — 1 —
— [j четно] и перейти к R5", если t четно. В этом случае алгоритм не будет содержать
циклов, поскольку R4 и R5 будут выполняться не более чем 2 раза на одно
посещение.
25. Положим, что N > N' и N — N' минимально; кроме того, пусть t и ct —
минимальны при этих предположениях. Тогда с± > с[.
Если существует элемент х £ С U С", такой, что 0 ^ х < q, отобразим каждое
^-сочетание из С U С" путем замены j ь-> j — 1 для j > х; или, если имеется элемент
х Е СП С, отобразим каждое t-сочетание, которое содержит ж, на (t — 1)-сочетание,
опуская х и заменяя j i—> x—j для j < ж. В любом случае отображение сохраняет
чередующийся лексикографический порядок; следовательно, величина N — N' должна
превосходить количество сочетаний между образами С и С". Но с* — минимально,
так что такое х не существует. Следовательно, t = т и ct = 2m — 1.
Теперь если с'т < ст — 1, мы можем уменьшить N — N' путем увеличения с^.
Поэтому с'т = 2т — 2, и задача сводится к поиску максимума rank(cm_i.. .с\) —
— rank (с'т_г... ci), где ранг вычисляется так, как в (30).
Пусть f (s,t) = max (rank (bs ... fei) — rank (c*... ci)) по всем {fes,..., fei, с*,...,
ci} = {0,..., s + £ — 1}. Тогда / (5, i) удовлетворяет любопытному рекуррентному
соотношению
/(s,0) = /(0,t) = 0; /(1,*)=*;
/ (5, £) = + * " ^ + max (/ (t - 1, s - 1), / (s - 2, *)) если st > 0 и s > 1.
Когда s -j- £ = 2u + 2, решение становится
r-l
, r = min (5 — 2, £ — 1),
с максимумом / (£ — 1, s — 1) при s ^ t, и / (s — 2, £) при s ^ £ + 2.
Следовательно, минимум N — N' достигается при
С = {2m - 1} U {2m -2-х\1^х^2т-2, х mod 4^1},
С = {2т - 2} U {2т - 2- ж|1^х^2т-2, mod 4 ^ 2} ,
и равен (2^_-1) - Zk=o СТ) = 1 + [См. A.J. van Zanten, IEEE Trans.,
IT-37 (1991), 1229-1233.]
122 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
26. (а) Да: первый элемент on-^2htmod22^2^ последний - 2^1* mod 20п"^;
переходы представляют собой подстроки вида 02а1 <-> 12а0, 02а2 <-> 12а1,
10а1 20а0, 10а2 <-> 20а1.
(Ь) Нет: если 5 = 0, имеется большой переход от 02*0Г-1 к 20г2*-1.
27. Следующая процедура выбирает все сочетания с\... Ck из Гп, которые имеют
вес ^ t. Начнем с к <— 0 и со <— п. Посетимсх... с&. Если к четно и сь = 0, установим
к <— к — 1; если к четно и с& > 0, установим с* «— с* — 1, если А: = £, иначе выполним
А; <— fc + lHCfc<— 0. С другой стороны, если к нечетно и + 1 = с*_1, установим
к <— к — 1 и Ck *— Cfc + 1 (но если А; = 0, завершим работу); если к нечетно и Ck 4- 1 <
< Cfe-i, установим Ck <— с* 4- 1, если к = t, иначе установим fc «— А; + 1, с* +- c^-i,
Cfc_i <— с* 4-1. Повторим описанные действия.
(Этот алгоритм без применения циклов приводится к алгоритму из
упражнения 7.2.1.1-126 при t = 7i, с небольшими изменениями обозначений.)
28. Истинно. Битовые строки ап-\...ао = a/3 и а'п_1...а'0 = а'/?' соответствуют
индексным последовательностям (Ь3 ... 6i = #х, q ... ci = фф) и (6^ ... b[ = #х'>
cj... с[ = фф'), таким, что все строки между а/3 и а/3' начинаются с а тогда и только
тогда, когда все элементы между фф и фф' начинается с ф. Например, если п = 10,
префикс a = 01101 соответствует префиксам в = 96 и ф = 875.
(Условие, что только с*... C2C1 находится в облексном порядке, гораздо более
слабое. Например, при t = 1 каждая такая последовательность находится в облексном
порядке.)
29. (а) -*0Z+1 или -*0'+1 4- ±т или ±к при k,l,m ^ 0.
(b) Нет, последующий элемент всегда меньше в уравновешенной троичной
системе счисления.
(c) Для всех а и всех А;,/, га ^ 0 имеем a0 — fe+10z 4- ±т —> а —|_fcoz+1 — ±m
и а 4- -fc0z+1 4- ±m -> а0 4- к+г01 - ±m; также a0 - *+10* a - 4-*0/+1 и a 4- -*0/+1 ->
->a0 4-fc+10z.
(d) Пусть j-й знак a* — (—l)aiJ", и пусть он находится в позиции by. Тогда мы
имеем (-i)a"+b*o-i> = (_i)a<*+i)i+b(<+i><i-i) для 0 ^ г < к и 1 ^ j < t, если положить
bi0 = 0.
(e) Согласно первым трем ответам, а принадлежит некоторой цепочке ао —►
—►•••—> а&, где а*; — конечный элемент, не имеющий последующего, ао —
начальный элемент, не имеющий предшественника. Согласно пункту (d) каждая такая
цепочка имеет не более элементов. Однако, согласно пункту (а), всего имеется
2s окончательных строк и 25(S"J~*) строк, содержащих 5 знаков и t нулей; так что к
должно быть равно (s**) — 1.
[Источник: SICOMP, 2 (1973), 128-133.]
30. Предположим, что t > 0. Начальные строки являются отрицательными
окончательными строками. Пусть Oj — начальная строка 0* — tj для 0 < j < 2s""1, причем
А:-й символ Tj для 1 < к < s представляет собой знак (—l)afc, где j — двоичное число
(as_i.. .ai)2; таким образом, <tq = 0*-++...+, о\ = 0*-+...+,..., a2s-i_i = 0*—
Пусть pj — окончательная строка, полученная вставкой -0* после первой
(возможно, пустой) серии минусов в Tj\ таким образом, ро = -0*++... +, р\ = -0*+... +, ...,
р2з-1-г = - ...-0*. Пусть также о2а-\ = оо и /02s-1 = Ро- Тогда мы можем по
индукции доказать, что цепочка, начинающаяся с Oj, заканчивается pj, если t четно,
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 123
и pj-i, если t нечетно, при 1 ^ j < 2S_1. Следовательно, цепочка, начинающаяся
с — pj, заканчивается —aj или — ctj+i.
Пусть Aj (s,t) — последовательность (s, £) сочетаний, порожденных
отображением цепочки, начинающейся с aj, и пусть Bj(s,t) — аналогичная
последовательность, порожденная из — pj. Тогда для 1 ^ j ^ 2S_1 обратная последовательность
Aj (s,t)R представляет собой последовательность Bj (s,t) при четном t и Bj-i (s,t)
при t нечетном. Соответствующие рекуррентные соотношения для st > 0 имеют вид
д. (5 _ (s^~ 1) ,0Л|_(2—i_i-j)/2j (s - l,t)R, если j + £ четно;
3 ' 1 lAj (5, t — 1), O-A^^j (s — 1, t), если j + £ нечетно;
и, когда st > 0, все 2s-1 этих последовательностей различны.
Последовательность Чейза Cst представляет собой А\2*/3} (s? а Cet — A^-i /3J
(s,£). Кстати, однородная последовательность из (31) представляет собой
^2s-l-[t четно] (s>^) •
31. (а) 2^ *" )-1 является решением рекуррентного соотношения / (s, t) = 2/ (5 — 1, t)
при/(в,0) = /(0,*) = 1.
(b) Рекуррентное соотношение / (s, £) = (5 + 1)!/ (s, t — 1) • • • / (0, t — 1) имеет pe-
4 шение
(, + i).<s!G) (S _ i).(T) •. • 2!(8+Г2) = П (г + l)!C+J=n+[—1.
Г=1
32. (а) Простой формулы, похоже, не существует, но для малых s nt можно
подсчитать количества последовательностей посредством вычисления количества
облексных путей, которые проходят по всем строкам веса t из заданной начальной точки
в заданную конечную точку, выполняя только перемещения со свойством двери-
вертушки. Вот общие количества для s -М ^ 6:
1
1 1
1 2 1
14 4 1
1 8 20 8 1
1 16 160 160 16 1
1 32 2264 17152 2264 32 1
/ (4,4) = 95 304112 865 280, / (5,5) « 5.92646 х 1048. [Этот класс генераторов
сочетаний был впервые изучен Г. Эрлихом (G. Ehrlich), JACM, 20 (1973), 500-513, но он
не пытался их сосчитать.]
(Ь) Расширяя доказательство теоремы N, можно показать, что все такие
последовательности или обратные к ним должны проходить от 1*0S до 0al*0s-a для
некоторого 1 ^ а ^ s. Кроме того, количество возможностей nsta для данных s, t
и а при st > 0 удовлетворяет условию пщ = 1 и соотношению
{^e(t-i)i^(e-i)t(a-i)» если а > 1;
л
n8{t-\)2n{8-i)ti Н Ь ne(t_i)eri(e_i)t(e_i), если a = К s.
124 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
Это рекуррентное соотношение имеет замечательное решение nsta = 2m^s't,a\ где
3) + (6t-25) 4 Ь (3) + s - а - [а < s], если £ нечетно.
33. Рассмотрим сначала случай t — 1: количество близких к идеальным путей от
г до j > г равно / (j - г - [г > 0] - [j < п - 1]), где Ц. / (j) ^' = l/(l - z - z3). (По
случайному совпадению, та же последовательность / (j) возникает в многофазном
слиянии Карона (Сагоп) для шести лент, табл. 5.4.2-2.) Сумма по 0 ^ г < j < п
равна 3/ (га) + f (п — 1) + / (га — 2) + 2 — га, и мы должны удвоить ее, чтобы охватить
случаи j > i.
Когда t > 1, мы можем построить (™) х (™) матриц, которые подскажут нам,
сколько облексных последовательностей начинаются и заканчиваются
определенными сочетаниями. Элементы этих матриц представляют собой суммы произведений
матриц для случая t — 1, просуммированные по всем путям типов, рассмотренных
для случая t = 1. Вот общие количества для s +1 ^ 6:
1 1
11 11
12 1 12 1
1 6 2 1 1 2 0 1
1 12 10 2 1 12 2 0 1
1 20 44 10 2 1 12 0 0 0 1
1 34 238 68 10 2 1 1 2 6 0 0 0 1
Здесь в правом треугольнике показаны количества циклов g(s,t). Прочие
значения включают /(4,4) = 17 736, /(5,5) - 9 900 888 879 984, $(4,4) = 96, $(5,5) =
= 30 961456 320.
Имеется ровно 10 таких схем при s = 2 и га > 4. Например, когда га = 7, они
пробегают от 43 210 до 65 431 или 65 432, либо от 54 321 до 65 420 или 65 430, или
65 432, или в обратном порядке.
34. Минимум может быть вычислен, как в предыдущем ответе, но с
использованием вместо обычного матричного умножения aj = ^T,k aikbkj операции aj —
= min/e (a,ik + bkj). (Когда s = t = 5, облексный путь на рис. 26, е с 49 неидеальными
переходами по сути единственный. Имеется облексный цикл для s = t = 5, который
содержит только 55 неидеальностей.)
35. Из рекуррентных соотношений (35) мы имеем ast = + [s > 1] [t > 0] +
+ a>(s-i)u bst = a8(t_!) + CL{8-\)t- Таким образом, a8t = b3t + [s > 1] [t нечетно] и a8t —
= as(/_x) + a(6._x)t + [s > 1] [t нечетно]. Решение имеет следующий вид:
t/2
dst =
к=0
^ (s + t-2-2k\ . .
5 _ 2 )-[s>l][t четно];
эта сумма приблизительно равна (s/(s + 2£)) (,S"J"*).
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 125
36. Рассмотрим бинарное дерево с корневым узлом (s, t) и с рекурсивно
определяемыми поддеревьями с корнями (s — 1, t) и (s, t — 1), пока st > 0; при st = 0 узел (s, t)
является листом. Тогда дерево с корнем (s,t) имеет (s**) листьев,
соответствующих всем (s, ^-сочетаниям an_i... aiao. Узлы на уровне / соответствуют префиксам
an_i... an-i, а листья на уровне I соответствуют сочетаниям с г = га — I.
Любой облексный алгоритм для сочетаний an_i.. .aiao соответствует прямому
порядку обхода такого дерева, после того как дочерние узлы — 1 узлов с
ветвлениями упорядочены в некотором требуемом порядке; вот почему имеется 2^ *" )-1
таких облексных схем (упражнение 31, а). Операция j <— j +1 выполняется в
точности один раз для каждого узла с ветвлением, а именно после того, как обработаны
его дочерние узлы.
Кстати, из упражнения 7.2.1.2-6, а следует, что среднее значение г равно
величине s/(t + 1) 4- t/(s + 1), которая может представлять собой Q (га); таким образом,
дополнительное время, необходимое для отслеживания г, теряется не даром.
37. (а) В лексикографическом случае нам не нужно поддерживать таблицу Wj,
поскольку aj активно для j ^ г тогда и только тогда, когда aj =0. После установки
а3 <r- 1 и aj_i <— 0 имеется два случая, которые следует рассмотреть при j > 1: если
r — h установить г <— j — 1; в противном случае установить а^_2 ... ао <— 0ГР_1~Г
и г <— j — 1 — г (или г <— j, если г было равно j — 1).
(b) Теперь переходы, обрабатываемые при j > 1, состоят в изменении аэ;... ао
следующим образом: 01г -> НОГ"2, 010r -> 10r+1, 010alr -+ 110a+1lr_1, 10r -> ОПТ"1,
110r —► 010r_1l, 10alr —> 0alr+1; эти шесть случаев легко различимы. Значение г
должно изменяться соответствующим образом.
(c) Вновь случай j = 1 тривиален. В противном случае 01a0r —> 101a_10r;
0alr -> 10alr_1; 101a0r -> 01a+10r; 10alr -» 0alr+1; имеется также один
неоднозначный случай, который может произойти, только если an_i... a^+i содержит, как
минимум, один 0: пусть к > j — минимальное, для которого а& = 0. Тогда 10г —► 010г-1,
если к нечетно, и 10г —> 0Г1, если к четно.
38. Годится тот же алгоритм С с небольшими отличиями. 1) Шаг С1 устанавливает
an_i... ao <— 01*0S_1, если га нечетно или s = 1, an_i... ao <— 001*05-2, если га четно
и s > 1, и соответствующее значение г. 2) Шаг СЗ меняет роли четных и нечетных
значений. 3) Шаг С5 переходит к шагу С4 и при j = 1.
39. В общем случае работа начинается с г <— 0, j <— s + t — 1,идо тех пор, пока не
будет выполнено условие st = 0, повторяются следующие действия:
г <-r+[wj = 0] ^ _fa.)'5 5 ~ К' = °1 >* * ~ taJ = !] '«? *~ •? ~ L
Тогда г представляет собой ранг an_i... aiao- Так что ранг
11001001000011111101101010
равен
126 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
40. Начнем с N <— 999 999, v <— 0 и будем повторять следующие шаги до
выполнения условия st = 0: если v = 0, установить t <— t — 1 и as+i <— 1, если N <
в противном случае установить N <— N — (s+t~l), v <— (s + t) mod 2, 5 <— 5 — 1,
as+t 0. Если г; = 1, установить v <— (s +£) mod 2, 5 «— 5 — 1 и a5+t <— 0, если
N < в противном случае установить N <— N — (8+1~г), t <— t — 1, as+t <— 1-
Наконец, если 5 = 0, установить at-i...ao <— 1*; если £ = 0, установить as_i...
a0 <- 0s. Окончательный ответ — a25 • • .ao = 11101001111110101001000001.
41. Пусть с(0),.^.,с(2^- 1) = Сп, где С2п = 0C2n_i, lC2n_i; <?2n+i = 0С2п,1С2п;
С'гп = lC2n_i,0C2n_i; Сгп+i = 1^271,0(7^; Со = Со = е. Тогда а, 0 bj = 67+1 &
(bj-+2|(bj+3 & (6j+4|...)))» если j четно, и Ь^+1|(Ь^+2 & (fy+3|(fy+4 & • ••)))> если
j нечетно. Любопытно, _что_ мы получаем также обратное соотношение
с ((... a4a3a2aiao)2) = (... Ь^Ьф\Ьо)г
42. Уравнение (40) показывает, что левый контекст an_i.. . a^+i не влияет на
поведение алгоритма для a/_i.. .ao, если щ = 0 и Z > г. Следовательно, мы можем
проанализировать алгоритм С путем подсчета сочетаний, завершающихся
определенным битовым шаблоном, и отсюда следует, что количество выполнений каждой
операции может быть представлено как [и)8гг] р (w, z)/(l — w2)2 (l — z2)2 (1 — w — z)
при подходящем многочлене p (w, z).
Например, алгоритм переходит от С5 к С4 по одному разу для каждого
сочетания, которое оканчивается на oi2a+10126+1 или имеет вид la+ifjl26*1 для
целых a, b ^ 0; соответствующие производящие функции — w2z2/(l — z2)2 (1 — w — z)
и w(z2 + z3)/(l-z2)2.
Вот как выглядят многочлены р (w, z) для ключевых операций. Здесь W = 1-й;2,
Z = 1 - z2.
СЗ -> С4 : wzW (1 + wz)(l-w- z2) ;
СЗ —> С5 : wzW (w + z) (l - wz - z2);
C3-+C6:w2z2W(w + z);
C3-+C7:w2zW(l + wz);
C4 (j = 1) : wzW2Z (1-w-z2);
C4(r «- j - 1) : w3zWZ (1 - w - z2);
C4 (r 4- j) : wz2W2 (l + z-2wz-z2- z3) ;
C5 C4 : wz2W2 (l - wz - г2) ;
C5 (r+-j-2): w4zWZ (l-wz- z2);
C5 (r <- 1) : ti;2^2Z (l - - z2);
C5 (r <- j - 1) : w2z3^2 (l-wz - z2);
C6 (j = 1) : w2zW2Z;
C6 (r <- j - 1) : w2z3W2;
C6(r^j):w3z2WZ;
CI -> C6 : w2zW2;
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 127
C7(r <- j) :w4zWZ;
C7(r<-j-2):w3z2W2.
Асимптотическое значение равно (s^t) (р (1 — ж,ж)/(2ж — х2)2 (l — х2)2 + О
для фиксированного 0 < х < 1, если t = хп + О (1) при п —> оо. Таким образом, мы
находим, например, что четыре пути ветвления на шаге СЗ имеют относительные
частоты х + х2 — х3 : 1 : х : 1 + х — х2.
Кстати, количество случаев нечетного j превосходит количество случаев четного
j на
Efs + t-2k-2l\ rrtI ftI ^ , г
2/с + 2/ < 5 +1 + 5 нечетно \t нечетно
з~2к )
для любой облексной схемы, использующей метод (39). Эта величина имеет
интересную производящую функцию wz/(l + w) (1 + z) (1 — w — z).
43. Тождество истинно для всех неотрицательных целых ж, за исключением х = 1,
(Кстати, $(ж) = /(ж) 0 1 и р(ж) = f(x 0 1), где /(ж) = (х - 1) + ((ж&1) < 1).)
44. В действительности Ct (n) = Ct(n — 1)R и Ct{n) — 1 = Ct (п — 1)я.
(Следовательно, Ct (п) — 2 = Ct (п — 2) и т.д.)
45. В приведенном далее алгоритме г — наименьший индекс, для которого сг ^ г.
СС1. [Инициализация.] Установить Cj <— п — t — 1 + j и ^ <— 0 для 1 < j;^ t + 1.
Установить также г <— 1. (Считаем, что 0 < t < п.)
СС2. [Посещение.] Посетить сочетание ct... С2С1. Затем установить j <— г.
ССЗ. [Ветвление.] Перейти к шагу СС5, если Zj ф 0.
СС4. [Попытка уменьшения Cj.] Установить х <— Cj -f (с^ mod 2) — 2. Если ж ^ j,
установить Cj <— ж, г <— 1; иначе если Cj = j, установить <— j — 1, ^ <—
<— Cj+i — ((cj+i + 1) mod 2), г i— j; иначе если Cj < j, установить Cj <— j,
Zj <— Cj+i — ((cj-j-i -h 1) mod 2), r <— max(l,j — 1); иначе установить Cj <— ж,
г <— j. Вернуться к шагу СС2.
СС5. [Попытка увеличения Cj.] Установить х <— Cj -f 1. Если ж < z^, установить
Cj <— ж, иначе если ж = Zj и z^+i 7^ 0, установить Cj <— ж — (cj+i mod 2);
в противном случае установить 2j <- 0, j <- j + 1 и перейти к шагу ССЗ
(но если j > £, завершить работу алгоритма). Если с\ > 0, установить г <— 1;
в противном случае установить г *— j — 1. Вернуться к шагу СС2. I
46. Из уравнения (40) следует, что Uk — (bj + к -f 1) mod 2, где j — минимальное
значение, при котором выполняется условие bj > к. Тогда (37) и (38) дают
следующий алгоритм, в котором для удобства полагается, что 3 ^ s < п.
СВ1. [Инициализация.] Установить bj <— j — 1 для 1 ^ j ^ s; установить также
z <— s + 1, bz <— 1. (Когда последующие шаги проверяют значение z, оно
представляет собой наименьший индекс такой, что bz Ф z — 1.)
СВ2. [Посещение.] Посетить дуальное сочетание Ь3 ... бг&ь
128 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
СВЗ. [Ветвление.] Если 62 нечетно: перейти к шагу СВ4, если 62 ф Ь\ + 1, в
противном случае перейти к шагу СВ5, если 61 > 0, в противном случае перейти
к шагу СВб, если bz нечетно. Перейти к шагу СВ9, если &2 четно и Ъ\ > 0.
В противном случае перейти к шагу СВ8, если bz+\ = bz + 1, в противном
случае перейти к шагу СВ7.
СВ4. [Увеличение 61.] Установить 61 <— 61 + 1 и вернуться к шагу СВ2.
СВб. [Смещение Ь\ и 62.] Если 63 нечетно, установить b\ <— b\ + 1 и 62 <— 62 + 1;
в противном случае установить Ь\ <— b[ — 1 и 62 <— 62 — 1» ^ <— 3. Перейти к СВ2.
СВб. [Смещение влево.] Если z нечетно, установить z <— z — 2, bz+i z -Ь 1, Ьг <— г;
в противном случае установить г<—2 — 1, Ьг<—г. Перейти к шагу СВ2.
СВ7. [Смещение bz.] Если нечетно, установить bz <— bz +1 и завершить работу
при 62 ^ п; в противном случае установить bz <— bz — 1, затем, если bz < z,
установить z <— z + 1. Перейти к шагу СВ2.
СВ8. [Смещение 62 и bz+\.\ Если 62+2 нечетно, установить bz <— 62+i, <— bz + 1
и завершить работу, если 62+i ^ п. В противном случае установить <— 6г,
bz <— bz — 1, затем, если fr2 < 2, установить z «— 2; + 2. Перейти к шагу СВ2.
СВ9. [Уменьшение 61.] Установить &i «— bi — 1, z «— 2 и вернуться к шагу СВ2. I
Обратите внимание, что это алгоритм без циклов. Чейз приводит похожую
процедуру для последовательности Cft в Cong. Num., 69 (1989), 233-237. Удивительно,
что этот алгоритм определяет точное дополнение индексов q ... с\, полученных при
помощи алгоритма из предыдущего упражнения.
47. Мы можем, например, использовать алгоритм С и обратный к нему
(упражнение 38) с заменой Wj d-битовым числом, биты которого представляют активность на
разных уровнях рекурсии. Для отслеживания r-значений на каждом уровне
требуются отдельные указатели го,г\,... , г^-ь (Возможно множество других решений.)
48. Существуют такие перестановки 7Ti,...,7Tm, что k-й элемент Aj равен
TTkOLj | 3k-\ 5 a TXkOtj пробегают все перестановки {s\ • 1,..., Sd • d} при изменении j
от 0 до Дг — 1.
Историческое примечание: первая публикация однородной схемы
двери-вертушки для (5, ^-сочетаний — [Eva Torok, Matematikai Lapok 19, (1968), 143-146],
посвященная генерации перестановок мультимножества. Позже многие исследователи
опирались на условие однородности при подобных построениях, но данное
упражнение показывает, что однородность не является необходимой.
49. Мы имеем limz_.g (г*™+г _ \)/(zlm+r - l) = 1 при 0 < г < га, а при г = 0 -
\imz^q (£;razfcm_1)/(/raz*m-1) — k/l. Так что мы можем объединить в пары
множители числителя Yln-k<a<n ~" -0 и знаменателя По<б</с (*b ~ -0> когДа
а = b (modulo га).
Примечания: Эта формула открыта Г. Оливе (G. Olive) [АММ, 72 (1965), 619].
В частном случае т = 2, q — —1 второй множитель равен нулю тогда и только тогда,
когда п -- четно, а к - нечетно. Формула = (n™fc) выполняется при всех п ^ 0,
но (uy^j) we всегда равно (^!!^/т|)- Однако в случае, когда п mod га ^ к mod га,
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 129
мы имеем [к/т\ + [(п — к)/т\ = |_п/га_|; в противном случае второй множитель
равен нулю.
50. Указанный коэффициент равен нулю, когда п\ mod га + • • • + щ mod га ^ га.
В противном случае он равен
согласно формуле 1.2.6-(43); здесь каждый верхний индекс равен сумме нижних.
51. Понятно, что все пути проходят между 000111 и 111000, поскольку эти
вершины имеют степень 1. Все 14 путей при указанных условиях эквивалентности
сводятся к четырем. Путь из (50), эквивалентный самому себе при отражении и
обращении, может быть описан дельта-последовательностью А = 3452132523414354123;
три других класса — В = 3452541453414512543, С = 3452541453252154123, D =
= 3452134145341432543. Д.Г. Лемер (D.H. Lehmer) открыл путь С [АММ, 72 (1965),
Part II, 36-46]; D, по сути, является путем, построенным Идесом (Eades), Хикки
(Hickey) и Ридом (Read).
(Кстати, идеальные схемы в действительности не редкость, хотя, похоже, их
сложно строить систематически. Для случая (s,t) = (3,5) имеется 4050046 таких
схем.)
52. Мы можем считать, что каждый элемент Sj не равен 0 и что d > 1. Тогда
разница между перестановками с четными и нечетными количествами инверсий равна
И обратно: если как минимум две кратности нечетны, обобщенное построение
Г. Стаховяка (G. Stachowiak) [SIAM J Discrete Math., 5 (1992), 199-206] показывает,
что идеальная схема существует. Его построение применимо к ряду задач
топологической сортировки; в частном случае мультимножеств оно дает Гамильтонов цикл
во всех случаях при d > 1 и нечетном soS\, за исключением случая d — 2, so = si = 1
и четного 52-
53. См. АММ, 72 (1965), Part II, 36-46.
54. В предположении, что st ф 0, Гамильтонов путь существует тогда и только
тогда, когда 5 и t не являются одновременно четными; Гамильтонов цикл существует
тогда и только тогда, когда дополнительно (5 ф 2 и t ф 2) или п = 5. [Т.С. Enns,
Discrete Math., 122 (1993), 153-165.]
55. (а) [Решение Аарона Вильямса (Aaron Williams).] Последовательность 0s 1*, Wst
обладает корректными свойствами, если
А вот удивительно эффективная реализация без использования циклов. Полагаем,
что t > 0.
W1. [Инициализация.] Установить п <— 5 +1, а3\ 1 для 0 ^ j < t и aj <— 0 для
t ^ j ^п. Установить также j <— k <— t — 1. (Это трюк, но он работает.)
W2. [Посещение.] Посетить (5, t)сочетание ап-\.. .а\ао.
( L(ni + • • • +
\[ni/m\
+ щ)/т\ \ / (ni Н mod т
,., \_щ/т\) \п\ mod т,...,щ mod т
W8t = 0W{s_l)t, lWs{t_lh ЮП1-1 для st > 0; WQt = Ws0 = 0.
130 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
W3. [Обнуление aj.] Установить aj <— 0 и j; <— j + 1.
W4. [Простой случай?] Если aj = 1, установить аь <— 1, к <— Н 1 и вернуться
к шагу W2.
W5. [Оборот] Если j = п, завершить работу. В противном случае установить a,j <— 1.
Затем, если к > 0, установить ак <— 1, ао <— 0> j' <~ 1 и & *~ 0- Вернуться к шагу
W2. I
После второго посещения j — наименьший индекс, для которого а^а^_i = 10, a —
наименьший индекс, для которого ак = 0. Простой случай встречается ровно
(S+s_1) — ^ Р33' условие к = 0 на шаге W5 выполняется ровно (S+J~2) + #ti раз-
Любопытно, что если N имеет комбинаторное представление (57), то сочетание
ранга N в алгоритме L имеет ранг N — t+ (J!^) + v — 1 в алгоритме W. [Lecture Notes
in Сотр. Sci., 3595 (2005), 570-576.]
(b)
SET bits, (l«t)-l (В программе предполагается s > 0 и t > 0.)
1H PUSHJ $0, Visit Посещение bits = (a3+t-i • • • ^1^0)2-
ADDU $0,bits,l; AND $0,$0,bits Установить $0 <- bits & (bits-hi).
SUBU $1,$0,1; X0R $1,$0,$1 Установить $1 <- $0 0 ($0 - 1).
ADDU $0,$1,1; AND $l,$l,bits Установить $0 <- $1 + 1, $1 <- $1 & bits.
AND $0,$0,bits; 0DIF $0,$0,1 Установить $0 <- ($0 & bits) - 1.
SUBU $1,$1,$0; ADDU bits,bits,$1 Установить bits <— bits + $1 - $0.
SRU $0,bits,s+t; PBZ $0,1B Повторять до выполнения условия as+t = 1.
56. [Discrete Math., 48 (1984), 163-171.] Эта задача эквивалентна "гипотезе
средних уровней", которая гласит, что существует путь Грея по всем бинарным строкам
длиной 2t — 1 и весами {t — 1, t}. В действительности такие строки могут быть
сгенерированы при помощи дельта-последовательности специального вида ao#i •.. с*2*-25
в которой элементы ак представляют собой элемент ао, сдвинутый на к позиций
по модулю 2t — 1.Например, при t = 3 можно начать с a5a4a3a2aiao = 000111 и
повторно выполнять обмены ао <-> as, где 8 пробегает цикл (41345245135124123523).
Известно, что гипотеза средних уровней справедлива для t ^ 15 [см. I. Shields and
CD. Savage, Cong. Num., 140 (1999), 161-178.]
57. Да; существует три близких к идеальному облексных решения для всех га, п
и t, когда п ^ га > t. Одна такая схема с применением обозначений битовых строк
представляет собой lA{rn_t){t_l)^n-jn, 01A(m_i)(t_1)0n_m"1, Qn-m\A{m_t){t-i),
0n~m+1li4(m_i_t)(t_i), 0n~*lA0(t_i) с использованием последовательности Ast
из (35).
58. Решите предыдущую задачу с тип, уменьшенными на t — 1, а затем добавьте
j — 1 к каждому Cj. (Случай а), который особенно прост, вероятно, был известен
Черны (Czerny).)
59. Производящая функция Gmnt (z) = Yl9mntkZk для количества аккордов gmntk,
достижимых за к шагов от 0n_tl*, удовлетворяет уравнениям Gmm* (z) = (™)г
и Gm(n+i)t (z) = Gmnt (^) + ^tn~^~1^m(7JlJ11)2, потому что последний член учитывает
случаи ct = п и с\ > п — га. Идеальная схема возможна, только если \Gmnt (—1)1 ^ 1.
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 131
Но, если п ^ т > t ^ 2, эти условия, в соответствии с (49), выполняются только
тогда, когда т = t + 1 или (n — i)t нечетно. Таким образом, идеального решения для
t = 4 и m > 5 не существует. (Многие аккорды имеют только двух соседей, когда
п = t + 2, так что можно легко исключить этот случай. Все случаи с п ^ т > 5
и £ = 3, вероятно, не имеют идеальных путей при четном п.)
60. В приведенном решении используется лексикографический порядок,
принимаются меры для того, чтобы среднее количество вычислений на одно посещение было
ограниченным. Считаем, что stms ... mo ф 0 и t ^ ms + • • • + mi + mo.
Q1. [Инициализация.] Установить qj <— 0 для s ^ j ^ 1, и ж = t.
Q2. [Распределение.] Установить j <— 0. Затем, пока х > rrij, установить qj <— rrij,
х *— х — mj, j <— j + 1 и повторять эти действия до тех пор, пока не будет
выполнено условие х ^rrij. В конце установить qj <— х.
Q3. [Посещение.] Посетить композицию qs Н + gi + go-
Q4. [Выбрать крайние справа единицы.] Если j = 0, установить х <— qo — 1, j 1.
Иначе если до = 0? установить х <— gj — 1, qj <— 0 и j; <— j + 1; в противном
случае перейти к шагу Q7.
Q5. [Завершение?] Завершить работу алгоритма, если j > s. Иначе если qj = rrij,
установить х <— х + rrij, qj <— 0, j; «— j + 1 и повторить данный шаг.
Q6. [Увеличение д^.] Установить qj <— qj + 1. Затем, если х = 0, установить до 0
и вернуться к шагу Q3. (В этом случае qj-\ = • • • = до = 0.) В противном
случае перейти к шагу Q2.
Q7. [Увеличение и уменьшение.] (Сейчас qi = rrii для j > г ^ 0.) Пока g^ = т^,
установить j' <— j" +1 и повторять эти действия до тех пор, пока не будет
выполнено условие qj < rrij (но завершить работу алгоритма, если j > s). Затем
установить qj «— qj + 1, j <— j — 1, g^ <— g^ — 1. Если go = 0, установить j <— 1.
Вернуться к шагу Q3. I
Например, если ms = • • • = mo = 9, то следующей после композиции 3+9+9+7+0+0
будут 4 + 0 + 0 + 6 + 9 + 9, 4 + 0 + 0 + 7 + 8 + 9, 4 + 0 + 0 + 8 + 7 + 9, ...
61. Пусть Fs (t) = 0, если t < 0 или £ > ms + • • • + mo; в противном случае пусть
F0 (t) = t, а
Fs (t) = 0 + (*), 1 + Fs-г (t - 1)R , 2 + Fs_! (t - 2),..., ms + Fs-i (t - ma)Rm' ,
где s > 0. Можно показать, что эта последовательность обладает требуемыми
свойствами. В действительности она эквивалентна композициям, определенным
однородной последовательностью Kst из (31) при использовании соответствия из
упражнения 4, при наложенных на подпоследовательности ограничениях, которые
определяются границами ms,...,mo. [См. Т. Walsh, J. Combinatorial Math, and
Combinatorial Computing, 33 (2000), 323-345, где последовательность реализована без
применения циклов.]
132 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
62. (а) Факторная таблица размером 2 х п с суммами строк г и с\ 4- • • • + сп — г
эквивалентна решению г = а\ + • • • + ап при О ^ а\ ^ ci, ..., 0 ^ ап ^ сп.
(b) Мы можем вычислить ее, последовательно устанавливая ац «— min(ri — a^i —
— • • • — a^(j_i), Cj — aij — • • • — a(i_i)j) для j = 1,..., n и i = 1,..., m. В качестве
другого решения можно, если г\ ^ с\, установить ац <— ri, ai2 <— • • • <— ain <— О
и работать с остальными строками с с\, уменьшенным на т\; если же т\ > с\,
установить ац <— ci, a2i <— • • • <— ami <— 0 и работать с остальными столбцами с ri,
уменьшенным на с\. Из второго подхода видно, что ненулевыми являются не более
га -f п — 1 элементов. Можно указать и явную формулу
dij = шах (0, min (r», Cj, n H Ь г* - ci c^-i, Ci -I h c^ - n *4-i)) •
(c) Получается такая же матрица, как и в пункте (Ь).
(d) Поменяйте местами левые и правые части в пунктах (Ь) и (с); в обоих случаях
ответ
dij = max (0, min (r», с^, r»+i H h rm - cx Cj_i, cx H h Cj - r» rm)).
(e) Давайте выберем, например, построчный порядок. Сгенерируем первую
строку так же, как и для ограниченной композиции г\ с границами (ci,..., сп); для
каждой строки (ац,... ,ain) сгенерируем оставшиеся строки рекурсивно тем же
способом, но с суммами столбцов (с\ — ац,..., сп — d\n). Большинство действий этого
алгоритма выполняются только с нижними двумя строками; когда же изменения
затрагивают более высокие строки, то строки, идущие за ними, должны быть
инициализированы заново.
63. Если d^ и dki положительны, мы получим другую факторную таблицу путем
установки d^ 4— d^ - 1, du <— du 4- 1, dkj <— dkj + 1, dki <— dki - 1. Мы хотим
показать, что граф G, вершины которого являются факторными таблицами для
(ri,..., rm; ci,..., сп) и смежны, если они могут быть получены друг из друга при
помощи указанного преобразования, имеет Гамильтонов путь.
При га = п = 2 граф G представляет собой простой путь. При га = 2 и п = 3 граф
G имеет двухмерную структуру, из которой видно, что каждая вершина является
начальной по крайней мере для двух Гамильтоновых путей с разными
конечными точками. При га = 2 и п ^ 4 можно по индукции показать, что граф G имеет
Гамильтоновы пути из каждой вершины в любую другую.
При га ^ 3 и п ^ 3 задачу можно свести от га к га — 1 так же, как в
ответе к упражнению 62, е, если быть достаточно аккуратным, чтобы не загнать себя
в угол. В частности, следует избегать состояний, когда ненулевые элементы в
последних двух строках имеют вид (J ь с) Для некоторых а, 6, с > 0, и когда
изменения в строке га — 2 приводят к виду (о б с )• Предыдущий цикл изменений в строках
га — 1 и га может избежать данной ловушки, если только с не равно 1 и строки не
начинаются с (J i) или (J J^J J). Однако этих ситуаций также можно избежать.
(Облексный метод, основанный на упражнении 61, существенно проще и почти
всегда требует только четырех изменений на каждом шаге. Однако иногда ему
требуется обновить одновременно 2 min (га, п) элементов.)
64. Пусть х\... xs — бинарная строка, А — список подкубов, и пусть А 0 х\... xs
означает замену цифр (ai,..., as) в каждом подкубе А на (d\ 0 #i,..., a5 0 xs) слева
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 133
направо. Например, 0 * 1 * *10 0 1010 = 1 * 1* *00. Тогда цикл Грея определяется
приведенной далее взаимной рекурсией, поскольку Ast дает путь Грея от 0s** до
10s-1**, a Bst дает путь Грея от 0s** до *01s_1*t_1 при st > 0:
Ан = 0B(e_i)t, *Asit-i) e 001s"2, lBg_1)t;
= 0A(s_1)t, lBia-1)t 0 010s"2, *As(t_1} 0 l5.
Строки 001s-2 и 010s-2 при s < 2 представляют собой просто 0s; Aso — бинарный
код Грея; А0* = B0t = **. (Кстати, несколько более простая конструкция
Gst = *Ge(t_i), a«G(e_i)t, at-iG^_1)t, at = t mod 2
определяет п^/шь Грея от **0S до a*_i ** 0s
65. Если рассматривать путь Р как эквивалентный путям PR и Р ф х\.. ,х3, то
общее количество может быть вычислено систематически, как в упражнении 33, со
следующими результатами для s +1 ^ 6:
пути циклы
1 1
11 11
12 1 111
13 3 1 1111
1 5 10 4 1 12 111
1 6 36 35 5 1 1 2 3 1 1 1
1 9 310 4630 218 6 1 1 3 46 4 1 1 1
В общем случае имеется t + 1 путей при s = 1 и (^s/^+2) — (s mod 2) при t = 1.
Циклы при 5^2 единственны. При s = t = 5 имеется приблизительно 6.869 х 10170
путей и 2.495 х 1070 циклов.
66. Пусть G (п, 0) = е\ G (n, t) — 0 при п <t\ пусть также G (n, t) для 1 ^ t ^ п
представляет собой
g(0)G(n-l,t),g(l)G(n-l,tf,...,
д (2* - 1) G(n - l,tf,g (2* -l)G(n- l,t-l),
где #(&) — ^-битовый столбец, содержащий на вершине бинарное число Грея д{к)
с наименьшим значащим битом. В этой общей формуле мы неявно добавляем строку
нулей под базисом G (п — l,t — 1).
Это замечательное правило дает обычный бинарный код Грея при t = 1 с
пропущенным 0.. .00. Циклический код Грея невозможен, поскольку (™) нечетно.
67. Из пути Грея для композиций, соответствующих алгоритму С, вытекает, что
существует путь, в котором все переходы имеют вид 0к11 <-> 1*0*, где min(/c,/) ^ 2.
Возможно, существует цикл, у каждого перехода которого min (к, I) = 1.
68. (а) {0}; (Ь) 0.
134 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
69. Наименьшее N, для которого KtN < N, равно (2\ г) + {2f_?) Н Ь (\) + 1 =
~ \ ((?) (2/-^i2) ^ + (о) + l)> поскольку (t™J ^ (™) тогда и только тогда, когда
п ^ 2t - 1.
70. Из тождества
+ Kt-iN' - iV
t / t- 1
при iV' < (2*^3) можно заключить, что максимум равен (2<^2) \ + (2/~i4) тЫ ^ ^
+ (2)у, и достигается при 2t_1 значениях N при £ > 1.
71. Пусть — t-клики. Первые (14t14) + {^t-i) ^-сочетаний, посещаемых
алгоритмом L, определяют граф из 1415 вершин с 1000000 ребер. Если значение \Ct\
превышает указанное, то |<9t-2Ct| должно превосходить 1000000. Таким образом,
единственный граф, определяемый Р( 1000000)2> имеет наибольшее количество £-клик для
всех t ^ 2.
72. М = (msa) + ... + для ms > ••• > mu ^ и ^ 1, где {ms,...,mu} =
= {s-M — l,...,nv} \ {nt,..., nv+i} (сравните с упражнением 15, которое дает —
-1-7V).
Если а = an_i,..., ао — битовая строка, соответствующая сочетанию щ,..., ni,
то г; на 1 больше количества завершающих единиц в а, а и — длина крайней
справа последовательности нулей. Например, для а — 1010001111 получаем s = 4, t = 6,
М = (4) + (з)> " = 3> N = 96+ (D> * = 5-
73. А и В перекрестно пересекающиеся а ^ для всех аЕ Л и<Ф ЛП
П дп~8~гВ~ = 0, где Б" = {С/\/3|/? 6 £?} — множество (п — ^-сочетаний. Поскольку
Q~Nnt = Рщп-t), имеем \дп~*-*В-\ > {д^^Рщ^ и дп-*-ьРм{п_г) = PN,a, где
iV7 = ks+\ ... nn-tN. Таким образом, если А и В перекрестно пересекающиеся, то
М + /V' ^ \А\ + l^—'B-l ^ С) и QMn, П Р„,в = 0.
И наоборот: если <2мп« П PN>s ф 0, то имеем (™) < М + N' ^ |А| + |ап-8-*В"|,
так что А и В не могут быть перекрестно пересекающимися.
74. \eQNnt\ = Kn-tN (см. упражнение 94). Кроме того, применяя те же
рассуждения, что в (58) и (59), находим qPN5 = (п - 1) PNbU-• -UlOP/vsU{543210,..., 987654}
в данном частном случае; в общем случае \gPNt\ = (п + 1 — nt) N (rJt4f11).
75. Тождество ("J1) = (£) + + • • • + (nqk) из 1.2.6-(10) дает другое
представление, если nv > v. Но (60) при этом не затрагивается, так как = + GJI2)
76. Представим N + 1 путем добавления (^z\) к (57); затем воспользуемся
предыдущим упражнением для вывода кь (N — 1) — ntN = ("z^) = v ~
77. [D.E. Daykin, Nanta Math., 8, 2 (1975), 78-83.] Мы работаем с расширенными
представлениями М = ("J*) Н Ь (™и) и N = (nt<) Н Ь как и в упражне-
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 135
нии 75, называя их некорректными, если последний индекс и или v равен 0.
Назовем N гибким, если оно имеет и корректное и некорректное представление, т.е. если
nv > v > 0.
(a) Для данного числа S найдем M+N, такие, что М+N = S и KtM + KtN
минимально; при этом М должно быть велико, насколько это возможно. Если N = 0,
задача решена. В противном случае данная операция максимума-минимума сохраняет
как М + N, так и ntM + ntN, поэтому можно считать, что в корректных
представлениях М и N v ^ и^ 1. Если N не гибко, Kt (Af + 1) + Kt (N - 1) = (кьМ + и - 1) +
+ (ntN — v)< KtM 4- KtN согласно упражнению 76. Следовательно, N должно быть
гибким. Но тогда можно применить операцию максимума-минимума к М и
некорректному представлению N, увеличивая М. Таким образом, получено противоречие.
Это доказательство показывает, что равенство выполняется тогда и только тогда,
когда MN = 0 (факт, замеченный в 1927 г. Ф.С. Маколеем (F.S. Macaulay)).
(b) Теперь попытаемся минимизировать max (KtM, N) 4- Kt-\N при М + N = S,
представляя в этот раз N как (п^~^)-\ Ь (™"). Если щ~\ < rrtt, можно использовать
операцию максимума-минимума. Оставляя га* неизменным, она сохраняет М + N
и KtM + Kt-iN, как и соотношение KtM > N. Если N ф 0, как и в случае (а), мы
приходим к противоречию, так что можно считать, что щ~\ ^ т*.
Если щ-\ > га*, имеем N > кгМ, а также \tN > М; следовательно, М + N <
< XtN + N = (nt"t1+1) + • • • + (nvv+1) и мы получаем кг (М + N) < к, (AtJV + N) =
= N + Kt-XN.
Наконец, если п^_х = mt = а, положим М = (") -h М' и JV = (Д) + iV'. Тогда
Kt (М + AT) = (£i)+«t-i (М' + W), = (Д)+«*-1М; и K^-iTV = (Д)+к4_2ЛГ'.
Требуемый результат получается путем индукции по t.
78. [J. Eckhoff and G. Wegner, Periodica Math. Hung., 6 (1975), 137-142; A.J.W. Hilton,
Periodica Math. Hung., 10 (1979), 25-30.] Пусть M = \Ai \ и N = \A0\; можно считать,
что t > 0 и N > 0. Тогда |&4| = |&4i U А0\ 4- |ЭА0| ^ max(|<9Ai|,\А0\) + \дА0\ ^
max (кгМ, N) 4- Kt~\N ^ «t (M 4- Af) = п° индукции по га 4- n 4- £.
И наоборот: пусть A\ = Рм* 4-1 и Ао = i) 4-1; эта запись означает, например,
что {210,320}+ 1 = {321,431}. Тогда Kt(M + N) ^ \дА\ = \дАг U Л0| 4- \(дА0) 0| =
= max (KtM, N)+Kt-iN, поскольку дА\ = P(KtM)(t-i) + l- [Шутценбергер в 1959 году
заметил, что Kt (М 4- N) ^ KtM -\- Kt-\N тогда и только тогда, когда fyM ^ АГ.]
Перейдем к первому неравенству. Пусть А и В — непересекающиеся множества
t-сочетаний, для которых \А\ = М, \дА\ = KtM, \В\ = N, \дВ\ = «4АГ. Тогда
т (M + N) = кг \АиВ\^ \д(АиВ)\ = |<9A U ЭВ| - |&4| 4- |<9Б| = кьМ 4- «ttf.
79. В действительности pt (М -h At-iM) = М и /х*АГ 4- Xt-iPtN = N + (п2 - щ)
[v = 1], если А/" задается формулой (57).
80. Если АГ > 0 и £ > 1, представим N в том виде, как это сделано в (57), и пусть
N = Nq + Nu где
Пусть No = (yt) и N\ = (t*x). Тогда по индукции по t и [х\ имеем (*) = Afo 4-
+ > (?) + (Д) = С?1), "г = Ю - (?) > (t) - Г71) = a = nx +
+ «,_1ЛГ1^(Д) + (Д) = (^)^(Д).
136 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
[В действительности Ловас доказал более сильное утверждение; см.
упражнение 1.2.6-66. Аналогично ptN ^ см- Bjorner, Frankl and Stanley, Combinatorica,
7 (1987), 27-28.]
81. Например, если наибольший элемент Р^ь — 66433, то
PN5 = {00000,..., 55555}U{60000,..., 65555}и{66000,..., 66333}U{66400,..., 66433} ,
так что N = (™) + (I) + (3) + (2). Его нижняя тень,
dPN5 = {0000,..., 5555} U {6000,..., 6555} U {6600,..., 6633} U {6640,..., 6643} ,
имеет размер Q + Q + (*) + (4).
Если наименьший элемент QiV95 — 66433, то
Qnqs = {99999,..., 70000} U {66666,..., 66500} U {66444,..., 66440} U {66433} ,
так что N = ((?) + (?) + (V1)) + (О + (D) + © + (з)- Е™ верхняя тень,
qQn95 = {999999,..., 700000} U {666666,..., 665000} U
U {664444,..., 664400} U {664333,..., 664330} ,
имеет размер ((г£) + (g3) + (172)) + (Q + (ЦЖйМз) = N+^N. Размер t каждого
сочетания, по сути, неважен, пока N ^ (^); например, в рассмотренном нами случае
наименьший элемент Qn98 — 99966433.
82. (а) Производная должна быть равна J2k>o Гк но этот Ряд Расходится.
[Говоря неформально, график г (х) выглядит как множество "ям" с
относительной глубиной 2~к во всех точках, представляющих собой нечетные кратные 2~к.
Оригинальная статья Такаги в Proc. Physico-Math. Soc. Japan, (2) 1 (1903), 176-177,
была переведена на английский язык и опубликована в его Collected Papers (Iwanami
Shoten, 1973).]
.x^^^lv , K v^ VJ — v 1 при к > 0, имеем jQ rk{t)dt =
= J*1 Гк (1 — и) du = — J** Гк {и) du = Jq Гк (и) du. Второе уравнение следует из того
факта, что г к (\t) = Гк-i (t). В пункте (d) показано, что этих двух уравнений
достаточно для определения т (х) при рациональном х.
(c) Поскольку т (2~ах) = а2~ах + 2~ат (х) при 0 ^ х ^ 1, имеем т(е) = ае + О (е)
при 2~а~1 ^ е ^ 2~а. Следовательно, т (е) = е lg \ + О (е) при 0 < е ^ 1.
(d) Предположим, что 0 ^ p/q ^ 1. Если р/д ^ 1/2, имеем r(p/q) = p/q +
+ г (2р/д)/2; в противном случае г (p/q) = (q — p)/q + г (2 (а - p)/q)/2.
Следовательно, можно считать, что q нечетно. Пусть в этом случае р' = р/2, если р четно,
и pf = (а — р)/2, если р нечетно. Тогда т (р/д) = 2т (р'/я) ~~ 2р'/а ПРИ 0 < р < о; эта
система q — 1 уравнений имеет единственное решение. Например, для q = 3,4,5,6,7
получаем значения 2/3,2/3; 1/2,1/2,1/2; 8/15,2/3,2/3,8/15; 1/2,2/3,1/2,2/3,1/2;
22/49,30/49,32/49,32/49,30/49,22/49.
(e) Решения, меньшие \: х = \, \ - ^, \ - ± - ^, J - ^ - ^ - ..., |.
(f) Значение | достигается при ж=|±|±^± j|g ± • • •, несчетном множестве
значений.
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 137
83. Для любых данных целых чисел q > р > 0 рассмотрим пути, начинающиеся с О
в диграфе
0<-1<-2<-3<-4<-5<----
1-*2->3->4->5-»6->---
Вычислим связанное с путем значение v. Изначально v < р; горизонтальные
перемещения удваивают v: v <— 2v\ вертикальные перемещения из узла а изменяют v
следующим образом: v <— 2 (qa — v). Путь завершается, когда дважды достигается
узел с одним и тем же значением v. Переход в верхний узел а не разрешен, если
в этом узле v ^ — q или v ^ да; в нижний узел а переход запрещен, если в нем v ^ О
или v ^ д(а + 1). Эти ограничения определяют большинство шагов пути. (Узел
а в верхней строке означает "Решение уравнения т(х) = ах — v/q"; нижняя
строка означает "Решение уравнения т(х) = v/q — ах".) Эмпирические тесты приводят
к гипотезе о конечности всех таких путей. Тогда уравнение т (х) = p/q имеет
решения х = хо, определяемые последовательностью хо,х\,х2, * * где Хк = \хк+\ на
горизонтальном шаге и хк — 1 — \%к+\ на вертикальном шаге; в конечном итоге
Хк = Xj для некоторого j < к. Если j > 0 и если g не является степенью 2, то это все
решения уравнения т (х) = p/q при х > 1/2.
Например, описанная процедура устанавливает, что т (х) = 1/5 и х > 1/2 только
при ж, равном 83581/87040; единственный путь дает нам хо = 1 — #2 = \х\->
• • • ? #18 = и #19 = хц. Аналогично можно определить, что имеется только два
значения х > 1/2, для которых т (х) = 3/5, и знаменатели равны 246 (256 — 1)/3.
Кроме того, похоже, все циклы диграфа, которые проходят через узел 0,
определяют значения р и д, такие, что уравнение г (х) = p/q имеет несчетное количество
решений. Такими значениями, например, являются 2/3, 8/15, 8/21,
соответствующие циклам (01), (0121), (012321). Значение 32/63 соответствует как (012121), так
и (012101234545454321), а также еще двум другим путям, не возвращающимся в 0.
84. [Frankl, Matsumoto, Ruzsa and Tokushige, J. Combinatorial Theory, A69 (1995),
125-148.] Если a ^ 6, имеем
f t-а Ь)/Т = X)— / (2t ~ = 2"Ь C1 + / (a> b)t~l+0 (b4/t2)),
где / (a, 6) = a (1 + 6) - a2 - b (1 + 6)/4 = / (a + 1,6) - 6 + 2a. Следовательно, если
AT имеет комбинаторное представление (57) и если положить nj = 2t — 1 — bj, то
получим
Этими членами можно пренебречь, когда bj превышает 21gt. Можно также
показать, что
T|E2_ei) = !>,--2j)2-e'.
\J=0 / 3=0
138 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
85. В соответствии с (63) N — \t-iN имеет тот же асимптотический вид, что
и KtN — N, поскольку т(х) = г (1 — х). То же относится и к 2jitN — N с
точностью до О (т (log tf/t2), так как (2'~_~Ь) = 2(2't~2~6) (1 + О (log при b < 2 lg t.
86. x G ^х^Г<^х^1 или x ф X + ei или ... или x^X + en^a:G X"
или x € X~ — ei или ... или x G X~ — en <=> x €
87. Все три утверждения истинны. Воспользуемся тем, что X C.Y7 тогда и только
тогда, когда Х+ С У.
a) IC7°^I-D У°~ = У~+ & У~ С
b) I+CI+=>IC следовательно, Х° С Также Х°СХ° Х°+ С X;
следовательно, Х0+0 С Х°.
c) аМ ^ N 45 S+ С SN & SM ^ S°N М ^ (3N.
88. Если vx < vy, то г> (х — ek) < v (у — ej), поэтому можно считать, что vx = г^г/
и что х > 2/ в лексикографическом порядке. Должно выполняться условие yj > 0;
в противном случае v (у — ej) превышало бы v (х — е^). Если = у г при 1 ^ г ^ j,
понятно, что к > j и х — ek -< у — ej. В противном случае Xi > yi для некоторого
Kj'h мы вновь получаем х — ek -< у — ej, если только не выполняется равенство
х-ек = у- ej.
89. Из таблицы
j = 0123456 7 8 9 10 11
£j + ei = ei eo в4 es ег ез eg eg e& e^ ец ею
ej -f ег = в2 в4 eo ее ei eg ез ею es ец в7 eg
ej + ез = ез в5 вб в7 eg eg ею eo ец ei в2 е±
находим (a0,al,...,al2) = (0,4,6,7,8,9,10,11,11,12,12,12,12); (/30,/31,... ,/312) =
= (0,0,0,0,1,1,2,3,4,5,6,8,12).
90. Пусть У = Х+ и Z = CfcX, а также пусть АГ0 = (а)\ для 0 ^ a < га&. Тогда
ТПк-1
|У|= £ Щ(а)| =
о=0
mfc-l
= ]Г |(Xfc(a-l) + efc)U(Xfc(a) + Bfc(0))|^
а=0
™>к — 1
^ ^ тах(ЛГа_1,аЛГа),
а=0
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 139
где а — 1 означает (а — 1) mod т&, а функция а получается из (п — 1)-мерного тора,
поскольку по индукции \Xk (а) 4- Ек (0)| ^ скАд. Кроме того,
m/c — 1
l^+l= £ 13? И =
а=0
rafe-l
- \(Zk(a-l) + ek)U(Zk(a) + Ek(0))\ =
а=0
rrik — l
= ]Г тах(А/а_1,аАГа),
а=0
поскольку как Zk (а — 1) + е&, так и (а) + £^ (0) — стандартные множества в п — 1
измерениях.
91. Пусть в полностью сжатом массиве, где строка 0 находится внизу, имеется Na
точек. Тогда I — N-i ^ Ао ^ • • • ^ Nm-i ^ 7Vm = 0. Покажем сначала, что
существует оптимальное значение X, для которого "плохое" условие iVa = iVa+i никогда
не выполняется, за исключением случаев Na = 0 или Na = 1. Если а — наименьший
плохой индекс, предположим, что Na-i > Na = Na+i = • • • = АГа+/- > JVa+fc+i. Тогда
мы всегда можем уменьшить Na+k на 1 и добавить 1 к некоторому Nb (b ^ а) без
увеличения |Х+|, за исключением случаев, когда к = 1, A"a+2 = ATa+i - 1 и % =
= Na + a — b<l, где 0 ^ 6 ^ а. Исследуя эти случаи далее, при iVc+i < Nc = Nc-\
для некоторого с > а 4- 1 можно установить Nc <— Nc — 1 и iVa <— iVa + 1, таким
образом либо уменьшая а, либо увеличивая АГ0. В противном случае можно найти
такой индекс d, что Nc = Na+i + a + 1 — с > 0 для а < с < d, и либо АГ«* = 0, либо
< A^d_i — 1. тогда можно уменьшить Nc на 1 для а < с < d, после чего увеличить
Nb на 1 для 0 ^ b < d — а — 1. (Важно заметить, что если Nd = 0, то Ао ^ d — 1;
следовательно, из d = m вытекает I = т.)
Повторяя такие преобразования до тех пор, пока не будет выполнено условие
Na > Afa+i, при этом Na ф I и Na+i ф 0, мы достигнем ситуации (86), после чего
доказательство может быть завершено так, как это сделано в тексте.
92. Пусть х 4- к — лексикографически наименьший элемент Т (mi,..., mn_i),
который превышает х и имеет вес vx + к (если такой элемент существует). Например,
если гп\ = т-2 = шз = 4 и я = 211, имеем x-f 1 = 212, х + 2 = 213, х + 3 = 223,
х + 4 = 233, х + 5 = 333, а х + 6 не существует; в общем случае х 4- /г 4- 1
получается из х 4- к путем увеличения самого правого компонента, который может быть
увеличен. Если х 4- к = (mi — 1,..., mn_i — 1), положим ж 4- fc + 1 = х + к. Тогда,
если S (к) — множество всех элементов Т (mi,..., mn_i), которые =^ х + к, получаем
S (к 4- 1) = S (&)+. Кроме того, элементы 5, заканчивающиеся компонентом а, — те,
у которых первые п — 1 компонентов находятся в S (m — 1 — а).
Результат этого упражнения можно сформулировать более интуитивным
образом: при генерации n-мерных стандартных множеств 5i, 52,... (п — 1)-мерные
стандартные множества на всех уровнях становятся размахами друг друга после
добавления каждой точки к уровню m — 1. Аналогично, они становятся ядрами друг
друга перед тем, как каждая точка добавляется к уровню 0.
93. (а) Предположим, что параметрами являются 2 ^ m[ < т'2 ^ • • • < т'п (в
отсортированном порядке), и пусть к — наименьшее значение, для которого тк ф гп'к.
140 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
Тогда получим iV = 1 + rank (0,..., 0, т'к — 1,0,..., 0). (Мы должны считать, что
min (mi,..., тп) ^ 2, поскольку параметры, равные 1, могут быть расположены где
угодно.)
(Ь) Только в доказательстве для п = 2, скрытом в ответе к упражнению 91. По
индукции это доказательство распространяется и на случаи больших п.
94. Дополнение сохраняет лексикографический порядок и изменяет Q на д.
95. Для теоремы К положим d = п — 1 и so = • • • = s<j = 1. Для теоремы М — d = s
и s0 = • * * = Sd = t + 1.
96. В таком представлении TV является числом ^-мультисочетаний {so • 0, si • 1,
52 • 2,...}, предшествующих ntnt-i... п\ в лексикографическом порядке, поскольку
обобщенный коэффициент (S^) дает количество мультисочетаний, крайний левый
компонент которых меньше п.
Если мы оборвем представление, остановившись на крайнем справа ненулевом
члене (S^v^), то получим красивое обобщение (60):
[См. G.F. Clements, J. Combinatorial Theory, A37 (1984), 91-97. Неравенства 50 ^
s\ ^ • • • ^ s^ необходимы для корректности следствия С, но не для вычисления
\дРт\- Некоторые члены (5<^) для t > к > v могут быть нулевыми. Например,
при N = 1, t = 4, 50 = 3 и 5i = 2 получим N = (^1}) + (5(31}) =0 + 1.]
97. (а) Тетраэдр имеет четыре вершины, шесть ребер и четыре грани: (No,..., N4) =
= (1,4,6,4,1). Аналогично, октаэдр имеет (No,..., Nq) = (1,6,8,8,0,0,0), а
икосаэдр — (No,.. •, ЛГ12) = (1,12,30,20,0,..., 0). Гексаэдр, он же трехмерный куб, имеет
восемь вершин, 12 ребер и шесть квадратных граней; смещение разбивает каждый
квадрат на два треугольника и вносит новые ребра, так что мы имеем (No,..., Ng) =
= (1,8,18,12,0,...,0). Наконец, смещение вершин, образующих пятиугольные грани
додекаэдра, дает нам (iV0, • • •, №0) = (1,20,54,36,0,..., 0).
(b) {210,310} U {10,20,21,30,31} U {0,1,2,3} U {е}.
(c) 0 ^ Nt ^ (?) для О^Цпи Nt-i ^ KtNt для 1 ^ t ^ п. Второе условие
эквивалентно \t-iNt-i ^ Nt для 1 < t ^ п, если мы определим Ло1 = оо. Эти
условия необходимы по теореме К и достаточны, если А = U^Wtt-
(d) Дополнения элементов, не входящих в симплициальный комплекс, а именно
множества {{0,..., п — 1} \а \ а ф С}, образуют симплициальный комплекс.
(Можно также убедиться в выполнении необходимого и достаточного условия: Nt-i ^
fyNt о \t-1Nt-1 ^ Nt <=> Kn-t+\Nn-t+\ ^ Nn-t, так как в соответствии с
упражнением 94 nn.tNn-t+i = (?) - \t-iNt-i.)
(e) 00000 <-> 14641; 10000 ~ 14640; 11000 «-> 14630; 12000 <-> 14620; 13000 *-> 14610;
14000 <-> 14600; 12100 <-> 14520; 13100 <-> 14510; 14100 <-> 14500; 13200 <-+ 14410;
14200 +-+ 14400; 13300 <-» 14400; самодуальны 14300 и 13310.
98. Приведенная далее процедура предложена С. Линуссоном (S. Linusson) [СотЫ-
natorica, 19 (1999), 255-266], который рассматривал более общую задачу для
мультимножеств, и является существенно более быстрой, чем другие очевидные подходы
к решению поставленной задачи. Пусть L(n,h,l) — количество допустимых
векторов с Nt = (?) при 0 ^ t ^ /, JVt+i < (t"J и Nt = 0 при t > h. Тогда L(n,h,l) =
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 141
= 0 для всех значений, за исключением — 1 ^ I ^ ft ^ п; кроме того, L(n,h,h) —
= L (п, ft, — 1) = 1 и L (n, n, /) = L (n, n — 1, /) для Z < п. При n > ft ^ / ^ 0 можно
вычислить L (n, ft, Z) = Х^=г L(n — 1, ft, j) L (n — 1, j — 1,1 — 1); данное рекуррентное
соотношение следует из теоремы К. (Каждый вектор размеров соответствует
комплексу (jPNtt, причем L(n — l,ft, j) представляет сочетания, которые не содержат
максимальный элемент п — 1, a L (n — l,j — 1,1 — 1) — сочетания, которые его
содержат.) Окончательно общее количество составляет L (п) = J2?=i L (п> п> О-
Вычисления дают L(0), 1,(1), L(2),... = 2,3,5,10,26,96,553,5461,100 709,
3 718 354,289 725 509,...; L (100) « 3.2299 х 101842.
99. Максимальные элементы симплициального комплекса образуют клаттер; и
обратно, сочетания, содержащиеся в элементах клаттера, образуют симплициальный
комплекс. Таким образом, эти две концепции по сути эквивалентны.
(a) Если (М0, Mi,..., Мп) — вектор размеров клаттера, то (No, N\,..., Nn)
является вектором размеров симплициального комплекса, если Nn = Мп и Nt =
= Mt -f «t+iiVt+i для 0 ^ £ < п. И обратно: каждый такой вектор (No, Ni,..., АГп)
дает (Mo, Mi,..., Мп), если использовать первые Nt t-сочетаний. [Д.Ф. Клементе
(G.F. Clements) распространил этот результат на мультимножества в своей работе
в Discrete Math., 4 (1973), 123-128.]
(b) В порядке из ответа к упражнению 97, е, это 00000, 00001, 10000, 00040,
01000, 00030, 02000, 00120, 03000, 00310, 04000, 00600, 00100, 00020, 01100, 00210,
02100, 00500, 00200, 00110, 01200, 00400, 00300, 01010, 01300, 00010. Заметим, что
(Мо,..., Мп) является допустимым тогда и только тогда, когда допустим (Мп,...,
Мо), так что в данной интерпретации мы сталкиваемся с дуальностью другого вида.
100. Представим А в виде подмножества Т (mi,..., mn), как в доказательстве
следствия С. Тогда максимальное значение vА достигается, когда А состоит из N
лексикографически наименьших точек х\... хп.
Доказательство начинается с приведения к случаю сжатого А в том смысле,
что его ^-мультисочетаний представляют собой P\Anrt\t Для каждого t. Тогда, если
у — наибольший элемент, принадлежащий А, и если х — наименьший элемент, не
принадлежащий А, можно доказать, что из х < у вытекает их > vy,a следовательно,
v (А\ {у} U {х}) > vA. Если vx = vy — к, можно найти элемент дку, больший х, что
приводит к противоречию с предположением о сжатости А.
101. (а) В общем случае F (р) = N0pn + Nip71'1 (1 - р) + • • • + АГ„ (1 - р)п, если
/ (х\,..., хп) равна 1 для Nt бинарных строк х\...хп веса t. Таким образом, G (р) =
= р4 + Зр3 (1 - р) + р2 (1 - р)2 и Я (р) = р4 + р3 (1 - р) + р2 (1 - р)2.
(Ь) Монотонная формула / при соответствии / (х\,..., хп) = 1 {j — 1\xj = 0}б
G С эквивалентна симплициальному комплексу С. Следовательно, функции / (р)
для монотонных булевых функций те, которые удовлетворяют условию из
упражнения 97 (с), и мы получаем подходящую функцию путем выбора лексикографически
последних Nt t-сочетаний (которые являются дополнениями первых Ns s-сочета-
ний): {3210}, {321,320,310}, {32} дают / (w, х, у, z) = wxyz V xyz V wyz V wxz Wyz =
= wxz V yz.
М.П. Шутценбергер (M.P. Schutzenberger) заметил, что можно легко найти
параметры Nt из / (р), если обратить внимание на то, что / (1/(1 + и)) = (No -\-Niu +
+ ... 4- Nnun)/(1 -f u)n. Можно показать, что Н (р) не эквивалентна монотонной
142 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
формуле при любом количестве переменных, поскольку из (l + и + и2)/(1 + и)4 =
= (N0 + Nxu + ... + Nnun)/(l + и)п вытекает, что iVi = п - 3, N2 = (П23) + 1
и K2TV2 = п — 2.
Однако ответить на поставленный вопрос в общем случае не так просто.
Например, функция (1 + Ъи -f Ъи2 + 5г*3) /(1 + г/)5 не соответствует ни одной монотонной
формуле с пятью переменными, поскольку к$Ь = 7, но она равна (1 + 6и + 10и2 +
+ Югл3 + 5w4)/(l + и)6, что дает решение с шестью переменными.
102. (а) Выберем Nt линейно независимых полиномов степени t из /;
лексикографически упорядочим их члены и возьмем линейные комбинации так, чтобы
лексикографически наименьшие члены были различными одночленами. Составим /' из
всех произведений этих одночленов.
(b) Каждый одночлен степени t в Г, по сути, представляет собой £-мультисоче-
тание; например х\х2х\ соответствует 55552111. Если Mt — множество независимых
одночленов степени t, свойство идеала эквивалентно тому, что M$+i 2 QMt.
В данном примере М3 = {хох2}, М4 = дМ% U {xoxix2}, М5 = gM4 U {#1X2}»
поскольку х\ (хох2 — 2х\х2) — х\ (xoxix2?) = —2х\х\\ соответственно M^+i = QMt.
(c) По теореме М можно считать, что Mt = Qmsi- Пусть Nt = (ntss) Н h (n,f) +
4- (п")? где s + t ^ nts > • • • > Щ2 > Щ\ ^ 0; в этом случае nts = s + t тогда и только
тогда, когда nt(8-i) = 5 ~ 2, ..., Щ\ = 0. Кроме того,
iVt+1 > JVt + к.Ъ = + ^ > S]) + • • • + (П'2 + ^ * 2]) + (ПП + [^ > 1]) •
Таким образом, последовательность
(nts - t - CO [nts < 5] , . . • , nt2 ~ t - CO [nt2 < 2] , ntl ~ t - OO [ntl < 1])
лексикографически неубывающая при возрастающем t, где оо' вставляется в
компоненты, у которых ntj = j — 1. Такая последовательность не может
увеличиваться бесконечно много раз без того, чтобы не превысить максимальное значение
(s, —00,..., —00) согласно упражнению 1.2.1-15 (d).
103. Пусть PNst — первые N элементов последовательности, определяемой
следующим образом: для каждой бинарной строки х = xs+t-i ... хо (в лексикографическом
порядке) записываем (^х) подкубов путем замены t единиц звездочками всеми
возможными способами в лексикографическом порядке (считая 1 < *). Например, если
х = 0101101 и t = 2, мы генерируем подкубы 0101 * 0*, 010 * 10*, 010 * *01, 0 * ОНО*,
0*01*01, 0*0* 101.
[См. В. Lindstrom, Aktiv for Mat., 8 (1971), 245-257; обобщение, аналогичное
следствию С, появляется в К. Engel, Sperner Theory (Cambridge Univ. Press, 1997),
Theorem 8.1.1.]
104. Первые N строк в перекрестном порядке обладают искомым свойством.
[T.N. Danh and D.E. Daykin, J. London Math. Soc. (2), 55 (1997), 417-426.]
Примечание. Начав с наблюдения, что "1-тень" N лексикографически первых
строк веса t (т.е. строк, полученных удалением только единичных битов) состоит из
первых ptN строк веса t, Р. Альсведе (R. Ahlswede) и Н. Кай (N. Cai)
распространили теорему Дана-Дэйкина на вставку, удаление и/или перемещение битов [СотЫ-
natorica, 17 (1997), 11-29; Applied Math. Letters, 11, 5 (1998), 121-126]. Уве Лек (Uwe
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 143
Leek) доказал, что не имеется глобального упорядочения тернарных строк с
аналогичным свойством минимальных теней [Preprint 98/6 (Univ. Rostock, 1998), 6 р.].
105. В цикле каждое число должно встречаться одинаковое количество раз,
т.е. (?Гх) должно быть кратно t. Это необходимое условие, похоже, является
одновременно и достаточным, если п не слишком мало по отношению к t. Однако это
пока что невозможно доказать [См. Chung, Graham and Diaconis, Discrete Math., 110
(1992), 55-57.]
В нескольких следующих упражнениях рассматриваются случаи t = 2 и t = 3,
для которых известны элегантные решения. Аналогичные, но более сложные
результаты были выведены для t = 4 и t = 5; случай t — 6 решен частично. В настоящее
время случай (п, t) = (12,6) — минимальный, для которого неизвестно наличие
универсального цикла.
106. Пусть разности последовательных элементов по модулю (2m + 1) равны 1,2,
..., т, 1,2,..., т,..., повторенные 2m + 1 раз; например, цикл для т = 3
представляет собой (013602561450346235124). Этот способ работает потому, что Н hm =
= г) является взаимно простым с 2т + 1. [J. Ecole Polytechnique, 4, Cahier 10
(1810), 16-48.]
107. Существует З7 способов, которыми можно вставить семь дублей HI, ЕВ,
..., НН в любой универсальный цикл 2-сочетаний множества {0,1,2,3,4,5,6}.
Количество таких универсальных циклов равно количеству цепей Эйлера в полном
графе К7, что, как можно показать, составляет 129976320, если рассматривать
(аоа\... а2о) эквивалентным (ai... а2оао), но не эквивалентным циклу в обратном
направлении (а20 •. .aiao). Таким образом, окончательный ответ — 284258 211840.
[Эта задача была впервые решена в 1859 году М. Рейссом (М. Reiss), метод
которого был столь сложен, что полученный им результат вызывал сомнения; см. Nou-
velles Annales de Mathematiques, 8 (1849), 74; 11 (1852), 115; Annali di Matematica
Рига ed Applicata (2), 5 (1871-1873), 63-120. Существенно более простое решение,
подтверждающее достижение Рейсса, было найдено Ф. Жоливальдом (P. Jolivald)
и Г. Тарри (G. Tarry), которые также подсчитали количество цепей Эйлера в Kg;
см. Comptes Rendus Association Frangaise pour VAvancement des Sciences, 15, part 2
(1886), 49-53; Ё. Lucas, Recreations Mathematiques, 4 (1894), 123-151. Подход,
найденный Б. Маккеем (В. McKay) и Р. Робинзоном (R. Robinson), оказался еще лучше,
позволив продолжить подсчет вплоть до E2i с использованием того факта, что
количество путей равно
(m - l)!2m+1 [z02-z2-2 • • • 4Г2] det (ajk) Ц (*» +
l^j<k^2m
где ajk = -l/{z] + zl) при j ф k\ aj5 = -l/(2z?) + £0^2m 1/{zj + 4Y> CM- Com'
binatorics, Probability, and Computing, 7 (1998), 437-449.]
К. Фли Сан-Мари (С. Flye Sainte-Marie) [Ulntermedialre des Mathematiciens, 1
(1894), 164-165], заметила, что цепи Эйлера в К? включают 2 х 720 путей с
7-кратной симметрией относительно перестановок {0,1,... ,6} (цикл Пуансо и обратный
к нему), 32 х 1680 путей с 3-кратной симметрией и 25 778 х 5 040 асимметричных
путей.
108. При п < 7 решение невозможно, за исключением тривиального случая п = 4.
При п = 7 имеется 12 255 208 х 7! универсальных циклов, не считая эквивалентными
144 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
циклы (ooai... CI34) и (а\... «234ао) и включая случаи 5-кратной симметрии
наподобие цикла, приведенного в упражнении 105.
При п ^ 8 к решению задачи можно подойти систематическим путем,
предложенным Б. Джексоном (В. Jackson) [Discrete Math., 117 (1993), 141-150; см. также
G. Hurlbert, SIAM J. Disc. Math., 7 (1994), 598-604]. Поместим каждое 3-сочета-
ние в "стандартном циклическом порядке" с\с2сз, где с2 — (с\ + 8) mod п, сз =
= (^2 + 6') mod п, 0 < 8,6' < п/2, и либо 8 = 5', либо max (5, S') < п — 8 — 8' ф
Ф(п- 1)/2, либо (К 8 < п/4 и 8' = (п - 1)/2), либо (* = (п - 1)/2 и К 8' < п/4).
Например, при п = 8 допустимыми значениями (J, £') являются (1,1), (1,2), (1,3),
(2,1), (2,2), (3,1), (3,3); при п = 11 они равны (1,1), (1,2), (1,3), (1,4), (2,1), (2,2),
(2,3), (2,5), (3,1), (3,2), (3,3), (4,1), (4,4), (5,2), (5,5). Затем строим
ориентированный граф с вершинами (с, 8) для 0^с<пи1^8< п/2 и дугами (ci, 8) —► (с2,8')
для каждого сочетания С1С2С3 в стандартном циклическом порядке. Такой
ориентированный граф связный и сбалансированный, так что по теореме 2.3.4.2D он имеет
цепь Эйлера. (Можно выбрать цепь Эйлера с n-кратной симметрией для п = 8, но
не для п = 12.)
109. При п = 1 цикл (ООО) тривиален; при п = 2 цикл не существует; имеется
ровно два таких цикла при п = 4, а именно (00011122233302021313)
и (00011120203332221313). При рассмотрении п ^ 5 примем, что мультисочетание
d\d2ds находится в стандартном циклическом порядке, если d2 = (di +5 — 1) mod
п, а*з = (d2 + 8' — 1) mod n и (8,8') является допустимым в смысле предыдущего
упражнения для п 4- 3. Построим ориентированный граф с вершинами (d, 8) для
0 ^ d < п и 1 ^ 8 < (п-ЬЗ)/2и дугами (di, 8) —> (d2,8f) для каждого мультисочета-
ния в стандартном циклическом порядке; затем найдем цепь Эйлера.
Вероятно, универсальный цикл t-мультисочетаний существует для {0,1,..., п — 1}
тогда и только тогда, когда существует универсальный цикл t-сочетаний для {0,1,...,
n + t- 1}.
110. Неплохой способ проверки троп состоит в вычислении чисел
6(5) = £{2*с> |ces},
где (р (А),... ,р (К)) = (1,..., 13); затем следует установить / <— b (S) & —b (S)
и проверить, что b(S) + ( = I < 5, а также что ((I <С s) \ (I ^> 1)) & а = 0, где
а = 2p(Cl) | ••• | 2р(Съ\ Значения 6(5) и {v (с) I с € легко поддерживаются
при проходе 5 по всем 31 непустым подмножествам в порядке кода Грея. Ответами
к упражнению для х — (0, ...,29) являются значения 1009008, 99 792, 2813 796,
505 008, 2 855 676,697 508,1800 268, 751324,1137 236, 361224, 388 740, 51680, 317 340,
19656, 90100, 9168, 58248, 11196, 2 708, 0, 8068, 2496, 444, 356, 3680, 0, 0, 0, 76, 4;
таким образом, средний счет равен «4.769, а дисперсия — «9.768.
Карты с нулевым счетом иногда в шутку называют "девятнадцать", поскольку
такой счет невозможно получить ни при каком наборе карт.
— Д. Г. Девидсон (G.H. Davidson), Справочник по игре в криббедж
(Dee's Hand-Book ofCribbage) (1869)
Примечание: в ограниченном варианте криббеджа ("crib") не допускается "масть"
из четырех карт. В этом случае распределение вычисляется немного проще, и по-
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 145
лучается следующий ответ: 1022 208, 99 792, 2839800, 508908, 2 868960, 703496,
1787176,755 320,1118 336,358 368,378 240,43 880,310 956,16 548,88132,9 072, 57 288,
11196, 2 264, 0, 7 828, 2 472,444, 356, 3 680, 0, 0, 0, 76, 4. Среднее значение и дисперсия
приблизительно равны 4.735 и 9.667.
111. дп~2гВ представляет собой множество всех r-подмножеств В; эти
подмножества не должны содержаться в А. Если |А| = \В\ = ( *г) для некоторого
действительного х > п — 1, то согласно упражнению 80 должно выполняться (?) ^ \А\ +
+ \дп~2гВ\ > (пх_г) + (*) > + С;1) = (?)• [См. Quart. J. Math. Oxford, 12
(1961), 313-320.]
Раздел 7.2.1.4
m"
m!{£}
(m+n-1)
(?)
V n—m )
[ra ^ n]
Ш
1 m+n 1
1 m 1
[m ^ n]
2. В общем случае для произвольных чисел х\ ^ • • • ^ хш мы получаем все целые
m-кортежи а\... аш, такие, что а\ ^ • • • ^ am, ai + • • • + ат — х\ + • • • + хт,
и ат ... ai ^ жт ... #1, путем инициализации а\... аш х\... хш и am+i <— хт — 2.
В частности, если с — произвольная целая константа, мы получим все целые га-
кортежи, такие, что а\ ^ • • • ^ am ^ с и ai + • • • + am = п, путем инициализации
ai <— n — гас + с, a7 <— с для 1 < jга и am+i <— с — 2 в предположении, что n ^ era.
3. aj = [(п + га — j)/m\ = \(n + 1 — j)/ra] при 1 ^ j ^ га [см. CMath § 3.4].
4. У нас должно выполняться am ^ ai — 1; следовательно, = |_(n + га — j)/raj для
1 ^ j' ^ га, где га — наибольшее целое, для которого [п/т\ ^ г, т.е. га = [n/rj.
5. [См. Ю. Климко (Eugene М. Klimko), BIT, 13 (1973), 38-49.]
С1. [Инициализация.] Установить со <— 1, с\ <— п, С2 ... сп <— 0... 0, /о <— 1, <— 0.
(Считаем, что п > 0.)
С2. [Посещение.] Посетить разбиение, представленное количеством частей с\... сп
и связями Z(^l • • • 'п-
СЗ. [Ветвление.] Установить j <— /о и А; <— /j. Если с^ = 1, перейти к шагу С6;
в противном случае, если j > 1, перейти к шагу С5.
С4. [Замена 1 + 1 на 2.] Установить с\ <— с\ — 2, C2 <— С2 + 1. Затем, если с\ = 0,
установить /о <— 2 и установить /2 +— /1, если к ф 2. Если ci > 0 и fc ^ 2,
установить /2 *— ^1 и /1 <— 2. Вернуться к шагу С2.
С5. [Замена j • Cj на (j + 1) + 1 -I + 1.] Установить ci <— j (cj — 1) — 1 и перейти
к шагу С7.
Сб. [Замена к-ск +j на (А: -I- 1)1Ч hi.] Завершить работу, если к = 0. В
противном случае установить Cj <— 0; затем установить с\ <— к (ск — 1) + j — 1, j <— к
и к <r- lk.
146
ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
С7. [Обновить связи.] Если с\ > О, установить lo *— 1, l± <— j + 1; в противном
случае установить /о *— j + 1- Затем установить Cj +— 0 и Cj+i <— c^+i + 1. Если
/с ф j• + 1, установить Zj+i <— А;. Вернуться к шагу С2. I
Заметим, что этот алгоритм — без циклов, но он не быстрее алгоритма Р. Шаги
С4, С5 и С6 выполняются р(п — 2), 2р (п) — р (п + 1) — р (п — 2) и р (п + 1) — р (п)
раз соответственно. Таким образом, при больших п наиболее важным становится
шаг С4. (См. упражнение 45 и детальный анализ Феннера (Fenner) и Лоизоу (Loizou)
[Acta Inf., 16 (1981), 237-252].)
6. Установить /с <— ai и j <— 1. Затем, пока > a^+i, установить j и k ^- k — 1
и повторять эти действия до тех пор, пока не будет выполнено условие k = dj+i.
Если к > 0, установить j <— j +1 и повторять это действие до тех пор, пока не будет
выполнено условие к — 0. (Мы использовали (11) в дуальной форме aj — a^+i = dj,
где a\ ... dn — представление в виде количества частей bib2 Заметим, что время
работы этого алгоритма, по сути, пропорционально а\ +Ь\, сумме длин входных
и выходных данных.)
7. Из дуальности (11) мы имеем Ъ1...Ъп = па* (п - 1)ап~1_an ... i«i-*2()n-ai.
8. Транспонирование диаграммы Феррерса соответствует зеркальному отражению
и дополнению битовой строки (15). Таким образом, мы можем просто поменять
местами и обратить р и q, получив разбиение Ъ\Ь2 . •. = (qt + Ь qi)Pl (qt Н h (72)Р2
• ••Ыр'.
9. Доказательство по индукции: если ak = I — 1 и bi = к — 1, увеличение а& и 6j
сохраняет равенство.
10. В первом дереве левый дочерний узел каждого узла получается путем
добавления '1'. Правый дочерний узел получается путем увеличения крайней правой
цифры; этот дочерний узел существует тогда и только тогда, когда родительский узел
заканчивается разными цифрами. Все разбиения п на уровне п находятся в
лексикографическом порядке.
Во втором дереве левый дочерний узел получается путем замены '11' на '2'. Этот
дочерний узел существует тогда и только тогда, когда родительский узел содержит
по крайней мере две единицы. Правый дочерний узел получается путем удаления 1
и увеличения наименьшей части, превосходящей 1. Этот дочерний узел существует
тогда и только тогда, когда в родительском узле имеется по крайней мере одна
единица и наименьшая превосходящая единицу часть ровно одна. Все разбиения п на т
частей появляются на уровне п — т в лексикографическом порядке; прямой порядок
обхода всего дерева дает лексикографический порядок всех узлов. [T.I. Fenner and
G. Loizou, Сотр. J., 23 (1980), 332-337.]
11. [г100] 1/((1 - z) (1 - z2) (1 - г5) (1 - z10) (1 - z20) (l - z50) (l - z100)) = 4563
и [z100] (1 + z + z2) (1 + z2 + z4) • • • (1 + г100 + z200) = 7. [См. G. Polya, AMM 63
(1956), 689-697.] В бесконечном ряде
Д (1 + zk + z2k) (1 + z2k + zAk) (1 4- zbk + z10k)
коэффициент при z1Qn равен 2n+1 — 1, а коэффициент при z10™-1 равен 2n.
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 147
12. Для доказательства того, что
(i+*)(i+*2)(i+*3)- = (d-^d-^d,^...).
перепишем левую часть в виде
(1 _ г2) (! _ г4) (! _ гб)
(1-г) (l-z2) (l-z3)
и сократим общие множители в числителе и знаменателе. Другой способ состоит
в замене z на z1, г3, z5,... в тождестве (1 -h z) (l + г2) (l + z4) (l + z8) • • • = 1/(1 - z)
и перемножении получившихся результатов. [Novi Comment. Acad. Sci. Pet., 3 (1750),
125-169, § 47.]
13. Отобразим разбиение c\ -1 + c2 • 2 + сз • 3 • • • на r\ • 1 + [_ci/2j • 2 + гз • 3 + [сг/2J •
• 4 + r5 • 5 + LC3/2J • 6 H , где rm = (cm mod 2) + 2 (c2m mod 2) + 4 (c4m mod 2) +
+ 8 (c8m mod 2) + • • •. [Johns Hopkins Univ. Circular, 2 (1882), 72.]
14. Легче всего понять соответствие Сильвестера, представив его диаграммой, в
которой точки нечетных перестановок центрированы и разделены на
непересекающиеся "крюки". Например, разбиение 17 + 15 + 15 + 9 + 9 + 9 + 9 + 5 + 5 + 3 + 3, состоящее
из пяти различных нечетных частей, посредством диаграммы
ставится в соответствие разбиению с разными частями 19 + 18 + 16+13 + 12 + 9 +
+ 5 + 4 + 3 с четырьмя просветами.
И наоборот: разбиение на 2t различных неотрицательных частей можно
единственным образом записать в виде
(ai + &i - 1) + (ai + b2 - 2) + (а2 + b2 - 3) + (a2 + b3 - 4) + • • • +
+ (dt-i + bt - 2t + 2) + (at + bt-2t + l) + (at + bt+i - It),
где a\ ^ a2 ^ • • • > at ^ t и b\ ^ b2 ^ • • • ^ bt ^ = £. Эта запись
соответствует (2ai - 1) + • • • + (2at - 1) + (2Ai - 1) + • • • + (2Ar - 1), где Ax + • • • + Ar -
сопряженное с (6i — t)-\ \-(bt — t). Значение t, по сути, представляет собой размер
"прямоугольника Дюрфи".
Так, разбиения на нечетные части при п = 10 представляют собой 9 + 1, 7 + 3,
7+1 + 1 + 1,5 + 5, 5 + 3 + 1 + 1,5 + 1 + 1 + 1 + 1 + 1,3 + 3 + 3 + 1,3 + 3 + 1 + 1 + 1 + 1,
3 + 1 + • • • + 1, 1 + • • • + 1, которые соответствуют разбиениям с разными частями
6 + 4, 5 + 4 + 1, 7 + 3, 4 + 3 + 2 + 1, 6 + 3 + 1, 8 + 2, 5 + 3 + 2, 7 + 2 + 1, 9 + 1, 10
соответственно. [См. замечательную статью Сильвестера в Amer. J. Math., 5 (1882),
251-330; 6 (1883), 334-336.]
148 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
15. Каждое самосопряженное разбиение следа к соответствует разбиению п на к
различных нечетных частей ("крюков"). Следовательно, можно записать
производящую функцию либо как произведение (1 -Ь z) (l + z3) (l + z5) • • •, либо как сумму
1 + г1/(1 _ z2} + z4/((! _ z2) (! _ z4^ + z9/^ _ z2) (X _ ^4) (X _ .6)) + . . .
Hopkins Univ. Circular, 3 (1883), 42-43.]
16. Квадрат Дюрфи содержит к2 точек, а остальные точки соответствуют двум
независимым разбиениям с наибольшей частью, не превышающей к. Таким образом,
если обозначить через w количество частей, а через z — количество точек, получим
00 - 00 „fc jfc2
П1 _ ^ urzK
m=1 1 - wzm ~ (1 - z) (1 - z2) • • • (1 - zk) (1 - wz) (1 - wz2)... (1 - wzk)'
[Эта страшно выглядящая формула представляет собой частный случай х = у — О,
еще более страшной формулы из упражнения 19.]
17. (а) ((1 + uvz) (1 + uvz2) (1 + uvz3) .. .)/((1 - uz) (l - uz2) (l - uz3)...).
(b) Объединенное разбиение можно представить в виде обобщен-
ной диаграммы Феррерса, в которой мы объединяем все части, по- ••••••••
мещая ai над bj, если > bj, и затем помечая крайнюю справа точ-
ку каждого bj. Например, объединенное разбиение (8,8,5; 9, 7,5, 2) • • • +
показано на приведенной диаграмме, где помеченные точки имеют
вид '+'. Пометки появляются только у угловых точек; таким образом,
транспонированная диаграмма соответствует другому объединенному разбиению, в данном
случае — (7,6,6,4,3; 7,6,4,1). [См. J.T. Joichi and D. Stanton, Pacific J. Math., 127
(1987), 103-120; S. Corteel and J. Lovejoy, Trans. Amer. Math. Soc, 356 (2004), 1623-
1635; I. Pak, The Ramanujan Journal, 12 (2006), 5-75.]
Каждое объединенное разбиение с t > 0 частями соответствует таким образом
"сопряженному" разбиению, в котором наибольшая часть равна t. Производящая
функция для такого объединенного разбиения —
((l+vz)...(l+vzt-1))
((!-*)...(!-*')) '
умноженное на (vzf + z1), где vzl соответствует случаю b\ = t, a zl соответствует
случаю г = 0 или b\ < t.
(c) Так мы получили вариант общей z-номиальной теоремы из ответа к
упражнению 1.2.6-58:
(1 + uvz) (1 + uvz2) (1 + uvz3) _ ^ (l + u) jl + vz) (l + vz1-1) t t
(l-uz) (l-uz2) (l-uz3) *''~^(Г^7) (l-z2) (1-**) UZ'
18. Уравнения очевидным образом определяют а и b для заданных end; так что
надо показать, что с и d однозначно определяются величинами а и Ь. Приведенный
далее алгоритм определяет с и d справа налево.
А1. [Инициализация.] Установить г <— г, j <— s, к <r- 0 и оо <- 6о оо.
А2. [Ветвление.] Прекратить работу, если г + j = 0. В противном случае перейти
к шагу А4, если ai ^ bj — к.
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 149
A3. [Поглощение сц.] Установить q+j <— a*, di+j <— 0, i<— г — l,fe<— и вернуться
к шагу А2.
А4. [Поглощение bj.] Установить Ci+j <— bj — к, di+j <— 1, j <— j — 1, <— /с -f- 1
и вернуться к шагу А2. I
Имеется также и метод, работающий слева направо.
В1. [Инициализация.] Установить i <— 1, j <— 1, k<-r-f «и ar+i <— < оо.
B2. [Ветвление.] Прекратить работу, если к = 0. В противном случае установить
к <— к — 1, затем перейти к шагу В4, если ai ^ bj — к.
83. [Поглощение а*.] Установить Q+j-i <— сц, d^+j—i <— 0, г«— г + 1и вернуться
к шагу В2.
84. [Поглощение bj.] Установить Ci+j-i <— bj — к, d^+j-i 1> .7 <~ .7 + 1 и вернуться
к шагу В2. I
В обоих случаях ветвление заставляет полученную последовательность
удовлетворять условию с\ ^ • • • ^ сг+8. Заметим, что cr+s = min(ar,6s) и с\ = max(ai,6i —
-Г-5 + 1).
Таким образом, мы доказали тождество из упражнения 17 (с) другим способом.
Расширение этой идеи приводит к комбинаторному доказательству "замечательной
формулы с многими параметрами" Рамануджана:
1 _ bzk+n ~ (1 - a~lbzk) (1 - a-lw~lzk+l) (l - awzk) (l - zfc+1)
Е»"П& = П
fc=0- - k=o ^-*-lbw-lzk)(l-a-4^){l-az^ '
[Ссылки: G.H. Hardy, Ramanujan (1940), Eq. (12.12.2); D. Zeilberger, Europ. J.
Combinatorics, 8 (1987), 461-463; A.J. Yee, J. Comb. Theory, A105 (2004), 63-77.]
19. [Crelle, 34 (1847), 285-328.] Согласно упражнению 17 (с), сумма по к, упомянутая
в указании, равна
^ l{z-bz)-"(z-bzl) (\-uz)..-(\-uzl) \ у, l-auzm
^V (l-z)-"(l-zl) (l-auz)---(l-auzl) I ' П 1 - uz™ '
^0 v / v / v /v /у m=l
суммирование по / аналогично, с заменой и+-*у,а<->Ьик<г^1. Дальнейшее
суммирование по к и I приводит при b = auz к
п
(1 - uvzm+l) (1 - auz™)
(1 - uzm) (1 - vzm)
m=l 4 7 4 7
Положим теперь и ~ wxy, v = l/(yz), a = l/x и b = wyz. Приравняйте это
бесконечное произведение к сумме по I.
20. Для получения р (п) нужно сложить или вычесть примерно y/Sn/З ранее
вычисленных значений, большинство из которых имеют длину О {у/п) бит. Следовательно,
р{п) можно вычислить за О (п) шагов, т.е. общее время составляет 6 (п2).
(Непосредственное использование (17) дает О (п5/2) шагов.)
150 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
21. Поскольку J27=o Я (п) zn = (1 + z) (l + z2) ... равно (l - z2) (l - zA) • • • P (z) =
= (l-z2-z4 + z10 + z14 -z24 ) P (z), имеем
Я (n) — P (n) - P (n ~ 2) - p (n - 4) + p (n - 10) + p (n - 14) - p (n - 24) .
[Имеется также "чисто рекуррентное соотношение", в котором используется только
а(п), аналогичное рекуррентному соотношению для о(п) из следующего
упражнения.]
22. Из (21) мы имеем Y^Li а (п) *П = Em,n^i тгШП = z£ lnр (z) = (z + 2*2 ~ 5*5 ~
- 7z7 + • • • )/(1 - z - z2 + z5 + z7 + • • •). [Bibliotheque Impartiale, 3 (1751), 10-31.]
23. Установим и = w и v = z/w. Это даст нам
оо оо
JJ (1 - zkw) (1 - zk/w) (1 - zk) = J2 (-l)"wnzn(n+1)/7(l-™) =
к—I n= —00
00
= 2 fa"" - *"(n+1)/2/(l - w) =
n=0
00
= £ (-1)71 (™~n + • • • + ™n) *n(n+1)/2.
n=0
Эти преобразования корректны при |г| < 1 и ги, близком к 1. Теперь положите w = 1.
[См. § 57 статьи Сильвестера, упомянутой в ответе к упражнению 14.
Доказательство Якоби можно найти в § 66 его монографии Fundamenta Nova Theoriae
Functionum Ellipticarum (1829).]
24. (а) Согласно (18) и упражнения 23, [zn]A(z) = £ (-l)j+k (2k + 1) [3j2 + j +
+ к2 + к = 2n], где сумма берется по всем целым числам j и к. Если п mod 5 = 4,
ненулевые члены образуются только при j mod 5 = 4 и к mod 5 = 2; однако тогда
(2к + 1) mod 5 = 0.
(b) В соответствии с формулой 4.6.2-(5), если р — простое число, то В (z)p =
= В (zp) (moduloр).
(c) Поскольку A (z) = P(z)~A, примем В (z) = Р (z) [Proc. Cambridge Philos.
Soc. 19 (1919), 207-210. Аналогично доказывается, что р (п) кратно 7 при п mod 7 =
= 5. Рамануджан дошел до получения красивых формул р (Ъп + 4)/5 = [zn] Р (z)6 /
/P(z5); p(7n + 5)/7 = \zn] (p(z)4/P (z7)3 + 7zP(z)sjP (z7)7). Аткин и Свиннер-
тон-Дайр в работе Proc. London Math. Soc. (3), 4 (1953), 84-106 показали, что
разбиения Ъп + 4 и 7п + 5 можно разделить на классы равного размера в соответствии
со значениями (наибольшая часть — количество частей), взятыми по модулю 5 или
7, как предположил Ф. Дайсон (F. Dyson). Имеется немного более сложное
доказательство с использованием комбинаторной статистики того, что р(п) mod 11 = 0,
если п mod 11 = 6; см. F.G. Garvan, Trans. Amer. Math. Soc, 305 (1988), 47-77.]
25. [Соотношение из указания можно доказать, дифференцируя обе части
приведенного тождества. Оно представляет собой частный случай у — 1 — х красивой
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 151
формулы, открытой Абелем в 1826 году:
Li2 (х) + Li2 (у) = Li2 (у^) + Li2 (i~r^) -
-U>{(i-x7(i-y))-ln{1-x)ln{1-y)-
См. статью Абеля (Euvres Completes, 2 (Christiania: Gr0ndahl, 1881), 189-193.]
(a) Пусть / (ж) = In (1/(1 - e~xt)). Тогда / (ж) ds = -Li2 (e~tx)/t и /<п> (ж) =
= {-t)netx^2k (nkl )ektx/(etx — l)n, так что формула суммирования Эйлера дает
нам
Li2 (е-*)/*+^1п(1/(1-е-*))+0(1) =
^ «(2) + * In (1 - е-*) - Li2 (1 - е-*)) _
<- 1/2Ы + 0(1)
= C(2)/*+|lnt + 0(l)
при t —> 0.
(b) Мы имеем е"»*»*/" = Em,n>i Ji-S (mnt)~Z r (z) ^г/п; сумми-
рование дает ^ J"J**^ С +1) С iz) t~z^ {z) dz. Полюс в z = l дает С(2)Д;
двойной полюс в z = 0 дает —С (0) 1п£ + С' (0) = | ln£ — \ 1п27г; полюс в z — — 1 дает
-С (-1) С (0) * = B2B\t = —£/24. Нули £ (г + 1) С (z) сокращают другие полюса Г (г),
так что результатом является 1пР (е~£) = £ (2)/£ + ^ In (t/2ir) — £/24 + О (tM) для
произвольно большого М.
26. Пусть F (п) = YlkLi e~fc2//n. Мы можем использовать (25) либо с f (х) = е~х'1 Iй
[х > 0] + ^6хо, либо с / (ж) = е~х 1п для всех ж, поскольку 2F (n) + l = ]CbL-oo e_fc2^n-
Выберем второй способ. Тогда правая часть (25), при 0 = 0, представляет собой
быстро сходящийся ряд
Л/ „
т= — М _сю т= —оо
если мы выполним подстановку и = y + nmni; значение интеграла равно л/тт. [Этот
результат представляет собой формулу (15) на с. 420 оригинала статьи Пуассона.]
27. Пусть дп = у/к/Ые"'12'*2'** cos ^. Тогда / (j/) cos2nmy dy = g2m+i + £2m-i,
так что
e-t/24 00 00
р / _t4 = 01 + 0-1 + 2 XI (#2m+l + 02m-l) = 2 02т+Ь
^ 7 т=1 т= —оо
Члены рвп-и и 0-бп-ъ объединяясь, дают n-й член (30). [См. M.I. Knopp, Modular
Functions in Analytic Number Theory (1970), Chapter 3.]
28. (a-d) [См. Trans. Amer. Math. Soc, 43 (1938), 271-295.] В действительности
Лемер нашел точные формулы для Аре (п) с использованием символов Якоби из
упражнения 4.5.4-23:
152 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
Л2е (п)
А3е (П)
Аре (П)
-1
га
-уе/2
sin
v J V 3 J уД 3e+1
V
47ГШ
cos ■
если (3m)2 = 1 - 24n (modulo 26+3);
если (8m)2 = 1 - 24n (modulo 3e+1);
если (24m)2 = 1 - 24n (modulo pe),
p ^ 5 и 24n mod рф\\
если 24n mod p = 1 и p ^ 5.
(e) Если n = 2a36pf1 • • • p\*, где 3 < p\ < • • • < pt и ei... et ф О, вероятность того,
что Afc (n) ^ 0, равна 2"* (l + (-l)[ei=1]/pi) ... (l + (-l)Iet=11M).
29. Z\Z2 ... zm/((l - Zi) (1 - Z\Z2) ... (1 - ZiZ2 . . . Zm))-
30. (а) I n+x I; (b) I m+n I согласно (39).
31. Первое решение [Marshall Hall, Jr., Combinatorial Theory (1967), § 4.1]:
непосредственно из рекуррентного соотношения (39) можно показать, что для 0 ^ г <
< к\ существует полином fk,r (п) = пк~1/(к\ (к — 1)!) + О (пк~2), такой, что | £ | =
= /п,п mod к\ (jl)'
Второе решение: поскольку (1 — z)... (1 — zm) = Ylp±q (l ~~ e27rip^qz) , где
произведение берется по всем сокращенным дробям p/q, 0 ^ р < о, коэффициент
при zn в (41) может быть выражен как сумма корней единицы, умноженных на
полиномы степени п, т.е. Y2p±q e2nipn^qfpq (п)> где fpq (п) ~ полином степени, меньшей
чем m/q. Таким образом, существуют константы, такие, что \2 \ = ain+a2 + (—\)п а3;
| з | = bin2 + b2n + 63 + (-l)n 64 + ипЬъ + <^~n^6, где cj = е2™/3, и т.д. Эти константы
определяются при помощи значений для малых п, и для первых двух случаев
= 2П"4 + 4(-1) 5
12П 72
Отсюда следует, что |§| равно целому числу, ближайшему к п2/12. Аналогично:
| 21 — ближайшее к (п3 + Зп2 — 9п [п нечетно])/144 целое число.
[Точные формулы для \2\, |з| и 121? без упрощения с использованием функции
"пол", были найдены в работе G.F. Malfatti, Метопе di Mat. е Fis. Societa Italiana,
3 (1786), 571-663. В.Д.А. Колмэн (W.J.A. Colman) в Fibonacci Quarterly, 21 (1983),
272-284, показал, что | g | — ближайшее к (n4 + 10n3 + 10n2 - 75n - 45n (-l)n)/2880,
и привел аналогичные формулы для \q \ и | Ц \ .\
32. Поскольку | m+n | ^ р (п), причем равенство выполняется тогда и только тогда,
когда га ^ п, получаем, что \ш \ ^ р (п — га), и равенство достигается тогда и только
тогда, когда 2га ^ п.
33. Разбиение на га частей соответствует не более чем га! композициям;
следовательно, (mZ\) ^ гп\ | ш |. Следовательно,р(п) ^ (п — 1)!/((п — га)!га! (га — 1)!), и при
га = у/п приближенная формула Стирлинга доказывает, что lnp(n) ^ 2у/п — Inn —
- \ -1п2тг.
34. а\ > а2 > • • • > аш > 0 тогда и только тогда, когда а\ — га -Ь 1 ^ а2 — га -Ь 2 ^
• • • ^ om ^ 1, а разбиения на га различных частей соответствуют га! композициям.
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 153
Таким образом, с учетом ответа к предыдущему упражнению,
1_ In- 1
ml [т-1
1 (п + т(т-1)/2у
^ ml \ т-1 i
[См. Н. Gupta, Proc. Indian Acad. Sci., A16 (1942), 101-102. Подробная
асимптотическая формула для | ^ | при п = G (га3) имеется в упражнении 3.3.2-30.]
35. (а) х = ± In £ «-0.194.
(b) х = ^ In ^ — ^ In In 2 ^ 0.092; в общем случае х = ^ (in ^ — In In •
(c) J°^ooxdF(x) = ^ (Си)~2 (\пи)е~1^Си^и = -± }™ (In С + \nv) e~vdv =
= (7 - In С)/С« 0.256.
(d) Аналогично, х2е~Сх exp (-е~Сх/С) dx = (72 + С (2) - 27 In С + (In С)2) /
/С2 « 1.0656. Таким образом, дисперсия равна £ (2)/С2 = 1 (в точности!).
[Распределение вероятности е-е(а х)/Ь обычно называется распределением Фише-
ра-Типпетта; см. Proc. Cambridge Phil. Soc, 24 (1928), 180-190.]
36. Сумма по всем jr — (т + г — 1) ^ • • • > j2 — (т + 1) ^ j\ - т ^ 1 дает
Е^
-Е
а
t — rm — г (г — 1)/2
г
2
P(n-t)
р{п)
а*
1 -а 1
n
-1/2
с*-1 — 1 a-2 — 1
^a"»(l+0 (»-^))+S =
— 1/2
• • • - exp (-Crx + О (rn"1/2+2^) + д,
где E1 — член ошибки, учитывающий случай t > nxl2Jr£. Старший член п */2/
/(a~j -1) равен ^ (1 + О (jn"1/2)). Легко убедиться, что £ = О (nlogne~Cn£),
даже если мы воспользуемся грубой верхней границей | t-rm-r(r-i)/2 | ^ ^ так как
t>xN
]Г tre~t/N = О tre~t/Ndt = О (Nr+1xre'x/(l - r/x)),
где N = в (у/п), х = О (п£), г = O(logn).
37. Такое разбиение учитывается один раз в So, q раз в Ei, (\) раз в £2, • • •; т.е. оно
учитывается ровно Y^j=o (~~^У (?) = (~1)Г (9гХ) Р33 в частичной сумме,
оканчивающейся членом (—1)ГЕГ. Это количество не превышает Sqo при нечетном г, и не
меньше Sqo при г четном. [Схожая аргументация показывает, что обобщенный
принцип из упражнения 1.3.3-26 также обладает указанным свойством. Ссылка: С. Воп-
ferroni, Pubblicazioni del Reale Istituto Superiore di Scienze Economiche e Commerciali
di Firenze, 8 (1936), 3-62.]
38. zl+rn~l (l+™-~i2)z = zl+rn~l (l-zl)...(l- zl+m-2)/((l - z)... (1 - z™-1)).
39. Пусть а = а\... аш — разбиение не более чем на т частей; пусть также / (а) =
= оо, если а\ ^ /; в противном случае / (а) = min{j|ai > / + aJ+i}. Пусть gk —
154 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
производящая функция для разбиений с / (а) > к. Разбиения с / (а) = к < оо
характеризуются неравенствами
Таким образом, а\а2 ... ат = (bk + / + 1) (h + 1)... (6/c-i + 1) b^+i • • • Ьт, где
/ (6i... 6т) ^ /с; обратное также верно. Отсюда следует, что дк = #fc-i — zl+kgk-i>
[См. American J. Mafcn., 5 (1882), 254-257.]
40. ^т+1)/2(^)г = (z-^)(^2-zz)...(«m-zz)/((l-z)(l-z2)...(l-«m)).
Эта формула, по сути, представляет собой z-номиальную теорему из упражнения
1.2.6-58.
41. См. G. Almkvist and G.E. Andrews, J. Number Theory, 38 (1991), 135-144.
42. А. Вершик [Functional Anal. Applic, 30 (1996), 90-105, Theorem 4.7] привел
формулу
1 — P~CiP <— 1 — p~C9 , r-
r-ck/^i , -сак1фг л
1 _ e-c(0+<p) e ^ I _ е-с{В+ф) C
где константа с должна быть выбрана как функция от в и <р так, чтобы площадь
области была равна п. Эта константа с отрицательна, если вер < 2, и положительна,
если 6ip > 2; при вер = 2 область вырождается в прямую линию
к ак
Н р= ~ 1.
При (р = оо мы получаем с = ^/1/г2 (£)> где t удовлетворяет соотношению 9 =
43. Мы имеем а\ > а2 > • • • > ак тогда и только тогда, когда сопряженное разбиение
включает каждую из частей 1,2,...,к — 1 минимум один раз. Количество таких
разбиений равно р(п - к (к — 1)/2); это общее количество включает п-(/с-^1№-2)/2
случаев ак = 0.
44. Считаем, что п > 0. Количество разбиений с разными наименьшими частями
(или с одной единственной частью) равно р (п + 1) — р (п) — количеству разбиений
п + 1, которые не заканчиваются единицей, так как мы получаем первые из вторых
путем изменения наименьшей части. Таким образом, окончательный ответ — 2р (га) —
— р(п + 1). [См. R.J. Boekovic, Giornale de' Letterati (Rome, 1748), 15. Количество
разбиений, в которых равны три меньшие части, равно Зр (п)—р (га + 1)—2р (га + 2)+
-hp(га + 3); аналогичные формулы могут быть выведены и для других ограничений
на меньшие части разбиений.]
45. В соответствии с формулой (37) мы имеем
р(п- j)/p (n) = 1 - Cjn~^2 + (C2j2 + 2j)/(2ra)-
- (SC3f + 60Cj2 + Cj + 12С-^)/(48п3/2) + О (j4n~2).
46. Если n > 1, то T2 (ra) — p (ra - 1) - p (n - 2) ^ p (n) - p (n - 1) = T2 (га), так как
p (ra) — p (n — 1) — количество разбиений га, не окачивающихся единицей. Каждое
такое разбиение га — 1 дает разбиение для га при увеличении наибольшей его части.
Однако эта разность весьма мала: (Т2 (га) — Т2 (п))/р (га) = С2/га -h О (га-3/2).
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 155
47. Тождество в указании получается путем дифференцирования (21); см.
упражнение 22. Вероятность получения количества частей с\... сп при с\ + 2с2 Л \-псп = п
по индукции по п равна
[Combinatorial Algorithms (Academic Press, 1975), Chapter 10.]
48. Вероятность того, что j имеет определенное фиксированное значение на шаге
N5, равна 6/(tt2j2) + О (п-1/2), а среднее значение jk имеет порядок у/п. Среднее
время, затрачиваемое на шаге N4, равно О (п), так что среднее время работы имеет
порядок п3/2. (Попробуйте самостоятельно провести более точный анализ.)
49. (а) Имеем F (z) = ft (2), где Fk(z) — производящая функция для всех
разбиений, наименьшая часть которых не меньше к, а именно ((1_Jgfc)(11_gfe+i)—у — 1-
(Ь) Пусть Л (n) = [zn] Fk (z)/p (п). Тогда /1 (n) = 1, /2 (n) = 1 - p (n - l)/p (n) =
= Cn-1'2 + 0(n"1), /3(n) = (p(n)-p(n-l)-p(n-2)+p(n-3))/p(n) =
= 2C2n-1 + О (n"3/2), /4(n) = 6C3n"3/2 4- О (n~2) (см. упражнение 45).
Оказывается, что Д+i (n) = k\Ckn~kl2 4- О (n~(fc+1)/2); в частности, /5 (n) = 0(n~2).
Следовательно, /5 (n) H Ь /п (n) = О (n_1), так как Д+i (n) ^ Д (п).
Полученные результаты дают нам [zn] F (z) = р (п) (l 4- С/у/п 4- О (п~1)).
50. (а) ст (т 4- к) = cm_i (т — 1 4- к) 4- ст (к) = т — 1 — к 4- с (к) 4- 1 по индукции
при 0 ^ А; < т.
(b) Потому что | т+к | = р(к) для 0 ^ к ^ т.
(c) Когда n = 2т, алгоритм Н, по сути, генерирует разбиения т, и j — 1 является
второй наименьшей частью в разбиении, сопряженном к только что
сгенерированному (исключение составляет случай j — 1 = m после генерации разбиения 1... 1,
поскольку сопряженное к нему разбиение состоит из одной части).
(d) Если все части а превышают к, то пусть akq+1j соответствует а (к 4-1)-
(e) Производящая функция Gk (z) для всех разбиений, вторая наименьшая часть
которых не меньше к, представляет собой (z Н Ь zk~l) Fk (z)+Fk (z)—zk/(l — z) —
= Fk+i (z)/(l — z), где Fk (z) определена в предыдущем упражнении. Следователь-
но, С (z) = (F (г) - Fx (*))/(1 - z) + z/{\ - zf.
(f) Как и в предыдущем упражнении, можно показать, что [zn] Gk (п)/р(п) =
= О (n-fe/2) при к ^ 5; следовательно, с(т)/р(т) = 1 4- О (т 1/2). Отношения
(с (т) 4- 1)/р (т), которые быстро вычисляются для малых т, достигают
максимального значения 2.6 при m = 7, после чего монотонно уменьшаются. Таким
образом, внимательное рассмотрение асимптотической ошибки завершает
доказательство.
Примечание: Б. Фристедт (В. Fristedt) [Trans. Amer. Math. Soc, 337 (1993), 703-
735] доказал среди прочего, что количество к в случайном разбиении п больше Сху/п
с асимптотической вероятностью е~х.
52. В лексикографическом порядке | 64^13 | разбиений 64 имеют а\ ^ 13; | 5%10 |
разбиений имеют а1 = 14иа2^10и т.д. Таким образом, с учетом указания, раз-
Ск кр (п — jk)
156 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
биение 14 11 9 6 4 3 2 I15 предшествует в лексикографическом порядке ровно
р(64) — 1000000 разбиениям, что делает его миллионным в обратном
лексикографическом порядке.
53. Как и в предыдущем упражнении, | f§ | разбиений 100 имеют а\ = 32 и а2 ^ 12
и т.д. Таким образом, лексикографически миллионное разбиение, в котором а\ = 32,
имеет вид 32 13 12 8 76 5 5 I12. Алгоритм Н дает сопряженное к нему, а именно
20 88865433332 I19.
54. (а) Очевидно, истинно. Этот вопрос — всего лишь разминка.
(b) Истинно, хотя это не так очевидно. Если аТ = а[а2 •.то, рассматривая
диаграмму Феррерса, получим
а\ Н Ь ak + а[ Н Ь а'к < п + Ы при к ^ а[,
причем равенство достигается при к = а[. Таким образом, если а /3 и а[ + • • • +
+ а[ > Ъ[ Н h для некоторого I, при минимальном I мы получаем п + kl = Ь\ +
Н h+ &i Н \-Ь[ < а\ Н hал: Ч-ах Ч hа{ < n + где /с = Ь{, т.е. приходим
к противоречию.
(c) Рекуррентное соотношение Ck = min (ai Н h a*, bi Н h bk) — (ci + h
+ Cfc_i), очевидно, определяет наибольшую нижнюю границу, если C1C2 ...
представляет собой разбиение. Это так, поскольку если с\-\ + Ck = а\ Н К ak, то
0 ^ min(afc+i,bfc+i) ^ min (a*+i, fcfc+i + bi H h 6* - ai a*) =
= Cfc+i ^ afc+i < afc = ск + (ci H h cfc_i) - (ai H h afe_i) < c*.
(d) a V /3 = (ат /\ (3T)T (двойное сопряжение необходимо потому, что
ориентированное на максимум рекуррентное соотношение, аналогичное соотношению из
пункта (с), может не выполняться).
(e) аЛ/3 имеет max (I, га) частей, а с* V/3 — min (/, га) частей. (Рассмотрите первые
компоненты их сопряжений.)
(f) Истинно для а Л /3, в соответствии с выводом (с). Ложно для а V (3 (хотя
и истинно на рис. 32); например, (17 16 5 4 3 2) V (17 9 8 7 6) = (17 16 5 5 4).
[Источник: Т. Brylawski, Discrete Mathematics, 6 (1973), 201-219.]
55. (а) Если а^/3иа^=7^/3, где 7 = C1C2 ..., то мы имеем а\Л ЬQ>k = с\ Н Ь
+ с/с = 61 + h fcfc для всех к, за исключением /с = Z и & = Z + 1; таким образом, а
покрывает (3. Следовательно, /Зт покрывает аТ.
Обратно, если а (3 и а ф (3, можно найти 7 /3, такое, что ah 7 или 7Т^ат,
следующим образом: найдем наименьшее к, для которого > bk, и наименьшее
/, для которого ak > Если ai > aj+i + 1, определим 7 = C1C2... следующим
образом: Ck = а& — [fc = Z] + [fc = Z + 1]. Если а/ = aj+i + 1, найдем наименьшее такое,
что a/+i > a|/+i, и Cfc = ajk - [fc = /'] + [к = V + 1], если aj > aj/+i + 1; в противном
случае Ck = — [fc = /] + [к = /' + 1].
(b) Пусть а и /3 представляют собой строки из п нулей и п единиц, как в (15).
В этом случае ah /3 тогда и только тогда, когда а —► /3, а /Зт>- ат тогда и
только тогда, когда a => (3, где '—означает замену подстроки вида 011^10 подстрокой
101901, а означает замену подстроки вида 010910 подстрокой 100901 для
некоторого q ^ 0.
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 157
(c) Разбиение покрывает не более [а\ > а2] Н Ь [o>m-i > ат] + [о>т > 2] других
разбиений. Разбиение а = (п2 + щ — 1) (п2 — 2) (пз — 3)... 21 максимизирует эту
величину в случае аш = 1; случаи с am ^ 2 не дают никакого улучшения.
(Сопряженное разбиение (п2 — 1) (п2 — 2)... 21П1+1 обеспечивает ту же степень покрытия.
Следовательно, и а и аТ также покрываются максимальным количеством других.)
(d) Что то же самое, последовательные части р отличаются не более чем на 1,
и наименьшая часть равна 1; краевое представление не содержит единиц, следующих
одна за другой.
(e) Используем краевое представление и заменим >- отношением —>. Если а —» а\
и а —> а1? можно легко показать наличие строки /3, такой, что а\ —> (3 и ai —> /3,
например:
101«0111г10
/ \
oimoino lomoiroi .
\ /
oimioroi
Пусть /3 = /32 > t>- /Зш, где /Зт минимально. Тогда по индукции по max (к, к')
получаем к — т и а/с = /Зт; также к' — т w а'к, = /Зт.
(f) Установить /3 <— ат; затем устанавливать /3 <— /3' до тех пор, пока /3 не
станет минимальным, используя любые подходящие разбиения /3', такие, что /3>- /3'.
Искомое разбиение — /Зт.
Доказательство: пусть р (а) — общее значение ak = а'к, из пункта (е); мы
должны доказать, что из а >р /3 вытекает /л (а) /i(/3). Существует последовательность
а = ао,..., а/с = /3, в которой а^ —» или aj => а^+i для всех 0 ^ j < к. Если
ао —► ai, мы имеем /i (а) = // (ai); таким образом, этого достаточно, чтобы доказать,
что из a /3 и a —► а7 вытекает а' )р ц (/3). Однако мы имеем, например,
100*011Г10
* \
oionoino 100П011Г01 ,
\ *
010П10Г01 0109"110011r01
поскольку можем считать, что q > 0; прочие случаи аналогичны.
(g) Частями Лп являются ак = п2 + [к ^ ni] — к для 1 ^ к < п2\ частями
являются bk — п2—к+[п2 — к <п\] для 1 ^ к < п2. Алгоритм из пункта (f) достигает
из п1 после (П23ь1) — (712 2™ ) шагов, поскольку каждый шаг увеличивает ]Г кЬк =
= £(вк2+1)на1.
(h) Путь п, (п - 1) 1, (п - 2) 2, (п - 2) 11, (п - 3) 21, ..., 321n"5, 31n"3, 221п"4,
21п~2, 1п длиной 2п - 4 при n ^ 3 является кратчайшим.
Можно показать, что самый длинный путь имеет т — 2 (ng ) + ni (ri2 — 1) шагов.
Один из таких путей имеет вид ао,..., а/с,..., а/,..., ат, где ао = га1; а^ = Лп;
ai = Л^; aj t>- aJ+i для 0 ^ j < /; кроме того, aj+1 t>- aj для к ^ j < га.
[Источник: С. Greene and D.J. Kleitman, Europ. J. Combinatorics, 7 (1986), 1-10.]
158 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
56. Положим Л = и\... иш и р = v\... уш. Приведенный далее (неоптимизирован-
ный) алгоритм применяет теорию из упражнения 54 для генерации разбиений в со-
лексном порядке, поддерживая а = а\а2 • •. ат =4 р и аТ = 6162 ... bi =^ Хт. Для того
чтобы найти следующий за а элемент, мы должны сначала найти наибольшее j,
такое, что bj может быть увеличено. Тогда мы имеем (3 = Ь\... bj-i (bj + 1) 1... 1 ^ Ат,
следовательно, искомый следующий элемент — /ЗтАр. Алгоритм поддерживает
вспомогательные таблицы Tj = bj + h 6/, Sj = vi H Ь Vj и tj = w3; + Wj+i + • • •, где
AT = W\W2 ....
Ml. [Инициализация.] Установить q <— 0, к <— щ. Для j = 1,..., га, пока Uj+\ < к,
установить tk <— q q + j и к <г- к — 1. Затем вновь установить q <■— 0 и для
j = 1,..., га установить aj <— Vj, Sj <— q «— q + а^. Затем еще раз установить
д<—0и&<—Z<— ai. Для j — 1,..., га, пока aj+i < к, устанавливать bk <— j,
Пь <— g <— g + и fc *— А; — 1. И наконец установить <— 0, 60 <— 0, < 1.
М2. [Посещение.] Посетить разбиение а\... am и/или сопряженное разбиение 61...
МЗ. [Поиск j.] Пусть j — наибольшее целое число, меньшее /, такое, что r^+i > tj+i
и bj ф bj-i. Завершить работу алгоритма, если j = 0.
М4. [Увеличение bj.] Установить х *— r^+i — 1, к bj, bj <— к + 1 и a^+i <—j.
(Предыдущее значение a^+i было равно j — 1. Теперь мы переходим к
обновлению ai... а* с использованием, по сути, метода из упражнения 54 (с) для
распределения х точек по столбцам j + 1, j + 2, —)
М5. [Мажоризация.] Установить z <— 0, а затем для j = 1,..., к выполнить
следующее: установить х <— х + j, 2/ <— min (х, s^), ai у — z, z ^ у. Если г = 1,
установить / <— р <— а* и g <— 0; если г > 1, то, пока р > ai, устанавливать
bp^-i — 1, rp<^q<—q + i — 1, р<—р — 1. Наконец, пока р > j, устанавливать
bp <— к, rp <— q <— q + к, р <— р — 1. Вернуться к шагу М2. I
57. Если А = /лт, очевидно, что существует только одна такая матрица, по сути
представляющая собой диаграмму Феррерса для А. Условие А =^ рт необходимое,
поскольку, если рт = b\b2 ..., мы имеем Ь\ + • • • + bk = min (ci, к) + min (C2, к) +
+ • • •, и эта величина не должна быть меньше, чем количество единиц в первых к
строках. Наконец, если существует матрица для А и р и если А покрывает а, то
можно легко построить матрицу для аир путем перемещения 1 из любой заданной
строки в другую, которая имеет меньшее количество единиц.
Примечания: полученный результат часто называют теоремой Гейла-Райзера
по знаменитым статьям Д. Гейла (D. Gale) [Pacific J. Math., 7 (1957), 1073-1082]
и Г.Д. Райзера (H.J. Ryser) [Canadian J. Math., 9 (1957), 371-377]. Однако
количество 0-1 матриц с суммами строк А и суммами столбцов р представляет собой
коэффициент при мономиальной симметричной функции ]Г) х^ ... в
произведении элементарных симметричных функций еГ1еГ2..., где
er = [zr] (1 + хгг) (1 + x2z) (1 + x3z)....
В этом контексте полученный результат известен, как минимум, с 1930-х годов; см.
формулу Д.Э. Литтлвуда (J.E. Littlewood) для Пт,п^о f1 + в ^тос- London
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 159
Math. Soc. (2), 40 (1936), 40-70. [Гораздо ранее, в Philosophical Trans., 147 (1857),
489-499, А. Кейли (A. Cayley) показал, что лексикографическое условие Л ^ /лт
является необходимым.]
58. [R.F. Muirhead, Proc. Edinburgh Math. Soc, 21 (1903), 144-157.] Условие а ^ (3
является необходимым, поскольку мы можем положить х\ = • • -хк = х и хк+\ =
= • • • = хп = 1 и при этом устремить х —> оо. Оно достаточное, поскольку мы
должны доказать его, только когда а покрывает (3. Тогда, если, например, части
(а\, CL2) становятся (а\ — 1, а2 + 1), левая часть равна правой плюс неотрицательная
величина
_L_ a2 am / ai-a2-l _ _ai-a2-lW_ _ ~ \
[Исторические примечания: статья Мюрхеда — наиболее раннее упоминание
концепции, ныне известной как мажоризация; вскоре после Мюрхеда
эквивалентное определение было дано М.О. Лоренцем в Quarterly Publ. Amer. Stat. Assoc., 9
(1905), 209-219, где он интересовался исследованиями неравномерного
распределения богатства. Еще одна эквивалентная концепция была сформулирована И. Шуром
в Sitzungsberichte Berliner Math. Gesellschaft, 22 (1923), 9-20. Название
"мажоризация" было введено Харди (Hardy), Литтлвудом (Littlewood) и Пойа (Polya),
которые описали ее наиболее важные свойства в Messenger of Math., 58 (1929), 145-152;
см. упражнение 2.3.4.5-17. Полностью посвящена данной теме прекрасная книга
А.В. Маршалла (A.W. Marshall) и И. Олкина (I. Olkin) Inequalities (Academic Press,
1979).]
59. Данной симметрией должны обладать по одному пути для п = 0,1,2,3,4 и 6.
Существует один такой путь для п = 5, а именно 11111, 2111, 221, 311, 32, 41, 5. Для
п = 7 имеется четыре таких пути:
1111111,211111,22111,2221,322,3211,31111,4111,511,421,331,43,52,61,7;
1111111,211111,22111,2221,322,421,511,4111,31111,3211,331,43,52,61,7;
1111111,211111,31111,22111,2221,322,3211,4111,421,331,43,52,511,61,7;
1111111,211111,31111,22111,2221,322,421,4111,3211,331,43,52,511,61,7.
Других путей нет, поскольку для всех п ^ 8 имеется, как минимум, по два
самосопряженных разбиения (см. упражнение 16).
60. Вместо L (6,6) используйте (59); в противном случае везде используйте V (4,6)
и V (3,5).
В М (4,18) вставьте 444222, 4442211 между 443322 и 4432221.
В М(5,11) вставьте 52211, 5222 между 62111 и 6221.
В М(5,20) вставьте 5542211, 554222 между 5552111 и 555221.
В М (6,13) вставьте 72211, 7222 между 62221 и 6322.
В L (4,14) вставьте 44222, 442211 между 43322 и 432221.
В L (5,15) вставьте 542211, 54222 между 552111 и 55221.
В L (7,12) вставьте 62211, 6222 между 72111 и 7221.
62. Утверждение выполняется при п — 7,8 и 9, за исключением двух случаев: п = 8,
т = 3, а = 3221; п = 9, т = 4, а = 432.
160 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
64. Если п = 2kq, где q нечетно, обозначим через ип разбиение (2fc)9, т.е. q частей,
равных 2к. Рекурсивное правило
В (п) = В (п - 1)R 1, 2 х Б (п/2)
при п > 0, где 2 х В (п/2), означает удвоение всех частей В (п/2) (или пустой
последовательности, если п нечетно), определяет путь Грея, начинающийся с u;n_il
и заканчивающийся ип (в предположении, что В (0) — единственное разбиение 0).
Таким образом,
5(1) = 1; 5(2) = 11,2; 5(3) = 21,111; 5(4) = 1111,211,22,4.
Среди множества замечательных свойств этой последовательности имеется
следующее: при четном п
В (п) = (2 х В (0)) ln, (2xJ5 (1)) 1п"2, (2x5 (2)) Г~\ ...,(2x5 (п/2)) 1°;
например:
5(8) = 11111111,2111111,221111,41111,4211,22211,2222,422,44, 8.
Приведенный далее алгоритм без использования циклов генерирует 5 (п) для п > 2.
К1. [Инициализация.] Установить со <— ро <— 0, pi <— 1. Если п четно, установить
ci <— n, t <— 1; в противном случае пусть n—1 = 2fcg, где g нечетно, и установить
ci <- 1, с2 <- д, р2 <- 2fc, t <- 2.
К2. [Четное посещение.] Посетить разбиение р£*.. .р^1. (Сейчас сН \-с\ четно.)
КЗ. [Изменение наибольшей части.] Если q = 1, разделить наибольшую часть: если
pt ф 2pt_i, установить с* <— 2, р* <— pt/2; в противном случае установить
сг_1 <— ct_i 4-2, t <— * — 1. Но, если с* > 1, следует объединить две наибольшие
части: если ct = 2, установить ct <— 1, pt *— 2pt \ в противном случае установить
ct+-ct- 2, ct+i 4- 1, pt+i <- 2pt, £ <- £ 4-1.
K4. [Нечетное посещение.] Посетить разбиение р\г.. .р^1. (Сейчас сН Ьсх
нечетно.)
К5. [Изменение части, следующей за наибольшей.] Сейчас необходимо применить
следующее преобразование: "Временно удалить с* — [t четно] наибольших
частей, затем применить шаг КЗ, после чего восстановить временно удаленные
части". Говоря более точно, имеется девять случаев:
(1а) Если Ct нечетно и t = 1, завершить работу алгоритма.
(161) Если ct нечетно, ct~i = 1 и pt~i = 2pt-2, установить с*_2 <— Q-2 4- 2,
ct-i <— ct, pt-i <— Pt, t <— t - 1.
(162) Если Ct нечетно, Ct-i = 1 и Pt-\ ф- %Pt-2, установить ct-i <— 2, pt-\ <—
^-Pt-i/2.
(lcl) Если ct нечетно, ct~\ = 2 и pt = 2pt_i, установить ct-\ <— ct 4-1, Pt-i <— Pt,
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 161
(1с2) Если ct нечетно, ct-i = 2 и pt ф 2pt~\, установить ct-\ <— 1, pt-i <— 2pt-i-
(ldl) Если ct нечетно, ct-i > 2 и pt = 2pt-i, установить ct~i <— ct_i — 2, ct <—
<— q + 1.
(Id2) Если с* нечетно, Ct_i >2и^^ 2pt-i, установить ct+i <— ct, pt+i <~ Pt,
ct <- 1, pt <- 2pt_i, ct-i <- q_i - 2, £ «- t + 1.
(2a) Если q четно и pt = 2pt-i, установить ct <— q — 1, q_i <— Ct_i + 2.
(26) Если с^ четно и pt Ф 2pt-\, установить q+i <— с* - 1, pt+i <~ Pt, c* 2,
Pt +— pt/2, t <^ t + 1. Вернуться к шагу K2. I
[Преобразование в шагах КЗ и К5 аннулируют сами себя при повторном выполнении
в строке. Это построение разработано Т. Колтарстом (Т. Colthurst) и М. Клебером
(М. Kleber) в "A Gray path on binary partitions" (в печати). Эйлер рассматривал
количество таких разбиений в § 50 своей статьи в 1750 году.]
65. Если р\1 .. .регт — разложение m на простые множители, количество таких
разложений равно р (е\).. .р (ег), и мы можем положить п = max (ei,..., ег). В самом
деле, для каждого r-кортежа (х\,..., хг), где 0 ^ Xk < р (е^), мы можем положить
rrij = р\1э .. .prrj, где dki... akn — (хк + 1)-е разбиение е&. Таким образом, мы
можем использовать рефлексивный код Грея для r-кортежей совместно с кодом Грея
для разбиений.
66. Пусть а\... аш — m-кортеж, удовлетворяющий указанным неравенствам. Мы
может отсортировать их в невозрастающем порядке aXl ^ ••• ^ аЖтп, где
перестановка х\... хт однозначно определяется при условии устойчивой сортировки;
см. формулу 5-(2).
Если j -< к, имеем aj ^ а&, следовательно, j появляется слева от А: в перестановке
х\... хт. Таким образом, х\... хт — одна из перестановок, получающихся на выходе
алгоритма 7.2.1.2V. Кроме того, j находится слева от А: и при aj = аь и j < к
в соответствии со свойством устойчивости. Следовательно, aXi строго больше аж.+1,
когда xi > Xi+i является "спуском".
Для генерации всех соответствующих разбиений п возьмем каждую из
топологических перестановок х\... хт и сгенерируем разбиения у\.. .ут числа п — t, где
t — индекс х\.. .хш (см. раздел 5.1.1). Для 1 < j < га установим aXj <— yj + tj, где
tj — количество спусков справа от Xj в х\... хт.
Пусть, например, х\... хт = 314592687, и мы хотим сгенерировать все случаи,
для которых аз > а\ ^ а± ^ а$ ^ ад > а2 ^ aQ ^ as > aj. В этом случае t = 1 +
+ 5 + 8 = 14, так что мы устанавливаем а\ <— у2 + 2, а2 <— уб + 1, аз — j/i + 3,
«4 <— Уз + 2, а5 <— 2/4 + 2, аб <— t/7 +1, «7 <— 2/9, а8 <— у8 +1 и а9 <— у5 + 2. Обобщенная
производящая функция YI ZV • • • z9° в смысле упражнения 29 имеет вид
%\%2%\%\%Ь%Ъ Zg 2q
(1 - 23) (1 - Z3Z1) (1 - Z3Z1Z4) (1 - 23212425) ... (1 - 232i24252922262827) '
162 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
Когда любым данным частичным упорядочением является -<, обычная
производящая функция для всех таких разбиений п имеет вид
((1 - z) (1-**)... (1-*«•))'
где сумма берется по всем выходам а алгоритма 7.2.1.2V.
[См. расширения и приложения этих идей в работе R.P. Stanley, Memoirs Amer.
Math. Soc, 119 (1972). Информация о "холмистых" разбиениях имеется в L. Carlitz,
Studies in Foundations and Combinatorics (New York : Academic Press, 1978), 101-129.]
67. Если n + 1 = gi... gr, где все множители gi,... ,gr не меньше 2, мы получим
идеальное разбиение {(gi - 1) • 1, (g2 - 1) • gi, (дз - 1) • gi<?2,..., (gr - 1) • gi •.. gr-i},
которое очевидным образом соответствует смешанной позиционной системе
счисления (имеет значение порядок множителей qj).
И наоборот, таким образом можно получить все идеальные разбиения.
Предположим, что мультимножество М = {к\ • pi,..., кш • рт} является идеальным
разбиением, причем pi < • • • < pm. Тогда должно выполняться условие pj = (к\ + 1)...
(kj-i + 1) для 1 ^ j ^ га, поскольку pj представляет собой наименьшую сумму под-
мультимножества М, которое не является подмультимножеством {к\ • pi,..., kj-i •
'Pj-i}-
Идеальное разбиение п с наименьшим числом элементов получается тогда и
только тогда, когда все qj — простые, поскольку pg — 1 > (р — 1) + (д — 1) для любых
р > 1 и g > 1. Таким образом, например, минимальные идеальные разбиения 11
соответствуют упорядоченным разложениям 2-2-3, 2-3-2иЗ-2-2. [Источник:
Quarterly Journal of Mathematics, 21 (1886), 367-373.]
68. (а) Если di + 1 ^ a3; — 1 для некоторых г и j, мы можем заменить {ai,aj} на
{ai + 1, aj — 1}, таким образом увеличивая произведение на aj—ai — l > 0.
Следовательно, оптимум достигается только при оптимально сбалансированном разбиении
из упражнения 3. [L. Oettinger and J. Derbes, Nouv. Ann. Math., 18 (1859), 442; 19
(1860), 117-118.]
(b) Ни одна из частей не равна 1; если aj ^ 4, можно заменить эту часть на
2 + (aj — 2) без уменьшения произведения. Таким образом, можно считать, что все
части равны 2 или 3. Мы можем улучшить результат, заменяя 2 + 2 + 2 на 3 + 3,
следовательно, в разложении имеется не более двух 2. Оптимум, таким образом,
равен Зп/3, при п mod 3 = 0; при п mod 3=1 оптимум равен 4-3(п"4)/3 = 3(n~4)/3-2-
• 2 = (4/З4/3) Зп/3; при п mod 3 = 2 оптимум - 3^"2)/3-2 = (2/32/3) Зп/3. [О. Meifiner,
Mathematischnaturwissenschaftliche Blatter, 4 (1907), 85.]
69. Все n > 2 имеют решение (п, 2,1,..., 1). Можно "отсеять" прочие случаи ^ N,
начиная с S2---sn <— 1... 1, а затем устанавливая sak-b <— 0 для всех ak — b ^ N,
где а = х\... xt — 1, b = х\ Л + xt — t — 1, к ^ х\ > • • • ^ xt, и а > 1, поскольку
к + х\ И \-xt + (ак — b — t — 1) = кх\... xt. Последовательность (х\,..., xt) должна
рассматриваться, только когда (х\... xt — 1) х\ — (х\ + Ь Xt) < N—t; можно также
продолжать уменьшать N, с тем чтобы sjv = 1. Таким образом, следует испытать
только (32 766, 1486 539, 254887, 1511, 937, 478, 4) последовательностей (хг,...,хг)
при начальном значении N = 230, при этом останутся только значения 2, 3, 4, 6,
24, 114, 174 и 444. [См. Е. Trost, Elemente der Math., 11 (1956), 135; M. Misiurewicz,
Elemente der Math., 21 (1966), 90.]
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 163
Примечания. Похоже, новых значений при N —► оо не появится, но для их
исключения требуется новая идея. Простейшие последовательности (х\,... ,xt) = (3)
и (2,2) исключают все п > 5, для которых п mod 6^0; этот факт можно
использовать для ускорения вычислений в 6 раз. Последовательности (6) и (3,2) исключают
40% оставшихся значений (а именно все п вида 5& — 4 и 5fc — 2); последовательности
(8), (4,2) и (2,2,2) исключают 3/7 остатка; последовательности с t = 1 требуют,
чтобы п — 1 было простым. Последовательности, в которых х\.. .xt = 2Г,
исключают около р(г) вычетов п mod (2Г — 1). Последовательности, в которых х\.. .xt
является произведением г различных простых чисел, исключают около wr вычетов
п mod (xi.. .Xt — 1).
70. Каждый шаг превращает одно разбиение п в другое, и в конечном счете мы
получаем повторяющийся цикл. У многих разбиений просто выполняется циклический
сдвиг по диагоналям, идущим сверху справа влево вниз на диаграмме Феррерса,
превращая ее
из
Xi
#2
#4
#7
#11
#16 • *
#1
#3
#6
#10
#15
#21
#з
#5
#8
#12
#17
#23
#2
£4
#7
#11
#16
#22
х6
#9
#13
#18
#24
#31 • •
#5
#8
#12
#17
#23
#30
#10
#14
#19
#25
#32
#40 * '
• В #9
#13
#18
#24
#31
#39
#15
#20
#26
#33
#41
#50 ' '
#14
#19
#25
#32
#40
#49
#21
#27
#34
#42
#51
#61 * *
#20
#26
#33
#41
#50
#60
другими словами, к ячейкам применяется перестановка р = (1)(2 3)(4 5 6) (7 8 910)
Исключения возникают только тогда, когда р попадает на пустую ячейку над
точкой; например, хю может быть пустой, а хц — нет. Однако в таких случаях новую
корректную диаграмму можно получить, перемещая верхнюю строку вниз в
корректное место после применения р. Такое перемещение всегда снижает количество
занятых диагоналей, так что оно не может быть частью цикла. Таким образом,
каждый цикл состоит только из перестановок р.
Если некоторый элемент на диагонали в циклическом разбиении пуст, то все
элементы следующей диагонали должны быть пусты. Если, скажем, х$ пуст,
многократное применение р сделает х$ соседним с каждой из ячеек x-j, х$, #9? #ю
следующей диагонали. Следовательно, если п = (п22) + (Y ) при п2 > п\ ^ 0, циклические
состояния те же, что при п2 — 1 полностью заполненных диагоналях и п\ точках
в следующей. [Этот результат получен И. Брандтом (J. Brandt) и описан в Proc.
Amer. Math. Soc, 85 (1982), 483-486. Происхождение задачи неизвестно; см. Martin
Gardner, The Last Recreations (1997), Chapter 2.]
71. Когда п=1 + -- - + га>1, начальное разбиение (га — 1) (m — 1) (m — 2)... 211
имеет расстояние га (га — 1) от циклического, и это расстояние максимально. [К. Igu-
sa, Math. Magazine, 58 (1985), 259-271; G. Etienne, J. Combin. Theory, A58 (1991),
181-197.] В общем случае Григгс (Griggs) и Хо (Но) высказали гипотезу, что
максимальное расстояние до цикла равно max (2n + 2 — п\(п2 + 1), п + п2 + 1, п\ (п2 + 1)) —
— 2п2 для всех п > 1; их гипотеза проверена для п ^ 100. Кроме того, наихудшее
разбиение, похоже, единственно при п2 = 2щ + {—1,0,2}.
164 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
72. (а) Обменяем j-e появление к в разбиении п = j • к + а с к-м появлением j
в разбиении к • j + а, для каждого разбиения а числа п — jk. Например, при п = б
обмены представляют собой
6, 51, 42, 411, 33, 321, 3111, 222, 2211, 21111, 111111.
а Ы fg clg hi jkl dlkh n2i m21n elmjf ledcba
(b) p (n - /c)+p (n - 2fc)+p (n - 3fc)+- • •. [A.H.M. Hoare, AMM, 93 (1986), 475-476.]
Раздел 7.2.1.5
1. Всякий раз, когда на шаге Н6 т устанавливается равным г, следует заменить его
значение на г — 1.
2. L1. [Инициализация.] Установить /j <— j — 1 и aj <— 0 для 0 ^ j ^ п. Установить
также h\ <— n,ti <— 1и установить 1о равным любому подходящему ненулевому
значению.
L2. [Посещение.] Посетить t-блочное разбиение, представленное li.. Лп и hi... hf.
(Ограниченно растущая строка, соответствующая этому разбиению — ai... ап.)
L3. [Поиск j.] Установить j <— п; затем, пока lj = 0, устанавливать j <— j — 1
Ht<-t-l.
L4. [Перемещение j в следующий блок.] Завершить работу алгоритма, если j = 0.
В противном случае установить к <— aj + 1, hk +— lj, aj <— к. Если к — t,
установить t <— t + 1 и lj <— 0; в противном случае установить lj <— /i^+i-
И наконец, установить hk+i <— j.
L5. [Перемещение j + 1,... ,п в блок 1.] Пока j < п, устанавливать j <— j + 1, <— fti,
<— 0, hi <— j. Вернуться к шагу L2. I
3. Пусть т(к,п) — количество строк ai... an, удовлетворяющих условию 0 ^ а3 ^
1 + шах (к — l,ai,..., a^-i) для 1 ^ j ^ п; так, т (/с, 0) = 1, г (0,n) = zun и г (/с, п) =
= кт (к, п — 1) + т (к + 1, п — 1). [С.Д. Вильямсон (S.G. Williamson) назвал т (/с, п)
"хвостовым коэффициентом" (tail coefficient); см. SICOMP, 5 (1976), 602-617.]
Количество строк, которые генерируются алгоритмом Н перед заданной ограниченно
растущей строкой ai... ап равно Y%=i азт (bj,n — j), где bj — 1-hmax(ai,..., aj_i).
Выполняя расчеты при помощи предвычисленной таблицы хвостовых коэффициентов,
мы находим, что приведенная формула дает 999999 при ai... ai2 = 010220345041.
4. Наиболее распространенные представители каждого типа следующие (индекс
указывает количество таких слов в GraphBase): zzzzzo, ooooho, xxxixo, xxxiio, ooops0,
llullo, llalao, eelero, iittio, xxiiio, ccxxv0, eeriei, llamai, xxviio, oozed5,
uhuuuo, mammai, puppy28, ananao, heheeo, vividi5, rarer3, etexti, amass2, again137,
ahhaao, essesi, teeth25, yaaay0, ahhhh2, pssst2, seems7, added6, lxxiio, booksi84,
swiss3, senseio, ended3, checki6o, levelis, tepee4, slyly5, neveri54, sellse, motto2i,
whooo2, trees384, going307, whichi5i, therei74, threei74, their3834- [См. S. Golomb,
Math. Mag., 53 (1980), 219-221. Слова только с двумя различными буквами,
разумеется, редки. Восемнадцать представителей, перечисленные здесь с индексом 0,
можно найти в больших словарях или на англоязычных страницах в Интернете.]
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 165
5. (а) 112 = р(0225). Это последовательность r(0), r(l), г(4), г(16), где г(п)
получается путем записи п в виде десятичного числа (с одним или несколькими
ведущими нулями), применения функции р из упражнения 4 и удаления ведущих
нулей. Обратите внимание, что п/9 ^ г (п) < п.
(Ь) 1012 = г (452). Последовательность та же, что и в пункте (а), но
отсортированная и с удаленными дубликатами. (Кто же думал, что 882 = 7744, 2122 = 44944,
а 2642 = 69 696?)
6. Воспользуемся подходом с применением топологической сортировки из
алгоритма 7.2.1.2V: включаем Cj цепочек длины j с упорядоченными наименьшими
элементами. Например, если п = 20, с2 = 3 и сз = С4 = 2, мы используем
упомянутый алгоритм для поиска всех перестановок а\... а2о множества {1,..., 20},
таких, что 1 -< 2, 3 ^ 4, 5 -<; 6, 1 -< 3 -< 5, 7 -< 8 -<: 9, 10 -< 11 -< 12, 7 -<; 10,
13 -< 14 -<: 15 -< 16, 17 ^ 18 ^ 19 ^ 20, 13 -< 17, образуем ограниченно
растущие строки p(f(a\).. .f(a2o)), где р — определенная в упражнении 4 функция,
а (/ (1),..., / (20)) = (1,1,2,2,3,3,4,4,4,5,5,5,6,6,6,6,7,7,7,7). Общее количество
выходных данных определяется формулой (48).
7. Ровно wn. Это перестановки, которые мы получим обращением порядка слева
направо блоков в (2) и опусканием символа '|': 1234, 4123, 3124, 3412, 4321.
[См. A. Claesson, European J. Combinatorics, 22 (2001), 961-971. СВ. Китаев в
своей работе "Partially ordered generalized patterns", Discrete Math, (в печати) открыл
далеко идущее обобщение. Пусть 7г — перестановка {0,..., г}, дп — количество
перестановок а\.. .ап множества {1,..., п}, таких, что из а^-отг > а>к-1-к > • > dk-m >
> aj вытекает j > к, и пусть /п — количество перестановок а\... ап, для которых
шаблон а^-отг > ak-in > — * > ^к-т полностью отсутствует для г < к ^ п. Тогда
T,n>o9nZn/n\ = exp (£n£i fn-izn/nty.]
8. Для каждого разбиения множества {1,...,п} на т блоков расположим блоки
в порядке убывания их наименьших элементов и будем переставлять все элементы
блоков, кроме наименьших, всеми возможными способами. Например, при п = 9
и т = 3 разбиение 126|38|4579 дает нам 457938126 и 11 прочих случаев, полученных
из данного путем перестановок элементов множеств {5,7,9} и {2,6} в рамках этих
множеств. (По сути, тот же метод генерирует все перестановки, имеющие ровно к
циклов; см. подраздел "Замечательное соответствие" в разделе 1.3.3.)
9. Среди перестановок мультимножества {ко • 0, к\ • 1,..., кп-\ • (п — 1)}
ограниченным ростом обладают ровно
(&о + h -\ Ь &п-Л к\ kn-i
к0, fci,..., kn-i ) (ко + fci + • • • + kn-i) (fci + ■ • • + fcn-i) fcn-i
из них, поскольку kj/(kj H h kn-\) представляет собой вероятность того, что j
предшествует значениям {j + 1,..., п — 1}.
Среднее количество нулей при п > 0 равно 1 + (п — l)wn-.\/von = 9(logn),
поскольку общее количество нулей во всех wn случаях равно Ylk=i к (£li) ^п-к —
= Wn + (П - 1) Тл7п_ь
10. Для данного разбиения построим ориентированное дерево на множестве {0,1,
..., п) так, что j — 1 является родительским узлом по отношению к блоку, наи-
166 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
меньший член которого — j. Затем пометим листья, сохраняя порядок, и удалим
остальные метки. Например, 15 разбиений в (2) соответствуют деревьям
<Ч Ф 4 Ъ fa & й $ Ж А (НА!
3 2 23 * 1 13 12 12 123 1* j 1 12 *
Чтобы обратить процесс, возьмем полу помеченное дерево и присвоим новые номера
его узлам, рассматривая сначала узлы, встречающиеся на пути от корня к
наименьшему листу, затем ко второму по величине листу и т.д. Количество листьев
равно п + 1 минус количество блоков. [Эта конструкция тесно связана с
упражнением 2.3.4.4-18 и многими перечислениями в соответствующем разделе. См. P.L. Erdos
and L.A. Szekely, Advances in Applied Math., 10 (1989), 488-496.]
11. Мы получим головоломки в 900 из 64855 разбиений множества не более чем
на 10 блоков, для которых р(а\... ахз) = р (а^ ... а%а\... оцад ... ахз), и в 563 527 из
13 788 536 разбиений, для которых р(а\... ахз) < р («5 • • • «8^1 • • • «4«9 • • • ахз)-
Примерами первого типа являются аааа + аааа = Ьааас, аааа + аааа = bbbbc и аааа +
+ aaab = Ьааас; примерами последнего типа — abed + ef gd = dceab (goat + newt =
= tango) и abed + ef gd = dceaf (clad + nerd = dance). [Идея использования
генератора разбиений для решения головоломок принадлежит Алану Сатклиффу (Alan
Sutcliffe).]
12. (а) Строим р ((аха'х)... (апа'п)), где р определено в упражнении 4, поскольку х =
= у (modulo П V П') тогда и только тогда, когда х = у (modulo П) и х = у (modulo П').
(b) Представим П при помощи связей, как это было сделано в упражнении 2;
представим П' как в алгоритме 2.3.3Е и используем этот алгоритм для того, чтобы
сделать j = lj при lj ф 0 (для повышения эффективности можно считать, что П
имеет столько же блоков, что иП').
(c) Когда один блок П разбивается на две части; т.е. когда два блока П' были
слиты.
(d)(5)-
(e) (251"1 - 1)+ ••• + (2s*"1-1).
(f) Истинно. Пусть П\/П' содержит блоки Bi\B2\- • - \Bt, где П = BiB2\Bs\ • • • \Bt.
Тогда П', по сути, является разбиением множества {В\,..., Bt}, таким, что В\=В2,
аПлП' получается путем слияния блока П', который содержит В\, с блоком,
который содержит В2. [Конечная решетка, которая удовлетворяет этому условию,
называется нижней полумодулярной (lower semimodular); см. G. Birkhoff, Lattice Theory
(1940), § 1.8. Решетка мажоризации из упражнения 7.2.1.4-54 не обладает данным
свойством; например, когда а = 4111, а а' = 331.]
(g) Ложно. Пусть, например, П = ООП, П' = 0101.
(h) Блоки Пи П' представляют собой объединения блоков П \/П', так что можно
считать, что П V П' = {1,..., i). Как и в пункте (Ь), объединим j с lj для
получения за г шагов П, имеющего t — г блоков. Будучи примененными к П', каждое из
этих объединений снижает количество блоков на 0 или 1. Следовательно, Ь(П') —
- Ь (П Л Пг) < г = Ъ (П V П') - Ъ (П).
[В Algebra Universalis, 10 (1980), 74-95, П. Пудлак (P. Pudlak) и И. Тума (J. Tuma)
доказали, что каждая конечная решетка представляет собой подрешетку решетки
разбиений {1,..., п} для соответствующего большого значения п.]
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 167
13. [См. Advances in Math., 26 (1977), 290-305.] Если j наибольших элементов t-
блочного разбиения находятся в отдельных блоках, состоящих из одного
элемента, а следующие п — j элементов — нет, то будем говорить, что разбиение
имеет порядок t — j. Определим "строку Стирлинга" £п* как последовательность
порядков t-блочных разбиений П^Пг,...; например, £43 = 122333. Тогда £^ = 0,
и мы получаем £(n+1)t из Ent путем замены в строке T,nt каждой цифры d строкой
dd (d + l)d+1 ..Лг длиной ('+1) - (\); например,
£53 = 122ЗЗЗ22ЗЗ322ЗЗЗЗЗЗЗЗЗЗЗЗ.
Основная идея состоит в рассмотрении процесса лексикографической генерации
алгоритма Н. Предположим, что П = а\... ап — t-блочное разбиение порядка j;
тогда оно является лексикографически наименьшим t-блочным разбиением,
ограниченно растущая строка которого начинается с а\.. .an-t+j. Разбиениями,
покрываемыми разбиением П, являются (в лексикографическом порядке) П12, П13, П23, П14,
П245 П34,..., П(г_!)г, где Urs означает "объединение блоков s и г разбиения ГГ
(т.е. "замена всех появлений s — 1 на г — 1 и применение функции р для
получения ограниченно растущей строки). Если П' представляет собой одно из последних
(2) — (32) из указанных разбиений, от П^+х) и далее, то П — наименьшее t-блоч-
ное разбиение, за которым следует П'. Например, если П = 001012034, то п = 9,
£ = 5, j = 3, а соответствующие разбиения П' представляют собой р (001012004),
р (001012014), р (001012024), р (001012030), р (001012031), р (001012032), р (001012033).
Следовательно, fnt (AT) = fnt (N - 1) + (\) - (J2), где j^ — N-я цифра Ent.
14. El. [Инициализация.] Установить a j <— 0 и bj ^— dj <— 1 для 1 ^ j ^ п.
E2. [Посещение.] Посетить ограниченно растущую строку а\... ап.
ЕЗ. [Поиск j.] Установить j <— п; затем, пока aj = dj, устанавливать dj <— 1 — d3
и j <- j - 1.
E4. [Выполнено?] Завершить работу алгоритма, если j = 1. Иначе если dj = 0,
перейти к шагу Е6.
Е5. [Перемещение вниз.] Если aj = 0, установить aj <— bj, т <— aj + 1 и перейти
к шагу Е7. Иначе если aj = bj, установить а3; <— bj — 1, m <— bj и перейти
к шагу Е7. В противном случае установить aj <— a j — 1 и вернуться к шагу Е2.
Е6. [Перемещение вверх.] Если aj =bj — l, установить aj <— b3;, m <— a3; +1 и перейти
к шагу Е7. Иначе если aj = bj, установить aj <— 0,т bj и перейти к шагу Е7.
В противном случае установить aj <— a j -f 1 и вернуться к шагу Е2.
Е7. [Установка bj+\...bn.\ Установить bk *— т для к = j + 1,...,п. Вернуться
к шагу Е2. I
[Этот алгоритм можно существенно оптимизировать, поскольку, как и в
алгоритме Н, j почти всегда равно п.)
15. Оно соответствует первым п цифрам бесконечной бинарной строки
01011011011..., поскольку zun-i четно тогда и только тогда, когда п mod 3 = 0
(см. упражнение 23).
168 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
16. 00012, 01012, 01112, 00112, 00102, 01102, 01002, 01202, 01212, 01222, 01022, 01122,
00122, 00121, 01121, 01021, 01221, 01211, 01201, 01200, 01210, 01220, 01020, 01120,
00120.
17. Описанное далее решение использует две взаимно рекурсивные процедуры,
/(д, г/, ст) и Ь(/х, v, а) для "прямой" и "обратной" генерации A^v при а = 0 и A!^v
при о = 1. Чтобы начать процесс, полагая, что 1 < т < п, нужно сначала
установить aj <— 0 для U j ^ n - m и an_m+j <— j — 1 для 1 ^ j ^ m, а затем вызвать
/(га,п,0).
Процедура f (//, v, а). Если // = 2, посетить ai... an; в противном случае вызвать
/ (/i — 1, г/ — 1, (ytx 4- ст) mod 2). Затем, если v = /L£+l, выполнить следующие действия:
изменить значение ам с 0 на р — 1 и посетить ai... an; затем установить <— — 1
и посетить а\ ...an, повторяя эти действия до тех пор, пока не будет выполнено
условие av = 0. Но если г/ > // + 1, изменить a^_i (если ji + о нечетно) или ам
(если ji -Ь ст четно) с 0 на /х — 1; затем вызвать 6 (//, z/ — 1,0), если Н- сг нечетно, или
f (fi,v — 1,0), если а^ + сг четно; и пока а*, > 0, устанавливать <— — 1 и вызывать
b(p,v — 1,0) или / (ц,и — 1,0), как описано выше, повторяя эти действия до тех пор,
пока не будет выполнено условие av = 0.
Процедура h(p,v,o). Если v = /х + 1, сначала выполнить следующее: посетить
а\... ап и установить <— + 1, повторяя эти действия до тех пор, пока не будет
выполнено условие av = р — 1; затем посетить а\.. .ап и изменить ам с д - 1 до
0. Но если v > /х + 1, вызвать / (^, v — 1,0), если + 0" нечетно, или 6 (/х, z/ — 1,0),
если а„ + о четно; затем, пока av < /х — 1, устанавливать <— + 1 и вызывать
/ (/х, г/ — 1,0) или 6 (/г, i/ — 1,0), как описано выше, повторяя эти действия до тех пор,
пока не будет выполнено условие аи = /х — 1; наконец, изменить a^_i (если р + о
нечетно) или ам (если /х-Ьст четно) с \х — 1 на 0. В конце, в обоих случаях, если ц, = 2,
посетить ai... an, в противном случае вызвать Ь (/х — 1, v — 1, (/х 4- сг) mod 2).
Большая часть времени тратится на обработку случая /х = 2; в этом случае
можно применить более быстрые подпрограммы, основанные на бинарном коде Грея (и
отличающиеся от последовательности Раски). Более эффективная процедура может
использоваться и при /х = v — 1.
18. Последовательность должна начинаться (или заканчиваться) элементом 01...
(п — 1). В соответствии с упражнением 32 указанный код Грея не существует, если
0ф6пф (1)0+1+-+(п-1)} т.е. когда п mod 12 равно 4, 6, 7 или 9.
Случаи п = 1,2,3 легко разрешимы; при п = 5 имеется 1927683326 решений.
Следовательно, вероятно, имеется несметное количество решений при п ^ 8, за
исключением указанных значений п. На самом деле, вероятно, можно найти такой
путь Грея по всем vonk рассматриваемым в упражнении 28 (е) строкам, за
исключением случаев п = 2к + (2,4,5,7) (modulo 12).
Примечание: обобщенное число Стирлинга из упражнения 30 больше 1
при 2 < т < п, так что такого кода Грея для разбиений множества {1,..., п} наш
блоков может не быть.
19. (а) Необходимо заменить (6) шаблоном 0,2,..., т,..., 3,1 или обратным к нему,
как в случае чун-упорядоченной (endo-order) последовательности 7.2.1.3-(45).
(Ь) Можно обобщить (8) и (9) для получения последовательностей Атпа
и А'тпа, которые начинаются с 0n_m01... (m — 1) и заканчиваются 01... (га — 1) а
и 0n~m-101... (m — 1) а соответственно, где аа - любая строка
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 169
а\... ап_ш, такая, что 0 < а3 ^ т — 2. При 2 < т < п новые рекурсивные
соотношения выглядят следующим образом:
А
_ ГА(т_1)п(Ь/з)Ж1,Л^п^Ж1,ЛтпаЖ2,...,^тпажт, если т четно;
1 ^(т—1)п6^1' ^тпа^Ь Amnax2i ♦ • • , ^тпа^т? еСЛИ ТП нечетНО*,
А, = f A[m-i)nbx^ Amn0XU А*п0х2,..., A£n/jSm, если m четно;
m(n+i)a ^A{m_1)nmxi, А^хг, Атп0х2, •. •, А^Хт, если га нечетно.
Здесь 6 = m - 3, (5 = Ъп~ш, a (х\,..., xm) — путь от х\ — га — 1 до хт = а.
20. 012323212122; в общем случае (а\... an)T = р (ап ... а\), с использованием
обозначения из упражнения 4.
21. Числа (s0, si, 52,...) = (1,1,2,3,7,12,31,59,164,339,999,...) удовлетворяют
рекуррентным СООТНОШенИЯМ S2n+1 = J2k ( к ) 52n-2fc, S2n+2 = Sfc (fc) (2fc + !) 52n-2fc
из-за связи средних элементов с другими. Поэтому S2n — тг\ [zn] exp((e2z — 1)/2 +
+ ez — 1) и $2n+i = n' [гП] ехР ((е2* — 1)/2 4- е2 -h 2 — 1). Рассматривая разбиения
множества в первой половине, мы также получим s2n = Ylk i к} хк и s2n+\ =
= Ек { Ч1 } хк-и где хп = 2xn_i + (п - 1) жп_2 = n! [zn] exp (2* + 22/2). [Т.С. Моц-
кин (T.S. Motzkin) рассматривает последовательность (s2n) в Proc. Symp. Pure
Math., 19 (1971), 173.]
22- (a) E£Lo fcn Pr {X = k) = e~l £~ 0 kn/k\ = zun в соответствии с (16).
(b) £Г=о A:n Pr (X = к) = £Г=о fcn ££0 (1) (-l)i_Vj!; внутреннюю сумму
можно расширить до j = оо, поскольку £fc (£) (—l)k кп = 0 при j > п. Таким образом,
получаем £~ 0 (^ПА!) £~0 (-!)7*! = ^п- [См. J.O. Irwin, J. Royal Stat. Soc, A118
(1955), 389-404; J. Pitman, AMM, 104 (1997), 201-209.]
23. (а) В соответствии с (14) формула справедлива для / (х) = хп, так что она
выполняется и в общем случае. (Таким образом, с учетом (16) мы также получаем
ЕГ=о/(*)/*! = */МО
(b) Предположим, что мы доказали данное отношение для к, и пусть h(x) =
= (x-l)Kf(x), д{х) = f(x + l). Тогда / (zu + к + 1) = д (zu + к) = zukg(zu) =
= ft(tu + l) = zuh(zu) = zu^-f(zu). [См. J. Touchard, Ann. Soc. Sci. Bruxelles, 53
(1933), 21-31. Такое символьное "теневое вычисление", открытое Джоном Блиссар-
дом (John Blissard) и описанное в Quart, j. Pure and Applied Math., 4 (1861), 279-305,
оказывается весьма полезным; однако пользоваться им нужно осторожно, поскольку
из / (zu) = д (zu) не следует, что / (zu) h (zu) = д (zu) h (zu).]
(c) Указание представляет собой частный случай упражнения 4.6.2-16 (с).
Использование в (Ь) / (х) = хп и к = р приводит к zun = zup+n — zu\+n.
(d) Полином xN — 1 делится на д (х) = хр — х — 1 по модулю р, поскольку хр =
= х-\-к yl xN =хр = хр- = хр — x = l (modulo д (х) и р). Таким образом, если h (х) =
= (xN — l) хп/д (х), то мы получаем h (zu) = h(zu + р) = zu^h (zu) = (zup — zu) h (zu),
и 0 = g (zu) h (zu) = zuN+n - zun (modulo p).
24. Указание следует из индукции по е, поскольку х9— = П/ь=о {х ~ кре~х)~—.
Можно также доказать по индукции по п, что из хп = rn (х) (modulo gi (х) и р) вытекает
хре ln = rn (х)р (moduloде (х) ,рде-\ (ж),... ,ре~хд\ (х), и ре).
170 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
Следовательно, xv& *N = 1 + ho (х) де (х) +ph\ (х) де-\ (х)Л \-pe~1he-i (х) д\ (х) +
+ pehe (х) для некоторых полиномов hk(x) с целыми коэффициентами. Ми имеем
ho (w) zun = ho (vo + pe) (w + pe)n = ro—/io (vo) wn = (ge (tu) + 1) ho (w) von по модулю
pe; следовательно,
^ре_1ЛГ+П = WU + ft0 (w) 0e (ш) ШП +p/li (tX7) M tUn + • • ' = ШП.
[Аналогичный вывод применим и тогда, когда р = 2, но следует положить <^+1 (х) =
— ft (ж)2 + 2 [j = 2], и мы получим Я7П = tx7n+3.2e (modulo 2е). Эти результаты
получены Маршаллом Холлом (Marshall Hall); см. Bull Amer. Math. Soc, 40 (1934),
387; Amer. J. Math., 70 (1948), 387-388. Дополнительную информацию можно найти
в W.F. Lunnon, Р.А.В. Pleasants and N.M. Stephens, Acta Arith., 35 (1979), 1-16.]
25. Первое неравенство следует из применения более общего принципа к дереву
ограниченно растущих строк: в любом дереве, для которого deg (р) ^ deg (parent (р))
для всех некорневых узлов р, мы имеем wk/wk-\ ^ wk+i/wk, где wk — общее
количество узлов на уровне к. Если т = и)к-\ узлов на уровне к — 1 имеют соответственно
ai,... ,ат дочерних узлов, то они имеют, как минимум, а\ + • • • + аш "внучатых"
узлов; следовательно, wk-\wk+\ ^ т{а{-\ + тт) ^ (а\ Н + аш)2 = и)\.
При рассмотрении второго неравенства заметим, что
таким образом,
поскольку, например, wns/zun = (wns/wn-2) (^n-2/^n-i) (^n-i Л^п) меньше или
равно (гл7п_4/шп_з) (шп_3/шп_2) (n7n_2/tnn_i) = tun_4/tun_i.
26. Имеется () направленных вправо путей от (nl) до (tt)', можно представить
их нулями и единицами, где 0 означает "вправо", 1 — "вверх", а позиции единиц
говорят нам, какие п — t из элементов находятся в блоке с единицей. Следующий
шаг (при t > 1) представляет собой дальний переход влево; так что мы можем
продолжить путь, который определяет разбиение оставшихся t — 1 элементов.
Например, разбиение 14|2|3 соответствует при использовании данных соглашений пути
0010, где соответствующие биты означают, что 1^2, 1^3, 1 = 4, 2 ^3. [Возможны
и многие другие интерпретации. Предложенное здесь соглашение показывает, что
zunk подсчитывает разбиения с 1 ^2, ..., 1 £к — комбинаторное свойство, открытое
Г.В. Беккером (H.W. Becker); см. АММ, 51 (1944), 47 и Mathematics Magazine, 22
(1948), 23-26.]
27. (а) В общем случае Ао = Ai = А2П-1 = ^2п = 0. В приведенном далее списке
показаны также ограниченно растущие строки, соответствующие каждому циклу
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 171
при использовании алгоритма из (Ь).
0,0,0,0,0,0,0,0,0 0123 0,0,1,0,0,0,0,0,0 0012
0,0,0,0,0,0,1,0,0 0122 0,0,1,0,0,0,1,0,0 ООП
0,0,0,0,1,0,0,0,0 0112 0,0,1,0,1,0,0,0,0 0001
0,0,0,0,1,0,1,0,0 0111 0,0,1,0,1,0,1,0,0 0000
0,0,0,0,1,1,1,0,0 0121 0,0,1,0,1,1,1,0,0 0010
0,0,1,1,1,0,0,0,0 0102
0,0,1,1,1,0,1,0,0 0100
0,0,1,1,1,1,1,0,0 0120
0,0,1,1,11,1,1,0,0 0101
0,0,1,1,2,1,1,0,0 ОНО
I •
—j—
I
IT ТТЛ"
,4ли ■
•19
8
; 9 ,(
.•T *5
'3
i 2
I -- 2
1
(b) Название "диаграмма" вызвано связью с разделом 5.1.4
и разработанной там теорией, приводящей к интересному
взаимно однозначному соответствию. Можно представить
разбиения множества на треугольной шахматной доске,
помещая ладью в столбец lj строки п + 1 — j, если lj ф 0
в представлении со связанным списком из упражнения 2
(см. ответ к упражнению 5.1.3-19). Например,
представление 135|27|489|б показано на приведенном рисунке.
Ненулевые связи могут также быть эквивалентно определены при
помощи двустрочных массивов наподобие [\ 2 111); см. 5.1.4—(11).
Рассмотрим путь длины 2п, который начинается в нижнем левом углу этой
треугольной диаграммы и следует по ребрам правой границы, заканчиваясь в верхнем
правом углу: этот путь проходит через точки zk = (|_A;/2J , |7с/2]) при 0 < к ^ 2п.
Более того, прямоугольник вверху и слева от zk содержит те ладьи, которые
добавляют пары координат ] в двустрочный массив, при этом г ^ L&/2J и j > \к/2];
в нашем примере для 9 ^ к ^ 12 имеется ровно две таких ладьи, а именно (7 |).
Теорема 5.1.4А гласит, что такие двустрочные массивы эквивалентны диаграмме
(Pk,Qk), где элементы Рк берутся из нижней строки, а элементы Qk — из верхней,
причем Рк и Qfc имеют одну форму. В диаграмме Р выгодно использовать элементы
в порядке уменьшения, а в Q — в порядке увеличения, так что в нашем примере
они представляют собой
к Рк
2 [31
ft
Ш
1 т ш
к
12
рк
1
1
2
4
3 т ш
4
7
1
1
2
5 Ш [Ц
6 ш ш
8
9
10
11
13 | 0
И
14 I 81
15
16 GD GD
Рк и Qk пустые при к = 0,1,17 и 18.
Таким образом, каждое разбиение множества приводит к циклу колеблющейся
диаграммы Ao, Ai,..., \2п, если положить, что А& — разбиение целого числа,
определяющее общую форму Pk и Qk- (В нашем примере это цикл 0, 0, 1, 1, 11, 1, 2,
172 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
2, 21, 11, 11, 11, 11, 1, 1, 0, 1, 0, 0.) Кроме того, t2k-i = 0 тогда и только тогда,
когда строка п + 1 — к не содержит ни одной ладьи, тогда и только тогда, когда к —
наименьшее значение в своем блоке.
И обратно: элементы Рк и Qk могут быть однозначно восстановлены из
последовательности Afc, а именно: Qk = Qfc-i, если tk = 0. В противном случае, если
к четно, Qk представляет собой Qk-i с числом к/2, помещенным в новую
ячейку справа в строке tk'-, если к нечетно, Qk получается из Qk-i с использованием
алгоритма 5.1.4D для удаления крайнего справа элемента строки tk- Аналогичная
процедура определяет Рк на основе значений Рк+i и tk+i, так что мы можем пройти
путь вычислений от Ргп до Ро- Таким образом, последовательности Хк достаточно
для того, чтобы указать, где именно следует размещать ладьи.
Циклы колеблющихся диаграмм были разработаны в статье W.Y.C. Chen,
E.Y.P. Deng, R.P. Stanley and C.H. Yan, "Crossings and nestings of matchings and
partitions" (препринт, 2005), в которой было показано, что эта конструкция приводит
к важным (и удивительным) следствиям. Например, если разбиение множества П
соответствует циклу Ао, Ai,..., А2П) назовем дуальным к нему разбиение nD, которое
соответствует последовательности транспонированных форм Aj, Xj,..., А5ГП. Тогда,
в соответствии с упражнением 5.1.4-7, П содержит "/с-пересечение в Р, т.е.
последовательность индексов %\ < • • • < %к ^ / < ji < • • • < jk и i\ = j\,..., ik =jk (modulo П)
тогда и только тогда, когда nD содержит "fc-вложение в Г\ которое представляет
собой последовательность индексов, такую, что г[ < • • • < i'k ^ I < j'k < • - • < j[
и i[ =jJ,...,i'k = Jk (moduloUD). Заметим также, что инволюция, по сути,
представляет собой разбиение множества, в котором все блоки имеют размер 1 или 2;
дуальной к инволюции является инволюция, имеющая те же множества с одним
элементом. В частности, дуальным идеальному соответствию (когда отсутствуют
множества с одним элементом) является идеальное соответствие.
Кроме того, аналогичная конструкция применима для размещения ладей в любой
диаграмме Феррерса, а не только в диаграмме ступенчатой формы,
соответствующей разбиениям множества. Для заданной диаграммы Феррерса, которая имеет не
более т частей, ни одна из которых не превышает п, мы просто рассматриваем
путь zo = (0,0), zi,..., Zm+n = (n, m), который идет по правому ребру диаграммы
и обуславливает, что А^ = Afc_i + etk при Zk = Zk-i + (1,0) и А* = Afc_i - etk при Zk =
= Zk-i + (0,1). Доказательство, приведенное для ступенчатых диаграмм, показывает
также, что-любое размещение ладей на диаграмме Феррерса, когда в каждой
строке и каждом столбце имеется не более одной ладьи, соответствует единственному
циклу диаграммы.
[См. также A. Berele, J. Combinatorial Theory, A43 (1986), 320-328; S. Fomin, J.
Combinatorial Theory, A72 (1995), 277-292; M. van Leeuwen, Electronic J.
Combinatorics, 3, 2 (1996), paper #R15.]
28. (а) Определим взаимно однозначное соответствие между расстановкой ладей
путем обмена позиций ладей в строках j и j + 1 тогда и только тогда, когда ладья
находится в выступающей части более длинной строки.
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 173
~ ' ~ ' 'о ojolo о о !о ' %\
о ! о | •
[oiVr
i ,
l°i°J°i*
Т Т ri
1 •
(b) Если выполнить транспонирование всех ладей, это соотношение становится
очевидным из определения полинома.
(c) Предположим, что а\ ^ а2 ^ • • • иа^> а&+1. Тогда мы имеем
Д (аьа2,...) = xR(ai - 1,... ,ajfe_i - l,a/c+i, •..) 4-yR(ab ... ,a,k-i,ak - 1,а*+1,...),
поскольку первый член учитывает случаи, когда ладья находится в строке к и
столбце afc. Кроме того, исходя из пустой расстановки, R(0) = 1. Далее из этих
рекуррентных соотношений мы находим:
Д(1) =ж + у; Д(2) = Д(1,1) = х + ху + у2-
Д(3) - Д (1,1,1) = х + ху + ху2 + ?/3;
Д (2,1) = ж2 + 2ху + ху2 + у3;
R (3,1) = Д (2, 2) = Д (2,1,1) = х2 + х2у + ху + 2ху2 + х?/3 + у4;
R (3,1,1) = Д (3,2) = Д (2,2,1) = х2 + 2х22/ + х2у2 + 2х</2 + 2xy3 + ал/4 + у5;
Д (3,2,1) - х3 + Ъх2у + 3xV + xV + Зх?/3 + 2ху4 + хуъ + у6.
(d) Например, формула ъэ-?ъ (х, у) = хя?бз {х-> У) + 2/^74 (х, у) эквивалентна
Д (5,4,4,3,2,1) = хД (4,3,3,2,1) + yR(5,4,3,3,2,1), частному случаю (с);
очевидно, что zunn (х, у) = Д (п — 2,..., 0) эквивалентно tz7(n_i)i (х, у) = Д (п — 2,..., 1).
(e) В действительности yk~lvonk (х, у) — указанная сумма по всем ограниченно
растущим строкам а\... an, для которых а2 > 0,..., ак > 0.
29. (а) Если ладьи находятся в столбцах (ci,...,сп), то количество свободных
ячеек равно количеству инверсий перестановок (n + 1 — с\)... (n + 1 — сп). [Разверните
правую часть примера на рис. 35 на 18СГи сравните результат с иллюстрацией после
соотношения 5.1.1—(5).]
(Ь) Каждая конфигурация г х г может быть размещена, скажем, в строках
%\ < • • • < ir и столбцах ji < • • • < jr, что дает (rn — г) (п — г) свободных ячеек
в невыбранных строках и столбцах; (i2 — i\ + 1) + 2 (гз — i2 — 1) + • • • -f (г — 1) (ir —
—%r-\ — l)-f r (m — гг) — в невыбранных строках и выбранных столбцах и аналогичное
количество в выбранных строках и невыбранных столбцах. Кроме того, сумма
^(г2-г1 + 1)+2(г3-г2-1)+ + (г-1)(гг-гг_1-1)+г(т-гг)
может рассматриваться как сумма yai+a2+",+am-r по всем разбиениям г ^ ai ^
0.2 ^ •" ^ a>m-r ^ 0, так что она равна {Пг)у согласно теореме С. В соответствии
с (а) полином г\у генерирует свободные ячейки для выбранных строк и столбцов.
Следовательно, искомый ответ —
„(т-г)(„-г) М М г, У^-Г^т\уП\у
У [г [г -у {{т-г)\у{п-г)\уг\УУ
174 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
(c) Левая часть формулы представляет собой производящую функцию
Rm (t + ai,..., t 4- am) для диаграммы Феррерса с t дополнительными столбцами
высотой га. Поскольку существует t 4- ат способов разместить ладью в строке га,
это дает нам 14-у Н |_y*+am-i = (1 — уь+а™)/(\ — у) свободных ячеек, связанных
с этими выборами; в строке га — 1 имеется t 4- am_i — 1 доступных ячеек и т.д.
Аналогично, правая часть равна Rm (t 4- ai,..., 14- am). Если m — к ладей
расставляются в столбцах, больших t, мы должны поместить к ладей в столбцах ^ t
в к неиспользованных строках; но мы видели, что производящая функция для
свободных ячеек при расстановке к ладей на доске размером к х t — t\y/(t — к)\у.
Примечания. Доказываемая здесь формула может рассматриваться как
полиномиальное тождество в переменных у и у1; следовательно, она корректна при
произвольном £, хотя наше доказательство предполагает, что t — неотрицательное целое
число. Этот результат был открыт для у = 1 в работе J. Goldman, J. Joichi and
D. White, Proc. Amer. Math. Soc, 52 (1975), 485-492. Справедливость для общего
случая установлена в статье А. М. Garsia and J. В. Remmel, J. Combinatorial Theory,
A41 (1986), 246-275, в которой подобная аргументация использовалась для
доказательства дополнительной формулы
£**ПМ = Y,».y(rL-)...(T^1r)Rm-k(a1,...,am).
t=z й l-y tt> vi\i-yhzj
(d) Это утверждение, которое непосредственно следует из (с), влечет за собой
также то, что R (ai,..., аш) = R (а[,..., а'ш) тогда и только тогда, когда равенство
выполняется для всех х и любого неотрицательного значения у. Полином Пирса
^пк (х, у) из упражнения 28 (d) представляет собой "ладейный" полином для (Зь—a)
различных диаграмм Феррерса; например, wqs (ж, у) перечисляет расстановки ладей
для форм 43321, 44221, 44311, 4432, 53221, 53311, 5332, 54211, 5422 и 5431.
30. (а) Имеем шп (ж, у) = ]Гт хп~тАтп, где Атп = Rn-m (п - 1,..., 1) подчиняется
простому закону: если мы не помещаем ладью в строке 1 формы (п — 1,..., 1), то эта
строка содержит т—1 пустых ячеек, поскольку п — т ладей находятся в других
строках. Но если мы разместим здесь ладью, то оставим 0, 1, или ..., или т — 1 ее
ячеек свободными. Следовательно, Ашп = ym_1^4(m-i)(n-i) 4- (14- у 4 Ь 2/m_1)
х An(n-i) и по индукции Атп = уш(т-1)/2{т}у.
(Ь) Формула g7n+i (х, у) = £fc (2) xn~kykwk (ж, у) дает
х
Ат(п+1)
(с) Из (а) и (Ь) мы получаем
(1 - z) (1 - (1 + q) z)... (1 - (1 + q + ■ ■ • + z) ^ \n
?(*) (-i)fce(S)«(w-"+'"'fc'1)e-e(34E{*}
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ
175
[Вторая формула доказывается по индукции по п, поскольку обе части формулы
удовлетворяют дифференциальному уравнению G'n+1 (z) = (1 -h q 4- Ь qn) ezGn (qz);
в упражнении 1.2.6-58 доказывается равенство при z = 0.]
Историческое примечание: Леонард Карлиц (Leonard Carlitz) ввел g-числа
Стирлинга в Transactions of the Amer. Math. Soc, 33 (1933), 127-129. Затем в Duke Math.
J., 15 (1948), 987-1000, он вывел (помимо прочего) соответствующее обобщение
формулы 1.2.6-(45):
31. exp (ew+z + w - 1); таким образом, wnk = {w + l)n~k vok~l = ^n+1"fc (w - l)fc-1
в обозначениях упражнения 23. [L. Moser and M. Wyman, Trans. Royal Soc. Canada
(3), 43 (1954), Section 3, 31-37.] Фактически число wnk (x, 1) из упражнения 28 (d)
генерируется при помощи exp ((exw+xz — \)/x + xw).
32. Мы имеем Sn = шп(1,— 1), а в обобщенном треугольнике Пирса из
упражнения 28 (d) при х = 1 и у = — 1 легко обнаружить простую схему: \wnk (1, —1)| ^ 1
ишп(А:+1) (l,-l) = tz7nfc(l,-l) + (--l)n (modulo3) при 1 ^ к < п. [В JACM, 20 (1973),
512-513, Гидеон Эрлих (Gideon Ehrlich) дал комбинаторное доказательство
эквивалентного результата.]
33. Представление разбиения множества при помощи расстановки ладей, как в
ответе к упражнению 27, приводит к ответу шпк (путем установки х = у = 1 в
упражнении 28 (d). [Случай к — п был рассмотрен в Н. Prodinger, Fibonacci Quarterly, 19
(1981), 463-465.]
34. (a) Sonetti Джиттоне включают 149 сонетов со схемой 01010101232323, 64
сонета со схемой 01010101234234, два — со схемой 01010101234342, семь — со схемами,
использованными по одному разу (наподобие 01100110234432), и 29 стихов, которые
не могут считаться сонетами, так как в них нет 14 строк.
(b) Canzoniere Петрарки включают 115 сонетов со схемой 01100110234234,109 —
со схемой 01100110232323, 66 — со схемой 01100110234324, семь — со схемой
01100110232232, и 20 других со схемами наподобие 01010101232323, причем ни одна
из этих схем не повторяется более 3 раз.
(c) В Amoretti Спенсера 88 из 89 сонетов используют схему 01011212232344;
исключение — сонет номер 8 — использует шекспировскую схему.
(d) Все 154 сонета Шекспира используют очень плавную схему 01012323454566;
исключениями являются два сонета (99 и 126), которые не состоят из 14 строк.
(e) Все 44 сонета Браунинг из Sonnets From the Portuguese подчиняются схеме
Петрарки 01100110232323.
Иногда строки рифмуются (случайно?), даже когда они не обязаны рифмоваться;
например, последний сонет Браунинг на самом деле имеет схему 01100110121212.
Кстати, длинная песнь в Божественной комедии Данте использует замкнутую
схему рифм, в которой 1 = 3 и Зп — 1 = 3п + 1 = 3п + 3 для п — 1,2,
35. Каждая неполная n-строчная схема П соответствует разбиению {1,... ,п Н- 1}
без частей с одним элементом, в котором (n + 1) группируется со всеми
одноэлементными частями П. [Г.В. Беккер (H.W. Becker) привел алгебраическое доказательство
в АММ, 48 (1941), 702. Заметим, что согласно принципу включения и исключе-
(m - k)\q'
176 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
ния ги'п = Ylk (к) (~~1)П~ wk, а ъэп = Ylk (к) w'k'i с использованием обозначений из
упражнения 23 мы можем записать zu' = zu — 1. Д.А. Шаллит (J.O. Shallit)
предложил расширение треугольника Пирса путем установки Ct7n(n+i) = zu'n; см.
упражнения 38 (е) и 33. Фактически zunk представляет собой количество разбиений {1,..., п},
обладающих тем свойством, что 1,..., к — 1 не являются одноэлементными частями;
см. H.W. Becker, Bull Amer. Math. Soc, 58 (1954), 63.]
36. exp(ez — 1 — 2). (В общем случае, если дп — количество разбиений {1,... ,п}
на подмножества допустимых размеров si < s2 < • • •, экспоненциальной
производящей функцией Yln^riZn/n\ является exp(zSl/s\\ + zS2/s2\ Л ), поскольку
(z3l/s\ \ + zS2/s2\ + • • -)к представляет собой экспоненциальную производящую
функцию для разбиений ровно на к частей.)
37. Всего имеется J2k (к)wkwn-k возможных вариантов длины п, так что при
п = 14 имеется 784071966 схем. (Но превзойти схему Пушкина очень трудно.)
38. (а) Представим, что мы начинаем с х\х2 .. .хп = 01... (п — 1), затем
последовательно удаляем некоторый элемент Ъ3- и помещаем его слева, выполняя эти
действия для j = 1,2,... ,п. Тогда Хк представляет собой fc-й перемещенный элемент,
считая от последнего, для 1 ^ к ^ ..., bn}\; см. упражнение 5.2.3-36.
Следовательно, массив х\... хп вернется в первоначальное состояние тогда и только тогда,
когда Ьп ... Ь\ является ограниченно растущей строкой. [Robbins and Bolker, JEquat.
Math., 22 (1981), 281-282.]
Другими словами, пусть а\... ап — ограниченно растущая строка. Установим
b-j <— j и bj+i <— an-j для 0 ^ j < п. Тогда для 1 < j < п определим kj при
помощи правила, согласно которому bj есть kj-Vi отличный от других элемент в
последовательности bj-\,bj-2, — Например, строка ai... аде = 0123032303456745
соответствует таким способом сг-циклу 6688448628232384.
(b) Такие пути соответствуют ограниченно растущим строкам с шах (ai,..., an) ^
га, так что искомый ответ — {o} + {i}H Ь { m }•
(c) Можно считать, что г = 1, так как последовательность к2... кпк\ является
сг-циклом, если таковым является последовательность к\к2...кп. Таким образом,
ответ представляет собой количество ограниченно растущих строк с ап = j — 1,
аименно{^11} + {П71} + {";1} + ----
(d) Если ответ — /п, то должно выполняться = wn, поскольку о\
представляет собой тождественную перестановку. Следовательно, /п равно zu'n,
количеству разбиений множества без одноэлементных частей (см. упражнение 35).
(e) Вновь ответ zu'n в соответствии с (а) и (d). [Следовательно, zu'p modp = 1,
когда р простое.]
39. Замена и = V>+1 дает ^ J~ e-uub-M<*+Vdu = (*±i).
40. Мы имеем g(z) = cz — nlnz, так что седловая точка находится в п/с.
Прямоугольный путь теперь имеет углы в точках ±п/с± mi/с, а exp (д (п/с + it)) =
= (encn/nn)exp (-£2c2/(2n) +г£3с3/(3п2) н ). Окончательный результат
представляет собой еп (c/n)n_1 /\/2тт, умноженное на 1 + п/12 + О (п~2).
(Конечно, этот результат можно получить и быстрее, положив в интеграле
w = cz. Но приведенный здесь ответ просто механически применяет метод
седловой точки, не пытаясь прояснять суть дела.)
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 177
41. Конечный результат опять же представляет простое умножение (21) на с71"1;
однако в данном случае более существенно левое ребро прямоугольного пути, а не
правое. (Кстати, при с= — 1 мы не можем вывести аналог (22) с использованием
контура Ганкеля, когда х действительно и положительно, поскольку интеграл по
такому пути расходится. Но при обычном определении zx подходящий путь
интегрирования дает формулу — (cos7rx)/T (х) при п = х > 0.)
42. При четном п мы имеем §ez2dz/zn = 0. В противном случае как левое, так
и правое ребро прямоугольника с вершинами ±у/п/2 ± in при больших п дают
приближенный вклад
еп/2 7 ( о 2 ("itf 23/2 (г*)4 \ J
^ exp -2t2 - у п J —-^ + — \dt.
2тт(п/2)п/2 J I 3 п/ п I
Мы можем ограничить \t\ ^ п£, чтобы показать, что этот интеграл равен То +
4- (/4 — |^б)/^ с относительной ошибкой О (п9£_3//2), где Ik = J*^ e~2t tkdt. Как
и ранее, в действительности относительная ошибка равна О (п~2); и мы выводим
окончательный ответ, равный
1 еп/2
' 1 Н—-—hO ( -г I ) при нечетном п.
((п-1)/2)! ^(п/2)п/2 V 12п
(Аналогом (22) является (sin ^)2/Г ((х - 1)/2) при п = ж > 0.)
43. Пусть f (z) = ее*/zn. Когда z = —n + it, мы имеем |/(z)| < en_n; когда 2; =
= t + 27rm + г7г/2, мы имеем |/(г)| = И_п < (2тгп)~п. Так что интегралом можно
пренебречь везде, кроме пути z = £+it; на этом пути |/| уменьшается с возрастанием
|*| от 0 до 7г. Мы уже имеем при t = п£_1/2 |/ (z)\/f (£) = О (exp ^-n2e/(logn)2^;
а когда \t\ > тг, то |/ (z)\/f (£) < 1/|1 + гтг/£|п - exp (-§ In (l + тг2/£2)).
44. Положим и = na,2t2 в (25), чтобы получить
3?
J е~и ехр (п-1/2с3 (-и)3/2 + п_1С4 (-и)2 + п~3/2с5 (-и)5/2 + • • -J du/^/Ш^й,
где cfc = (2/(£ + l))fc/2 (f*-1 + (-l)fc (k - l)l)/fc! = ak/ak2/2. Это выражение
приводит к сумме
/ _± \ С3 С4 с5
fci+2fc2+3fc3+ • =2/
^1+А;2+А;з + ---=т
по всем разбиениям 21. Например, Ъ\ — |с4 — у§с2.
45. Чтобы получить wn/n\, заменим g(z) в выводе (26) на ег — (n + l)lnz. Это
изменение приводит к умножению подынтегрального выражения в предыдущем
ответе на 1/(1 + it/£), которое представляет собой l/^l — n_1/2a (—п)1//2^, где
178 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
а = — у/2/(£ + 1). Таким образом, мы получаем
idbm. л ^2 jb3
с3 с4 с5
+2*2+3*,+-.=21 ^ *i!*2!fcs!
&1+/с2+&з+"-=га
сумму p(2l) + р(2/ - 1) н h р(0) членов; 6i = |с4 - j|c§ + |ас3 - |а2.
[Коэффициент Ь[ был получен другим способом в работе L. Moser and М. Wyman, Trans.
Royal Soc. Canada (3), 49, Section 3 (1955), 49-54, авторы которой впервые вывели
асимптотический ряд для wn. Их приближение немного менее точное, чем (26) с п,
замененным на п + 1, поскольку оно не проходит через седловую точку. Формула
(26) получена в I.J. Good, Iranian J. Science and Tech., 4 (1975), 77-83.]
46. Из (13) и (31) видно, что для фиксированного значения к и п —» оо wnk =
= (1 — £/п)к tun (l + О (п-1)). Это приближение справедливо и при к = п, но в этом
случае относительная ошибка равна О ((lognf/n).
47. Шаги (HI,... ,Н6) выполняются соответственно (l,zun,zun — zun-i,wn-\,zun-i,
zun-i — 1) раз. Общее количество выполнений установки j +— j — 1 в цикле на шаге Н4
равно zun-2 + zun-3 н h zui раз; общее количество выполнений установки bj *— т
в цикле на шаге Н6 равно (zun-2 — 1) + • • • + (zui — 1) раз. Отношение zun-i/wn
приблизительно равно (Inп)/п, a (wn-2 н ь zui)/zun « (Inп)2/п2.
48. Можно легко проверить взаимозамену суммирования и интегрирования в
ezux
■о——rdz = —— о > —
j zx+1 2m]^k\zx
Г (х + 1) 2тгг J 2тгг J ^ А;!*^1
00 1 1 Г ekz °° 1
^ W2^J^id2 = ^ fc!
kx
fc=0 ^-j Г (» + !)•
49. Если £ = Inn — In Inn + x, то мы получаем /3=1 — e~x — ах. Следовательно, по
формуле обращения Лагранжа (упражнение 4.7-8)
З+к
it)
-zk \ 1 i -
3
где f (t) = t/(l — е~ь). Так что окончательный результат следует из известного
тождества
/ \ т оо Г
т
1-е" ,
71=0
т — п
(га — 1) (га — 2)... (га - п)'
(С этим тождеством следует быть осторожным при п ^ га; коэффициент при zn
представляет собой полином от га степени п, как поясняется в уравнении (7.59)
в CMath.)
Формула из этого упражнения открыта Л. Комте (L. Comtet) [Comptes Rendus
Acad. Sci. (A), 270 (Paris, 1970), 1085-1088], который распознал коэффициенты, ранее
вычисленные в работе N.G. de Bruijn [Asymptotic Methods in Analysis (1958), 25-28].
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 179
Сходимость для п ^ е была показана Джеффри (Jeffrey), Кор лессом (Corless), Харе
(Hare) и Кнутом (Knuth) [Comptes Rendus Acad. Sci. (I), 320 (1995), 1449-1452],
которые также вывели несколько более быстро сходящуюся формулу.
(Уравнение £е^ = п имеет также и комплексные корни. Их можно получить,
используя Inn 4- 2шт вместо Inn в формуле из этого упражнения; при т ф 0 сумма
быстро сходится. [См. Corless, Gonnet, Hare, Jeffrey and Knuth, Advances in
Computational Math., 5 (1996), 347-350].)
50. Пусть £ = £ (n). Тогда £; (n) = £/((£ + 1) n) и можно показать, что ряд Тейлора
£(П+*) = £+#(„) + ^" („) + ...
сходится при \к\ < п 4 1/е.
На самом деле справедливо гораздо большее, поскольку функция £ (п) = — Т (—п)
получается из функции дерева Т (z) путем аналитического продолжения на
отрицательные значения действительной оси. (Функция дерева имеет квадратичную
сингулярность при z = е-1; после обхода этой сингулярности мы встретимся с
логарифмической сингулярностью в точке z = 0, представляющей собой часть интересной
многоуровневой поверхности Римана, на которой квадратичная сингулярность
появляется только на уровне 0.) Производные функции дерева удовлетворяют
соотношению zkT^ (z) = R (z)k pk (R (z)), где R (z) = T (z)/(l - T (z)), а рк (x) - полином
степени к—1, определяемый соотношением p^+i (х) = (14- х)2 р'к (х) + к (2 4- х)рк (х).
Например,
pi(x) = 1, р2(х) = 2 + х, р3(х) = 9 + 10х + Зх2, р4(х) = 64 +113x4- 70ж2 + 15х3.
(Коэффициенты рк (х), кстати, перечисляют некие филогенетические деревья,
именуемые деревьями Грега: [х-7] рк (х) представляет собой количество
ориентированных деревьев с j непомеченными узлами и к помеченными узлами, причем все
листья должны быть помечены, а непомеченные узлы должны иметь не менее двух
дочерних. [См. J. Felsenstein, Systematic Zoology, 27 (1978), 27-33; L.R. Foulds and
R.W. Robinson, Lecture Notes in Math., 829 (1980), 110-126; C. Flight, Manuscrip-
ta, 34 (1990), 122-128].) Если qk (x) = рк (—x), то по индукции можно доказать, что
(—l)m (x) ^ 0 при 0 ^ x ^ 1. Таким образом, qk (x) монотонно убывает от kh~l
до (к — 1)! при х, возрастающем от 0 до 1, для всех k,m^ 1. Отсюда следует, что
«" + ')-f + 7-(7),!f + (T)'f--.
где частичные суммы при к > 0 оказываются поочередно больше и меньше точного
значения.
51. Имеются две седловые точки, о = у/п + 5/4 — 1/2 и а' = —1 — о.
Интегрирование по прямоугольному пути с вершинами о ± im и о' ± im показывает, что
при п —> оо можно рассматривать только о (хотя о' вносит относительную ошибку
порядка e-v/™, которая может оказаться значительной при малых п). Рассуждая
почти так же, как в (25), но с д (z) = z 4- z2/2 — (п 4-1) In z, мы найдем, что хорошим
180 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
приближением для tn является
П] Г ЛА(а)-а2«а+аз«3 + -+а,(-«)|+ОГп<|+1)-<1-1)/2)Л „. _ ° + 1 , [fe = 2]
2тг
' ep(a)-a2ta+a3it3 + -+aI(-«)40(n<l+1)-<|-1)/2)dt = ^ + 1 +
J ' как~г
Интеграл раскладывается в ряд, как и в упражнении 44:
п!е(п+<т)/2
. ' (1 + ь1+Ь2 + '~ + Ьт + 0{тГт-1)).
2an+iy/ira2
Сейчас cfc = (а + 1) a1-* (1 + 1/{2а))~к/2/к при fc ^ 3, следовательно, (2а + l)3fc crfcofc
представляет собой полином от а степени 2/с, например:
3 15 о 8а2 + 7<т - 1
Oi = — Сд — —Со = о •
4 4 16 3 12<т(2<7 + 1)3
В частности, формула Стирлинга и член Ь\ после подстановки значения а дают нам
^ у/2 V 24 П52 414720 + 1
результат существенно более точный, чем формула 5.1.4-(53), причем полученный
со значительно меньшими усилиями.
52. Пусть G(z) = Pr (X = к) zk, так что j-и семиинвариант к3- равен
j\ [tj] lnG(e*). В случае (а) G(z) = ее*г~е*; следовательно,
InG (е<) = е«е* - е« = е« (е^'"1) - l) = е« £ (е* - 1)* |[,
fc=l
Случай (Ь) представляет собой дуальную ситуацию: здесь п = j = w3 [j ф 0],
поскольку
[Если = 1, в случае (а) мы имеем к3 = ew [j ф 0]. Но если = п, то среднее
равно к\ —п, а дисперсия а2 равна (£ + 1) п. Таким образом, формула в
упражнении 45 утверждает, что среднее значение п встречается приблизительно с
вероятностью \/у/2-ка и относительной ошибкой О (1/п). Данное наблюдение приводит
к другому способу доказательства этой формулы.]
53. Можно записать lnG(e*) = //t4-cr2t2/2 + K3t3/3! Ч , как в формуле 1.2.10-(23);
и существует такая положительная константа <5, что ^°l3|«j|^/j! < cr2t2/6 при
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 181
|*| ^ S. Следовательно, если 0 < е < 1/2, можно доказать, что
eit(fin+r)
— 7Г
-S I «p(-Jrt-^ + 0(„=.^)),( + 0(e^)
при п —► оо для некоторой константы с > 0: подынтегральная функция при п£~1^2 ^
|*| ^ <5 ограничена по абсолютному значению величиной ехр (—сг2п2е/3), а при S ^
|*| ^ 7г ее величина не превышает ап, где а — max|G(eu)| меньше 1, поскольку
отдельные члены pkCklt в силу нашего предположения не лежат на прямой линии.
Таким образом,
оо
G (*)" = ^ | exp (-irt - + О (n3*"1/2)) Л + О (е-с"2г) =
— ОО
2тг
-ОО
2/(2а2п)
+ О (е-™2*) = -=^ + О (п3*-1).
Аналогично учитывая «з, «4,..., можно улучшить оценку до О (п~т) для
произвольно большого га; таким образом, результат верен также при е = 0. [В
действительности такое уточнение приводит к "разложению Эджворта", в соответствии с которым
jz/xn+rj q ^zyi асимптотически стремится к
э-г2/(2<х2п)
у. (-1)3(21 + т)^г21+ш-23 1 /кз\*1 /«4\*
(7\/27ГП . . OI . OJ ,
v /ci+2fc2+3«3 + ---=m
fci+fc2+fc3 + -=i
fcl ,/C2,/C3,...^0
0^s^l+m/2
Абсолютная ошибка равна О (п_Р//2), где константа, скрытая в О, зависит только
от р и G, но не от г или п, если мы ограничимся случаями т < р — 1. Например,
при р = 3 мы получим
^m--^('-£(s)+£K£))+oU)-
и еще семь членов при р = 4. См. П.Л. Чебышев, Записки Ими. Акад. Наук, 55
(1887), № 6, 1-16; Acta Math., 14 (1890), 305-315; F.Y. Edgeworth, Trans. Cambridge
Phil. Soc, 20 (1905), 36-65, 113-141; H. Cramer, Skandinavisk Aktuarietidsskrift, 11
(1928), 13-74, 141-180.]
54. Формулы (40) эквивалентны записи a = scoths + s, (3 = scoths — s.
182 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
55. Пусть с = ае~а. Итерации метода Ньютона (Зо = с, (3k+\ = (1 — (3k)ce^k/(l —
— се~0к) быстро сходятся к точному значению, за исключением случаев, когда а
очень близко к 1. Например, при а = In 4 величина (З7 отличается от In 2 менее чем
на 10"75.
>. (а) По индукции по п (z) = (-l)n (^^j!^!^ - ^г).
n Г1 Г1
(b) у" (1)ека/п\=\ ... exp(LtAi + --- + tinj(7)dMi...dun<
^fc=0 Jo Jo
<
Г1 Г1
... exp((^i H \-un)a)dui ...dun — (e° - l)n/an.
Jo Jo
Нижняя граница выводится аналогично, поскольку Н \-ип\ > и\ + • • • +
-f ип - 1.
(с) Таким образом, п\ (1 — /З/а) < (—а)п g^+V (а) < 0, и мы должны только
проверить, что 1 — (З/а < 2(1 — /?), т.е. что 2а(3 < а -Ь (3. Однако в соответствии
с упражнением 54 а(3 < 1, а а + (3 > 2.
57. (а) п + 1 - т = (п + 1) (1 - 1/а) < (n + 1) (1 - (З/а) = (n + 1) а/а ^ 2АГ, как
в ответе к упражнению 56 (с).
(Ь) Величина а + а(3 возрастает с возрастанием а, поскольку ее производная
по а равна 1 + (3 + (3 (1 - а)/(1 - /3) = (1 - а/?)/(1 -£)+/?> 0. Следовательно,
1-/?<2(1-1/а).
58. (а) Производная \ea+it - l\2/\a + г£|2 = (ea+it - l) (еа~и - l)/(a2 +t2) no *
равна (cr2 + £2) sin £ — t (2 sin |)2 — (2 sh §)2 £, умноженное на положительную функцию.
Эта производная всегда отрицательна при 0 < t ^ 27г, поскольку она меньше чем
£2 sin t — £ (2 sin i) = 8u sin и cos w (w — tg и), где £ = 2u.
Пусть s — 2sh ^. При (7^7ги27г^£^47г производная остается отрицательной,
поскольку £ ^ 47Г ^ s2 — а2/(27г) ^ s2 — сг2/£. Аналогично, когда сг > 27Г, производная
остается отрицательной при 47г < £ < 1687г; доказательство становится все легче
и легче.
(Ь) Пусть t = ua/y/N. Тогда (41) и (42) доказывают, что
е(п+1)0(<7+г*)^ .
(е- - I)""
Tn\/N
| «Р ("I + ^ + • • • + ^ + О (^-O-W)) А,
где (1 — (3)dk — полином степени /с — 1 от а и /?, причем 0 ^ а& ^ 2/к. (Например,
баз = [2-(3(а + (3))/(\-(3) и 24а4 = (б - (3 {а2 + 4а/? + /32))/(1 - /3).)
Монотонность подынтегральной функции показывает, что интегралом по остальному
диапазону можно пренебречь. Теперь применим метод Лапласа и распространим интеграл
на—oo<w<oo,a затем воспользуемся формулой из ответа к упражнению 44,
полагая Ck = 2fc/2afc, для определения Ъ\, 62, —
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 183
(с) Мы докажем, что \ez — l|man+1 /[(е*7 — l)m \z\n~*~Lj экспоненциально мало на
этих трех путях. Если о ^ 1, эта величина меньше, чем 1/(27г)п+1 (поскольку,
например, еа — 1 > а). При о > 1 получаем а < 2 \z\ и \ez — 1| ^ еа — 1.
59. В этом предельном случае а = 1 + n-1, а /3 = 1 — п-1 + §^~2 + О (п~3);
следовательно, N = 1 4- |п-1 + О (™~2). Старший член (3~п/y/2nN равен е/л/27г,
умноженному на 1 — ^п-1 + О (п~2) (заметим, что е/л/27г« 1.0844). Значение а& в ответе
к упражнению 58 (Ь) становится равным 1/k + O (ft-1)- Так что уточняющие члены
в первом приближении равны
^■h-(-£^)+o(i).
т.е. члены в (расходящемся) ряде соответствуют приближению Стирлинга
1_ ^ _е_ л _ _1_ _1_ 139 571 \
1! ~ х/2^ v 12 + 2^8 + 51840 2488320 " / '
60. (а) Количество га-арных строк длины п, в которых встречаются все га цифр,
равно га! { ш }, и принцип включения-исключения приводит к выражению этой
величины в виде (т) гап—(™) (га — 1)ПН . Теперь обратитесь к упражнению 7.2.1.4-37.
(b) Мы имеем (га - l)n/(m - 1)! = (mn/m!) гаexp (nIn (1 - 1/m)), a ln(l - 1/m)
меньше, чем — ne_1.
(c) В этом случае а > п£ и (3 — ае~ае@ < аег~а. Таким образом,
К (1 - р/а)т-п < ехр (пО (е~а));
а также 1 > е_/3т = е~(п+1^/а > ехр (-пО (е~а)). Так (45) превращается в
(mn/m!) (1 + О (п"1) + О (пе"71')).
61. Сейчас а = 1 + £ + О (п2*-2) и /3 = 1 - £ + О (п2е"2). Таким образом, N = г +
+ О (n2e_1), и случай / = 0 в (43) сводится к
(Это приближение хорошо соответствует таким тождествам, как {n-i} = (2)
и { n™ 2 } = 2 (2) + (nj1); на самом деле мы имеем
где г — константа, в соответствии с формулами (6.42) и (6.43) из CMath.)
62. Предположение истинно при 1 ^ п ^ 10000 (причем в 5 648 случаях га =
= [е^ — lj). Е.Р. Канфилд (E.R. Canfield) и К. Померанц (С. Pomerance) в статье,
содержащей прекрасный обзор более ранних работ по связанным темам,
показали, что указанное утверждение выполняется для всех достаточно больших п и что
максимум достигается в обоих случаях, только если mod 1 очень близко к ^.
[Integers, 2 (2002), Al, 1-13.]
184 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
63. (а) Результат выполняется при р\ = ••• = рп = р, потому что ak-i/a^ =
= (к/(п + 1 — к)) ((п — и)/ц) ^ (п — у)/(п + 1 — и) < 1. Он также верен по индукции
и при рп = 0 или 1. В общем случае рассмотрим минимум аь — dk-i по всем
вариантам выбора (pi,... ,Рп)? таким, что ро 4- [-рп = р. Если 0 < pi < р2 < 1, пусть
Pi — Pi — & и — V2 + 5, и заметим, что а'к — afk_1 = аь — ак-\ + 6 (р\ — р2 — 6) а
для некоторого а, зависящего только от рз,... ,рп. В точке минимума должно быть
а = 0; таким образом, можно выбрать S так, чтобы либо р[ = 0, либо р'2 = 1.
Следовательно, минимума можно достичь, когда все имеют одно из трех значений
{0,1,р}. Но мы должны доказать, что в таких случаях а& — dk-i > 0.
(b) Изменение каждого рд на 1 — р3 изменяет р на п — р и а& на ап-ь
(c) У f (х) нет положительных корней. Следовательно, f(z)/f(l) имеет вид,
представленный в (а) и (Ь).
(d) Пусть С (/) — количество изменений знака в последовательности
коэффициентов /; мы хотим показать, чтоС ^(1 — ж)2 = 2. В действительности
С ((1 - х)ш /) = т для всех т ^ 0. С ((1 - ж)т) = т, и С ((а + Ьж) /) < С (/) при
положительных а и 6. Следовательно, С ((1 — х)ш /) ^ т. Если / (ж) — любой
ненулевой полином, то С ((1 — х) /) > С (/); следовательно, С ((1 — х)ш /) ^ т.
(e) Поскольку ^2к [к] хк = х(х + 1)... (х + п — 1), гипотеза (с) применима
непосредственно с /х = Я™. Для полиномов /п (ж) = { к}хк гипотезу (с) можно
использовать с \i = гип+\/гип — 1, если /п (х) имеет п действительных корней.
Последнее утверждение следует по индукции, поскольку /n+i (ж) = х (fn (х) 4- f'n (ж)): если
а > 0 и / (х) имеет п действительных корней, то столько же их и у функции g (х) =
= eaxf (х). Но g (ж) —> 0 при х —> —оо; следовательно, (ж) = еах (а/ (ж) + /' (х))
также имеет п действительных корней (один слева, а п — 1 — между корнями д(х)).
[См. Е. Laguerre, J. de Math. (3), 9 (1883), 99-146; W. Hoeffding, Annals Math.
Stat, 27 (1956), 713-721; J. N. Darroch, Annals Math. Stat, 35 (1964), 1317-1321;
J. Pitman, J. Combinatorial Theory, A77 (1997), 297-303.]
64. Нужно применить алгебру, чтобы вычесть 1пшп из \nzun-k.
65. Она равна w~x, умноженному на количество встречающихся А>блоков и
упорядоченных пар fc-блоков в списке всех разбиений, а именно
минус квадрат от (49). Асимптотически это значение представляет собой
(€*/*!) (l + Oin4-1)).
66. (Максимум (48) при п = 100 достигается для разбиений 71625446372614
и 71625446382513.)
67. Математическое ожидание значения Мк равно tun+fc/zun. Таким образом,
согласно (50), среднее значение равно tun+i/zun = п/£ + £/^2(£ 4- l)2^ -I- 0(п-1),
п
ttn-k 4-
п
п — к
к
к
к
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 185
а дисперсия равна
68. Максимальное количество ненулевых компонентов во всех частях разбиения
равно п = п\ + • • • + nm; оно встречается тогда и только тогда, когда все части
компонентов равны 0 или 1. Тогда значения I + 1 = п и b = тп\ + (т — 1)п2 +
+ •••■+■ пт достигают максимумов. [Вот почему лучше выбирать имена элементов
мультимножества так, чтобы п\ ^ n2 ^ • • • < пт.]
69. В начале шага МЗ, если к > b и I = г — 1, перейти к шагу М5. На шаге М5, если
j = а и (vj — 1) (г — /) < Uj, перейти к шагу Мб вместо уменьшения Vj.
70. (а) | r-i | + | г-1 | + ''' + I r"i |» поскольку | £lf | включает блок {0,..., 0,1} с к
нулями. Общее количество, также известное как р (п — 1, п), равно р (п — 1) + • • • +
+ р(1)+р(0).
(Ь) Ровно N = { п~1} + { } r-блочных разбиений {1,...,п—1,п} останутся
теми же при взаимообмене п — 1 <-> п. Таким образом, искомый ответ равен N +
+ \ ({ г } — Ю — ^({г} + ^)? чт0 также равно числу ограниченно растущих строк
«1 • • • ап, У которых max (ai,..., an) = г — 1 и an-i ^ «п- Общее количество равно
\ (тп -f шп_1 + шп_2).
71. [| (ni + 1)... (пт + 1) — , поскольку имеется (щ + 1)... (nm + 1) — 2
композиций из двух частей, и половина из них находится не в лексикографическом
порядке, если только все rij не являются четными. (См. упражнение 7.1.2.4-31. Формулы
вплоть до 5 частей были выведены в работе Е.М. Wright, Proc. London Math. Soc.
(3), 11 (1961), 499-510.)
72. Да. Описанный далее алгоритм вычисляет ajk = p(j,k) для 0 ^ j, к ^ п за
в (п4) шагов. Начнем с установки ajk <— 1 для всех j и к. Затем для / = 0,1,..., п
и т = 0,1,... ,п (в любом порядке), если / + т > 1, устанавливаем ajk <— ajk +
+ a(j_/)(fc_m) для j = /,..., п и к = ш,..., п (в возрастающем порядке).
(См. табл. А.1. Аналогичный метод вычисляет p(ni,... ,nm) за 0(ni...nm)
шагов. В цитированной ранее статье Чима (Cheema) и Моцкин (Motzkin) вывели
Таблица А.1. Количества мультиразбиений
п 0
1
2
3
4
5
6
п 0
1
2
3
4
5
р(0,п) 1
1
2
3
5
7
11
Р(0,п) 1
2
9
66
712
10457
р(1,п) 1
2
4
7
12
19
30
Р(1,п) 1
4
26
249
3274
56135
р(2,п) 2
4
9
16
29
47
77
Р(2,п) 2
11
92
1075
16601
325269
р(3,п) 3
7
16
31
57
97
162
Р (3, п) 5
36
371
5133
91226
2014321
р(4,п) 5
12
29
57
109
189
323
Р(4,п) 15
135
1663
26683
537813
13241402
р(5,п) 7
19
47
97
189
339
589
Р(5,п) 52
566
8155
149410
3376696
91914202
186
ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
рекуррентное соотношение
оо
щр (ni,...,nm
) = ]Г ^2 kip(ni - кх1,...,
1=1 fci,...,fcm^o
но эта интересная формула облегчает вычисления только в отдельных случаях.)
73. Да. Пусть Р (т, п) = р (1,.... 1,2,.... 2), где всего имеется т единиц и п двоек.
Тогда Р (ш, 0) = vjm, и можно воспользоваться рекуррентным соотношением
Это рекуррентное соотношение можно доказать, рассматривая, что произойдет,
если мы заменим два ж в мультимножестве для Р(га, n + 1) на два разных
элемента х и ж'. Мы получим 2Р(т,п+ 1) разбиений, представляющих собой разбиения
Р (т + 2, п), не считая Р (m + 1, п) случаев, когда х и х' принадлежат одному и
тому же блоку, и (£) Р (т, п — к) случаев, когда блоки, содержащие жиж', идентичны
и имеют А: дополнительных элементов.
Примечания: см. табл. А.1. Вот еще одно рекуррентное соотношение, менее
удобное для вычислений:
Последовательность Р (0, п) впервые была изучена в работах Е.К. Lloyd, Proc.
Cambridge Philos. Soc, 103 (1988), 277-284, и G. Labelle, Discrete Math., 217 (2000), 237-
248, где вычисления выполнялись совершенно иным образом. В упражнении 70 (Ь)
показано, что Р (т, 1) = (wm + tum+1 + т^7т+2)/2; в общем случае Р (т, п) можно
записать с использованием обозначений из упражнения 23 как wraqn (w), где qn (ж) —
полином степени 2п, определяемый производящей функцией x^l0 Я.п (х) zn/n\ =
= exp ((ег + (ж + ж2) z — 1)/2). Таким образом, в соответствии с упражнением 31
оо п оо к
урцп)^ е^"1)/2 У q7(a*+m+i)(fc+m+Dg.<
^ v ; n! ^ 2* &!
п=0 /с=0
Лабель (Labelle) доказал как частный случай гораздо более общего результата, что
количество разбиений {1,1,..., п, п} ровно на г блоков равно
75. Метод седловой точки дает СеАп2/3+Вп1/3 /п55/36, где А = ЗС(3)1/3,
В = тг2с (3)~1/3/2 и С = с(3)19/36(27г)-5/63"1/2 ехр(1/3 + В2/4 + с/(2)/(2тг2) - 7/12).
[F.C. Auluck, Proc. Cambridge Philos. Soc 49 (1953), 72-83; E.M. Wright, American J.
Math., 80 (1958), 643-658.]
2P (m, n + 1) = P (m + 2, n) + P (m + 1, n) + ^
P(m, fe).
fc=0
7.2.1
ОТВЕТЫ К УПРАЖНЕНИЯМ 187
76. Воспользовавшись тем фактом, что р (п\, гг2, пз,...) ^ р {п\ -Ь п2, пз,...), а
следовательно, Р (га + 2, n) ^ Р (га, n + 1), можно по индукции доказать, что P(m, n -f-
+ 1) ^ (га Н- п + 1) Р (т, п). Таким образом,
2Р (га, n) ^ Р (т + 2, п - 1) + Р (га + 1, п - 1) + еР (т, п - 1).
Итерируя это неравенство, получаем, что
2nP(0,n) = (w2 + ш)п+0 (n (w2 + tn)71"1) = (nw2n-i + ш2п) (l + О ((logn)3/n)) .
(Более точная асимптотическая формула может быть получена из производящей
функции в ответе к упражнению 75.)
78. 333321000
100022320 Поскольку все кодированные
221002102 разбиения должны быть (000000000)
2 1 0 2 2 0 0 1 3
79. Имеется 432 таких цикла. Однако они дают только 304 различных цикла
разбиений множества, поскольку различные циклы могут описывать одну и ту же
последовательность разбиений. Например, (000012022332321) и (000012022112123) в этом
смысле эквивалентны.
80. [См. F. Chung, P. Diaconis and R. Graham, Discrete Mathematics, 110 (1992),
52-55.] Построим ориентированный граф с von-\ вершинами и wn дугами; каждая
ограниченно растущая строка а\... ап определяет дугу от вершины а\... ап к
вершине р {а\... ап), где р — функция из упражнения 4 (например, дуга 01001213 идет
от 0100121 к 0110203). Каждый универсальный цикл определяет в этом
ориентированном графе цепь Эйлера; и обратно: каждая цепь Эйлера может использоваться
для определения одного или нескольких ограниченно растущих универсальных
последовательностей на элементах множества {0,1,..., п — 1}.
Цепь Эйлера существует согласно методу из раздела 2.3.4.2, если мы положим,
что последний выход из каждой ненулевой вершины ai...an_i идет по дуге
а\... ап-\ап-\. Однако последовательность может не быть циклической. Например,
не существует универсального цикла при п < 4, а при п = 4 универсальная
последовательность 000012030110100222 определяет цикл разбиений множества, который
не соответствует ни одному универсальному циклу.
Существование цикла можно доказать при п ^ 6, если начать с цепи Эйлера,
которая начинается с 0nxyxn~3u(uv)^n~2^2^ v\n нечетн°] для некоторых различных
элементов {и, v,x,y}. Такой шаблон возможен, если заменить последний выход из
0fc121n"3-fc с 0fc-1121n-2-fc на 0fc-1121n-3-fc2 для 2 ^ к ^ п - 4, а последними
выходами из 0121п~4 и 01п_32 будут соответственно 010п~41 и 0П_310. Теперь, если
мы будем выбирать числа цикла в обратном порядке, таким образом определяя и
и v, то можем положить х и у наименьшими элементами, отличными от {0, и, v}.
Можно найти, что количество универсальных циклов такого специального типа
огромно — как минимум
Ql (n " k^ П* * ^ ) / 0n " 1)1 (n ~ 2)3 з2п"522) ПРИ n > 6-
188 ОТВЕТЫ К УПРАЖНЕНИЯМ
7.2.1
Пока что среди них не известен ни один, который был бы легко декодируем. Случай
п = 5 рассматривается ниже.
81. Заметив, что w$ = 52, мы используем универсальный цикл для {1,2,3,4,5},
элементами которого являются 13 треф, 13 бубен, 13 червей, 12 пик и джокер. Один
такой цикл, найденный методом проб и ошибок с использованием цепи Эйлера,
описанной в предыдущем упражнении, представляет собой
(В действительности всего имеется 114056 таких циклов, если прибегать к
расстановке ак = cik-i в последнюю очередь и вводить джокер в колоду, как только это
становится возможным.) Если джокер считать обычной картой пик, фокус
получается с вероятностью
82. Имеется 13 644 решения, хотя это количество снижается до 1981, если считать
Наименьшая сумма равна 5/2, наибольшая — 25/2; замечательное решение
l+l+|+8+i = l+I+l+I+l = l+B+l+I+I
представляет собой один из двух разных способов получить сумму 118/15. [Эта
задача была предложена Б.А. Кордемским в Математической смекалке (1954) (задача 78
в английском переводе The Moscow Puzzles (1972)).]
Предметный указатель
сг-цикл, 108
Abel, Niels Henrik, 151
Ahlswede, Rudolph, 142
Almkvist, Gert Einar Torsten, 154
Andrews, George W. Eyre, 52; 154
Arbogast, Louis Francois Antoine, 87
Atkin, Arthur Oliver Lonsdale, 150
Auluck, Faqir Chand, 186
Beckenbach, Edwin Ford, 15
Becker, Harold W., 170; 175
Bell, Eric Temple, 86
Bellman, Richard Ernest, 30
Berele, Allan, 172
Bernoulli, Jacques (Jakob, James), 27; 86
Bessel, Priedrich Wilhelm, 61
Birkhoff, Garrett, 166
Bitner, James Richard, 18
Bjorner, Anders, 136
Blissard, John, 169
BoSkovid, Ru^er Josip (Бошкович, Pyrep
Йосип), 154
Bolker, Ethan David, 176
Bonferroni,Carlo Emilio, 153
Brandt, Jorgen, 163
Browning, Elizabeth Barrett, 107
Bruijn, Nicolaas Govert de, 94; 178
Brylawski, Thomas Henry, 156
Buck, Marshall Wilbert, 44
Cai, Ning, 142
Calabi, Eugenio, 118
Canfield, Earl Rodney, 183
Carlitz, Leonard, 162; 175
Caron, Jacques, 124
Catalan, Eugene Charles, 114
Cauchy, Augustin Louis, 66; 76
Cay ley, Arthur, 159
Chase, Phillip John, 22; 23; 27; 40; 128
Cheema, Mohindar Singh, 100; 185
Chen, William Yong-Chuan, 172
Chung Graham, Fan Rong King, 143; 187
Claesson, Anders Karl, 165
Clements, George Francis, 8; 36; 49; 140; 141
Colman, Walter John Alexander, 152
Colthurst, Thomas Wallace, 161
Comtet, Louis, 86; 178
Corless, Robert Malcolm, 179
Corteel, Sylvie Marie-Claude, 148
Cramer, Carl Harald, 181
Czerny, Carl, 130
Danh, Tran-Ngoc, 142
Dante Alighieri, 175
Darroch, John Newton, 184
Davidson, George Henry, 144
Daykin, David Edward, 134; 142
Debye, Peter Joseph William, 87
Dedekind, Julius Wilhelm Richard, 60; 61
Deng, Eva Yu-Ping, 172
Derbes, Joseph, 162
Diaconis, Persi Warren, 143; 187
Dobinski, G., 87
Dudeney, Henry Ernest, 101
Durfee, William Pitt, 56; 147
Dvorak, Stanislav, 115
Dyson, Freeman John, 150
Eades, Peter Dennis, 27; 129
Eckhoff, Jurgen, 135
Edgeworth, Francis Ysidro, 181
Ehrlich, Gideon, 18; 71; 84; 85; 123; 175
Endo-order, 25; 42
Engel, Konrad Wolfgang, 142
Enns, Theodore Christian, 129
Erdos, PaM, 30; 51; 62; 76
Erd6s, Peter L., 166
Etienne, Gwihen, 163
Euler, Leonhard, 57; 67; 72; 74; 110; 161
Felsenstein, Joseph, 179
190 ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
Fenichel, Robert Ross, 37
Fenner, Trevor Ian, 146
Ferrers, Norman Macleod, 56
Fibonacci, Leonardo, of Pisa; Leonardo filio
Bonacci Pisano, 58
Fisher, Ronald Aylmer, 153
Flight, Colin, 179
Flye Sainte-Marie, Camille, 143
Foulds, Leslie Richard, 179
Fourier, Jean Baptiste Joseph, 59
Fraenkel, Aviezri S., 120
Frankl, Peter, 136] 137
Franklin, Fabian, 72; 76
Fristedt, Bert, 155
Gale, David, 158
Gardner, Martin, 163
Garsia, Adriano Mario, 174
Garvan, Francis Gerard, 150
Goldman, Alan Joseph, 174
Golomb, Solomon Wolf, 11; 37; 164
Gonnet Haas, Gaston Henry, 179
Good, Irving John, 178
Gordon, Basil, 100
Graham, Ronald Lewis, 143; 187
Greene, Curtis, 157
Greg, Walter Wilson, 179
Griggs, Jerrold Robinson, 163
Guittone d'Arezzo, 107
Gupta, Hansraj, 153
Haigh, John, 96
Hall, Marshall, Jr., 152; 170
Hankel, Hermann, 90; 177
Hardy, Godfrey Harold, 61; 149; 159
Hare, David Edwin George, 179
Heine, Heinrich Eduard, 74
Henrici, Peter Karl Eugen, 60
Hickey, Thomas Butler, 27; 129
Hilbert, David, 49
Hilton, Anthony John William, 45; 135
Hindenburg, Carl Friedrich, 54; 87
Ho, Chih-Chang Daniel, 163
Hoare, Arthur Howard Malortie, 164
Hoeffding, Wassily, 184
Hume, Alexander, 8
Hurlbert, Glenn Howland, 144
Hutchinson, George Allen, 84; 100
Igusa, Kiyoshi, 163
Irwin, Joseph Oscar, 169
Ising, Ernst, 38; 118
Jackson, Bradley Warren, 144
Jacobi, Carl Gustav Jacob, 58; 74; 150
Janson, Carl Svante, 8
Jeffrey, David John, 179
Jenkyns, Thomas Arnold, 21
Joichi, James Tomei, 148; 174
Katona, Gyula, 30
Kirchhoff, Gustav Robert, 66
Kleber, Michael Steven, 161
Kleitman, Daniel J., 157
Klimko, Eugene Martin, 145
Knopp, Marvin Isadore, 151
Knuth, Donald Ervin, 8; 117; 179
Ко, Chao, 51
Korsh, James F., 118
Kramp, Christian, 87
Kruskal, Joseph Bernard, Jr., 30
Labelle, Gilbert, 186
Lagrange (= de la Grange), Joseph Louis, 178
Laguerre, Edmond Nicolas, 184
Landau, Ну man Garshin, 80
Laplace (= de la Place), Pierre Simon,
Marquis de, 88
Leek, Uwe, 143
Lehmer, Derrick Henry, 15; 43; 75; 129
Lehner, Joseph, 62; 76
Lindstrom, Bernt Lennart Daniel, 36; 49; 142
Linusson, Hans Svante, 140
Lipschutz, Seymour Saul, 118
Littlewood, John Edensor, 158; 159
Liu, Chao-Ning, 18
Lloyd, Edward Keith, 186
Loizou, Georghios (AolCov, Teufryios), 146
Lorenz, Max Otto, 159
Lovasz, Laszld, 46; 136
Lovejoy, Jeremy Kenneth, 148
Lucas, Francois Edouard Anatole, 143
Luneburg, Heinz, 120
Lunnon, William Frederick, 170
Macaulay, Francis Sowerby, 30; 49; 135
MacMahon, Percy Alexander, 81; 97
Malfatti, Giovanni Francesco Giuseppe, 152
Marshall, Albert Waldron, 159
Matsumoto, Makoto, 137
Matsunaga, Yoshisuke, 86
McCarthy, David, 21
McKay, Brendan Damien, 143
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ 191
McKay, John Keith Stuart, 54
Meifiner, Otto, 162
Mellin, Robert Hjalmar, 59; 75
Miller, Joan Elizabeth, 18; 40
Milne, Stephen Carl, 102
Misiurewicz, Michal, 162
Мог, Moshe, 120
Morgan, Augustus de, 10; 75
Moser, Leo, 93; 175; 178
Motzkin, Theodor Samuel, 100; 169; 185
Muirhead, Robert Franklin, 159
Naude, Philippe, 57
Newton, Isaac, 91; 182
Nijenhuis, Albert, 17; 77
Odlyzko, Andrew Michael, 62
Oettinger, Ludwig, 162
Olive, Gloria, 128
Olkin, Ingram, 159
Olver, Frank William John, 94
Partition, 52
Pascal, Ernesto, 15
Payne, William Harris, 19; 40
Peirce, Charles Santiago Sanders, 8; 85
Petrarca, Francesco, 107
Pitman, James William, 111; 169; 184
Pleasants, Peter Arthur Barry, 170
Poinsot, Louis, 50
Poisson, Simeon Denis, 59
Poisson, Simeon Denis, 75; 96
P6lya, Gyorgy, 146
Polya, Gyorgy, 159
Pomerance, Carl, 183
Prodinger, Helmut, 175
Pudldk, Pavel, 166
Rademacher, Hans, 46; 61
Rado, Richard, 51
Ramanujan Iyengar, Srinivasa, 61; 74; 149
Read, Ronald Cedric, 27; 129
Reingold, Edward Martin, 18
Reiss, Michel, 143
Remmel, Jeffrey Brian, 174
Riemann, Georg Friedrich Bernhard, 179
Robbins, David Peter, 176
Robinson, Robert William, 143; 179
Ruskey, Frank, 8; 44; 85; 103
Ruzsa, Imre Zoltan, 137
Ryser, Herbert John, 158
Savage, Carla Diane, 69; 130
Schur, Issai, 159
Schutzenberger, Marcel Paul, 30; 135; 141
Shakespeare (= Shakspere), William, 107
Shallit, Jeffrey Outlaw, 176
Shields, Ian Beaumont, 130
Simoes Pereira, Jose Manuel dos Santos, 118
Spenser, Edmund, 107
Stachowiak, Grzegorz, 129
St am, Aart Johannes, 96
Stanley, Richard Peter, 25; 52; 56; 136; 162;
172
Stanton, Dennis Warren, 148
Stephens, Nelson Malcolm, 170
Stirling, James, 89; 167
Stojmenovic, Ivan Danca (Стсдменовип,
Иван Данча), 54
Sutcliffe, Alan, 166
Sutherland, Norman Stuaxt, 7
Swinnerton-Dyer, Henry Peter Francis, 150
Sylvester, James Joseph, 73; 150
Szekely, Laszl6 Aladar, 166
Takagi, Teiji, 31; 46; 136
Tang, Donald Tao-Nan, 18
Tarry, Gaston, 143
Taylor, Brook, 93
Temperley, Harold Neville Vazeille, 65
Terquern, Orly, 50
Tippett, Leonard Henry Caleb, 153
Tokushige, Norihide, 137
Torek, Eva, 128
Touchard, Jacques, 169
Trost, Ernst, 162
Tuma, Jiri, 166
Walsh, Timothy Robert Stephen, 19; 131
Wang, Da-Lun, 31; 34
Wang, Ping Yang, 31; 34
Wegner, Gerd, 135
Whipple, Francis John Welsh, 34
White, Dennis Edward, 174
Whitworth, William Allen, 86
Wiedemann, Douglas Henry, 44
Wilf, Herbert Saul, 17; 77; 118
Williams, Aaron Michael, 129
Williamson, Stanley Gill, 164
Wong, Roderick Sue-Chuen, 94
Wright, Edward Maitland, 185; 186
Wyman, Max, 93; 175; 178
192 ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
Yan, Catherine Huafei, 172
Yee, Ae Ja, 149
Zanten, Arend Jan van, 121
Zeilberger, Doron, 73; 149
Zoghbi, Antoine Chaiban, 54
Абель, Нильс Хенрик (Abel, Niels Henrik),
151
Алгоритм
Вычисления сопряженного разбиения,
146
Генерации дуальных сочетаний
в уменьшающемся
лексикографическом порядке, 115
Генерации сочетаний в виде битовых
строк,115
Генерация бинарных разбиений, 160
Генерация дуальной
последовательности Чейза, 127
Генерация последовательности Чейза,
127
Генерация разбиений в порядке кода
Грея, 167
Генерация разбиений с использованием
связей, 164
Заполнение рюкзака, 17
Климко генерации разбиений, 145
Мультиразбиения в убывающем
лексикографическом порядке, 98
Ограниченно растущие строки
в лексикографическом порядке,
84
Пейна, 19
Последовательность Чейза, 23
Разбиение на т частей, 54
Разбиения в обратном
лексикографическом порядке, 54
Сочетания в лексикографическом
порядке, 13, 14
Сочетания двери-вертушки, 19
Алмквист, Герт Эйнар Торстен (Almkvist,
Gert Einar Torsten), 154
Альсведе, Рудольф (Ahlswede, Rudolph),
142
Алюк, Факир Чанд (Auluck, Faqir Chand),
186
Арбогаст, Луи Франсуа Антуан (Arbog&st,
Louis Francois Antoine), 87
Арбогаста формула, 87
Аткин, Артур Оливер Лонсдейл (Atkin,
Arthur Oliver Lonsdale), 150
Бак, Маршалл Вильберт (Buck, Marshall
Wilbert), 44
Бекенбах, Эрвин Форд (Beckenbach, Edwin
Ford), 15
Беккер, Гарольд В. (Becker, Harold W.),
170; 175
Белл, Эрик Темпль (Bell, Eric Temple), 86
Белла числа, 86; 90; 104
Обобщенные, 105; 106; 109
Беллман, Ричард Эрнест (Bellman, Richard
Ernest), 30
Береле, Аллан (Berele, Allan), 172
Бернулли числа, 86
Бернулли, Якоб (Bernoulli, Jacques (Jakob,
James)), 27; 86
Бессель, Фридрих Вильгельм (Bessel,
Friedrich Wilhelm), 61
Бесселя функция, 61
Бёрнер, Андерс (Bjorner, Anders), 136
Бинарное векторное пространством, 38
Бинарное разбиение, 81
Биномиальное дерево, 15; 39
Биркхофф, Гарретт (Birkhoff, Garrett), 166
Битнер, Джеймс Ричард (Bitпег, James
Richard), 18
Блиссард, Джон (Blissard, John), 169
Болкер, Этан Дэвид (Bolker, Ethan David),
176
Бонферрони, Карло Эмилио
(Bonferroni,Carlo Emilio), 153
Бошкович, Ругер Йосип (BoSkovic, Ruljer
Josip), 154
Брандт, Йорген (Brandt, J0rgen), 163
Браунинг, Элизабет Барретт (Browning,
Elizabeth Barrett), 107
Брейн, Николаас Говерт де (Bruijn, Nicolaas
Govert de), 94; 178
Брилавски, Томас Генри (Brylawski,
Thomas Henry), 156
Ванг, Да-Лун (Wang, Da-Lun), 31; 34
Ванг, Пинг Янг (Wang, Ping Yang), 31; 34
Ванга и Ванга теорема, 34
Вегнер, Герд (Wegner, Gerd), 135
Вершик, Анатолий Моисеевич, 65; 154
Видеманн, Дуглас Генри (Wiedemann,
Douglas Henry), 44
Вильф, Герберт Саул (Wilf, Herbert Saul),
17; 77; 118
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ 193
Вильяме, Аарон Майкл (Williams, Aaron
Michael), 129
Вильямсон, Стенли Джилл (Williamson,
Stanley Gill), 164
Виман, Макс (Wyman, Max), 93; 175; 178
Виппл, Френсис Джон Велш (Whipple,
Francis John Welsh), 34
Включения и исключения принцип, 63
Волш, Тимоти Роберт Стефен (Walsh,
Timothy Robert Stephen), 19; 131
Вонг, Родерик Су-Чен (Wong, Roderick
Sue-Chuen), 94
Ганкель, Герман (Hankel, Hermann), 90; 177
Ганкеля интеграл, 90
Ганкеля контур, 109; 177
Гарван, Френсис Джерард (Garvan, Francis
Gerard), 150
Гарднер, Мартин (Gardner, Martin), 163
Гарсия, Адриано Марио (Garsia, Adriano
Mario), 174
Гейл, Дэвид (Gale, David), 158
Гейла-Райзера теорема, 158
Гейне, Генрих Эдуард (Heine, Heinrich
Eduard), 74
Генерация разбиений целых чисел, 53
Генриси, Питер Карл Юджин (Henrici,
Peter Karl Eugen), 60
Гильберт, Давид (Hilbert, David), 49
Гильберта основная теорема, 49
Гинденбург, Карл Фридрих (Hindenburg,
Carl Friedrich), 54; 87
Гипотеза средних уровней, 130
Голдман, Алан Джозеф (Goldman, Alan
Joseph), 174
Голомб, Соломон Вольф (Golomb, Solomon
Wolf), 11; 37; 164
Гонне Хаас, Гастон Генри (Gonnet Haas,
Gaston Henry), 179
Гордон, Базиль (Gordon, Basil), 100
Грег, Вальтер Вильсон (Greg, Walter
Wilson), 179
Грега дерево, 179
Грехэм, Рональд Льюис (Graham, Ronald
Lewis), 143; 187
Грея код, 17
Грея цикл, 45
Григгс, Джеррольд Робинзон (Griggs,
Jerrold Robinson), 163
Грин, Кертис (Greene, Curtis), 157
Гуд, Ирвинг Джон (Good, Irving John), 178
Гупта, Хансрай (Gupta, Hansraj), 153
Дайсон, Фриман Джон (Dyson, Freeman
John), 150
Дан, Тран-Нгок (Danh, Tran-Ngoc), 142
Данте Алигьери (Dante Alighieri), 175
Дарроч, Джон Ньютон (Darroch, John
Newton), 184
Двенаддатизадачие, 52
Дворжак, Станислав (Dvorak, Stanislav),
115
Дебай, Питер Йозеф Вильям (Debye, Peter
Joseph William), 87
Девидсон, Джордж Генри (Davidson,
George Henry), 144
Дедекинд, Юлиус Вильгельм Рихард
(Dedekind, Julius Wilhelm
Richard), 60; 61
Дедекинда сумма, 61
Дедекинда теорема, 60
Денг, Ева Ю-Пинг (Deng, Eva Yu-Ping), 172
Дербе, Йозеф (Derbes, Joseph), 162
Дерева функция, 179
Дерево
Биномиальное, 15; 39
Грега, 179
Полу помеченное, 101
Джексон, Бредли Уоррен (Jackson, Bradley
Warren), 144
Дженкинс, Томас Арнольд (Jenkyns,
Thomas Arnold), 21
Джеффри, Дэвид Джон (Jeffrey, David
John), 179
Джиттоне д'Ареццо (Guittone d'Arezzo),
107
Джочи, Джеймс Томеи (Joichi, James
Tomei), 148; 174
Диаграмма
Феррерса, 56; 69; 94; 146; 158; 172; 174
Феррерса, обобщенная, 148
Диаконис, Перси Уоррен (Diaconis, Persi
Warren), 143; 187
Дилогарифмическая функция, 75
Добински, Г. (Dobinski, G.), 87
Дьюдени, Генри Эрнст (Dudeney, Henry
Ernest), 101
Дэйкин, Дэвид Эдвард (Daykin, David
Edward), 134; 142
Дюрфи прямоугольник, 147
Дюрфи, Вильям Питт (Durfee, William
Pitt), 56; 147
194 ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
Жоливальд, Филипп (Jolivald, Philippe),
143
Зайльбергер, Дорон (Zeilberger, Doron), 73;
149
Закон Киргофа, 66
Зантен, Аренд Ян ван (Zanten, Arend Jan
van), 121
Зогби, Антуан Шабан (Zoghbi, Antoine
Chaiban), 54
Игуса, Киеси (Igusa, Kiyoshi), 163
Идеальное разбиение, 81; 162
Идее, Питер Деннис (Eades, Peter Dennis),
27; 129
Изинг, Эрнст (Ising, Ernst), 38; 118
Изинга конфигурация, 38; 45
Инволюция, 109
Интеграл Ганкеля, 90
Ирвин, Джозеф Оскар (Irwin, Joseph
Oscar), 169
Йии, Ае Я (Yee, Ае Ja), 149
Кай, Нинг (Cai, Ning), 142
Калаби, Эженио (Calabi, Eugenio), 118
Канфилд, Ерл Родни (Canfield, Earl
Rodney), 183
Карлиц, Леонард (Carlitz, Leonard), 162;
175
Карон, Жак (Caron, Jacques), 124
Карона многофазное слияние, 124
Каталан, Эген Шарль (Catalan, Eugene
Charles), 114
Катона, Гюла (Katona, Gyula), 30
Квадрат
Дюрфи, 56
Кейли, Артур (Cayley, Arthur), 159
Киргоф, Густав Роберт (Kirchhoff, Gustav
Robert), 66
Киргофа закон, 66
Китаев, Сергей Владимирович, 165
Классон, Андерс Карл (Claesson, Anders
Karl), 165
Клаттер, 49
Клебер, Майкл Стивен (Kleber, Michael
Steven), 161
Клементе, Джордж Френсис (Clements,
George Francis), 8; 36; 49; 140; 141
Клементса-Линдстрема теорема, 36
Клика, 45
Климко, Юджин Мартин (Klimko, Eugene
Martin), 145
Кляйтман, Даниэл (Kleitman, Daniel J.),
157
Кнопп, Марвин Исадор (Knopp, Marvin
Isadore), 151
Кнут, Дональд Эрвин (Knuth, Donald
Ervin), 8; 117; 179
Ко, Чао (Ко, Chao), 51
Код Грея, 17
Схемы, близкие к идеальной, 21
Количество разбиений, 57
Верхняя граница, 59
Количество частей разбиения, 62
Колмэн, Вальтер Джон Александер
(Colman, Walter John Alexander),
152
Колтарст, Томас Уоллес (Colthurst, Thomas
Wallace), 161
Композиция, 11; 76
Комте, Луи (Comtet, Louis), 86; 178
Контур Ганкеля, 109; 177
Конфигурация Изинга, 38; 45
Кордемский, Борис Анастасьевич, 188
Кор лесс, Роберт Малкольм (Cor less, Robert
Malcolm), 179
Кортил, Сильвия Мари-Клод (Corteel,
Sylvie Marie-Claude), 148
Корш, Джеймс Ф. (Korsh, James F.), 118
Коши, Августин Луи (Cauchy, Augustin
Louis), 66; 76
Краевое представление разбиения, 57; 66
Крамер, Карл Гаральд (Cramer, Carl
Harald), 181
Крамп, Христиан (Kramp, Christian), 87
Криббедж, 50
Кривая Темперли, 65
Крускал, Иосиф Бернард мл. (Kruskal,
Joseph Bernard, Jr.), 30
Крускал а функция, 31
Крускала-Катоны теорема, 30
Лабель, Жильберт (Labelle, Gilbert), 186
Лавджой, Джереми Кеннет (Lovejoy,
Jeremy Kenneth), 148
Лагер, Эдмонд Николя (Laguerre, Edmond
Nicolas), 184
Лагранж, Жозе Луи (Lagrange (= de la
Grange), Joseph Louis), 178
Лагранжа
Формула обращения, 178
Ландау теорема, 80
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ 195
Ландау, Хайман Гаршин (Landau, Ну man
Gaxshin), 80
Ланнон, Вильям Фредерик (Lunnon,
William Frederick), 170
Лаплас (де ла Плас), Пьер Симон, маркиз
де (Laplace (= de la Place), Pierre
Simon, Marquis de), 88
Лапласа метод, 88
Лек, Уве (Leek, Uwe), 143
Лексикографическая генерация сочетаний,
13
Лемер, Деррик Генри (Lehmer, Derrick
Henry), 15; 43; 75; 129
Ленер, Джозеф (Lehner, Joseph), 62; 76
Линдстрем, Бернт Леннарт Даниэль
(Lindstrom, Bernt Lennart Daniel),
36; 49; 142
Линуссон, Ханс Сванте (Linusson, Hans
Svante), 140
Липшуц, Сеймур Саул (Lipschutz, Seymour
Saul), 118
Литтлвуд, Джон Эденсор (Littlewood, John
Edensor), 158; 159
Литтлвуда формула, 158
Ллойд, Эдвард Кейт (Lloyd, Edward Keith),
186
Ловас, Ласло (Lovasz, L^zk>), 46; 136
Лоизоу, Георгиос (Loizou, Georghios KolC^ov,
Yeujfryioc;), 146
Лоренц, Макс Отто (Lorenz, Max Otto), 159
Луч, 19
Лю, Чао-Нинг (Liu, Chao-Ning), 18
Люка, Франсуа Эдуард Анатоль (Lucas,
Francois Edouaxd Anatole), 143
Люнебург, Хайнц (Luneburg, Heinz), 120
Мажоризация, 78; 159
Майснер, Отто (Meifiner, Otto), 162
Мак-Карти, Дэвид (McCarthy, David), 21
Мак-Мэган, Перси Александер (MacMahon,
Percy Alexander), 81; 97
Маккей, Брендон Дамьен (McKay, Brendan
Damien), 143
Маккей, Джон Кейт Стюарт (McKay, John
Keith Stuart), 54
Маколей, Френсис Соверби (Macaulay,
Francis Sowerby), 30; 49; 135
Малфатти, Джованни Франческо
Джузеппе (Malfatti, Giovanni
Francesco Giuseppe), 152
Маршалл, Альберт Вальдрон (Marshall,
Albert Waldron), 159
Мацумото, Макото (Matsumoto, Makoto),
137
Мацунага, Ёшисуке (Matsunaga, Yoshisuke),
86
Меллин, Роберт Хяльмар (Mellin, Robert
Hjalmar), 59; 75
Меллина преобразование, 59; 75
Метод
Лапласа, 88
Седловой точки, 61; 87; 108; 109; 186
Стама, 96; 111
Метод Ньютона, 91; 182
Миллер, Джоан Элизабет (Miller, Joan
Elizabeth), 18; 40
Милн, Стефен Карл (Milne, Stephen Carl),
102
Мисюревич, Михал (Misiurewicz, Michal),
162
Многофазное слияние Карона, 124
Множество
Двойник, 33
Размах, 33
Стандартное, 33
Ядро, 33
Мозер, Лео (Moser, Leo), 93; 175; 178
Мор, Моше (Мог, Moshe), 120
Морган, Август де (Morgan, Augustus de),
10; 75
Моцкин, Теодор Сэмюэль (Motzkin,
Theodor Samuel), 100; 169; 185
Мультимножество
Перестановка, 43
Мультиномиальные коэффициенты, 43
Мультисочетание, 10
Мюрхед, Роберт Франклин (Muirhead,
Robert Franklin), 159
Нижняя полумодулярная решетка, 166
Ноде, Филипп (Naude, Philippe), 57
Ньенхуис, Альберт (Nijenhuis, Albert), 17;
77
Ньютон, Исаак (Newton, Isaac), 91; 182
Ньютона метод, 91; 182
Облексный порядок, 19
Объединенное разбиение, 73; 148
Ограниченно растущая строка, 83
Ограниченные разбиения, 62
Одлызко, Эндрю Майкл (Odlyzko, Andrew
Michael), 62
196 ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
Оливе, Глория (Olive, Gloria), 128
Олкин, Инграм (Olkin, Ingram), 159
Ольвер, Франк Вильям Джон (Olver, Prank
William John), 94
Оттингер, Людвиг (Oettinger, Ludwig), 162
Пак, Игорь Маркович, 148
Паскаль, Эрнесто (Pascal Ernesto), 15
Пейн, Вильям Гаррис (Payne, William
Harris), 19; 40
Перекрестный порядок, 32; 47; 142
Перестановка мультимножества, 43
Перестановки мультимножества, 25
Петрарка, Франческо (Petrarca, Francesco),
107
Пирс, Чарльз Сантьяго Сандерс (Peirce,
Charles Santiago Sanders), 8; 85
Пирса треугольник, 86; 104; 106; 109
Обобщенный, 105; 175
Расширение, 176
Питман, Джеймс Вильям (Pitman, James
William), 111; 169; 184
Питтель, Борис Гершонович, 96
Питтель, Борис Гершонович (Pittel, Boris
Gershon), 65
Питтеля теорема, 65
Плезантс, Питер Артур Берри (Pleasants,
Peter Arthur Barry), 170
Поверхность Римана, 179
Пойа, Герги (Polya, Gyorgy), 159
Пойа, Гёрги (Рб1уа, Gyorgy), 146
Покрытие, 78
Полиномиальный идеал, 49
Полу помеченное дерево, 101
Померанц, Карл (Pomerance, Carl), 183
Порядок
Перекрестный, 32
Последовательность
Раски, 103
Чейза, 22; 41
Последовательность Чейза, 41; 42; 123
Построение Стаховяка, 129
Преобразование
Меллина, 59; 75
Принцип
Включения и исключения, 63
Продингер, Гельмут (Prodinger, Helmut),
175
Прямоугольник Дюрфи, 147
Пуансо цикл, 143
Пуансо, Луи (Poinsot, Louis), 50
Пуассон, Симон Дени (Poisson, Simeon
Denis), 59
Пуассон, Симон Дени (Poisson, Simeon
Denis), 75; 96
Пуассона распределение, 96
Пуассона формула суммирования, 59; 75
Пудлак, Павел (Pudl&k, Pavel), 166
Пушкин, Александр Сергеевич, 107
Радемахер, Ханс (Rademacher, Hans), 46; 61
Радемахера функция, 46
Радо, Ричард (Rado, Richard), 51
Разбиение, 52
Бинарное, 81
Векторов, 97
Идеальное, 81; 162
Код Грея, 68
Количество, 57
Количество частей, 62
Краевое представление, 57; 66
Множества, 53
Мультимножества, 97
Объединенное, 73; 148
Ограниченное, 62
Представления, 55
Решетка, 101
Самосопряженное, 73; 148
След, 56
Сопряженное, 56
Целого числа, 53
Генерация, 53
Разбиение множества, 83
Код Грея, 84
Количество, 85
Случайное, 94
Универсальная последовательность,
112
Разложение Эджворта, 181
Райзер, Герберт Джон (Ryser, Herbert
John), 158
Райт, Эдвард Мейтланд (Wright, Edward
Maitland), 185; 186
Рамануджан Иенгар, Сриниваза
(Ramanujan Iyengar, Srinivasa), 61;
74; 149
Раски последовательность, 103
Раски схема, 85
Раски, Франк (Ruskey, Frank), 8; 44; 85; 103
Распределение
Пуассона, 96
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ 197
Распределение вероятностей
Фишера-Типпетта, 153
Эрдеша-Ленера, 63; 76
Рейнгольд, Эдвард Мартин (Reingold,
Edward Martin), 18
Рейсе, Мишель (Reiss, Michel), 143
Рекуррентное соотношение
Фибоначчи, 58
Реммель, Джеффри Брайан (Remmel,
Jeffrey Brian), 174
Решетка
Нижняя полу модулярная, 166
Решетка разбиений, 101
Рид, Рональд Седрик (Read, Ronald
Cedric), 27; 129
Риман, Георг Фридрих Бернгард (Riemann,
Georg Priedrich Bernhard), 179
Римана поверхность, 179
Роббинс, Дэвид Питер (Robbins, David
Peter), 176
Робинзон, Роберт Вильям (Robinson,
Robert William), 143; 179
Руза, Имре Золтан (Ruzsa, Imre Zoltcln),
137
Ряд Тейлора, 93
Ряд Фурье, 59
Сатерленд, Норман Стюарт (Sutherland,
Norman Stuart), 7
Сатклифф, Алан (Sutcliffe, Alan), 166
Сачков, Владимир Николаевич, 96
Свиннертон-Дайр, Генри Питер Френсис
(Swinnerton-Dyer, Henry Peter
Francis), 150
Седловая точка, 87
Секели, Ласло Аладар (Szekely, L^zl6
Aladax), 166
Семиинвариант, 109
Сильвестер, Джеймс Джозеф (Sylvester,
James Joseph), 73; 150
Символ Якоби, 151
Симметричная функция, 56
Симоэс Перейра, Хосе Мануэль дос Сантос
(Simoes Pereira, Jose Manuel dos
Santos), 118
Симплициальный комплекс, 48
След разбиения, 56
Солексный порядок, 54
Сопряженное разбиение, 56
Сочетание, 9
Лексикографическая генерация, 13
Мультимножества, 27
Представления, 10
С повторениями, 10
Спенсер, Эдмунд (Spenser, Edmund), 107
Стам, Аарт Джоаннес (Stam, Aart
Johannes), 96
Стама метод, 96; 111
Стандартное множество, 33
Стаховяк, Гжегож (Stachowiak, Grzegorz),
129
Стаховяка построение, 129
Стенли, Ричард Питер (Stanley, Richard
Peter), 25; 52; 56; 136; 162; 172
Стефенс, Нельсон Малкольм (Stephens,
Nelson Malcolm), 170
Стирлинг, Джеймс (Stirling, James), 89; 167
Стирлинга строка, 167
Стирлинга формула, 89
Стирлинга числа, 92; 111
Обобщенные, 106; 168
Стойменович, Иван Данча (Stojmenovic,
Ivan Danca Ctoj меновиЬ, Иван
Данча), 54
Строка Стирлинга, 167
Стэнтон, Денис Уоррен (Stanton, Dennis
Warren), 148
Сумма
Дедекинда, 61
Схема
Раски, 85
Схема рифмы, 107
Схема Эрлиха, 84
Сэведж, Карла Диана (Savage, Carla
Diane), 69; 130
Таблица
Факторная, 29; 44; 45
Такаги функция, 31; 46; 47
Такаги, Теиджи (Takagi, Teiji), 31; 46; 136
Танг, Дональд Тао-Нан (Tang, Donald
Tao-Nan), 18
Тарри, Гастон (Tarry, Gaston), 143
Тейлор, Брук (Taylor, Brook), 93
Тейлора ряд, 93
Темперли кривая, 65
Темперли, Гарольд Невилл Вазелл
(Temperley, Harold Neville
Vazeille), 65
Тень, 29; 50
Верхняя, 29
198 ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
Теорема
Ванга и Ванга, 34
Гейла-Райзера, 158
Гильберта основная, 49
Дедекинда, 60
Клементса-Линдстрема, 36
Ландау, 80
Питтеля, 65
Терквем, Орли (Terquem, Orly), 50
Терек, Эва (Тбгбк, Eva), 128
Типпетт, Леонард Генри Кейлеб (Tippett,
Leonard Henry Caleb), 153
Тождество
Эйлера, 58
Якоби, 58] 74
Токушиге, Норихиде (Tokushige, Norihide),
137
Треугольник
Пирса, 86; 104] 106] 109
Обобщенный, 105] 175
Расширение, 176
Трост, Эрнст (Trost, Ernst), 162
Тума, Иржи (Tuma, Jiri), 166
Тушард, Жак (Touchard, Jacques), 169
Уайт, Деннис Эдвард (White, Dennis
Edward), 174
Уитворт, Уильям Аллен (Whitworth,
William Allen), 86
Универсальная последовательность для
разбиений множества, 112
Универсальный цикл ^-сочетаний, 50
Факторная таблица, 29] 44] 45
Фаулдс, Лесли Ричард (Foulds, Leslie
Richard), 179
Фелсенштайн, Джозеф (Felsenstein, Joseph),
179
Феничел, Роберт Росс (Fenichel, Robert
Ross), 37
Феннер, Тревор Ян (Fenner, Trevor Ian), 146
Феррерс, Норман Маклеод (Ferrers, Norman
Macleod), 56
Феррерса диаграмма, 56] 69] 94] 146] 158]
172] 174
Фибоначчи рекуррентное соотношение, 58
Фибоначчи, Леонардо (Fibonacci, Leonardo,
of Pisa; Leonardo filio Bonacci
Pisano), 58
Фишер, Рональд Эйлмер (Fisher, Ronald
Aylmer), 153
Флайт, Колин (Flight, Colin), 179
Фли Сан-Мари, Камилла (Flye
Sainte-Marie, Camille), 143
Формула
Арбогаста, 87
Литтлвуда, 158
Обращения Лагранжа, 178
Стирлинга, 89
Суммирования Пуассона, 59] 75
Суммирования Эйлера, 59] 151
Харди-Рамануджана-Радемахера, 61;
75] 76
Франкл, Петер (Frankl, Peter), 136] 137
Франклин, Фабиан (Franklin, Fabian), 72]
76
Френкель, Авизри С. (Fraenkel, Aviezri S.),
120
Фристедт, Берт (Fristedt, Bert), 155
Функция
Бесселя, 61
Дерева, 179
Дилогарифмическая, 75
Крускала, 31
Радемахера, 46
Такаги, 31] 46] 47
Фурье ряд, 59
Фурье, Жан Батист Жозе (Fourier, Jean
Baptiste Joseph), 59
Хай, Джон (Haigh, John), 96
Хальберт, Гленн Холанд (Hurlbert, Glenn
Howland), 144
Харди, Годфри Гарольд (Hardy, Godfrey
Harold), 61] 149] 159
Харе, Дэвид Эдвин Джордж (Hare, David
Edwin George), 179
Хатчинсон, Джордж Аллен (Hutchinson,
George Allen), 84] 100
Хвостовой коэффициент, 164
Хикки, Томас Батлер (Hickey, Thomas
Butler), 27] 129
Хилтон, Энтони Джон Вильям (Hilton,
Anthony John William), 45] 135
Xo, Чин-Чанг Дэниел (Ho, Chih-Chang
Daniel), 163
Xoap, Артур Говард Малорти (Hoare,
Arthur Howard Malortie), 164
Холл, Маршалл, мл. (Hall, Marshall, Jr.),
152] 170
Хоффдинг, Вассили (Hoeffding, Wassily),
184
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ 199
Хьюм, Александр (Hume, Alexander), 8
Цикл
Грея, 45
Колеблющейся диаграммы, 104; 172
Пуансо, 143
Чанг, Грэхем (Chung Graham, Fan Rong
King), 143; 187
Чебышев, Пафнутий Львович, 181
Чейз, Филлип Джон (Chase, Phillip John),
22; 23; 27; 40; 128
Чейза последовательность, 22; 41; 42; 123
Чен, Вильям Юнг-Чуан (Chen, William
Yong-Chuan), 172
Черны, Карл (Czerny, Carl), 130
Чима, Мохиндар Сингх (Cheema, Mohindar
Singh), 100; 185
Числа
Белла, 86; 90; 104
Обобщенные, 105; 106; 109
Бернулли, 86
Стирлинга, 92; 111
Обобщенные, 106; 168
Эйлера, 110
Шаллит, Джеффри Аутлоу (Shallit, Jeffrey
Outlaw), 176
Шекспир, Уильям (Shakespeare (=
Shakspere), William), 107
Шилдс, Ян Бомонт (Shields, Ian Beaumont),
130
Шур, Исай (Schur, Issai), 159
Шутценбергер, Марсель Пауль
(Schutzenberger, Marcel Paul), 30;
135; 141
Эджворт, Френсис Исидро (Edgeworth,
Francis Ysidro), 181
Эджворта разложение, 181
Эйлер, Леонард (Euler, Leonhard Ейлеръ,
Леонардъ), 57; 67; 72; 74; 110; 161
Эйлера тождество, 58
Эйлера формула суммирования, 59; 151
Эйлера числа, 110
Экхофф, Юрген (Eckhoff, Jurgen), 135
Энгель, Конрад Вольфганг (Engel, Konrad
Wolfgang), 142
Эндрюс, Джордж В. Эйр (Andrews, George
W. Eyre), 52; 154
Эннс, Теодор Христиан (Enns, Theodore
Christian), 129
Эрдеш, Пал (Erdos, РаМ), 30; 51; 62; 76
Эрдеш, Петер (Erdos, Peter L.), 166
Эрлих, Гидеон (Ehrlich, Gideon), 18; 71; 84;
85; 123; 175
Эрлиха схема, 84
Этьен, Гвен (Etienne, Gwihen), 163
Якоби символ, 151
Якоби тождество, 58; 74
Якоби, Карл Густав Якоб (Jacobi, Carl
Gustav Jacob), 58; 74; 150
Якубович, Юрий Владимирович, 65; 96
Ян, Катрин Хуафей (Yan, Catherine
Huafei), 172
Янсон, Карл Сванте (Janson, Carl Svante), 8
Научно-популярное издание
Дональд Э. Кнут
Искусство программирования
Том 4, выпуск 3
Генерация всех сочетаний
и разбиений
Литературный редактор Т.П. Кайгородова
Верстка А.Н. Полинчик
Художественный редактор С.А. Чернокозинский
Корректор Л.А. Гордиенко
Издательский дом "Вильяме"
127055, г. Москва, ул. Лесная, д. 43, стр. 1
Подписано в печать 10.03.2007. Формат 70x100/16.
Гарнитура Times. Печать офсетная.
Усл. печ. л. 13,0. Уч.-изд. л. 14,9.
Тираж 3000 экз. Заказ № 4014
Отпечатано по технологии CtP
в ОАО "Печатный двор" им. А. М. Горького
197110, Санкт-Петербург, Чкаловский пр., 15.
ASCII СИМВОЛЫ
#0
#1
#2
*3
#4
#5
*6
*7
*8
#9
#b
*d
#f
*2x
1
11
#
$
'/.
&
'
(
)
*
+
-
/
*2x
#3x
0
1
2
3
4
5
6
7
8
9
;
<
=
>
7
*3x
#4x
<a
A
В
С
D
E
F
G
H
I
J
К
L
M
N
0
*4x
#5x
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
_
#5x
#6x
'
a
b
с
d
e
f
g
h
i
j
k
1
m
n
о
#6x
#7x
P
q
r
s
t
u
V
w
X
У
z
{
1
}
~
G
#7x
#
*1
0
#2
#
*3
1
#
*5
ИХ К
2
#6
оды
#
*7
ОПЕ1
3
#8
#
#9
X (OE
4
#a
[КОДЬ
#b
5
#c
*d
6
*f
7
#0x
TRAP bv
FCMP и
FUN v
FEQL v
FADD Av
FIX Av
FSUB 4u
FIXU Av
*0x
FL0T[I] Av
FLOTUCI] Av
SFLOT[I] Av
SFLOTUCI] Av
#lx
FMUL Av | FCMPE Av
FUNE v | FEQLE Av
FDIV40t, FSQRT AOv
FREM 4г, 1 FINT Av
*lx
MUL[I] iov
MULU[I] iov
DIVCI] бОг,
DIVU[I] бОг,
#2x
ADD [I] v
ADDUCI] v
SUB [I] v
SUBU[I] v
#2x
2ADDU[I] v
4ADDU[I] v
8ADDU[I] v
16ADDU[I] v
#3x
CMP[I] v
CMPUEI] v
NEG[I] v
NEGU[I] v
#3x
SL[I] v
SLU[I] v
SR[I] v
SRU[I] v
*4x
BN[B] V + П
BZ[B]
BP[B] v+n
B0D[B] v+n
*4x
BNN[B] v+n
BNZ[B] v+n
BNP [В] г,+тт
BEV[B] v+n
*5x
PBN [В] Зг;-тг
PBZ[B] 3г,-тг
PBP[B] Зг-тг
PB0D[B] 3v-n
*5x
PBNN [В] Зг,-тг
PBNZ[B] зг^-тт
PBNP[B] Зг,-тг
PBEV[B] 3v-n
#6x
CSN[I] v
CSZ[I] v
CSP[I] v
CS0D[I] v
*6x
CSNNCI] v
CSNZCI] v
CSNP[I] v
CSEV[I] v
#7x
ZSN[I] t,
ZSZ[I] г;
ZSP[I] v
ZS0D[I] v
#7x
ZSNNCI] u
ZSNZ[I] г;
ZSNP[I] v
ZSEV[I] v
*8x
LDB[I] »+v
LDBU[I] »+v
LDW[I] /х+г,
LDWU[I] /х+г,
*8x
LDT[I] д+г;
LDTU[I] n+v
LDO[l] /х+г;
LD0U[I] /х+г,
*9x
LDSF[I] M+u
LDHT[I] /х+г,
CSWAP[I] 2/х+2г,
LDUNCCI] /х+г,
*9x
LDVTS[I] u
PRELD[I] „
PREGO[i] v
GO [I] 3.;
#Ax
STB [I] /х+г,
STBU[I] /х+г,
STW[I] /х+г,
STWUCI] /х+г,
*Ax
STT[I] /х+г;
STTUCI] /х+г,
STO[I] /х+г,
STOUCI] /х+г,
#Bx
STSF[I] /х+г;
STHT[I] /х+г,
STC0[I] /х+г,
STUNC[I] n+v
*Bx
SYNCDCI] v
PREST [I] v
SYNCID[I] v
PUSHG0[I] 3г,
#Cx
0R[I] г,
0RN[I] v
NORCI] г;
X0R[I] v
*Cx
AND [I] „
ANDNCI] v
NANDCI] г,
NXORCI] v
#Dx
BDIF[I] г,
WDIF[I] v
TDIF[I] г,
0DIF[I] v
*Dx
MUX [i] г,
SADD[i] v
M0R[i] v
MX0R[I] v
*Ex
SETH v
SETMH u
SETML v
SETL v
INCH v
INCMH г;
INCML v
INCL v
*Ex
ORH г;
ORMH v
ORML v
ORL v
ANDNH г;
ANDNMH v
ANDNML v
ANDNL v
*Fx
JMP[B] г;
PUSHJ[B] v
GETA[B] v
PUT [I] v
*Fx
POP 3v
RESUME 5г.
[UN]SAVE 20n+v
SYNC г;
SWYM и
GET v
TRIP bv
#8
*9
#A *B
#c
#D
#E
7T — 2v, если условный переход выполняется; тг = 0, если условный переход не выполняется.
Компьютерные науки/Программирование
Искусство программирования
дональд э. кнут
Эта многотомная работа по анализу алгоритмов давно считается исчерпывающим
описанием классической информатики. Три завершенных тома, вышедших в свет к этому
времени, представляют собой неоценимый источник информации для теории и практики
программирования. Многочисленные читатели этого труда говорят о его огромном
влиянии на них и их профессионализм. Ученых потрясает красота и элегантность анализа
Кнута, программисты-практики используют эти книги как справочник для решения
возникающих перед ними проблем. И все восхищены обширностью, ясностью, точностью
и юмором Искусства программирования.
В настоящее время, работая над четвертым и последующими томами и над обновлением
уже вышедших, Кнут создал серию небольших брошюр, называемых выпусками, которые
планирует регулярно издавать. Каждый выпуск содержит один или несколько разделов
с новым или обновленным материалом. В конечном счете материалы выпусков войдут
в окончательные версии каждого тома, и начатая в 1962 году гигантская работа будет
завершена.
Том 4, выпуск 3
Данный выпуск представляет собой продолжение главы о комбинаторных алгоритмах,
которая будет включена в четвертый том Искусства программирования. Предыдущий
выпуск, посвященный генерации всех кортежей и перестановок, дополнен методами
генерации всех сочетаний и разбиений. Здесь читатели найдут как очень много нового
материала, так и на удивление большое количество связей с материалом первых трех
томов и с другими разделами информатики и математики. Как обычно, этот выпуск
включает множество творческих упражнений, а также некоторые задачи, которые все
еще ожидают решения.
Дональд Э. Кнут известен всему миру своей пионерской работой по алгоритмам
и методам программирования, разработками издательских систем TrfX и METAFONT,
а также научными работами. Заслуженный профессор Искусства программирования
Станфордского университета в настоящее время посвящает все свое время работе
над завершением данных выпусков и всех семи томов своей великой работы.
Издательский дом "ВИЛЬЯМС"
www.williamspublishing.com
▲
▼ ▼ADDISON-WESLEY
Pearson Education
www.awprofessional.com
ISBN 978-5-8459-1132-2