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

Графы и интернет

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

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

Компьютерные сети могут быть организованы множеством способов. Каждому из них соответствует определенный тип графа: цикл (вверху слева), звезда (вверху справа) или дерево (внизу).

На рисунке выше изображены различные схемы соединения компьютеров между собой. Каждый схеме соответствует граф (цикл, дерево, звезда и другие), поэтому применяется термин «сетевая топология».

Конфигурация сети влияет на ее производительность и функциональные возможности. Необходимо различать графы, соответствующие физическому расположению компьютеров и кабелей, и графы, представляющие собой схему обмена данными между компьютерами (Ethernet, Token Ring и другие), узлы и соединения. Мы находимся на первом этапе эволюции компьютерных систем, и невозможно предугадать, что ждет нас впереди.

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

Сегодня с помощью поискового механизма, например Google, можно получить доступ к невиданным ранее объемам информации. Чтобы избежать путаницы, Google использует поискового робота (Googlebot) и сложные алгоритмы упорядочивания результатов поиска. Следующее описание, которое приводится самим Google, помогает в подробностях представить, как взвешиваются и упорядочиваются результаты поиска, которые вы видите на своем мониторе, с помощью алгоритма PageRank: «Алгоритм PageRank использует в высшей степени демократичную характеристику сети, применяя для организации страниц обширную структуру гиперссылок. По сути, Google считает ссылку со страницы А на страницу В как голос страницы А, отданный за страницу В. Google оценивает важность страницы по числу полученных ею голосов. Но Google учитывает не только число голосов или ссылок. Также анализируется страница, которая "отдает" свой голос.

Голоса, отданные "важными" страницами, имеют больший вес. Благодаря им другие страницы тоже становятся "важными".

Эти ценные и высококачественные страницы получают высокий PageRank и располагаются на верхних строчках в результатах поиска. Таким образом, PageRank является общим индикатором важности, присваиваемым Google, и не зависит от поискового запроса. Речь идет скорее о характеристике страницы, получаемой с помощью сложных алгоритмов, оценивающих структуру ссылок».

Графы в физике и химии

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

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

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

Графы также присутствуют в современных электрических цепях.

* * *

ГРАФ ВЕСОМ В 2400 ТОНН

Для Всемирной выставки 1958 года, проходившей в Брюсселе, был построен Атомиум — впечатляющее сооружение из стали высотой в 102 метра в виде девяти сфер, каждая из которых имеет 18 метров в диаметре, и 20 соединительных трубок. Его архитектора Андре Ватеркейна вдохновил граф, изображающий кристаллическую решетку железа.

* * *

Графы в архитектуре

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

На первом этаже дома на одну семью (дом имеет прямоугольную форму) нужно расположить следующие элементы: кухню (К), столовую (С), зал, или жилую комнату (3), коридор (Ко) и гараж для автомобиля (Г). Между этими помещениями должны существовать проходы из гаража в кухню, из кухни в столовую, из столовой в зал, из зала в коридор и из коридора в гараж.

Если обозначить точками элементы К, С, 3, Ко и Г и соединить некоторые точки ребрами, обозначающими отношение «доступ к», получится граф, в котором четко виден цикл: при таком расположении комнат можно провести путь из любой комнаты в любую. На основе этого графа можно сделать различные эскизы.

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

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

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

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

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

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

Еще один пример графов смежности представлен на следующих иллюстрациях.

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

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

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

* * *

ОТКРЫТЫЙ ВОПРОС

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

Обозначим за n число прямоугольников, на которые мы хотим разбить квадрат. Было подсчитано, что для n  = 1, 2, 3, 4, 5 и 6 существует соответственно 1, 1, 2, 7, 22 и 117 различных способов разбиения, которые не являются топологически эквивалентными.

Для n  >= 7 эта задача до сих пор не решена. По некоторым оценкам,

для n  = 7 существует около 700 решений, для n  = 8 — примерно 10000, для n  = 9 — порядка 250000 решений, но корректность подобной экстраполяции пока не подтверждена). Сегодня ученые занимаются поиском компьютерных алгоритмов решения этой задачи.

* * *

Графы в урбанистике

Кристофер Александер — известный американский архитектор и преподаватель, который в 70-е годы XX века развил идею о том, как графы, компьютерные программы и вычислительные мощности помогут рационализировать урбанистику и анализ архитектурных проектов. В его книге «Заметки о синтезе формы», которая приобрела огромную популярность, при анализе форм использовались графы. Особенно важной стала его статья «Город — не дерево», в которой, используя деревья из теории графов в качестве метафоры, Александер рассуждает на тему роста городов и озвучивает следующую гипотезу:

«Думаю, что естественно развивающийся город имеет структуру полурешетки… Искусственно спланированные города по структуре напоминают дерево».

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

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

Классические примеры древовидных городов — это Большой Лондон Лесли Патрика Аберкромби и Джона Форшоу, план Токио авторства Кэндзо Тангэ, план города Бразилиа архитектора Лусио Косты, план Чандигарха, созданный Ле Корбюзье, и другие.

План Токийского залива авторства японского архитектора Кэндзо Тангэ (1960).

Александер пришел к выводу, что структура города должна быть сложнее, чем древовидная:

«В представлении человека дерево — это самое простое средство представления сложных планов. Но город не является, не может и не должен быть деревом. Город — это вместилище жизни».

Графы в социальных сетях

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

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

Изучение социальных сетей восходит к XIX веку. Здесь можно вспомнить Эмиля Дюркгейма и Фердинанда Тенниса. В начале XX века это направление интенсивно развивалось усилиями Георга Зиммеля. В первых исследованиях на эту тему рассматривались такие темы, как трудовые отношения между группами и отдельными работниками, отношения между культурными сообществами и так далее. Во второй половине XX столетия эти исследования охватили все сферы общества. Этой темой занимались группы ученых из Гарвардского (Харрисон Уайт, Толкотт Парсонс), Калифорнийского (Линтон Фриман), Чикагского, Торонтского и других университетов.

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

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

* * *

ДРУЗЬЯ ПОЛИТИКА

В математическом фольклоре эта задача известна уже много лет. Допустим, что в группе людей, состоящей как минимум из трех человек, у любых двух ее членов есть ровно один общий друг. Следовательно, всегда существует человек (так называемый политик), который будет другом всех членов группы. Пол Эрдёш и Альфред Реньи формализовали и решили эту задачу с помощью графов: если граф имеет n вершин ( n  >= 3) и для любой пары вершин существует вершина, смежная им обеим, то должна существовать вершина, смежная всем вершинам графа.

* * *

«Маленький мир» Стэнли Милгрэма

В 1967 году психолог Стэнли Милгрэм провел эксперимент, подтвердивший концепцию «маленького мира». Несколько человек попросили передать сообщение (например, письмо) определенным людям по цепочке через своих знакомых. В большинстве случаев сообщение удалось передать получателю за шесть шагов. Этот эксперимент проводился неоднократно, и всякий раз число звеньев в подобных цепочках оказывалось очень малым (пять, шесть, восемь). Эта тема вновь обрела популярность с появлением гиперссылок и электронной почты.

Графы и расписания

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

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

Рассмотрим последовательность повседневных действий, например покупку продуктов в нескольких магазинах и приготовление ужина. При выполнении этих действий можно следовать такому алгоритму.

1. Пронумеровать все задачи и оценить сроки их выполнения.

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

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

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

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

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

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

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

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

* * *

МАТЕМАТИКИ И ЯИЧНИЦА

В одной из популярных юмористических историй о математиках рассказывается о том, как они пытаются оптимизировать все возможные действия, чтобы максимально снизить объем работы. Один математик подробно объяснил процесс приготовления яичницы: извлечь сковородку из шкафа, включить плиту, поставить сковородку на плиту, налить масло, дождаться, когда сковородка нагреется, разбить яйцо на сковородку, добавить соль… Этого математика спросили: «Что вы будете делать, если плита уже включена и сковородка стоит на конфорке?» Математик ответил: «Выключу плиту и уберу сковородку в шкаф, чем сведу задачу к ранее решенной».

* * *

NP-полные задачи

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

В 1900 году Давид Гильберт представил на Международном математическом конгрессе в Париже список задач, которые он считал наиболее важными для математиков XX века. Спустя сто лет Институт Клэя определил список «задач тысячелетия» и назначил премию в миллион долларов за решение каждой из них. Стоит отметить, что этот престижный институт был основан в 1998 году Аэндоном Клэем, известным предпринимателем и любителем математики. Клэй предложил за решение каждой из задач весьма привлекательную сумму, в отличие от Гильберта, который мог предложить тем, кто решит задачи из его списка, разве что вечную славу.

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

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

Немецкий математик Давид Гильберт .

Занимательные графы

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

Кто назовет 20?

Первый игрок называет одно из двух чисел — 1 или 2. На каждом шаге игроки по очереди прибавляют к результату 1 или 2. Выигрывает тот, кто первым назовет число 20. Существует выигрышная стратегия для этой игры или нет? Что изменится, если вместо 20 для победы нужно будет назвать 83 или 100?

Лабиринт в саду Роуз Болла

Благодаря занимательным задачам У. У. Роуз Болла, популярность получили многие разделы математики. В знаменитом лабиринте Болла стрелками отмечены вход и выход, а точкой — место, где лежат сокровища. Можно ли добраться до них? Попробуйте не подсматривать ответ, а найти решение сами. Получилось? Найденный маршрут будет состоять из линий и точек, обозначающих повороты. Каждое ребро полученного графа нужно пройти дважды (туда и обратно), поэтому все вершины маршрута должны иметь степень 2. Чтобы найти требуемый маршрут, достаточно отмечать коридоры, которые мы уже прошли, чтобы не терять времени понапрасну.

Лабиринт  Роуз Болла .

Игра «змейка»

В этой игре, которую придумал Дэвид Сильверман, два игрока по очереди проводят единичные отрезки на сетке размерами 5x5 или 6x6 точек (размер игрового поля может быть произвольным). Отрезки можно добавлять только в начало и конец «змейки». Проигрывает тот, кто вынужден построить цикл. Существует ли выигрышная стратегия для этой игры?

Изящная нумерация графа

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

Ханойские башни

В этой игре, придуманной Эдуардом Люка в 1883 году (и окруженной мнимыми легендами), на три стержня нанизаны п колец разного размера, упорядоченные от меньшего к большему. Большее кольцо не может располагаться поверх меньшего. Нужно переместить кольца так, чтобы восстановить исходную пирамиду на третьем стержне. На каждом ходу можно перемещать только одно кольцо.

Начальное положение колец в игре «Ханойские башни».

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

Игра Ним

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

Две цепи Мартина Гарднера

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

Цепь в прямоугольнике

В этом прямоугольнике нужно провести пять линий, соединяющих А и A, В и В, С и С, D и D, E и E, не пересекая отрезки AD и ВС, отмеченные на рисунке, и не выходя за границы прямоугольника.

Цепь на квадратной сетке

На этой сетке размерами 7 x 7 клеток нужно провести вдоль линий сетки пять непересекающихся линий так, чтобы соединить точки, обозначенные одинаковыми буквами.

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

* * *

МАРТИН ГАРДНЕР (1914–2010)

Среди звездных авторов научно-популярной литературы особенно ярко блистает звезда Мартина Гарднера. Он родился в городе Талса, штат Оклахома, США, изучал философию, но после окончания университета занялся журналистикой. Много лет, с 1956 по 1986 год, он был автором ежемесячной рубрики «Математические игры» в журнале Scientific American. В этой рубрике и в своих многочисленных книгах он рассказывал о математике, играх, алгоритмах, парадоксах и головоломках.

Кроме этого, он писал о философии, научных исследованиях в различных областях, а также был автором комментариев ко многим книгам. Любопытно, что Гарднер не выступал на конференциях и не преподавал, уделяя все время написанию книг и статей.

Обложка одной из многочисленных книг Мартина Гарднера .

* * *

Маршрут коня на шахматной доске

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

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

Маршрут коня по шахматной доске.

Математики не стали ограничиваться стандартной доской размером 8 x 8 клеток и рассмотрели возможность обхода досок размерами 5 x 5, 6 x 6, 3 x 10 клеток и других. Эти задачи представляют собой задачи на поиск гамильтоновых цепей в графах, число вершин которых равняется n x m. Например, для доски 6 x 6 клеток задача имеет решение, для досок 5 x 5 или 2 x 8 — нет.

Интересной читателю будет и задача о поиске маршрута шахматной ладьи из одного угла доски в диагонально противоположный, проходящего через все клетки. Можно рассмотреть доску размерами 7 x 7 клеток или общий случай — n x n клеток.

Простая игра в шахматы может подарить вам огромное множество интересных задач.

Льюис Кэрролл и эйлеровы графы

Чарльз Лютвидж Доджсон (1832–1898), известный под псевдонимом Льюис Кэрролл, был не только автором «Алисы в стране чудес», но и любителем занимательных математических задач. Он любил придумывать остроумные головоломки, которые мог решить даже ребенок. Некоторые из его задач сегодня изучаются в теории графов, хотя в его эпоху к теории графов относили лишь задачи, где нужно было нарисовать заданную фигуру, не отрывая карандаша от бумаги. Самой известной из подобных задач Кэрролла является задача о трех квадратах, показанных на рисунке. Сможете ли вы обойти этот граф, не отрывая карандаша от бумаги и не проводя ни одну линию дважды?

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

Задача о четырех окружностях

Спустя много лет после Кэрролла О’Бейрн придумал похожую задачу, заменив три квадрата четырьмя пересекающимися окружностями, которые образуют красивую симметричную фигуру.

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

Магические звезды

Магические звезды — удивительная игра из области занимательной комбинаторики, в которой смешались графы и числа.

На рисунке изображена пятиугольная звезда — символ школы пифагорейцев. Десять ее вершин обозначены кругами. Можно ли расположить в вершинах звезды числа от 1 до 10 так, чтобы сумма чисел во всех рядах из четырех вершин была одинаковой? Эта сумма чисел называется магической константой. Попробуйте решить задачу, прежде чем продолжить чтение. Чему равна магическая константа для пятиугольной звезды?

Не получается? Не беспокойтесь. Вам не удается найти решение, потому что его не существует. Обратите внимание, что сумма чисел от 1 до 10 равна 55. Так как каждое число находится в двух линиях звезды, общая сумма чисел на всех линиях будет в два раза больше, чем 55, то есть 110. Следовательно, магическая константа должна равняться 110/5, то есть 22. Остается распределить числа так, чтобы их сумма в каждом ряду равнялась 22.

Иан Ричардс заметил: каждая из линий, в одной из вершин которой находится число 1, должна содержать, помимо единицы, еще три числа, которые в сумме дают 21. Следовательно, сумма чисел на двух этих линиях равна 42, поэтому 10 должно находиться в одном ряду с 1 (шесть чисел, среди которых нет 10, в сумме могут давать максимум 4 + 5 + 6 + 7 + 8 + 9 = 39). Пусть А — линия, на которой находятся 1 и 10, В — другая линия с вершиной 1, С — другая линия с вершиной 10. Тогда числа на линии А можно расположить четырьмя возможными способами. Если на одной из линий будут располагаться 1, 10, 4, 7, то поместить числа на В и С будет невозможно. Следовательно, остаются три случая:

Магическая гексаграмма

Рассмотрим магическую гексаграмму. Гексаграмма — это знаменитая и легендарная Звезда Давида и Печать Соломона, образуемая наложением двух равносторонних треугольников друг на друга.

Как видно на рисунке, эта фигура имеет 12 вершин, расположенных в шесть рядов по четыре вершины, поэтому в этой задаче нужно присвоить вершинам числа от 1 до 12. Так как сумма чисел от 1 до 12 равна 78, магическая константа будет равна 78·2/6, то есть 26. Сосредоточьтесь, приготовьте карандаш и найдите одно из нескольких десятков решений этой задачи. В конце главы (стр. 122) приведено одно из возможных решений.

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

Более простой альтернативой этой задаче, для которой существует строгий алгоритм решения, являются магические окружности — несколько окружностей, в точках пересечения которых нужно расположить числа так, чтобы сумма чисел на каждой окружности была одинаковой, например 20. На следующем рисунке изображены три окружности, точки пересечения которых обозначены буквами а, b, с, d, р, q. Можно записать соотношения, которые должны выполняться для чисел, соответствующих этим вершинам.

Получим систему уравнений:

a + b + c + d = 20,

с + d + р + q = 20,

а + Ь + р + q = 20.

Сложив все три уравнения, получим:

2а + 2Ь + 2с + 2d + 2р + 2q = 60,

или, что аналогично,

a + b + c + d + q = 30.

Вычтем из последнего равенства все три исходных равенства и получим:

a + b = c + d = p + q = 10.

Следовательно, существует множество различных вариантов, например:

а = 1, Ь = 9, с = 2, d = 8, р = 3, q = 7.

* * *

ТЕОРИЯ ИГР

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

Изначально создатели теории игр полагали, что «типичные задачи, в которых рассматривается экономическое поведение, полностью идентичны математическому представлению соответствующих стратегических игр». На основе этого сравнения стало возможным проанализировать игры для одного и нескольких игроков, ввести понятие функции полезности, изучить стратегии различных типов (консервативные, выигрышные и другие), коалиции и голосования, вероятностный анализ и анализ случайных процессов и так далее.

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

* * *

Теория графов в школе

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

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

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

Среди преимуществ теории графов применительно к образованию выделим следующие.

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

2. Графы — прекрасный пример использования математики в повседневной жизни. Они помогают увидеть, что математика постоянно присутствует в окружающем нас мире.

3. Изучение графов стимулирует индуктивное, комбинаторное и пространственное мышление, что имеет высокую образовательную ценность.

4. Графы помогают решать занимательные и прикладные задачи. Благодаря работам Дьёрдя Пойа мы знаем, что решение задач — один из двигателей обучения математике.

С учетом вышесказанного будет уместно привести цитату из «Алисы в стране чудес» Льюиса Кэрролла, где Алиса разговаривает с Котом:

«— Скажите, пожалуйста, куда мне отсюда идти?

— А куда ты хочешь попасть? — ответил Кот.

— Мне все равно… — сказала Алиса.

— Тогда все равно, куда и идти, — заметил Кот».

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

Графы и нейронные сети

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

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

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

Нейронная сеть состоит из единичных элементов, называемых нейронами, которые получают входные сигналы и выдают результат — выходной сигнал. Между нейронами существуют различные взаимосвязи, сами нейроны могут объединяться в слои. В нейронах могут использоваться функции распределения или веса, присваиваемые входным значениям (функции распределения могут изменяться и применяться только к определенным множествам значений). В классическом программировании конкретный алгоритм по очереди выполняет определенные действия и вычисляет результат на основе входных значений. Нейронная же сеть может «обучаться» автоматически на основе больших объемов данных, а затем обрабатывать новые входные данные на основе изученных. Заметим, что в этой теории не только проводится аналогия с нейронами человеческого мозга, но также используются те же понятия, что и при обучении людей: «обучение», «гибкость», «терпимость», «самоорганизация».

Анализ медицинских изображений, распознавание рукописных текстов и голоса, управление работой электростанций, принятие инвестиционных решений, интеллектуальный анализ крупных баз данных, контроль работы промышленных предприятий — теория нейронных сетей находит интересное применение в этих и многих других областях. Очевидно, что нейронные сети можно объединять с экспертными системами, генетическими алгоритмами и другими методами, например нечеткой логикой, в которой значения истинности лежат на интервале между 0 и 1.

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

Классификацию нейронных сетей можно выполнить по аналогии с графами, разделив нейронные сети на сети прямого распространения (такие сети не содержат циклов и связей между нейронами одного слоя) и рекуррентные, в которых существует минимум один цикл. Нейронные сети также можно классифицировать по типу «обучения» или ввести другие критерии, например тип обрабатываемой ими информации (изображение, речь и так далее).

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

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

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

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

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

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

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

Графы и линейное программирование

В 40-е годы XX века появилось так называемое линейное программирование — теория, сыгравшая ключевую роль в объединении науки управления и ставшая частью раздела «Исследование операций».

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

Авиакомпания, которая определяет маршруты самолетов; организация, занимающаяся материально-техническим снабжением армии; международная корпорация, производящая прохладительные напитки; NASA, разрабатывающая космические программы; крупная телефонная компания, осуществляющая прокладку линий; телекоммуникационная компания, которой необходимо оптимальным образом расположить сетевое оборудование, — всем им требуется обработка огромных объемов данных, и все они имеют очень четкие цели.

Линейное программирование также связано со статистикой, теорией принятия решений и теорией игр.

Изначально линейное программирование не располагало мощными средствами вычислений, но со временем рост возможностей компьютеров способствовал бурному развитию этой дисциплины. Подсчитано, что современные организации тратят от 50 до 90 % вычислительных мощностей на решение задач линейного программирования. Среди тех, кто внес важный вклад в развитие линейного программирования, стоит выделить Джона фон Неймана, Леонида Канторовича, Тьяллинга Купманса, Джорджа Данцига, а также Нарендру Кармаркара — блестящего исследователя, работавшего в американской телефонной компании AT&T Bell, который изобрел радикально новый алгоритм решения задач линейного программирования.

Пионер линейного программирования математик Джон фон Нейман общается со студентами Принстонского университета. 1947 год.

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

Рассмотрим компанию, которая производит два типа напитков А и В, в которых сочетаются два ингредиента а и Ь. Прибыль от продажи единицы напитка А составляет 6 евро, от единицы напитка В — 5 евро. В рассматриваемый период на складе компании находится 1000 литров а и 3000 литров Ь. При производстве напитка А нужно смешать 0,3 литра а и 0,5 литра Ь, при производстве В — 0,3 литра a и 0,7 литра Ь. Как получить максимальную прибыль?

* * *

ДЖОРДЖ ДАНЦИГ (1914–2005)

Этот блестящий математик, который много лет преподавал в Стэнфордском университете, считается отцом линейного программирования наряду с Леонидом Канторовичем. Данциг разработал симплекс-метод, который лег в основу практического применения линейного программирования. О Данциге рассказывают, что как-то раз он опоздал на занятие по статистике, которое вел Ежи Нейман, и подумал, что две задачи, написанные на доске, — это домашнее задание. Оно оказалось трудным, но Данцигу удалось решить его. Нейман был потрясен: 25-летний студент справился с задачами, которые считались нерешаемыми. Если бы Данциг знал это, то никогда не попробовал бы решить их.

* * *

Условия задачи сведены в следующую таблицу.

Алгоритм решения подобных задач в общем виде выглядит так:

1. Какими ресурсами мы располагаем?

2. Каков объем каждого ресурса?

3. Какие продукты нужно изготовить?

4. Сколько ресурсов требуется для изготовления каждого продукта?

5. Каковы неизвестные величины?

6. По какой формуле рассчитывается прибыль?

Обозначим за х объем выпуска напитка А, за у — объем выпуска напитка В, для изготовления которых нам потребуются ресурсы а и Ь. Формула расчета прибыли, которую нужно максимизировать, такова:

6х + 5у.

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

x >= 0,

у >= 0,

0,5x + 0,3у =< 1000,

0,5x + 0,7у =< 3000.

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

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

Область допустимых решений имеет форму многоугольника. Именно в вершинах этого многоугольника расположены значения (х, у), обеспечивающие максимальную прибыль, которая рассчитывается по формуле 6х + 5у. Чтобы найти максимально возможный объем прибыли, нужно выполнить следующие действия.

1. Определить координаты вершин области допустимых решений.

2. Рассчитать прибыль в каждой из вершин области допустимых решений.

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

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

* * *

РЕШЕНИЯ ЗАДАЧ

Цепь в прямоугольнике (стр. 106):

Цепь на квадратной сетке (стр. 107):

Задача о четырех окружностях (стр. 110):

Магическая гексаграмма (стр. 111): чтобы получить одно из возможных решений, нужно расположить числа в рядах, сверху вниз, следующим образом: 10; 4, 7, 9, 6; 8, 5; 1, 11, 12, 2; 3.

* * *

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

Представьте область допустимых решений в виде графа (это может быть многоугольник на плоскости, многогранник в пространстве либо же некий плоский граф в общем виде).

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

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

Поиск быстрых алгоритмов для решения подобных задач всегда имел особую важность. Работы Кармаркара позволяют, например, найти оптимальные решения на 50—100 % быстрее, чем традиционный симплекс-метод.