校招 OA 复盘:区间重排的秘密

4 min1505 words

最近刚完成某 N 厂的 OA 题目,难度比想象中高了很多,不过里面的问题非常有意思。正好趁求职这段时间复盘一下题目,顺带挖掘一下隐含的一些问题。

要求:给定 n,m,kn, m, k,其中 n,m,kn, m, k 都是正整数,模拟重排过程并返回调用moveRobot的次数,越少越好。SPJ 会检查重排后的结果。

演化多目标优化:基于分解思想的经典算法 MOEA/D

2 min837 words

在多目标优化问题中,基于帕累托支配关系的最优解集(即帕累托前沿,PF)很可能不是有限的集合;多数情况下可能是高维空间中某一区域。因此,优化算法的目标就是在有限时间里得到一个能够表现出 PF 的形状、且分布良好的解集。这也是为什么收敛性和多样性在演化多目标优化算法中是两大重要指标。经典的基于支配关系的算法框架(如 NSGA-II 等)依靠适应值来维护解集的多样性,避免边缘解的丢失以及解过于密集的现象。而 MOEA/D 的提出,将分解的思想重新…

遗传算法中经典的交叉/变异算子

3 min1066 words

在遗传算法中,如何从亲代中产生好的子代个体是至关重要的问题。本文将收录一些经典的、但理解起来略有难度的交叉和变异算子(Crossover and mutation operators),并简要叙述一下其背后的原理。

本文中各种算子的中文名称均为个人直译结果,不代表学术界公认译名(本来也基本没有……)。

演化多目标优化:基于支配的经典算法 NSGA-II

3 min1068 words

最近在学习并尝试实现演化多目标优化的相关算法,希望我能通过这篇博客把算法了解得更加透彻 orz

在多目标优化领域,一般来说,决策变量和目标都是由多个元素组成的,而不同目标之间往往难以比较。如果将决策/目标视作一个向量 x\mathbf{x},我们用帕累托支配(Pareto dominance)来刻画向量间的关系。对于两个 nn 维向量 x(1)=(x1(1),…,xn(1))T,x(2)=(x1(2),…,xn(2))T\mathbf{x}^{(1)} = (x^{(1)}_1, \dots, x^{(1)}_n)^T, \mathbf{x}^{(2)} = (x^{(2)}_1, \dots, x^{(2)}_n)^T,我们称 x(1)\mathbf{x}^{(1)} 支配 x(2)\mathbf{x}^{(2)}(记作 x(1)≺x(2)\mathbf{x}^{(1)} \prec \mathbf{x}^{(2)})当且仅当…

线性代数复习:置换矩阵和“名次向量”

2 min704 words

没事瞎水博客系列……

为了深入理解这个操作背后的原理,我参考了 StackExchange 上的这篇回答。从他的证明过程中我发现了一个关键:排序前后两个矩阵的关系可以用排列/置换(permutation)来刻画。下面我将站在线性代数的视角来系统化解释一下“名次向量”背后的原理。