- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
以下部分是我学习 CMU 15-751: TCS Toolkit 的课堂笔记。由于只是个人笔记,因此许多地方在推导上可能不那么严谨,还望理论大佬多多包涵.
在本文中,我们将研究对象限定在无向图(undirected graph) \(G=(V, E)\) ,且满足:
此外,我们在某些情况下可能会假设 \(G\) 是正则的.
正则图 :指各顶点的度均相同的无向简单图.
定义 设函数 。
将图的每个顶点用一个实数值来进行标记,我们称其为 顶点标签(vertex labelling) 。在实际应用场景中, \(f\) 可能是温度、电压、嵌入的坐标(推广到 \(\mathbb{R}^d\) 时)或者 \(S\subseteq V\) 的0-1示性函数.
在本文中,我们会将函数 \(f\) 想成是一个如下所示的(列)向量:
回顾 函数集合 \(\mathcal{F}=\{f: V\rightarrow \mathbb{R}\}\) 上带有加法和标量乘法:
可以证明, \(\mathcal{F}\) 是一个向量空间,且维度 \(n=|V|\) 。后面我们还会在 \(\mathcal{F}\) 上定义内积和范数.
接下来我们将要介绍的是谱图论(spectral graph theory)的关键,也就是 Laplacian二次型(Laplacian quadratic form) ,其定义如下:
(符号约定: \(u\sim v\) 表示服从均匀分布的随机无向边 \((u, v)\in E\) ) 。
直观地理解,Laplacian二次型刻画了图的“能量”(energy),这也是我们为什么用 \(\mathcal{E}(f)\) 来表示它的原因。它在其它语境下,又被称为Dirichlet形式(Dirichlet form),局部方差(local variance),解析边界大小(analytic boundary size).
关于Laplacian二次型,我们有以下事实:
\(\mathcal{E}\left[f\right]\geqslant 0\) ; 。
\(\mathcal{E}\left[c \cdot f\right] = c^2 \cdot \mathcal{E}\left[f\right]\) ; 。
\(\mathcal{E}\left[f + c \right] = \mathcal{E}\left[f\right]\) ( \(c\in\mathbb{R}\) ); 。
直觉上, \(\mathcal{E}\left[f\right]\) 的值越小,也就意味着 \(f\) 更加“光滑”(smooth),即其值不会沿着边变化得太剧烈.
例 设图顶点的子集 \(S\subseteq V\) , 0-1示性函数 \(f=\mathbb{I}_{S}\) 用于指示顶点是否在集合 \(S\) 中,即:
则我们有:
注意上述式子中要乘以 \(1/2\) 是因为我们考虑的是无向图,要避免有向边的重复计数(即“伸出”与“伸入” \(S\) ),最后只需计算“伸出” \(S\) 的边.
为了选择一个随机顶点,我们可以:
我们依据此采样方式得到的顶点分布记为 \(\pi\) , \(\pi_i\) 表示顶点 \(i\) 被抽中的概率。我们有以下事实:
事实 \(\pi(u)\) 正比于 \(\text{deg}(u)\) ,即 。
(注意这里用到了握手定理,即 \(\sum_v \text{deg}(v)=2|E|\) ) 。
直观地看, \(\pi\) 为每个顶点给出了权重/重要性.
注 :如果 \(G\) 是正则的,那么 \(\pi\) 是在 \(V\) 上的均匀分布.
在此基础上,我们可以得到一些有用的结论.
事实 下列步骤:
实质上就等价于均匀随机地采样边 \((u, v)\) 。如果我们接着输出 \(v\) ,则 \(v\) 也服从分布 \(\pi\) .
推论 设 \(t\in \mathbb{N}\) ,随机采 \(u\sim \pi\) ,进行 \(t\) 步的 “标准随机游走”(standard random walk,S.R.W.) :
则 \(v\) 的分布也是 \(\pi\) .
定义 \(\pi\) 是 不变(invariant)/ 平稳(stationary)分布 .
Q: 现在假设 \(u_0\in V\) 是非随机的,并从 \(u_0 \overset{t}{\rightsquigarrow}v\) 。随着 \(t\rightarrow \infin\) , \(v\) 的分布是否还会 \(\rightarrow \pi\) ?
A: 当 \(G\) 非连通图时不是;当 \(G\) 为二分图时也不是;而其它情况都是如此(我们后面会介绍原因).
Q: 那么需要多少步才能到达平稳分布呢(也即马尔可夫链的混合时间,mixing time)?
A: 这需要考虑图 \(G\) 的谱(特征值),具体我们会在下一讲中介绍。直观的例子比如图拥有较小的割集,那么在随机游走时就需要较长的时间来跨越 \(S\) 和 \(\bar{S}\) ;更极端的例子比如非连通图直接永远不会达到平稳分布。在 \(2.2\) 中我们证明了若图的割集较小则其 \(\mathcal{E}\left[\mathbb{I}_S\right]\) 就较小,而我们后面会看到快速收敛等价于 \(\mathcal{E}\left[f\right]\) 永远不会小.
设 \(f:V\rightarrow \mathbb{R}\) ,若 \(u\sim \pi\) ,则 \(f(u)\) 是一个实随机变量(我们这里简记为 \(f\) )。对于该随机变量,我们接下来讨论它的均值与方差.
均值(mean) \(f\) 的均值定义为:
例 若 \(S\subseteq V\) , \(f=\mathbb{I}_S\) ,则 。
直观上,这个概率表示 \(S\) 的“权重”或“体积”.
方差(variance) \(f\) 的方差定义为:
注意,上述式 \((3)\) 成立是由于:
辨析 这里要注意 \(f\) 的方差 \(\text{Var}(f)\) 和其能量 \(\mathcal{E}(f)\) 的差异,它们俩的对比如下:
可见方差 \(\text{Var}[f]\) 是对图的顶点取期望(我们称其为关于 \(f\) 的全局方差,global variance),而 \(\mathcal{E}[f]\) 则是对图的边取期望(我们称其为关于 \(f\) 的局部方差,local variance).
接下来我们讨论Laplacian二次型的极值,而这就需要我们先定义 \(\mathcal{F}=\{f: V\rightarrow \mathbb{R}\}\) 空间上的内积和范数.
定义 设 \(f, g: V\rightarrow\mathbb{R}\) ,则向量空间 \(\mathcal{F}\) 上的 加权内积(weighted inner product) 可以定义为:
直观地,我们可以将其写做:
注 : 当 \(G\) 是正则图时(此时 \(\pi\) 为均匀分布),上式是经由 \(\frac{1}{|V|}\) 缩放的“标准点积”(normal dot product).
回顾 实向量空间上的内积满足以下性质 。
定义 对于 \(f\in\mathcal{F}\) ,我们可以由内积诱导出 \(f\) 的 \(2\) -范数:
处理2-范数的平方通常比直接处理它更容易,故我们常常使用 \( \lVert f \rVert^2_2:=\langle f, f\rangle_{\pi}=\mathbb{E}_{u\sim\pi}\left[f(u)^2\right] \) .
此外,我们还可以定义 \(f\) 的 \(1\) -范数:
例 设 \(S\subseteq V\) , \(f=\mathbb{I}_S\) ,则 。
且我们有 。
我们在 2.3 中提到随机游走快速收敛等价于 \(\mathcal{E}\left[f\right]\) 永远不会小,那么 \(\mathcal{E}\left[f\right]\) 能够有多小呢?
最小化 现在我们来考虑最小化 \(\mathcal{E}\left[f\right]\) ,即求解:
我们已知 \(\mathcal{E}[f]\geqslant0\) ,故我们接下来讨论什么样的 \(f\) 可以使 \(\mathcal{E}[f]=0\) .
首先对于 \(f\equiv 0\) (即将图的每个顶点都映射到 \(0\) )这一trival的情况, \(\mathcal{E}\left[f\right]=0\) ; 。
接下来考虑non-trival的情况。我们注意到 \(f\equiv 1\) (或任何其它常数)时, 。
事实上,由于图的不同连通分量之间是不存在边的,因此只要保证 \(f\) 在图 \(G\) 的每个连通分量上是常数就行.
命题 \(\mathcal{E}[f]=0\) 当且仅当 \(f\) 在 \(G\) 的每个连通分量上是常数。此时:
即当图的连通分量为 \(S_1,\cdots, S_l\) 时, \(\mathbb{I}_{S_1}, \mathbb{I}_{S_2}, \cdots, \mathbb{I}_{S_l}\) 是线性无关的(linearly independent)(并满足 \(\mathcal{E}\left[f\right]=0\) 约束)。所谓线性无关,直观上即如下所示的关系:
更一般地说,集合 \(\{f: \mathcal{E}[f]=0\}\) 事实上就是 \(\mathbb{I}_{S_1}, \mathbb{I}_{S_2}\cdots, \mathbb{I}_{S_l}\) 的张成空间 \(\{\sum^l_{i=1}c_i\mathbb{I}_{S_i}: c_1,\cdots, c_l\in \mathbb{R}\}\) .
最大化 接下来我们来考虑最大化 \(\mathcal{E}\left[f\right]\) ,即求解 。
(这里需要注意由于 \(\mathcal{E}[c\cdot f]=c^2\mathcal{E}[f]\) ,故我们要添加关于 \(\text{Var}\left[f\right]\) 的约束项以控制常数缩放因子的影响) 。
事实上,上述优化问题即等价于:
这是因为:
直觉上,该优化问题是在寻找一个好的嵌入 \(V\rightarrow \mathbb{R}\) ,使得边的两个端点在嵌入空间中能够尽可能“远”。那么,什么样的 \(G\) 才能最成功呢?答案是二分图.
如果 \(G\) 是二分图, \(V=(V_1, V_2)\) 。设 。
也即 。
于是我们有 \(\lVert f \rVert^2_2=\mathbb{E}[f^2]=\mathbb{E}\left[1\right]=1\) ,且 \(\mathcal{E}[f]=2\) (由于 \(\frac{1}{2}\mathbb{E}_{u\sim v}[(f(u) - f(v))^2]\) 中 \(f(u)\) 和 \(f(v)\) 都为 \(\pm1\) ) 。
命题 \(\mathcal{E}[f] \leqslant 2 \lVert f \rVert^2_2\) (即 \(2\mathbb{E}[f^2]\) ) 。
证明如下:
例 等式 \(\mathcal{E}[f] = 2 \lVert f\rVert^2_2\) 当且仅当 \(G\) 为二分图的时候成立.
根据我们前面在 3.2 中的的叙述,我们已经知道 。
$\mathcal{E}[f]=\text{arithm}= \lVert f\rVert^2_2 - \mathbb{E}_{u\sim v}[f(u)\cdot f(v)] $ 。
这里 。
注意上图中的带 \(*\) 表达式 \(\mathbb{E}_{v\sim u}\left[f(v)\right]\) 刻画的是顶点 \(u\) 邻居集合 \(\{v\}\) 的 \(f\) 标签平均值。而这个表达式实际上描述了一个将顶点 \(u\) 映射到其邻居标签平均值的函数,接下来我们就来进一步研究这个函数.
定义 我们定义函数 \(Kf: V\rightarrow\mathbb{R}\) 满足 。
由于我们是离散状态空间,故上式可以写为 \((Kf)(u)=\sum_v f(v)\text{Pr}\left[v\rightarrow u\mid v\right]\) ,这里 \(\text{Pr}[v\rightarrow u\mid v]\) 表示邻居顶点 \(v\) 到当前顶点$ u \(的状态转移概率。直观地理解,函数\) Kf \(使得顶点\) u \(被赋予其邻居集合的\) f$标签平均值.
这里 \(K\) 为定义在函数空间 \(\mathcal{F}=\{f: V\rightarrow \mathbb{R}\}\) 上的线性算子,它将函数 \(f\in\mathcal{F}\) 映射到 \(Kf\in\mathcal{F}\) ,并满足:
定义 我们将上述的算子 \(K\) 称为图 \(G\) 的 Markov转移算子(Markov transition operator)/归一化邻接矩阵(normalized adjacency matrix) .
我们可以将算子 \(K\) 表示成一个矩阵,该矩阵以如下方式作用:
且满足 。
所以 \(K\) 是归一化后的邻接矩阵 \(A\) 的转置(当然这里由于我们关注无向图, \(A^T=A\) ),其每一列的和为 \(1\) (代表一个概率分布)。这样的矩阵被称为 随机矩阵(stochastic marix) .
如果图 \(G\) 是 \(d\) -正则的(即所有顶点的度都为 \(d\) ),那么我们有:
那么对于非正则图呢?此时 \(K\) 的矩阵表示(在非规范正交基下)尽管可能不再是对称阵,但是算子 \(K\) 仍然满足自伴的性质。我们有以下事实: 事实 对于 \(f, g: V\rightarrow \mathbb{R}\) , 。
证明 。
基于此,我们有下列推论: 推论 。
也即 \(K\) 是 自伴的(self-adjoint) 。而这在图 \(G\) 是正则图的情况下就等价于 \(K\) 是对称的.
接下来再来看我们熟悉的那个示性函数例子.
例 设 \(S, T\subseteq V\) ( \(S\cap T=\emptyset\) ), \(f=\mathbb{I}_S\) , \(g=\mathbb{I}_T\) ,则:
概率分布转移 设 \(p\) 为在顶点 \(V\) 上的概率分布,即 。
我们进行如下步骤:
则我们有如下的概率分布转移关系:
推论 对于平稳概率分布 \(\pi\) ,满足 。
接下来我们再展示一个例子说明概率转移具体是如何运作的.
引理 对于算子$K^2 = K \circ K $,我们有:
证明 给定 \(f\) ,设 \(g=Kf\) ,则 。
故 。
推论 \(\forall t \in \mathbb{N}\) , \((K^tf)(u)=\mathbb{E}_{u \overset{t\text{-step S.R.W}}{ \rightsquigarrow} w}\left[ f(w)\right]\) (甚至 \(t=0\) 时,我们也有 \(I f(u) = f(u)\) ).
[1] CMU 15-751: TCS Toolkit [2] Bilibili: CMU计算机科学理论(完结)—你值得拥有的数学和计算机课 ) [3] Spielman D. Spectral graph theory[J]. Combinatorial scientific computing, 2012, 18: 18. [4] Axler S. Linear algebra done right[M]. springer publication, 2015. 。
最后此篇关于谱图论:Laplacian二次型和Markov转移算子的文章就讲到这里了,如果你想了解更多关于谱图论:Laplacian二次型和Markov转移算子的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
可以用这种方式转换字符串吗?我们有相同的参数,Java 做出了正确的选择。如果值是整数 - 我们调用 parseInt(value),否则如果值是 double 型 - 我们调用 parseDoubl
如果这段代码中有一个愚蠢的错误,我提前道歉,但我似乎无法解决它。我的问题是这样的,我用GCC-8(通过home-brew安装在Mac上)编译,然后在终端中执行。当使用 int do 定义变量 s &
我用 a-videosphere 制作了一个 a-scene。我尝试使用按钮启用/禁用声音,但有些想法不起作用?这是我的代码: var gargamel = 0; function
我正在使用 ISAAC 实现来生成随机整数。我需要用这些整数创建一个高斯值。首先,我需要将它们从 0 更改为 1 的 double 值。我怎样才能在Java中做到这一点?这是到目前为止我将整数转换为
我将 0x0000 到 0x01c2 范围内的十六进制值从 BLE 获取到我的手机 a 作为字符串。为了将其绘制在图表中,我必须将其转换为 double,我已经尝试过 this method但遗憾的是
我有一个父类(super class) Animal和一个子类 Dog 。在第三节课中,我有一个 List它同时接受子类型和父类(super class)型对象。 public class foo{
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 6 年前。 Improve this ques
我正在尝试查询我的用户的距离。我可以用这段代码做到这一点 PFGeoPoint.geoPointForCurrentLocationInBackground { (geoPoint: PFGe
考虑示例:http://jsfiddle.net/KWLu7/16/ 我正在尝试将总体重要性值计算为每个选定选择重要性的总和乘以其父标准重要性: var watch = $scope.$watch("
这个问题在这里已经有了答案: Bounding generics with 'super' keyword (6 个答案) 关闭 2 年前。 我有一个列表装饰器,它应该允许从一个列表转换到另一个列表
为什么下面的代码没有选择最近父类(super class)型的隐式 val? class A class B extends A trait TC[-T] { def show(t: T): Stri
这是我想要做的 def merge[A, B, C](eithers: Either[A,B]*)(implicit ev1: A x, x => x)) 关于scala - 推断常见的父类(s
我正在尝试从具有 double 类型列的Cassandra表中获取 double 值。我已经使用CQL3语法创建了表: CREATE TABLE data_double ( datetime
是否应该在不需要显式类型定义的情况下编译以下 this ? def prepList[B >: A](prefix: PlayList[B]) : PlayList[B] = prefix.fol
我正在查看某人的代码,并且在创建结构时使用了 abstract type AbstractFoo end julia> struct Foo1 struct Foo2 foo_op(x::Abst
一些示例代码: public class Main { class SomeType { } class A { protected T createSome
是否可以只接受类的泛型类型的父类(super class)型? 我正在寻找的是这样的: class MyClass { public void myMethod(TS someObject
在我的代码中,我有许多 ArrayList 被传递到排序方法中。每个 ArrayList 都有不同的泛型类型,但所有这些类型都是 Sorter 的实现。排序方法旨在接受 Sorter 类型的 Arra
如果已经有人问过这个问题,请链接并关闭这个问题。 我目前正在为另一个使用起来复杂得多(并且有潜在危险)的 API 的简化 API 设计原型(prototype)。 考虑到相关的有点复杂的对象创建,我决
我正在尝试构建一个具有某些依赖项的 android 应用程序,但是其中一个导致了此错误: Illegal class file: Class module-info is missing a supe
我是一名优秀的程序员,十分优秀!