Step 1:
确定迭代初始值 (x^*=x_0),记录初值 (S_0=x_0^TMx_0),(k=0)
Step 2.1:
确定 (b_{k+1}=P_d(Mx_k))
[b_{k+1}=y^*=argmax(x_k^Tmy)
]
[s.t. Ay=1
]
[ y>0
]
对于此式,问题退化成了 (Linear program),所以可以得到全局最优解(离散的)
Step 2.2 && Step 3:
(C=x_k^TM(b_{k+1}-x_k), D=(b_{k+1}-x_k)^TM(b_{k+1}-x_k), S_k=x_k^TMx_k),
现在来确定下一次迭代的点 (x):
(x=x_k+t(b_{k+1}-x_k)),其中 (0 leq t leq 1),而由于 (C=x_k^TMb_{k+1}-x_k^TMx_k geq 0),则
[f(t)=x^TMx=(x_k+t(b_{k+1}-x_k))^TM(x_k+t(b_{k+1}-x_k))=S_k+tx^TM(b_{k+1}-x_k)+t(b_{k+1}-x_k)^TMx_k+t^2D
]
[(b_{k+1}-x_k)^TMx_k=((b_{k+1}-x_k)^TMx_k)^T=x^TM(b_{k+1}-x_k)
]
所以,下一次迭代点需要 (f(t)>x_k^TMx_k)
所以只需要关注 (D) 的大小,
如果(D geq 0),则(f(t)>x_k^TMx_k),(tin [0,1]) 取任意值即可,那么 (x_{k+1}=b_{k+1}),
如果(D<0),则(g(t)=f(t)-S_k=2tC+t^2D)是否大于取决于 (t),若要使其(g(t)>0)
[2tC+tD>0 Longrightarrow t(2C+tD)>0 Longrightarrow t=min{ frac{-C}{D}, 1}
]
如(t=1 Longrightarrow frac{-C}{D}>1_{D<0} Longrightarrow mid C mid > mid D mid Longrightarrow 2C+D>0),那么(x_{k+1}=x_k+t(b_{k+1}-x_k))