Технологическое отображение ППВМ: различия между версиями

Перейти к навигации Перейти к поиску
Строка 62: Строка 62:




Вспомним, что Cv определяет K-допустимый разрез (X, X0), где X0 = Cv, X = Nv - Cv. Обозначим за H(X, X0) высоту разреза (X, X0), определяемую как H(X;X0) = max{d(M*(u)): и 2 input(X0)g + 1. Очевидно, что H(X, X0) обеспечивает минимальную глубину для любого K-покрытия вершины v, содержащего Cv = X0. Кроме того, за счет подходящего выбора разреза можно минимизировать высоту H(X, X0), что позволяет получить K-покрытие с минимальной глубиной:
Вспомним, что <math>C_v \;</math> определяет K-допустимый разрез (X, X'), где <math>X' = C_v, X = N_v - C_v \;</math>. Обозначим за H(X, X') ''высоту'' разреза (X, X'), определяемую как <math>H(X, X') = max \{ d(M^*(u)): u \in input(X') \} + 1 \;</math>. Очевидно, что H(X, X') обеспечивает минимальную глубину для любого K-покрытия вершины v, содержащего <math>C_v = X' \;</math>. Кроме того, за счет подходящего выбора разреза можно минимизировать высоту H(X, X'), что позволяет получить K-покрытие с минимальной глубиной:




Теорема 1. Если K-допустимый разрез (X, X0) v имеет минимальную высоту среди всех K-допустимых разрезов v, то K-покрытие M*{v) = fX0g + \J{M*(u): u 2 input(X0)g имеет минимальную глубину среди всех K-покрытий v.
'''Теорема 1. Если K-допустимый разрез (X, X') v имеет минимальную высоту среди всех K-допустимых разрезов v, то K-покрытие <math>M^*(v) = \{ X' \} + \bigcup \{ M^*(u): u \in input(X') \}</math> имеет минимальную глубину среди всех K-покрытий v.'''




Строка 71: Строка 71:




По определению, высота разреза зависит от (глубин) K-покрытий с минимальной глубиной вершин из множества Nv - {v}. Для этого можно использовать процедуру динамического программирования, следующую топологическому порядку, так что к моменту, когда необходимо определить K-покрытие v с минимальной глубиной, K-покрытие каждой вершины из Nv - {v} с минимальной глубиной уже известно, и высоту разреза можно легко определить. Именно так работает первый этап алгоритма FlowMap.
По определению, высота разреза зависит от (глубин) K-покрытий с минимальной глубиной вершин из множества <math>N_v - \{ v \} \;</math>. Для этого можно использовать процедуру ''динамического программирования'', следующую топологическому порядку, так что к моменту, когда необходимо определить K-покрытие v с минимальной глубиной, K-покрытие каждой вершины из <math>N_v - \{ v \} \;</math> с минимальной глубиной уже известно, и высоту разреза можно легко определить. Именно так работает первый этап алгоритма FlowMap.




'''Вычисление K-допустимого разреза минимальной высоты'''
'''Вычисление K-допустимого разреза минимальной высоты'''