Правила анализа алгоритма

Рассмотрим следующее утверждение:

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

Доказательство. Начнем с доказательства того, что ни один интервал не останется не помеченным. Рассмотрим один из интервалов Ij и предположим, что в порядке сортировки существует t интервалов, которые начинаются ранее и перекрывают его.

Эти t интервалов в сочетании с Ij образуют множество из i интервалов, которые все проходят через общую точку временной шкалы (а именно начальное время Ij), поэтому t + 1 ≤ d. Следовательно, t d − 1.

Из этого следует, что по крайней мере одна из меток d не будет исключена из этого множества интервалов t, поэтому существует метка, которая может быть назначена Ij.

Далее утверждается, что никаким двум перекрывающимся интервалам не будут назначены одинаковые метки. В самом деле, возьмем два перекрывающихся интервала I и I’ и предположим, что I предшествует I’ в порядке сортировки.

Затем, при рассмотрении алгоритмом I’, интервал I принадлежит множеству интервалов, метки которых исключаются из рассмотрения; соответственно, алгоритм не назначит I’ метку, которая использовалась для I.

Алгоритм и его анализ очень просты. По сути, в вашем распоряжении имеется d меток, затем при переборе интервалов слева направо с назначением доступной метки каждому обнаруженному интервалу никогда не возникнет ситуация, в которой все метки уже задействованы.

Так как наш алгоритм использует d меток, из (4.4) можно сделать вывод, что он использует минимально возможное количество меток. Данный результат обобщается следующим образом.

Описанный выше жадный алгоритм связывает каждый интервал с ресурсом, используя количество ресурсов, равное глубине множества интервалов. Это количество ресурсов является минимально необходимым, то есть оптимальным.

Узнай цену консультации

"Да забей ты на эти дипломы и экзамены!” (дворник Кузьмич)