Задача+о+Санта-Клаусе+и+его+помощниках.

“Санта периодически спит, пока не будет разбужен либо всеми своими девятью северными оленями, вернувшимися со свободной выпаски, либо группой из трех эльфов, которых у него всего девять. Если его разбудят олени, он запрягает каждого из них в сани, доставляет вместе с ними игрушки, и в заключение распрягает их (отпуская их на свободную выпаску). Если его разбудят эльфы, он ведет каждую группу в свой кабинет, совещается с ними по поводу разработки новых игрушек, а в заключение выводит каждого из них из кабинета (давая возможность вернуться к работе). Если Санта-Клауса будут ждать одновременно ждать и группа эльфов и группа оленей, он отдаст приоритет оленям”. (С). Рассуждая о задаче легко прийти к выводу, что нет большой разницы между Эльфами и Оленями. В нашей постановке, обе из этих биологичеких форм могут быть приравнены к абстрактной персоне, которая может выполнять какое-то мало понятное со стороны действие. По большому счету даже не важно что это за действие, но, исходя из начальных условия, Олени пасутся, а Эльфы работают. И тем и тем, на выполнение своих персональных действий необходимо некоторое время. Причем, каждая особь затрачивает на действие индивидуальное количество этого драгоценного ресурса. Что может быть интересного в логах? Дело в том, что разное значение исходных констант, обеспечивает совершенно разное поведение персонажей. К примеру, во время начальной отладки я обнаружил, что Санта может никогда не начать развозить подарки, так как будет постоянно занят рутиной совещаний. После длительных и безрезультатных поисков ошибки в коде, было обнаружено, что все укладывается в рамках стандартной статистической модели: если длительность выполнения задачи у Эльфа слишком короткое (3-4) месяца, то группы будут формироваться настолько часто, что Олени будут ожидать бесконечно долго в очереди (напомню, что задача была решена с инверсией условия). Какова практическая ценность данного упражнения с точки зрения логистики? Предположим, что Вы являетесь менеджером проекта, работающего по Scrum. Так как Вам надлежит ежедневно проводить совещания, временами переходящие в пленарные заседания Верховного Совета СССР, то может статься так, что времени на разработку у Эльфов не останется, и проект перейдет в стадию постоянного цейтнота. Аналогичная ситуация может сложится в треугольнике тим-лид — серверные разработчика — клиентские разработчики, с той лишь разницей, что как правило, тим-лид перестает выполнять свои непосредственные обязанности (спать — sleep;), а вынужден бесконечно разгребать код Оленей или злобных Эльфов. А если оторваться от сферы IT, то коэффициенты задачи Санты, являются основополагающими при процессах погрузки \ разгрузки \ складирования товаров. В общем, достаточно легко найти аналоги ей в реальной жизни.

@http://habrahabr.ru/post/143080/