Научная статья на тему 'О проблеме Борсука для (0, 1)- и (-1, 0, 1)-многогранников в пространствах малой размерности'

О проблеме Борсука для (0, 1)- и (-1, 0, 1)-многогранников в пространствах малой размерности Текст научной статьи по специальности «Математика»

CC BY
181
14
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПРОБЛЕМА БОРСУКА / ДИАМЕТР / АЛГОРИТМЫ РАСКРАСКИ / BORSUK'S PROBLEM / DIAMETER / COLORING ALGORITHMS

Аннотация научной статьи по математике, автор научной работы — Гольдштейн Виталий Борисович

Изучается классическая гипотеза Борсука о разбиении множеств на части меньшего диаметра. Гипотеза доказывается для (0, 1)-векторов при n ≤ 9 идля (−1, 0, 1)-векторов при n ≤ 6. Здесь n -это размерность.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

On Borsuk's problem for (0, 1)- and (-1, 0, 1)-polytopes in spaces of small dimensions

Classical Borsuk's conjecture is studied on dividing sets into parts of smaller diameters. The conjecture is proved for (0, 1)-vectors with n ≤ 9 and for (−1, 0, 1)-vectors with n ≤ 6. Here n is the dimension.

Текст научной работы на тему «О проблеме Борсука для (0, 1)- и (-1, 0, 1)-многогранников в пространствах малой размерности»

УДК 519.174.7

В. Б. Гольдштейн

Кафедра анализа данных факультета инноваций и высоких технологий МФТИ;

ООО «Яндекс»

О проблеме Борсука для (0,1)- и (-1, 0,1)-многогранников в пространствах малой размерности

Изучается классическая гипотеза Борсука о разбиении множеств на части меньшего диаметра. Гипотеза доказывается для (0,1)-векторов при n ^ 9 и для (—1, 0,1)-векторов при n ^ 6. Здесь n — это размерность.

Ключевые слова: проблема Борсука, диаметр, алгоритмы раскраски.

1. Введение

В настоящей работе речь пойдет о классической гипотезе Борсука в комбинаторной геометрии. Сперва мы расскажем об истории возникновения и опровержения гипотезы (параграфы 1.1 и 1.2). Затем мы сформулируем основную задачу нашей работы и полученные нами результаты (параграф 1.3). В последнем параграфе текущего раздела мы опишем дальнейшую структуру статьи.

1.1. История возникновения гипотезы Борсука

Рассмотрим произвольное ограниченное неодноточечное множество V С Rn. Диаметром множества V называется величина

diam V = sup p(a, b),

a,b€V

где p(a, b) — евклидово расстояние между векторами. Представим V в виде

V = Vi и V2 и ... и Vf,

где каждое множество Vi имеет диаметр, строго меньший диаметра V. Это всегда возможно, поскольку любое множество может быть заключено в n-мерный куб со стороной diam V, который в свою очередь можно разделить на конечное число кубиков произвольно малого наперед заданного диаметра. Таким образом, корректно определена величина f (V), равная минимальному числу f частей меньшего диаметра, на которые можно разбить множество V. Положим

f(n) = max f(V).

J У ' VCR" ^ '

Описанная выше конструкция с покрытием множества кубом и разбиением этого куба на более мелкие кубики позволяет получить оценку f(n) ^ (Гл/^1 + 1)™- В то же время, беря в качестве V множество вершин правильного n-мерного симплекса, мы видим, что f (V) = n +1, и, значит, f (n) ^ n +1. Более того, К. Борсук доказал в 1933 году (см. [1]), что f (Bn) = n +1, где Bn — n-мерный шар. Наконец, очевидно равенство f (1) = 2, и не очень трудно показать, что f (2) = 3. Последний факт также установил Борсук с помощью одного более раннего результата Й. Пала (см. [1] и [2]). В итоге Борсук задал вопрос: верно ли, что всегда f (n) = n +1?

Впоследствии большинство специалистов в области верило в то, что ответ на вопрос Борсука должен быть положительным. И потому довольно быстро появился термин «гипотеза Борсука». Естественно, гипотеза гласила, что f (п) = п + 1, хотя сам Борсук столь определенных предположений не делал.

Проблема Борсука — это одна из основополагающих задач комбинаторной геометрии. В разное время ей занимались многие известные специалисты. О ней есть книги (см. [3—8]) и обзоры (см. [9—13]), в которых можно найти подробную историю возникновения и развития проблематики. В следующем параграфе мы остановимся на наиболее важном для нас аспекте: речь пойдет о контрпримерах к гипотезе Борсука.

1.2. Опровержение гипотезы

В течение шестидесяти лет гипотеза Борсука оставалась ни доказанной, ни опровергнутой. Был получен ряд промежуточных результатов. Например, в 1945 году Г. Хадвигер показал, что любое множество с гладкой границей допускает разбиение на нужное число частей (см. [14]). А на рубеже 1980—90-х гг. О. Шрамм (см. [15]) и Ж. Бурген-Й. Лин-денштраусс (см. [16]) установили самую лучшую из известных верхних оценок для f (п): f (п) ^ (1.224... + о(1))п. С одной стороны, результат Хадвигера кажется чем-то очень близким к доказательству гипотезы: аппроксимируем произвольное множество гладким, и все получится. С другой стороны, экспоненциальная верхняя оценка выглядит слишком далекой от истины, если верить в гипотезу.

И все-таки гипотеза оказалась неверна. В 1993 году Дж. Кан и Г. Калаи построили первый контрпример к ней. Они доказали, что /(п) ^ (1.203 ... + о( 1))^ и что эта оценка превосходит п + 1, начиная с размерности 2015 (см. [17]). В дальнейшем был получен ряд усилений этого результата. Эти усиления мы укажем в таблице 1.

Таблица 1

Авторы публикации Год Ссылка Размерность контрпримера к гипотезе п ^

Дж. Кан, Г. Калаи 1993 [17] 2015

А. Ни л ли 1994 [18] 946

Б. Вайссбах, Й. Грей 1997 [19] 903

А. М. Райгородский 1997 [20] 561

Б. Вайссбах 2000 [21] 560

А. Хинрихс 2001 [22] 324

О. Пихурко 2002 [23] 323

А. Хинрихс, X. Рихтер 2003 [24] 298

Вместе с тем известно, что гипотеза верна при п ^ 3 (см. [1, 25—29]). Наконец, асимптотическая нижняя оценка Кана-Калаи была уточнена А. М. Райгородским (см. [30]) в 1999 году. И теперь мы знаем, что

(1.2255...+о(1))^ ^/(гг) ^ (1.224...+о(1))га, ¡(п) = п+1 п ^ 3, ¡(п) > п+1 п ^ 298.

Отметим, что все нижние оценки для f (п), а также практически все контрпримеры к гипотезе Борсука получены с помощью построения множеств V С {0,1}п и V С {-1, 0,1}п.

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

1.3. Постановка задачи и формулировки результатов

В 1999 году Г. М. Циглер начал изучение задачи Борсука для (0,1)-многогранников в малых размерностях. Совместно с учениками он показал, что такие многогранники допускают гипотетическое разбиение на п + 1 часть меньшего диаметра при всех п ^ 9 (см. [31—35]). Иными словами, если и существуют контрпримеры к гипотезе Борсука в размерностях п ^ 9, то они не могут быть получены с помощью упомянутых конструкций.

В случае растущей размерности аналогичными задачами занимался А. М. Райгород-ский (см. [36—40]).

Поскольку разбиение многогранника на части равносильно разбиению множества его вершин (диаметры достигаются только на парах вершин), то мы будем работать только с конечными множествами V С {0,1}п и V С { — 1, 0,1}п. Дадим несколько определений.

Графом расстояний множества V С Ега с расстоянием d называется граф ), вершинами которого являются элементы множества V, а ребрами соединены точки на расстоянии d. Более формально, граф ) есть пара, состоящая из множества вершин V и множества ребер

Е = {{а, Ь}| а е V, Ь е V, р(а, Ь) = d}.

Далее, назовем графом расстояний множества V с расстоянием в отрезке [/,г] граф 0[г,г] (V), вершинами которого являются элементы множества V, а ребрами соединены точки на расстоянии из отрезка [/, г]. Более формально, граф 0[г)Г]^) есть пара, состоящая из множества вершин V и множества ребер

Е = {{а, Ь}| а е V, Ь е V, р(а, Ь) е [/, г]}.

Вместе с тем под графом диаметров множества V мы понимаем граф расстояний с расстоянием, равным величине V. Будем обозначать граф диаметров через

0Шат V (V).

Наконец, хроматическое число х(О) графа О — это минимальное число цветов, в которые можно так покрасить вершины графа 0, чтобы концы любого ребра имели разные цвета.

Очевидно, что для конечного множества V С Кга выполнено f (V) = х (0а1ат V(V)). Таким образом, в новых терминах гипотеза Борсука говорит о том, что х (0^ат V(V)) ^ п+1. А результаты группы Циглера сводятся к тому, что х (0^ат V (V)) ^ п +1 для всех V С С {0,1}п и для всех п ^ 9.

Про случай (—1, 0,1)-многогранников ничего известно не было.

Сформулируем основные результаты настоящей работы.

Теорема 1. Для любого п ^ 9 и для всех V С {0,1}п выполнено х (0^ат V (V)) ^ п + 1. Теорема 2. Для любого п ^ 6 и для всех V С {-1, 0,1}п выполнено х (0^ат V(V)) ^ п +1.

Теорема 2 принципиально новая, а теорема 1 опирается на принципиально новый подход, хотя ее результат и совпадает с ранее доказанным. Более того, именно подход из теоремы 1 позволяет обосновать теорему 2.

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

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

1.4. Дальнейшая структура статьи

Оставшаяся часть работы состоит из следующих разделов: «Описание алгоритма», «Доказательства лемм» и «Работа программы».

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

Доказательства всех фактов вынесены в раздел «Доказательства лемм», чтобы не отвлекать от самого алгоритма.

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

2. Описание алгоритма

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

2.1. Устройство алгоритма

Если говорить совсем грубо, нам нужно перебрать все подмножества V' множества {0,1}п или все подмножества V' множества { — 1, 0,1}п и для каждого из таких подмножеств проверить, что х (Сатт у' (V')) ^ п +1. Разумеется, полный перебор здесь невозможен. Впоследствии, рассматривая так называемые отсечения (которые и помогут нам значительно сократить перебор), мы, в частности, убедимся в том, что не всегда следует пробегать V = {0,1}п или V = {-1, 0,1}п целиком: зачастую достаточно взять некоторое собственное подмножество V С V и только из него извлекать в свою очередь подмножества V'. Поэтому ниже мы будем использовать обозначение V вместо V.

Далее извлечение V' из V мы организуем как наращивание множества V' путем последовательного добавления в строящееся множество одной вершины за другой. И иногда мы будем прерывать процесс за счет различных соображений, которые мы будем называть отсечениями перебора. Так или иначе это будут соображения, которые показывают, что при дальнейшем увеличении множества V' проверяемое нами свойство х (Сашт у' (V')) ^ п + 1 заведомо выполняется.

Напомним, что подграфом графа С = (V, Е) называют такой граф С' = (V',Е'), что V' С V и

Е' С {{м,^} е Е|м е V', V е V'}.

А индуцированным подграфом графа С = (V, Е) (индуцированным на множество V' С V) называют подграф, содержащий все ребра из Е, оба конца которых принадлежат V', т.е. С^'] = ^', Е'), где

Е' = {{и, V} е Е|м е V', V е V'}.

Также граф С = (V, Е) называют пустым, если Е = 0.

Введем некоторые обозначения.

• С = п + 1 — максимальное количество цветов, которое можно использовать при раскраске графа диаметров.

• й — диаметр подмножеств V' С V.

• Г = у]^) — граф запретов. В этом графе ребрами соединены вершины, которые не могут одновременно входить в множество V' С V. При упомянутом выше процессе наращивания множества V' мы будем следить за тем, чтобы очередная вершина не образовала ребро в графе запретов с какой-либо из уже выбранных вершин.

• На = С^^) — проверяемый граф. Это граф, который содержит все графы диаметров множеств V' С V. Так, для фиксированного V' с &аш V' = й граф диаметров

у' (V') равен индуцированному подграфу Н^^'].

В новых обозначениях утверждение V' = й эквивалентно следующим двум условиям:

1. ЕЛ\У'] — пустой граф;

2. '] — не пустой граф.

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

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

Для каждой функции будут описаны следующие составляющие:

• название функции;

• входные параметры, с которыми работает функция;

• возвращаемое значение — результат работы функции;

• описание действий, выполняемых функцией.

Для примера, запишем самые общие функции 2.1.1 и 2.1.2 (и равносильную ей 2.1.3), призванные доказать теоремы 1 и 2.

2.2. Отсечения перебора

Мы уже знаем, что основная функция алгоритма занимается перебором всех подмножеств V' С V, где в свою очередь V С V. Как было сказано в начале параграфа 2.1, перебор производится путем последовательного добавления в строящееся множество одной вершины за другой. И при добавлении очередной вершины всякий раз нужно, естественно, рассматривать один из двух вариантов:

1. добавить вершину в множество V';

2. не добавлять вершину в множество V'.

Функция 2.1.1 Проверка гипотезы Борсука procedure CHECKHYPOTHESls(n, V)

Входные параметры: размерность пространства n и множество V. Выходные значения: булево значение 0 или 1. end procedure

Описание действий. Данная функция просто разделит задачу на несколько подзадач. Для всех d £ [1, diam V] c помощью функции «Проверка гипотезы для заданного диаметра» она установит, верно ли, что для любого V' С V c diam V' = d выполнено X(Gdiam V' (V')) ^ C.

Если хотя бы для одного d неравенство не выполнено, то гипотеза неверна и мы возвращаем 0; иначе возвращаем 1.

Далее будем использовать более короткий псевдокод. procedure CHECkHYPOTHESls(n, V) for d =1 to diam V do

if не верно «Проверка гипотезы для заданного диаметра» (n, V, d) then return 0

end if end for return 1 end procedure

Функция 2.1.2 Проверка гипотезы для заданного диаметра procedure CHECKHYPOTHESlsFOR,DlAM(n, V, d)

Входные параметры: размерность пространства n, множество V и d. Выходные значения: булево значение 0 или 1. Возвращаем 1, если для любого подмножества V' С V c diam V' = d выполнено x(Gd(V')) ^ C. end procedure

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Функция 2.1.3 Проверка возможности раскраски procedure CheckColoring(H, F, C)

Входные параметры: H — проверяемый граф, F — граф запретов, C — максимальное количество цветов. Множества вершин у графов H и F совпадают и равны V.

Выходные значения: булево значение 0 или 1. Возвращаем 1, если для любого подмножества V' С V выполнены следующие условия:

1. F[V'] = (V', 0), а H[V'] не пуст.

2. X(H[V']) ^ C. end procedure

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

Каждое отсечение будет выглядеть как некоторый отдельный модуль. Обязанностями этого модуля будут:

1. обработка сигналов о совершаемых действиях, предпринимаемых перебором;

2. сообщение перебору о необходимости продолжения;

3. сообщение перебору о выполнении некоторых действий.

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

Кроме этого, модуль может запросить у перебора выполнение следующих действий:

1. включить вершину V в множество V';

2. не включать вершину V в множество V'.

Каждый модуль может за один раз запросить множество таких действий.

Функция 2.2.1 будет выполнять перебор и исполнять роль менеджера между модулями отсечений.

2.3. Отсечение пустоты подграфа ^

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

При получении информации о добавлении в множество новой вершины V отсечение проверяет, что в /п нет вершин, смежных с V в Г^. Также отсечение сообщает, что все смежные с V вершины должны немедленно отправиться в

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

2.4. Отсечение максимальности по включению

Это отсечение следит за тем, чтобы генерируемое множество было максимальным по включению, т.е. чтобы в него нельзя было добавить ни одной вершины V, не нарушив свойства пустоты подграфа Г^. Дело в том, что для подтверждения гипотезы Борсука достаточно рассматривать только максимальные по включению графы, так как выполнена следующая очевидная лемма 1.

Лемма 1. Пусть граф С является подграфом графа Н. Тогда х(С) ^ х(Н).

Вершину будем называть потенциально из /п, если она не принадлежит Положим Ро£еп£ш/ = {V : V € V \ Ои£}.

При поступлении информации о том, что вершина V добавляется в отсечение проверяет, что V смежна в Г^ с вершиной потенциально из /п. Если это условие не выполнено, то по окончании перебора в множество /п будет возможно добавить вершину V, а следовательно, /п не будет максимальным по включению. Поэтому продолжение перебора не требуется. Информация о том, что вершина добавляется в /п, никак не используется.

Это отсечение (равно как и предыдущее) очень просто в реализации и почти не требует вычислительных ресурсов. Однако количество отсеченных ветвей вполне существенно.

2.5. Отсечения, связанные с симметрией

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

Функция 2.2.1 Основной перебор 1: procedure MainBruteForce(H, F, C, Cuts, In, Out)

2: Входные параметры: H — проверяемый граф, F — граф запретов, C — максимальное количество цветов, Cuts — множество отсечений перебора. Выходные значения аналогичны значениям функции 2.1.3.

Определим переменные, которые будут модифицироваться в процессе принятия решений о взятии или не взятии вершин. 3: In 0 — множество вершин, которые должны входить в V'. 4: Out ^ 0 — множество вершин, которые не должны входить в V'. 5: Unknown ^ V — множество вершин, для которых еще не определено, в какое из множеств In или Out они попадут.

Данная функция рекурсивная. Будем подразумевать, что In и Out передаются как параметры. Выше же описаны начальные их значения. Мы не будем отдельно поддерживать множество Unknown, так как оно всегда может быть вычислено как V \ In \ Out.

6: if Unknown = 0 then return x(H[In]) ^ C & F[In] = (In, 0) 7: end if

8: v £ Unknown — произвольный элемент множества.

9: Для вершины v необходимо рассмотреть два варианта: поместить ее в множество In или в множество Out.

Добавление в множество In. 10: In ^ In U {v}

11: Сообщить всем отсечениям из Cuts, что вершина v добавлена в множество In. 12: if хотя бы одно отсечение сообщило о прекращении перебора then 13: перейти к рассмотрению следующего варианта.

14: end if

15: Поместить все действия, которые сообщили модули отсечений, в очередь Events. 16: while Events = 0 do

17: Выполнить действие, указанное в начале очереди.

18: Удалить выполненное действие из очереди.

19: Сообщить всем отсечениям из Cuts о совершенном действии.

20: if хотя бы одно отсечение сообщило о прекращении перебора then

21: перейти к рассмотрению следующего варианта.

22: end if

23: Добавить все вновь сообщенные действия от модулей в очередь Events.

24: end while

25: if не MainBruteForce(H, F, C, Cuts, In, Out) then return 0 26: end if

Добавление в множество Out выполняется аналогично.

Оба варианта либо были отсечены, либо при дальнейшем рассмотрении вернули 1, поэтому return 1 27: end procedure

2.5.1. Изометрическое преобразование

Определение 1. Пусть, как и прежде, p(a, b) — расстояние между точками a и b. Рассмотрим два множества точек V/ = {g1,..., gm} и V2' = {h,..., hm}. Если существует, такая биекция f : V/ <—> V2', что всегда p(a, b) = p(f (a),f (b)), то будем говорить, что V/ изометрично V2'.

Справедлива следующая очевидная лемма.

Лемма 2. Если V/ и V2' изометричны, то для любых l,r, удовлетворяющих неравенству l ^ r, граф G[1;r](V/) изоморфен графу G[1;r](V2').

Благодаря этому утверждению достаточно рассматривать только одно множество V' из каждого класса изометричных множеств. Ниже мы скажем, какое именно.

Определение 1. Введем лексикографический порядок на множестве всех подмножеств V' данного множества V. При этом элементы множества V мы считаем занумерованными, т.е. само множество V заранее упорядочено — например, лексикографически. Пусть, стало быть, V/ = {ab a2,..., a^} и V2' = {bb b2,..., bm} — подмножества множества V, причем a1 < a2 < ... < a^ и b1 < b2 < ... < bm. Будем говорить, что V/ < V2', если существует такой номер i, что a1 = b1;..., ai = bi; ai+1 < bi+1.

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

Лемма 3. Пусть множества V1, V изометричны и V1 < V2'. Пусть V2 = {b1; b2,..., bm}. Рассмотрим произвольное мно^юество V2'' — {b1, b2,..., bm, bm+1,..., bm+t}, полученное в результате пополнения множества V2'. Тогда существует множество V", которое изометрично множеству V2'' и лексикографически меньше него.

Лемма 3 позволяет прекратить перебор, как только обнаружится, что текущее множество In лексикографически больше некоторого изометричного ему множества In'.

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

2.5.2. Отсечение изометрии отражения

Один из примеров биекции f, которая сохраняет расстояние, — это отражение. В следующих леммах, поясняющих, что мы имеем в виду под отражением, мы отдельно рассмотрим случаи V = {0,1}n и V = { — 1, 0,1}n. При этом в последнем случае мы для удобства осуществим трансляцию и станем говорить о V = {0,1, 2}n.

Лемма 4. Пусть a = (аь ..., an), ai G {0,1}. Тогда отображение fa, переводящее каждый x = (x,..., xn), xi G {0,1}, в ((a1 + x1) mod 2,..., (an + xn) mod 2), является изо-метрией для любого V' С {0,1}n.

Лемма 5. Пусть a = (a1,...,an), ai G {0,1}. Далее, пусть a G {0,1}, x G {0,1,2}. Положим

d(0, x) = x, d(a, 1) = 1,

d(1,x) = 2 - x, x G {0, 2}.

Тогда отображение fa, переводящее каждый x = (x1,...,xn), xi G {0,1, 2}, в (d(a1,x1), ..., d(an,xn)), является изометрией для любого V' С {0,1, 2}n.

Функция 2.5.1 Проверка существования отражения в V = {0,1}n

1: procedure CheckReflectionOI(A)

2: A — проверяемое множество.

3: Выходные значения: 1 — если существует лексикографически меньшее B, полученное отражением; 0 — иначе.

4: if 0 £ A then

5: Симметрия fa при любом a £ A переведет A в множество B, содержащее 0.

Следовательно, B < A.

6: return 1

7: else

8: Если множество B симметрично множеству A и лексикографически меньше

него, то оно должно содержать 0. Но только симметрия fa с каким-либо a £ A переводит A в множество с 0.

9: Таким образом, мы свели задачу к рассмотрению стольких симметрий, сколько

есть элементов в множестве A: fa, где a £ A. 10: for a £ A do

11: if fa(A) < A then return 1

12: end if

13: end for

return 0 14: end if 15: end procedure

Приведем алгоритм, который для данного множества А = /п определяет, существует ли множество В = /п', лексикографически меньшее А и полученное из А отражением. Реализации для V = {0,1}п и V = {0,1, 2}п приведены в функциях 2.5.1 и 2.5.2 соответственно.

2.5.3. Отсечение изометрии перестановки координат

Имеет место следующая очевидная лемма.

Лемма 6. Пусть р = {р1,... ,рп} — перестановка чисел от 1 до п и х = (х1,... ,хп), хг е {0,1}. Тогда отображение /р(х) = (хР1, ...,хРп) является изометрией для любого множества точек V'.

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

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

000000000 000001111 000010000

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

Функция 2.5.2 Проверка существования отражения в V = {0,1, 2}n 1: procedure CheckReflection012(A) 2: A — проверяемое множество.

3: Выходные значения: 1 — если существует лексикографически меньшее B, полученное отражением; 0 — иначе. 4: mm£7ement ^ min(A) 5: if 2 G mm£7ement then

6: Если в минимальном элементе множества A присутствует координата 2, то сим-

метрия /(o,...,i,...,o) дает лексикографически меньшее множество B. return 1 7: else

8: Тогда минимальный элемент множества B, без ограничения общности, не имеет

координаты 2. Для достижения приемлемой скорости работы мы не будем рассматривать все возможные изометрии, которые приводят к отсутствию координаты 2, а ограничимся только отражениями /р(a), где a G A, а P(a) = v — точка, координаты которой определяется следующим образом:

fo, a G {0,1},

V = <

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

U, a = 2.

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

Таким образом, мы свели задачу к рассмотрению |A| симметрий. 9: for a G A do

10: if /P(a)(A) < A then return 1

11: end if

12: end for

return 0 13: end if 14: end procedure

Функция 2.5.3 Проверка существования перестановки в V = {0,1, 2}n 1: procedure CheckPermutation012(A) 2: A — проверяемое множество.

3: Выходные данные: 1 — если существует лексикографически меньшее B, полученное

перестановкой; 0 — иначе. 4: mm£7ement ^ min(A)

5: if биты в mm£7ement не упорядочены then

mm£7ement имеет вид, отличный от (0, 0,..., 0,1,..., 1, 2,..., 2). Но тогда изомет-рия, упорядочивающая биты этого минимального элемента, дает лексикографически меньшее множество B. 6: return 1

7: else

Минимальный элемент множества B, изометричного множеству A, должен быть также с упорядоченными битами; иначе существует B' < B. Это не определяет симметрию однозначно, так как одинаковые биты могут переставляться между собой произвольным образом.

Пусть ei — минимальный элемент множества A, т.е. ei = = (0, 0,..., 0,1,..., 1, 2,..., 2). При этом нулей ^ единиц /1, а двоек Z2. Тогда, не изменяя ei , можно произвольным образом переставлять элементы в трех отрезках: 8: ORDER_SEGMENTS = [0, /о), [/О, /О + li), [lo + li, lo + li + ¿2).

9: for i e [2, |A|] do

10: if в ei хотя бы в одном из отрезков ORDER_SEGMENTS элементы не

упорядочены then

существует симметрия, преобразующая ei в лексикографически меньший вектор и не изменяющая при этом все предыдущие ej, где j < i. 11: return 1

12: end if

Предыдущее условие не выполнилось, поэтому каждый отрезок упорядочен, т.е. сам имеет вид 0, 0,..., 0,1,..., 1, 2,..., 2. Разделим каждый отрезок из ORDER_SEGMENTS на три соответствующих отрезка постоянства. 13: end for

14: return 0

15: end if

Стоит заметить, что алгоритм проверяет лишь необходимое условие существования изометрии. Это некоторый компромисс между скоростью и точностью алгоритма, так как проверять все перестановки крайне не эффективно. При использовании битовых операций для определения упорядоченности и нахождения отрезков время работы алгоритма — O(k), где k — количество битов в каждом числе. 16: end procedure

Функция 2.5.4 Проверка «изометрии количества» в V = {0,1, 2}n

1: procedure CheckIzometriaNumbers012(A)

2: A — проверяемое множество.

3: Выходные данные: 1 — если существует лексикографически меньшее B, полученное перестановкой; 0 — иначе.

4: Пусть A = [в! < e2 < ... < ek].

5: Введем обозначение num(e) (e £ A) для тройки (k0, ki, k2), в которой k0 — количество нулей, k1 — количество единиц, k2 — количество двоек в векторе е.

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

7: if num(e1) не минимально then

8: return 1

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

9: else

10: Далее будем действовать так же, как и в функции 2.5.3, но на каждом отрезке

будем проверять num(e^). 11: Пусть e1 имеет вид (0, 0,..., 0,1,..., 1, 2,..., 2). Первые l0 элементов равны 0,

следующие /1 — 1, последние l2 — 2.

Тогда, не изменяя вектор e1, можно произвольным образом переставлять элементы в трех отрезках: 12: ORDER_SEGMENTS = [0,lo), [lo,lo + h), [lo + h,lo + h + I2).

13: for i £ [2, |A|] do

14: Пусть num[i,r](ei) — тройка из количеств нулей, единиц и двоек у вектора на

отрезке [l,r].

15: if Для некоторого j > i и [l,r] £ ORDER_SEGMENTS выполнено

num[i,r](ej) > num,[itr](ej) then 16: существует изометрия, преобразующая ej в вектор, лексикографически

меньший ej, и при этом не изменяющая все предыдущие et, где t < i. 17: return 1

18: end if

19: Как и в 2.5.3, разделим каждый отрезок из ORDER_SEGMENTS на три

части. 20: end for

21: return 0

22: end if 23: end procedure

2.6. Отсечение раскраски графа

Целью перебора является проверка всех подмножеств множества V на возможность раскрасить графы, индуцированные на них, в n +1 цвет. При некоторых принятых решениях в переборе сгенерированный граф гарантированно можно будет раскрасить в требуемое число цветов. Так, если граф G[V \ Out] возможно раскрасить в нужное количество цветов, то продолжение перебора, очевидно, не требуется.

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

2.6.1. Отсечение жадной раскраски

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

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

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

Функция 2.6.1 Жадная раскраска графа G 1: procedure SimpleGreedyColoring(G) 2: G = (V, E) — раскрашиваемый граф.

3: Выходные данные: для каждой вершины цвет при жадной раскраске. 4: UNCOLORED = V 5: while UNCOLORED = 0 do

6: v = наиболее подходящая вершина из UNCOLORED. (Выбирается некоторая

вершина из еще непокрашенных. Существует огромное количество способов выбирать такую вершину: по наименьшей степени, наименьшей сумме степеней соседей и т.д.) 7: INC _COLORS = 0

8: for u, что (u,v) G E & u G UNCOLORED do

9: INC_COLORS = INC_COLORS U {co/or [u]}

10: end for

11: co/or [v] = mex(INC _ COLORS)

(Здесь mex(A) = min(N \ A), т.е. наименьшее натуральное число, не входящее в A (предполагается 0 G N).) 12: UNCOLORED = UNCOLORED — {v} (удалить вершину v из множества не

покрашенных) 13: end while

return co/or 14: end procedure

оценки при добавлении вершины в граф и удалении вершины из графа.

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

2.6.2. Отсечение раскраски табу

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

В данной работе был применен алгоритм имитации отжига, основанный на табу-поиске (см. [41]). Алгоритм запускался не более чем на 300 итераций и использовался не с самого начала перебора, но лишь тогда, когда множество G[V \ Out] состояло из небольшого

Функция 2.6.2 Отсечение жадной раскраски графа. Вариант помещения вершины в Out procedure OuTGREEDYCOLORlNGCuT(co/ors, v)

Для реализации этого отсечения в процессе перебора будем поддерживать раскраску графа G[V \ Out] жадным алгоритмом и другую дополнительную информацию, связанную с раскраской.

co/ors[v] — цвет вершины v в раскраске.

inc_co/ors[v][c] — количество соседей вершины v, имеющих цвет с. Пусть (VP, EP) — множества вершин и ребер графа G[V \ Out]. Выходные данные: 0 — если не нужно продолжать перебор; 1 - если нужно. (Помещение вершины в множество Out по сути обозначает удаление вершины из рассматриваемого нами графа.) с = co/ors[v]

for u, что (u,v) £ EP и u > v, т.е. u красится жадным алгоритмом позже v do

inc_co/or s [u][c] — = 1 (вершина удалена, и мы обновляем число соседей)

if inc_co/ors[u][c] = 0 & с < co/ors[u] then (Цвет вершины u изменился, так как появился меньший незадействованный цвет.) co/ors[u] = с

Рекурсивно аналогичным образом обновим значения для всех соседей вершины u.

end if end for

X = max(co/or)

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

return X > n +1 (Продолжать нужно, если не удалось раскрасить в n +1 цвет.) end procedure

Функция 2.6.3 Отсечение жадной раскраски графа. Отмена помещения вершины в Out procedure UNDOOuTGREEDYCOLORlNGCuT(co/ors, v)

Будем использовать те же обозначения, что и в процедуре 2.6.2. Данная функция позволяет быстро пересчитать раскраску графа G[V\ Out] при обратном ходе перебора. Пусть G[V \ Out] = (VP, EP).

(Перемещение вершины из множества Out обратно в множество Unknown по сути обозначает добавление вершины в рассматриваемый нами граф.)

co/ors[v] = mex({c|mc_co/ors[v][c] > 0}) (Выбираем mex среди цветов соседей.) c = co/ors[v]

for u, что (u, v) G EP и u > v do mc_co/ors[u][c] + = 1

if mc_co/ors[u][c] = 1 & c = co/ors[u] then

Цвет вершины u изменился, так как текущий цвет стал задействован одной из соседних вершин.

while mc_co/ors[u][co/or[u]] > 0 do

co/or[u] + = 1 (Увеличиваем цвет, пока не найдем не задействованный.) end while

Рекурсивно обновляем значения для всех соседей вершины u. end if end for

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

количества вершин. В начале перебора очень хорошо действуют гораздо более простые и быстрые способы отсечения.

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

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

2.7. Дополнительные отсечения

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

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

Лемма 7. Пусть V = {0,1}п и d — некоторое число, квадрат которого нечетен. Тогда граф 0d(V) двудольный.

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

Лемма 8. Пусть V = {0,1}п и d — некоторое число, квадрат которого четен. Тогда граф 0d(V) состоит из двух изоморфных компонент связности.

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

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

Все леммы, сформулированные в алгоритме, очень просты. Нам представляется сколь-нибудь разумным привести здесь лишь доказательства лемм 4 и 5.

Лемма 4. Пусть a = (ai,..., an), ai G {0,1}. Тогда отображение fa, переводящее каждый x = (x1,... , xn), xi G {0,1}, в ((a1+x1) mod 2,..., (an+xn) mod 2), является изометрией для любого V' С {0,1}n.

Доказательство леммы 4. В пространстве {0,1}n квадрат евклидова расстояния мож-

n

но вычислить как p2(x, y) = (xi + yi) mod 2. Подставим функцию fa в выражение P2(fa(x),fa(y)): i=1

n

p2(fa(x),fa(y)) = J](((Xi + ai) mod 2) + ((y + ai) mod 2))) mod 2 =

i=1

n n n

= ^((xi + yi) mod 2) + ^(2ai mod 2) = ^(xi + yi) mod 2 = p2(x,y).

i=1 i=1 i=1

Лемма доказана.

Лемма 5. Пусть a = (a1,...,an), ai G {0,1}. Далее, пусть a G {0,1}, x G {0,1,2}. Положим

d(0, x) = x, d(a, 1) = 1,

d(1,x) = 2 - x, x G {0, 2}.

Тогда отображение fa, переводящее каждый x = (x1,...,xn), xi G {0,1, 2}, в (d(a1,x1), ..., d(an,xn)), является изометрией для любого V' С {0,1, 2}n.

Доказательство леммы 5. Квадрат евдклидова расстояния в {0,1, 2}n можно вычис-

n

лить как p2(x, y) = YI (xi — yi)2. Покажем, что (x — y)2 = (d(a, x) — d(a, y))2 для любого a.

i=1

Рассмотрим два случая:

1. если a = 0, то d(a,t) = t, поэтому равенство очевидно;

2. если a = 1, то следует рассмотреть три подслучая и убедиться в корректности равенства прямым вычислением:

• если x = y, то обе части равенства равны 0;

• если x = 0, y = 1, то обе части равны 1;

• если x = 0, y = 2, то обе части равны 2.

Так как все слагаемые суммы равны, то и сами суммы равны. Лемма доказана.

4. Работа программы

Для проверки гипотезы был осуществлен перебор с описанными методами отсечений. Программа была реализованна на языке программирования C+—+ для минимизации второстепенных накладных расходов.

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

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

Запуск программы производился на компьютере с частотой процессора 3.2 Ггц. Программа работала на одном процессоре и не использовала параллельных вычислений. Благодаря большому количеству различных отсечений все варианты стало возможно рассмотреть за несколько минут. Время работы программы при использовании всех отсечений указано в таблице 2.

Таблица 2

Множество V Время работы

{0,1}п, n^ 6 меньше секунды

{0Д}7 5 секунд

{ОД}8 10 секунд

{0,1}9 20 минут

{-1,0, l}n, n< 6 меньше секунды

{-1,0, l}n, n = 6 18 минут

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

Таблица 3

Множество V Все Без Без Без раскраски

отсечения раскраски симметрии и симетрии

{0,1}га, п ^ 6 0 0 0 0

{ОД}7 0 0 0 2

{ОД}8 0 11 2 67

{ОД}9 20 > 104 > 104 > 104

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

Литература

1. Borsuk K. Drei Satze über die n-dimensionale euklidische Sphäre // Fundamenta Math.— 1933.-V. 20.-P. 177-190.

2. Pal J. Uber ein elementares Variationsproblem // Danske Videnskab. Selskab. Math.-Fys. Meddel. - 1920. - V. 3, N 2.

3. Болтянский В. Г., Гохберг И. Ц. Теоремы и задачи комбинаторной геометрии. — М: Наука, 1965.

4. Boltyanski V. G., Martini H., Soltan P. S. Excursions into combinatorial geometry. — Berlin: Springer, 1997.

5. Brass P., Moser W., Pach J. Research problems in discrete geometry. — Berlin: Springer, 2005.

6. Райгородский А. М. Проблема Борсука.— М.: МЦНМО, 2006.

7. Райгородский А. М. Линейно-алгебраический метод в комбинаторике.— М.: МЦНМО, 2007.

8. Райгородский А. М. Системы общих представителей в комбинаторике и их приложения в геометрии.—М.: МЦНМО, 2010.

9. Raigorodskii A. M. Coloring distance graphs and graphs of diameters // сдано в печать.

10. Raigorodskii A. M. Three lectures on the Borsuk partition problem // London Mathematical Society Lecture Note Series. — 2007. — V. 347. — P. 202-248.

11. Raigorodskii A.M. The Borsuk partition problem: the seventieth anniversary // Math. Intelligencer. — 2004. — V. 26, N 3. — P. 4-12.

12. Райгородский А. М. Проблема Борсука и хроматические числа метрических пространств // УМН.-2001.-Т. 56, вып. 1. — С. 107-146.

13. Райгородский А. М. Вокруг гипотезы Борсука // Итоги науки и техники.— Сер. «Современная математика». — 2007. — Т. 23. — С. 147-164.

14. Hadwiger H. Uberdeckung einer Menge durch Mengen kleineren Durchmessers // Comm. Math. Helv. — 1945/46. — V. 18. — P. 73-75; Mitteilung betreffend meine Note: Uberdeckung einer Menge durch Mengen kleineren Durchmessers // Comm. Math. Helv.— 1946/47.-V. 19.-P. 72-73.

15. Schramm, O. Illuminating sets of constant width // Mathematika. — 1988. — V. 35.— P. 180-189.

16. Bourgain J., Lindenstrauss J. On covering a set in Rd by balls of the same diameter // Geometric Aspects of Functional Analysis (J. Lindenstrauss and V. Milman, eds.), Lecture Notes in Math., V. 1469.—Berlin: Springer-Verlag, 1991.—P. 138—144.

17. Kahn J., Kalai G. A counterexample to Borsuk's conjecture // Bulletin (new series) of the AMS. — 1933. — V. 29, N 1. — P. 60-62.

18. Nilli A. On Borsuk's problem // Contemporary Mathematics.— 1994.— V. 178.— P. 209-210.

19. Grey J., Weissbach B. Ein weiteres Gegenbeispiel zur Borsukschen Vermutung // Univ. Magdeburg, Fakultat für Mathematik.— 1997.— Preprint 25.

20. Райгородский А. М. О размерности в проблеме Борсука // УМН. — 1997. — Т. 52, вып. 6.-С. 181-182.

21. Weissbach B. Sets with large Borsuk number // Beitrüge zur Algebra und Geometrie.— 2000.-V. 41.-P. 417-423.

22. Hinrichs A. Spherical codes and Borsuk's conjecture // Discr. Math.—2002.—V. 243.— P. 253-256.

23. Pikhurko O. Borsuk's conjecture fails in dimensions 321 and 322.— arXiv:math.CO/0202112.

24. Hinrichs A., Richter C. New sets with large Borsuk numbers. http: //www.minet.unij ena.de/hinrichs/paper/18/borsuk.pdf

25. Eggleston H. G. Covering a three-dimensional set with sets of smaller diameter // J. London Math. Soc. — 1955. — V. 30.-P. 11-24.

26. Heppes A. Terbeli ponthalmazok felosztasa kisebb atmeröjU reszhalmazok összegere // A magyar tudomanyos akademia.— 1957.— V. 7.— P. 413—416.

27. Grünbaum B. A simple proof of Borsuk's conjecture in three dimensions // Proc. Cambridge Philos. Soc.-1957.-V. 53.-P. 776-778.

28. Макеев В. В. Об аффинных образах ромбододекаэдра, описанных вокруг трехмерного выпуклого тела // Зап. научн. семин. ПОМИ. — 1997.— Т. 246.— С. 191—195.

29. Макеев В. В. Аффинно-вписанные и аффинно-описанные многоугольники и многогранники // Зап. научн. семин. ПОМИ. — 1996.-Т. 231.—С. 286—298.

30. Райгородский А. М. Об одной оценке в проблеме Борсука // УМН. — 1999. — Т. 54, вып. 2. — С. 185-186.

31. Ziegler G. M. Lectures on 0/1-polytopes // Polytopes — Combinatorics and Computation (G. Kalai and G.M. Ziegler, eds.). // DMV-seminar.— Birkhauser-Verlag Basel, 2000.— V. 29.-P. 1-44.

32. Ziegler G. M. Coloring Hamming graphs, optimal binary codes, and the 0/1-Borsuk problem in low dimensions // Lect. Notes Comput. Sci. — 2001. — V. 2122. — P. 159—171.

33. Payan C. On the chromatic number of cube-like graphs // Discrete Math.— 1992.— V. 103.-P. 271-277.

34. Schiller F. Zur Berechnung und Abschötzung von Förbungszahlen und der ^-Funktion von Graphen // Diplomarbeit.— Berlin: TU, 1999,

35. Petersen J. Farbung von Borsuk-Graphen in niedriger Dimension // Diplomarbeit.— Berlin: TU, 1998.

36. Райгородский А. М. Проблема Борсука для (0,1)-многогранников и кросс-политопов // Доклады РАН.-2000.-Т. 371.-С. 600-603.

37. Райгородский А. М. Проблема Борсука для (0,1)-многогранников и кросс-политопов // Доклады РАН.-2002.-Т. 384.-С. 593-597.

38. Райгородский А. М. Проблема Борсука для целочисленных многогранников // Ма-тем. сборник.-2002.-Т. 193, № 10.-С. 139-160.

39. Райгородский А. М. Проблемы Борсука, Грюнбаума и Хадвигера для некоторых классов многогранников и графов // Доклады РАН. — 2003. — Т. 388, № 6. — С. 738-742.

40. Райгородский А. М. Проблемы Борсука и Грюнбаума для решетчатых многогранников // Известия РАН. — 2005. — Т. 69, № 3. — С. 81-108.

41. http://www.springerlink.com/content/y766j232466l1674/referrers/

Поступила в редакцию 15.10.2011

i Надоели баннеры? Вы всегда можете отключить рекламу.