Возможно, вы уже используете стратегию скорой даты исполнения, чтобы справляться с рабочей нагрузкой, тогда вам не нужно прислушиваться к советам программистов при выборе стратегии. Но, скорее всего, вы не в курсе, что это оптимальная стратегия. Более точным будет сказать, что для вас важен только один конкретный показатель – сокращение времени вашего максимального опоздания. Если вы не преследуете такую цель, то вам может больше подойти другая стратегия.
Например, возьмем холодильник. Если вы подписаны на приобретение сельскохозяйственной продукции, то каждую неделю или две к порогу вашего дома доставляют много свежих продуктов. У каждого продукта разный срок хранения, поэтому употребление их по принципу очередности истечения срока хранения кажется самой разумной идеей. Однако это еще не конец истории. Алгоритм скорой даты исполнения, или в нашем случае даты порчи продукта, оптимален для сокращения времени максимального опоздания, что означает минимизацию степени испорченности одного наиболее испорченного продукта, который вам предстоит съесть. Наверное, это не самый аппетитный критерий.
Возможно, вместо этого мы хотели бы минимизировать количество продуктов, которые испортятся. И тогда нам лучше прибегнуть к помощи алгоритма Мура. В соответствии с ним мы начинаем процесс отбора продуктов по принципу самого раннего истечения срока хранения, планируя употребление в первую очередь самого скоропортящегося продукта, по одному продукту за раз. Но как только мы понимаем, что не сможем съесть следующий продукт вовремя, мы берем паузу, возвращаемся ко всем тем продуктам, которые уже распланировали, и выбрасываем самую крупную единицу (ту, на употребление которой нам понадобится больше всего дней).
Например, возможно, нам придется отказаться от дыни, которую можно съесть только за несколько подходов. Таким образом, мы каждый раз следуем этой схеме, выкладывая продукты по сроку их хранения и отправляя в мусорное ведро самый объемный продукт из распланированных, который мы не успеваем съесть. В тот момент, когда мы можем употребить в пищу все оставшиеся продукты и не допустить порчи какого-либо из них, мы достигаем цели.
Алгоритм Мура по максимуму сокращает количество продуктов, которые вам пришлось бы выбросить. Разумеется, вы можете пустить еду на компост или просто отдать соседу. Но если речь идет о производственных или бумажных делах, когда вы не можете просто отказаться от проекта, при этом именно количество не исполненных в срок проектов (а не степень задержки их исполнения) имеет для вас большое значение, то алгоритм Мура не подскажет вам, как поступить с просроченными задачами. Все, что вы выкинули из основной части плана, можно сделать в самом конце в любом порядке, поскольку эти вопросы