Есть идея! (Гарднер) - страница 14

Сьюзен. Хотела бы я знать, сколько различных дорог ведет от моего дома к школе. Подумаем! Сосчитать их, должно быть, не просто. Впрочем… Есть идея! Сосчитать дороги совсем не трудно! Очень даже просто!

Какая идея пришла в голову Сьюзен?

Вот как она рассудила.

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

Сьюзен. У этого перекрестка я поставлю число 2, так как к нему от моего дома ведут 2 различные дороги.

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

Сьюзен. Еще четыре перекрестка пометила числами. Скоро закончу.

Не поможете ли вы Сьюзен? Не подскажете ли ей, сколько различных дорог ведет от ее дома к школе?

Сколько путей?

Три перекрестка на ближайшей вертикали справа следует пометить (сверху вниз) числами 1, 4, 9, а два перекрестка на следующей вертикали — числами 4 и 13. Число 13, стоящее на карте у самого правого нижнего перекрестка, показывает, что Сьюзен может выбрать кратчайшую дорогу в школу 13 различными способами.

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

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

Чему равно число кратчайших путей, по которым ладья может перейти из одного углового поля на шахматной доске в другое, диагонально противоположное? Эта задача легко решается, если каждому полю на шахматной доске приписать по числу так же, как Сьюзен приписывала числа перекресткам на карте города. Ладья ходит только по горизонтали и вертикали. Следовательно, кратчайший путь из любой клетки в любую другую состоит в преодолении разделяющего клетки расстояния по горизонтали и по вертикали. Если числа расставлены верно (см. рис.