Комбинаторные алгоритмы для программистов

          

Процесс последовательных разбиений


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

Применим описанный прием для решения следующей задачи.

Пусть дано некоторое множество из

Процесс последовательных разбиений
предметов, стоящих в определенном порядке. Разобьем это множество на две непустые части так, чтобы одна из этих частей лежала левее второй (то есть, скажем, одна часть состоит из элементов от первого до
Процесс последовательных разбиений
- го, а вторая - из элементов от
Процесс последовательных разбиений
-го до
Процесс последовательных разбиений
-го). После этого каждую из частей таким же образом разобьем на две непустые части (если одна из частей состоит уже из одного предмета, она не подвергается дальнейшим разбиениям). Этот процесс продолжается до тех пор, пока не получим части, состоящие из одного предмета каждая. Сколько существует таких процессов разбиения (два процесса считаются различными, если хотя бы на одном шагу они приводят к разным результатам)?

Обозначим число способов разбиения для множества из

Процесс последовательных разбиений

предметов через

Процесс последовательных разбиений
. На первом шагу это множество может быть разбито
Процесс последовательных разбиений
способами (первая часть может содержать один предмет, два предмета,…,
Процесс последовательных разбиений
предметов). В соответствии с этим множество всех процессов разбиений распадается на
Процесс последовательных разбиений
классов - в
Процесс последовательных разбиений
- класс входят процессы, при которых первая часть состоит из
Процесс последовательных разбиений
предметов.

Подсчитаем число процессов в

Процесс последовательных разбиений
-м классе. В первой части содержится
Процесс последовательных разбиений
элементов. Поэтому ее можно разбивать далее
Процесс последовательных разбиений
различными процессами. Вторая же часть содержит
Процесс последовательных разбиений
элементов, и ее можно разбивать далее
Процесс последовательных разбиений

процессами. По правилу произведения получаем, что

Процесс последовательных разбиений
- класс состоит из
Процесс последовательных разбиений
различных процессов. По правилу суммы отсюда вытекает, что
Процесс последовательных разбиений

(7.6)

Таким образом получено рекуррентное соотношение для

Процесс последовательных разбиений
. Двоичный поиск, поиск делением пополам. Поиском по числам Фибоначчи называется поиск, основанный на том, что область поиска делится в точках, являющихся числами Фибоначчи.



Содержание раздела