Эти изменения в законодательстве открыли путь для новых стратегий поиска доноров и позволили резко повысить число операций. Они также поставили перед специалистами немало математических задач, связанных с эффективным использованием этих стратегий. При этом выяснилось, что инструменты для решения подобных задач уже существуют. Все началось почти 300 лет назад с одной маленькой головоломки.
Это хорошо известная история, но я все равно перескажу ее, по двум причинам. Она готовит сцену для математической задачи и, кроме того, часто воспринимается неверно. Я, например, до какого-то момента понимал ее совершенно неправильно.
Калининград, город в сегодняшней России, когда-то назывался Кёнигсбергом и в XVIII веке находился в Пруссии. Через город протекала река Прегель, образуя два острова, Кнайпхоф и Ломзе. В городе было семь мостов: каждый из берегов реки связывали с Кнайпхофом по два моста; с Ломзе берега связывало по одному мосту; и наконец, один мост соединял острова друг с другом. Сегодня топография города выглядит иначе. Во время Второй мировой войны город сильно бомбили, и мосты b и d на схеме были разрушены. Мосты a и c были снесены, чтобы освободить место для прокладки новой дороги, а взамен них были выстроены новые мосты. Вместе с оставшимися тремя мостами, один из которых был перестроен в 1935 году, сейчас в городе на прежних местах находятся пять мостов.
Легенда гласит, что граждан Кёнигсберга давно интересовал вопрос, можно ли совершить пешую прогулку по городу, пройдя по каждому из мостов ровно один раз. Это была простенькая головоломка из разряда тех, что можно увидеть на странице газеты или ее электронного эквивалента. Эксперименты с различными маршрутами не помогают ее решить – попробуйте сами. Однако аналогичные задачи имеют решение, причем иногда найти их непросто. Более того, число маршрутов, которые вы можете выбрать, бесконечно, хотя бы потому, что существует бесконечно много способов переходить с одной стороны улицы на другую или двигаться вперед и назад. Именно поэтому невозможно найти решение или доказать, что такового не существует, путем рассмотрения всех возможных маршрутов.
Можно, конечно, решить эту головоломку, придумав какую-нибудь хитрость. Например, зайти на мост, прогуляться по нему до противоположного берега и, не сходя на берег, развернуться и пойти назад, сказав при этом, что «прошел» по мосту. Но условие «прохождения» по мосту должно быть таким, чтобы исключать подобные фокусы. Аналогично «пешая прогулка» подразумевает, что нельзя проделать часть пути вплавь, на лодке, на воздушном шаре или принадлежащей доктору Кто машине TARDIS. Или пройти вверх по реке до какого-нибудь моста, который не вошел в схему Эйлера. Хотя «стряпать» головоломки таким образом может быть интересно и даже требовать немалой изобретательности, понятно, что это все же жульничество. Я не собираюсь тщательно формулировать все до единого условия, необходимые, чтобы исключить стряпню подобного рода. Меня гораздо больше интересует, как, переведя эту головоломку на язык математики, доказать невозможность отыскания ее решения, не прибегая к стряпне. Стряпня здесь заключается в формулировании этой задачи, а не в ее решении или доказательстве невозможности найти решение, если она уже сформулирована.
И тут на сцене появляется Эйлер, ведущий математик своего времени. Он работал практически во всех областях математики, существовавших на тот момент, и в некоторых областях, которых не существовало, пока он не положил им начало. Кроме того, Эйлер сумел применить математику к огромному числу разнообразных задач реального мира. Его работы варьируют от энциклопедических томов по основным областям чистой математики и математической физики до диковинок и странностей, которые просто показались ему интересными. В начале XVIII века он обратился к загадке о кёнигсбергских мостах, сформулировал ее как точный математический вопрос и предложил доказательство того, что прогулку с обозначенными условиями совершить невозможно. Причем невозможно даже в том случае, если маршрут будет не круговым и закончится не там, где начался.