分数规划
假设存在两个实值函数A(x)和B(x),其中B(x)值域为R+。要求下面分数的最大值:
A(x)B(x)我们需要定义一个辅助函数Hc(x),其定义如下:
Hc(x)=A(x)−c⋅B(x)同时我们定义函数H(c):
H(c)=max{Hc(x)|x∈R}对于任意实数a,b,有
Ha(x)−Hb(x)=(b−a)B(x)由于B(x)的取值始终为正数,因此容易得到对于任意x∈R,都有a>b⇒Hb(x)>Ha(x),可以推得H(c)是严格单调递减函数。
假设c0=max({A(x)B(x)|x∈R}),即我们要求的结果,可以给出下面不等式
c0≥A(x)B(x)⇒A(x)−c0B(x)≤0其中等号可以在某个特殊的x值取到,因此有H(c0)=0。考虑到H函数的严格单独递减性质,因此如果我们能找到某个点c′满足H(c′)=0,那么我们就可以直接确定c′=c0。利用H函数的严格单调递减性质来对c0进行二分查找,我们可以只需要计算O(log2(|C|))次H函数,就可以得到想要的c0。