Алгоритм Дикстры

Материал из testwiki
Перейти к навигации Перейти к поиску

Шаблон:Не путать

Алгоритм Дикстры — метод нахождения точки из пересечения выпуклых множеств. Является вариантом метода поочерёдного проецирования, известного также как метод проецирования в выпуклые множества. В простейшем варианте метод находит точку из пересечения двух выпуклых множеств путём итеративного проецирования в каждое из них. Метод отличается от метода поочерёдного проецирования наличием промежуточных шагов. Параллельную версия алгоритма разработали Гафке и Матар.

Метод назван именем Ричарда Л. Дикстры, предложившего его в 1980-х годах.

Ключевое отличие между алгоритмом Дикстры и методом стандартного поочерёдного проецирования возникает в случае, когда пересечение двух множеств состоит из более чем одной точки. В этом случае метод поочерёдного проецирования даёт некоторую произвольную точку в пересечении, в то время как алгоритм Дикстры даёт вполне определённую точку — проекцию точки r в пересечение, где r — данная алгоритму начальная точка.

Алгоритм

Алгоритм Дикстры находит для каждой точки r единственную точку в x¯CD, такую что:

x¯r2xr2, для всех xCD,

где C,D являются выпуклыми множествами. Эта задача эквивалентна поиску проекции точки r во множество CD, которую мы обозначим 𝒫CD.

Чтобы использовать алгоритм Дикстры, нужно знать, каким образом находить проекцию точки во множества C и D по отдельности.

Сначала рассмотрим метод поочерёдного проецирования (типа POCS) (который исследовал первоначально для случая, когда множества C,D являются линейными подпространствами, Джон фон НейманШаблон:Sfn). Метод стартует с точки x0=r и создаёт последовательность

xk+1=𝒫C(𝒫D(xk)).

Алгоритм Дикстры имеет аналогичный вид, но использует дополнительные переменные. Метод начинает с x0=r,p0=q0=0 и обновляет переменные по формулам

yk=𝒫D(xk+pk)
pk+1=xk+pkyk
xk+1=𝒫C(yk+qk)
qk+1=yk+qkxk+1.

Последовательность точек (xk) сходится к решению исходной задачи. О сходимости и современных модификациях см. статью Комбета и ПескеШаблон:Sfn.

Примечания

Шаблон:Примечания

Литература

Шаблон:Refbegin

Шаблон:Refend

Шаблон:Rq