Блинные числа
1. Нет, не любую.
2. Некоторые стопки из четырех блинов требуют четырех переворачиваний; пример вы видите на рисунке. На рисунке вы можете найти еще две такие комбинации. Никакая стопка из четырех блинов не требует больше четырех переворачиваний.
А вот систематический способ доказать эти утверждения. На схеме показана требуемая конечная конфигурация 1234, где размеры блинов указаны сверху вниз. Мы будем двигаться от нее в обратном порядке. Во второй строке показаны конфигурации, которые можно получить из 1234 одним переворотом. Одновременно это те конфигурации, которые можно упорядочить (то есть из которых можно получить 1234) одним переворотом. (Один и тот же переворот, повторенный дважды, возвращает стопку к первоначальной конфигурации.) В третьей строке показаны все конфигурации, которые можно получить из конфигураций первой строки одним переворотом. Они же – конфигурации, которые можно упорядочить до 1234 двумя переворотами. Обратите внимание: ровно одну конфигурацию третьей строки можно получить из двух конфигураций второй строки; это 1324. Поэтому схема в этом месте выглядит слегка асимметрично.
Строки 1, 2, 3 содержат 21 из 24 возможных конфигураций стопки. Не хватает трех: 2413, 3142 и 4231. В строке 4 показано, как их можно получить из строки 3 при помощи еще одного переворота – или, рассматривая переворот в обратном порядке, как из них можно получить 1234 за четыре переворота. (Остальные связи, ведущие к строке 4, опущены, поскольку они сильно усложняют схему и не нужны нам.) На рисунке выше наглядно показаны перевороты конфигурации 2413, необходимые для ее упорядочивания.
3. Наибольший блин либо находится на самом верху, либо нет. Если нет, вставляем лопаточку под него и переворачиваем все, что выше. Теперь самый большой блин находится на самом верху. Вставляем лопаточку под самый низ стопки и всю ее переворачиваем. Теперь самый большой блин находится в самом низу. Таким образом, нам потребовалось не более двух переворотов, чтобы самый большой блин оказался внизу. Оставляем его там и повторяем всю процедуру для следующего по величине блина: не более чем за два переворота он оказывается сверху, на самом большом, вторым снизу. Повторяем процедуру для третьего по размеру блина и т. д. Каждый раз требуется не более двух переворотов, чтобы поместить очередной блин на нужное место, так что не более чем за 2n переворотов мы сможем упорядочить всю стопку из n блинов.
4. P1 = 0, P2 = 1, P3 = 3, P4 = 4, P5 = 5.
Задачу о сортировке блинов предложил Джейкоб Гудман в 1975 г.; он опубликовал ее под псевдонимом Харри Дуэйтер, что по-английски звучит как «издерганный официант». Решение задачи известно для всех n вплоть до 19, а вот для 20 неизвестно. Результаты выглядят так:
Блинные числа, как правило, идут группами, увеличиваясь на единицу с увеличением n. К примеру, Pn = 3, 4, 5, 6 для n = 3, 4, 5, 6. Но эта закономерность нарушается при n = 7, так как P7 = 8, а не 7. После этого наблюдается скачок на 2 при n = 11 и еще один при n = 19.
Верхнюю оценку в 2n переворотов – мой ответ на вопрос 3 – можно улучшить. В 1975 г. Уильям Гейтс (да-да, тот самый Билл Гейтс) и Христос Пападимитриу заменили эту оценку на (5n + 5)/3.
Кроме того, Гейтс и Пападимитриу рассмотрели задачу о горелом блине. В ней все блины подгорели с одной стороны, которая может оказаться снизу или сверху, а вы должны сделать так, чтобы блины не просто встали в правильном порядке по размеру, но и все легли горелой стороной книзу. В 1995 г. Дэвид Коэн доказал, что задача о сортировке горелых блинов требует по крайней мере 3n/2 переворотов и может быть решена не более чем за 2n – 2 переворотов.
Если вы подумываете о том, чтобы решить задачу сортировки блинов для n = 20, имейте в виду, что для этого числа блинов существует 2 432 902 008 176 640 000 начальных конфигураций.