Homework 3
1. 证明No Free Lunch(NFL)定理
整体思路采用归纳法,首先,让我们证明:
f∑P(d1y∣f,m=1,a)=f∑μ(d1y,f(d1x))
μ函数代表指示函数,成立时为1,反之为0。
注意这里的dxx是由a(算法)决定的。
因为f函数有个sum up,故上述式子的可以化简为∣Y∣∣X∣−1,与a无关!
接下来,按照归纳法,我们假设∑fP(dmy∣f,m,a)和a无关,然后去证明∑fP(dm+1y∣f,m+1,a)也和a无关。
首先变化一下式子:
P(dm+1y∣f,m+1,a)=P(dm+1y(m+1)∣dm,f,m+1,a)⋅P(dmy∣f,m+1,a)
同时注意到,新的dm+1y(m+1),依赖与新的x值、f函数。
继续化简:
f∑P(dm+1y∣f,m+1,a)=f∑P(dm+1y∣f,x)⋅P(x∣dmy,f,+1,a)⋅P(dmy∣f,m+1,a)
=f,x∑μ(dm+1y(m+1),f(x))⋅P(x∣dmy,f,m+1,a)⋅P(dmy∣f,m+1,a)
接下来,在让我们考虑x的的依赖,只要我们知道了a,然后知道了dmx和dmy就可以算出x。
所以进一步变化:
f∑P(dm+1y∣f,m+1,a)=f,dmx∑μ(dm+1y(m+1),f(a(dm)))⋅P(dm∣f,m,a)
又实用一开始的函数计数技巧,因为已经走了m步,所以function上有m个点已经确定了,故∑f(x∈/dmx)μ(dm+1y(m+1),f(a(dm)))有∣Y∣∣X∣−m−1的贡献。
所以最后:
f∑P(dm+1∣f,+1,a)=∣Y∣∣X∣−m−1⋅f∑P(dmy∣f,m,a)
由我们的归纳假设知道∑fP(dmy∣f,m,a)是与a无关的,所以有∑fP(dm+1∣f,+1,a)也是与a无关的,归纳完成。
所以:
f∑dmy∑ϕ(dmy)P(dmy∣f,m,A)=dmy∑ϕ(dmy)f∑P(dmy∣f,m,A)
有上述归纳法,知这个式子与A无关。
证毕。
2. 分析LeadingOnes问题
分层就按简单的leadingones个数来分。
P(ϕ(i)→ϕ(i+1))>n1⋅(1−n1)i
E(T)=i=1∑n−1P(ϕ(i))∗P(ϕ(1)→ϕ(i+1))1<⋅∑n∗(1−n1)n=en2=O(n2)
即期望运行时间是O(n2)。
3. 分析OneMax问题
我们定义距离函数V(x)=n−countone(x)
这个定义满足距离函数的要求(最优解为距离为0等)
E(V(ξt)−V(ξ(t+1))∣ξt=x)=E(countone(ξt+1)−countone(ξt))>nn−countone(ξt)⋅(1−n1)n−1=V(ξt=x)⋅n1⋅(1−n1)n−1
所以根据乘法漂移公式:
Upper bound: ∑x∈Xπ0(x)⋅δ1+ln(V(x)/Vmin)
我们知道Vmin=1,π0(x)<=1,δ=n1⋅(nn−1)n
带入并做不等式变化:
Upperbound<δ1+ln(n)=(1+ln(n))⋅n⋅e=O(nlogn)
即期望运行时间是O(nlogn)。
4 分析COCZ问题
首先,分析一下这个问题,第一个维度是1的个数,第二个维度是前一半1的个数加上后一半0的个数。
同时一个Pareto front的形式可以表示为:
- 前一半都是1
- 后一半1的个数从0到n/2,各取一个就可以了。
所以完整的Pareto front大小是n/2。
同时,按照SEMO算法,因为第一维度是1的个数,所以任意时刻子群大小小于等于n。
运行时间的计算分为两个阶段:
1. 首先 找到全1串:
假设只是1+1 EA onebitmutation,
∑i=1n−1P(ϕ(x)=i)nn−i1<∑n⋅n−i1=nlogn
现在只是多了一个从不超过n的子代里选择,故每次至多多了一个n1的选择,所以找到全1的期望时间不超过n2logn
2. 找到所有的Pareto front
现在后半段0的数量为0,我们只要找到后半段0的数量为1到n/2就找全了。
而0的数量从i变到i+1的概率为nn/2−i,然后假设这种情况只发生在子代解里取到0最多的情况,也就是至少有n1的概率会拓展一个Pareto front。
E(T)<i=0∑n/2−1n1⋅nn/2−i1=n2log(n/2)=O(n2logn)
综上所述,所以SEMO算法找到COCZ问题的Pareto front的期望时间是O(n2logn)+O(n2log(n/2))=O(n2logn)。