2024.9.8 闲话

前言:以前就想写一下 kernel method 的介绍,刚才 joke3579 又催了一下,那么就简单写了一份说明 .

核方法 (kernel method) 可以用来解决一类空间上的随机游走问题,可能有一些位置有几条直线作为边界不能越过,这个中文名字是我瞎翻译的 .

省流

一般形式说明起来也不太容易讲清楚,这个省流比较混乱最好还是不看,直接看后面的例子基本上也能看明白了 .

大概操作就是考虑多元生成函数 \(F(x_{1\dots m};t)\) 分别计量走到的位置 \((x_1,x_2,\cdots,x_m)\) 和走的步数 \(t\),那么可以大概得出一个这种类型的方程:

\[F(x_{1\dots m};t)=1+t\sum_{D}D(x_{1\dots m})(F(x_{1\dots m};t)-F(x'_{1\dots m};t)) \]

这里 \(D\) 枚举格路上的一步,\(x'\) 用来限制不能走出边界 .

此时令核函数 \(K(x_{1\dots m})=\prod x_i(1-t(\sum_DD(x_{1\dots m})))\) 然后可以把方程简化为:

\[K(x_{1\dots m},t)F(x_{1\dots m};t)=G(x_{1\dots m})+t\sum_{D}F(x'_{1\dots m};t) \]

这里 \(x'\) 可能有一些部分不一样,\(G\) 是一个固定多项式 .

然后解方程的话基本是考虑依次解出每个 \(F(x'_{1\dots m};t)\),可以分别构造一个别的项都没有贡献的 \(x_{1\dots m}\) 代入 .

然而这个省流基本上也不太可读,举一些例子方便理解一下:

Catalan 数

\((0,0)\) 出发,每次走一步 \((1,1)\)\((1,-1)\),不能走到 \(x\) 轴下方,问走到 \((n,m)\) 的方案数 .

令答案是 \(f(n,m)\),考虑二元生成函数:

\[F(x;t)=\sum_{n,m}f(n,m)t^nx^m \]

那么可以根据定义导出一个简单的方程:

\[F(x;t)=1+t(xF(x;t)+x^{-1}(F(x;t)-F(0;t))) \]

此处令 \(K(x)=x(1-t(x+x^{-1}))\),这是这个游走问题的核 (kernel),则方程可以简化为:

\[K(x)F(x;t)=x-tF(0;t) \]

这个方程还不能直接解出,此时考察函数 \(X\) 使得 \(K(X(x))=0\),可以解出:

\[X(x)=\dfrac{1\pm\sqrt{1-4t^2}}{2t} \]

由于某些原因此处需要 \(\lim\limits_{x\to 0}X(x)=0\),于是这里 \(\pm\) 取负号 . 在方程中代入 \(x=X(x)\) 等号左边就是 0 了,从而即可解出 \(F(0;t)\),进而可以解出 \(F(x;t)\) . 后面都是一些简单的操作,不展开叙述 .

值得注意的是,EI 利用游走的对称性给出了一个解方程的其他方法:「营业日志 2021.2.5」反射容斥的代数推导 .

然后可以看一下二元的情况怎么解方程:

云斗括号序列题 组合刻画部分

一个仅含 \(\texttt{( ) ?}\) 的字符串是好的当且仅当可以把每个 \(\texttt?\) 替换为 \(\texttt(\)\(\texttt)\) 使得最终形成一个匹配的括号串 .

计算长为 \(2n\)\(k\)\(\tt ?\) 的好串个数 .

让我们跳过一些组合推导,快进到解方程环节:

\[K(x,y)D(x,y,s,t)=xy+t(x^2-1)(sy^2+1)D(0,y,t)-tx^2D(0,0,t) \]

其中核函数 \(K(x,y)=xy(1-t(x^{-1}y^{-1}+xy+sxy^{-1}))\) .

这里先考虑去掉 \(D(0,0,s,t)\),考虑函数 \(Y\) 满足 \(K(1,Y(t))=0\),那么代入 \(x=1,y=Y(t)\) 就可以了 .

然后就变成一元情况了,可以使用上一个问题的操作方法 .

最后的结果可以看 2024.7.28 闲话,还是挺复杂的 .

另一个二元形式的例子:The 3rd UCup Stage 1: St. Petersburg. L. Candies,这里二元指的是只有两个方向有限制 . Alpha1022 的题解基本上也是使用的 kernel method,不过解方程部分用的是类似 EI 反射容斥代数推导的方法 .

参考资料:THE KERNEL METHOD: A COLLECTION OF EXAMPLES, Helmut Prodinger .

meme

结果机房的 IP 还是没解封。。敲打一下(

posted @ 2024-09-08 11:26  Jijidawang  阅读(168)  评论(1编辑  收藏  举报
😅​