Difference-map Algorithm - Algorithm

Algorithm

The problem to be solved must first be formulated as a set intersection problem in Euclidean space: find an x in the intersection of sets A and B. Another prerequisite is an implementation of the projections PA and PB that, given an arbitrary input point x, return a point in the constraint set A or B that is nearest to x. One iteration of the algorithm is given by the mapping:

xD(x) = x + β ,
fA(x) = PA(x) − (PA(x)−x)/β ,
fB(x) = PB(x) + (PB(x)−x)/β .

The real parameter β should not be equal to 0 but can have either sign; optimal values depend on the application and are determined through experimentation. As a first guess, the choice β = 1 (or β = −1) is recommended because it reduces the number of projection computations per iteration:

D(x) = x + PA(2 PB(x) − x) − PB(x) .

A point x is a fixed point of the map xD(x) precisely when PA( fB(x))= PB( fA(x)). Since the left-hand side is an element of A and the RHS is an element of B, the equality implies that we have found a common element to the two constraint sets. Note that the fixed point x itself need not belong to either A or B. The set of fixed points will typically have much higher dimension than the set of solutions.

The progress of the algorithm can be monitored by inspecting the norm of the difference of the two projections:

Δ = | PA( fB(x)) − PB( fA(x)) | .

When this vanishes, a point common to both constraint sets has been found and the algorithm can be terminated.

Read more about this topic:  Difference-map Algorithm