От издательства
Предисловие
7.2. Комбинаторный поиск
7.2.1.4. Генерация всех разбиений
7.2.1.5. Генерация всех разбиений множеств
Ответы к упражнениям
Предметный указатель
Опкоды MMIX
Text
                    НОВЫЕ РАЗДЕЛЫ КЛАССИЧЕСКОГО ТРУДА
Искусство
программирования
ТОМ 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