图的梯度与散度
字数 3575 2025-11-08 20:56:29

图的梯度与散度

我将从基本概念出发,循序渐进地讲解图上的梯度和散度算子,并最终联系到图上的拉普拉斯算子。

第一步:从连续空间到离散图的直观类比

  1. 背景:在微积分和物理学中,梯度和散度是分析标量场(如温度分布)和向量场(如流体速度场)的基本工具。

    • 梯度:作用于一个标量函数,衡量该函数在空间各点处的变化率和变化最快的方向。其结果是一个向量场。例如,山丘的高度是一个标量场,其梯度指向最陡峭的上升方向。
    • 散度:作用于一个向量场,衡量在场中某点附近,场是“发散”还是“汇聚”的程度。其结果是一个标量函数。正散度表示该点是“源”,有净流出;负散度(收敛)表示该点是“汇”,有净流入。
  2. 图的设定:现在我们将场景转移到一个无向图 \(G = (V, E)\) 上,其中 \(V\) 是顶点集合,\(E\) 是边集合。我们假设图是连通的、简单的(无自环和重边)。

第二步:定义图上的函数空间

为了定义梯度等算子,我们需要先明确它们作用的对象——函数。

  1. 顶点上的函数:定义在图的每个顶点上的实值函数。所有这样的函数构成一个函数空间,记作 \(\mathcal{H}(V)\)。一个函数 \(f: V \to \mathbb{R}\) 可以看作一个定义在顶点上的标量场。例如,每个顶点的温度、人口数等。
  2. 边上的函数:定义在图的每条边上的实值函数。所有这样的函数构成另一个函数空间,记作 \(\mathcal{H}(E)\)。一个函数 \(s: E \to \mathbb{R}\) 可以看作一个定义在边上的向量场,但它有一个重要特性:我们通常要求它是反对称的,即对于一条边 \(e = (u, v)\),有 \(s(u, v) = -s(v, u)\)。这类似于向量场有方向。我们通常约定一个边的方向(如从编号小的顶点指向编号大的顶点)。

第三步:定义图上的梯度算子

  1. 定义:图的梯度算子(gradient operator)是一个将顶点函数映射为边函数的线性算子。
    记作 \(\nabla: \mathcal{H}(V) \to \mathcal{H}(E)\)
  2. 操作:梯度算子作用于一个顶点函数 \(f\) 后,得到一个新的边函数 \(\nabla f\)。对于任意一条有向边 \(e = (u, v)\)(根据我们约定的方向),梯度在该边上的值定义为:

\[ (\nabla f)(u, v) = f(v) - f(u) \]

  1. 解释
  • 这个定义直观地反映了“变化”的概念。它衡量了函数 \(f\) 的值从顶点 \(u\) 到顶点 \(v\)差值
  • 如果 \(f(v) > f(u)\),则梯度值为正,表示从 \(u\)\(v\) 是“上坡”。
  • 这个差值(梯度)天然地满足反对称性:\((\nabla f)(u, v) = -(\nabla f)(v, u)\)
  1. 例子:考虑一个简单的路径图 \(u-w-v\)
  • 设顶点函数 \(f\) 的值为:\(f(u)=2, f(w)=5, f(v)=1\)
  • 则梯度 \(\nabla f\) 在边 \((u, w)\) 上的值为 \(5-2=3\)
  • 在边 \((w, v)\) 上的值为 \(1-5=-4\)
  • 在边 \((u, v)\) 上不存在(因为不是边)。

第四步:定义图上的散度算子

  1. 定义:图的散度算子(divergence operator)是梯度算子的(负)伴随算子。它是一个将边函数映射为顶点函数的线性算子。
    记作 \(\text{div}: \mathcal{H}(E) \to \mathcal{H}(V)\)
    (“伴随”是一个严格的数学概念,这里我们可以先接受其具体形式定义)
  2. 操作:散度算子作用于一个边函数 \(s\)(需满足反对称性)后,得到一个新的顶点函数 \(\text{div} s\)。在任意一个顶点 \(u\) 上,散度的值定义为:

\[ (\text{div} s)(u) = \sum_{v \sim u} s(u, v) \]

其中 \(v \sim u\) 表示对所有与顶点 \(u\) 相邻的顶点 \(v\) 求和。求和时边的方向遵循我们之前的约定(从 \(u\) 指向 \(v\))。
3. 解释

  • 这个定义直观地反映了“净流出”的概念。它将进入顶点 \(u\) 的所有边上的函数值(考虑方向)加起来。
  • 如果 \(s\) 被解释为某种“流”(如电流、车流),那么 \((\text{div} s)(u)\) 就表示从顶点 \(u\) 净流出的流量。
  • 如果 \((\text{div} s)(u) > 0\),说明顶点 \(u\) 是一个“源”,有净流出。
  • 如果 \((\text{div} s)(u) < 0\),说明顶点 \(u\) 是一个“汇”,有净流入。
  • 如果 \((\text{div} s)(u) = 0\),则满足基尔霍夫电流定律,流在顶点 \(u\) 处是守恒的。
  1. 例子:接上例,路径图 \(u-w-v\)
  • 假设我们有一个边函数 \(s\),其值为:\(s(u, w)=3, s(w, v)=-2\)(根据约定,\(s(w, u) = -3, s(v, w)=2\))。
  • 则在顶点 \(u\) 的散度:只有一条出边 \((u, w)\),所以 \((\text{div} s)(u) = s(u, w) = 3\)
  • 在顶点 \(w\) 的散度:有两条边相连,一条是流入 \((u, w)\),但方向是从 \(u\)\(w\),所以对 \(w\) 而言,\(s(u, w)\) 是流入(负方向?)。我们需要严格按照定义:从 \(w\) 指向 \(u\) 的边是 \((w, u)\),其值为 \(s(w, u) = -3\)。从 \(w\) 指向 \(v\) 的边是 \((w, v) = -2\)。所以 \((\text{div} s)(w) = s(w, u) + s(w, v) = (-3) + (-2) = -5\)
  • 在顶点 \(v\) 的散度:只有一条流入边 \((w, v)\),但方向是 \(w\)\(v\),所以对 \(v\) 而言,从 \(v\) 指向 \(w\) 的边是 \((v, w) = 2\)。所以 \((\text{div} s)(v) = s(v, w) = 2\)

第五步:图的拉普拉斯算子作为“梯度的散度”

  1. 组合定义:图的最常见的拉普拉斯算子(组合拉普拉斯)\(L\) 是一个作用于顶点函数的算子。它可以被定义为负的散度算子作用于梯度算子

\[ L = -\text{div} \circ \nabla \]

也就是说,拉普拉斯算子是“梯度的散度”再取负号。\(L: \mathcal{H}(V) \to \mathcal{H}(V)\)
2. 计算:对于顶点函数 \(f\) 和顶点 \(u\)

\[ (L f)(u) = (-\text{div} (\nabla f))(u) = -\sum_{v \sim u} (\nabla f)(u, v) = -\sum_{v \sim u} (f(v) - f(u)) \]

化简后得到我们熟悉的形式:

\[ (L f)(u) = \deg(u) f(u) - \sum_{v \sim u} f(v) \]

其中 \(\deg(u)\) 是顶点 \(u\) 的度(邻居个数)。这正好是拉普拉斯矩阵 \(L = D - A\)(度矩阵减邻接矩阵)作用于向量 \(f\) 的结果。

总结

您已经学习了图上的梯度、散度和拉普拉斯算子的核心思想:

  • 梯度 \(\nabla\):衡量顶点函数沿着边的局部变化(差值)。
  • 散度 \(\text{div}\):衡量边函数在顶点处的净流出
  • 拉普拉斯 \(L = -\text{div} \circ \nabla\):综合了局部变化和净流出的概念,是梯度算子的散度,是图上的一个核心微分算子。

这套理论为在图上进行类似于微积分的分析(离散微积分或微积分在图上的类比)奠定了基础,广泛应用于图上的偏微分方程、谱图理论、图神经网络和网络分析等领域。

图的梯度与散度 我将从基本概念出发,循序渐进地讲解图上的梯度和散度算子,并最终联系到图上的拉普拉斯算子。 第一步:从连续空间到离散图的直观类比 背景 :在微积分和物理学中,梯度和散度是分析标量场(如温度分布)和向量场(如流体速度场)的基本工具。 梯度 :作用于一个 标量函数 ,衡量该函数在空间各点处的变化率和变化最快的方向。其结果是一个 向量场 。例如,山丘的高度是一个标量场,其梯度指向最陡峭的上升方向。 散度 :作用于一个 向量场 ,衡量在场中某点附近,场是“发散”还是“汇聚”的程度。其结果是一个 标量函数 。正散度表示该点是“源”,有净流出;负散度(收敛)表示该点是“汇”,有净流入。 图的设定 :现在我们将场景转移到一个无向图 \( G = (V, E) \) 上,其中 \( V \) 是顶点集合,\( E \) 是边集合。我们假设图是连通的、简单的(无自环和重边)。 第二步:定义图上的函数空间 为了定义梯度等算子,我们需要先明确它们作用的对象——函数。 顶点上的函数 :定义在图的每个顶点上的实值函数。所有这样的函数构成一个函数空间,记作 \( \mathcal{H}(V) \)。一个函数 \( f: V \to \mathbb{R} \) 可以看作一个定义在顶点上的 标量场 。例如,每个顶点的温度、人口数等。 边上的函数 :定义在图的每条边上的实值函数。所有这样的函数构成另一个函数空间,记作 \( \mathcal{H}(E) \)。一个函数 \( s: E \to \mathbb{R} \) 可以看作一个定义在边上的 向量场 ,但它有一个重要特性:我们通常要求它是 反对称 的,即对于一条边 \( e = (u, v) \),有 \( s(u, v) = -s(v, u) \)。这类似于向量场有方向。我们通常约定一个边的方向(如从编号小的顶点指向编号大的顶点)。 第三步:定义图上的梯度算子 定义 :图的 梯度算子 (gradient operator)是一个将顶点函数映射为边函数的线性算子。 记作 \( \nabla: \mathcal{H}(V) \to \mathcal{H}(E) \)。 操作 :梯度算子作用于一个顶点函数 \( f \) 后,得到一个新的边函数 \( \nabla f \)。对于任意一条有向边 \( e = (u, v) \)(根据我们约定的方向),梯度在该边上的值定义为: \[ (\nabla f)(u, v) = f(v) - f(u) \] 解释 : 这个定义直观地反映了“变化”的概念。它衡量了函数 \( f \) 的值从顶点 \( u \) 到顶点 \( v \) 的 差值 。 如果 \( f(v) > f(u) \),则梯度值为正,表示从 \( u \) 到 \( v \) 是“上坡”。 这个差值(梯度)天然地满足反对称性:\( (\nabla f)(u, v) = -(\nabla f)(v, u) \)。 例子 :考虑一个简单的路径图 \( u-w-v \)。 设顶点函数 \( f \) 的值为:\( f(u)=2, f(w)=5, f(v)=1 \)。 则梯度 \( \nabla f \) 在边 \( (u, w) \) 上的值为 \( 5-2=3 \)。 在边 \( (w, v) \) 上的值为 \( 1-5=-4 \)。 在边 \( (u, v) \) 上不存在(因为不是边)。 第四步:定义图上的散度算子 定义 :图的 散度算子 (divergence operator)是梯度算子的(负)伴随算子。它是一个将边函数映射为顶点函数的线性算子。 记作 \( \text{div}: \mathcal{H}(E) \to \mathcal{H}(V) \)。 (“伴随”是一个严格的数学概念,这里我们可以先接受其具体形式定义) 操作 :散度算子作用于一个边函数 \( s \)(需满足反对称性)后,得到一个新的顶点函数 \( \text{div} s \)。在任意一个顶点 \( u \) 上,散度的值定义为: \[ (\text{div} s)(u) = \sum_ {v \sim u} s(u, v) \] 其中 \( v \sim u \) 表示对所有与顶点 \( u \) 相邻的顶点 \( v \) 求和。求和时边的方向遵循我们之前的约定(从 \( u \) 指向 \( v \))。 解释 : 这个定义直观地反映了“净流出”的概念。它将进入顶点 \( u \) 的所有边上的函数值(考虑方向)加起来。 如果 \( s \) 被解释为某种“流”(如电流、车流),那么 \( (\text{div} s)(u) \) 就表示从顶点 \( u \) 净流出 的流量。 如果 \( (\text{div} s)(u) > 0 \),说明顶点 \( u \) 是一个“源”,有净流出。 如果 \( (\text{div} s)(u) < 0 \),说明顶点 \( u \) 是一个“汇”,有净流入。 如果 \( (\text{div} s)(u) = 0 \),则满足 基尔霍夫电流定律 ,流在顶点 \( u \) 处是守恒的。 例子 :接上例,路径图 \( u-w-v \)。 假设我们有一个边函数 \( s \),其值为:\( s(u, w)=3, s(w, v)=-2 \)(根据约定,\( s(w, u) = -3, s(v, w)=2 \))。 则在顶点 \( u \) 的散度:只有一条出边 \( (u, w) \),所以 \( (\text{div} s)(u) = s(u, w) = 3 \)。 在顶点 \( w \) 的散度:有两条边相连,一条是流入 \( (u, w) \),但方向是从 \( u \) 到 \( w \),所以对 \( w \) 而言,\( s(u, w) \) 是流入(负方向?)。我们需要严格按照定义:从 \( w \) 指向 \( u \) 的边是 \( (w, u) \),其值为 \( s(w, u) = -3 \)。从 \( w \) 指向 \( v \) 的边是 \( (w, v) = -2 \)。所以 \( (\text{div} s)(w) = s(w, u) + s(w, v) = (-3) + (-2) = -5 \)。 在顶点 \( v \) 的散度:只有一条流入边 \( (w, v) \),但方向是 \( w \) 到 \( v \),所以对 \( v \) 而言,从 \( v \) 指向 \( w \) 的边是 \( (v, w) = 2 \)。所以 \( (\text{div} s)(v) = s(v, w) = 2 \)。 第五步:图的拉普拉斯算子作为“梯度的散度” 组合定义 :图的最常见的拉普拉斯算子(组合拉普拉斯)\( L \) 是一个作用于顶点函数的算子。它可以被定义为 负的散度算子作用于梯度算子 : \[ L = -\text{div} \circ \nabla \] 也就是说,拉普拉斯算子是“梯度的散度”再取负号。\( L: \mathcal{H}(V) \to \mathcal{H}(V) \)。 计算 :对于顶点函数 \( f \) 和顶点 \( u \): \[ (L f)(u) = (-\text{div} (\nabla f))(u) = -\sum_ {v \sim u} (\nabla f)(u, v) = -\sum_ {v \sim u} (f(v) - f(u)) \] 化简后得到我们熟悉的形式: \[ (L f)(u) = \deg(u) f(u) - \sum_ {v \sim u} f(v) \] 其中 \( \deg(u) \) 是顶点 \( u \) 的度(邻居个数)。这正好是拉普拉斯矩阵 \( L = D - A \)(度矩阵减邻接矩阵)作用于向量 \( f \) 的结果。 总结 您已经学习了图上的梯度、散度和拉普拉斯算子的核心思想: 梯度 \( \nabla \) :衡量顶点函数沿着边的 局部变化 (差值)。 散度 \( \text{div} \) :衡量边函数在顶点处的 净流出 。 拉普拉斯 \( L = -\text{div} \circ \nabla \) :综合了局部变化和净流出的概念,是梯度算子的散度,是图上的一个核心微分算子。 这套理论为在图上进行类似于微积分的分析(离散微积分或微积分在图上的类比)奠定了基础,广泛应用于图上的偏微分方程、谱图理论、图神经网络和网络分析等领域。