2.7. БАЛАНСИРОВКА
В обоих наших примерах на технику "разделяй и властвуй" задача разбивалась на подзадачи равных размеров. Это не было случайностью. Поддержание равновесия — основной руководящий принцип при разработке хорошего алгоритма. Для иллюстрации этого принципа мы приведем пример из сортировки и сопоставим эффекты от разбиения задачи на подзадачи неравных размеров и на подзадачи равных размеров. Из этого примера не следует заключать, что "разделяй и властвуй" — единственная техника, в которой полезна балансировка. В гл. 4 приводится несколько примеров, в которых эффективные алгоритмы получаются в результате балансировки размеров поддеревьев или весов двух операций.
Рассмотрим задачу расположения целых чисел в порядке неубывания. По-видимому, простейший способ сделать это — найти наименьший элемент, исследуя всю последовательность и затем меняя местами наименьший элемент с первым. Процесс повторяется на остальных
элементах, и это повторение приводит к тому, что второй наименьший элемент оказывается на втором месте. Повторение процесса на остальных
элементах сортирует всю последовательность.
Этот алгоритм приводит к рекуррентным уравнениям