数字化对偶组合与凸情形及多维持久同调的匹配算法研究
1. 数字化对偶组合与凸情形
在数字化对偶组合与凸情形的研究中,涉及到一些重要的证明和示例。
-
交集性质证明
:设 (p),(q) 是 (\Gamma_1 \cap (\tau + \Gamma_2)) 中的两个不同点(若存在这样的点对)。记 (\Sigma_1) 为 (\Gamma_1) 中 (p) 和 (q) 之间的开线段,(\Sigma_2) 为 (\Gamma_2) 中 (-\tau + p) 和 (-\tau + q) 之间的开线段。令 (\overline{\Sigma_1} = \Sigma_1 \cup {p, q}),(\overline{\Sigma_2} = \Sigma_2 \cup {p, q})。证明当 (\overline{\Sigma_1} \cup (\tau + \overline{\Sigma_2})) 包含多于两个点时,它是一条直线段。分两种情况讨论:
- 情况一:若 (\overline{\Sigma_1} \cup (\tau + \overline{\Sigma_2}) \subseteq (pq)),由于 (\Sigma_1) 和 (\Sigma_2) 是连通的且 (\Gamma) 是简单的,则 (\Sigma_1 = \Sigma_2 = [p, q])。
- 情况二:若 (\exists x \in (\overline{\Sigma_1} \cup (\tau + \overline{\Sigma_2})) \setminus (pq)),假设 (x \in \Sigma_1 \setminus (pq))。根据引理 2,(\Sigma_1 = \Gamma \cap H_1),其中 (H_1) 是以直线 ((pq)) 为边界且包含 (x) 的开半平面,且 (-\tau + p) 在 (\mathbb{R}^2 \setminus H_1) 中。可以推出 (-\tau + H_1) 是以连接 (-\tau + p) 和 (-\tau + q) 的直线为边界且包含 (p) 的开半平面。再由引理 2 可知,(\Sigma_2) 不与 (-\tau + H_1) 相交,所以 (\tau + \Sigma_2) 不与 (H_1) 相交,特别地,((\tau + \Sigma_2) \cap \Sigma_1 = \varnothing)。若存在点 (r \in \Gamma_1 \cap (\tau + \Gamma_2)) 且 (r \notin \Sigma_1),将上述证明应用于点 (q) 和 (r),可知 (\Gamma_1 \cap (\tau + \Gamma_2)) 包含线段 ([q, r])。最终得出 (\Gamma_1) 和 (\tau + \Gamma_2) 的交集要么最多由两个点组成,要么是一条线段。
-
示例与反例
-
构建无适当全等数字化的示例
:设 (u) 和 (v) 是 ([0, 1)^2) 中的两个向量,使得 (u + S) 和 (v + S) 有不同但全等的数字化。则存在非零整数向量 (w),使得 ((u + S) \cap \mathbb{Z}^2 = w + ((v + S) \cap \mathbb{Z}^2) = (w + v + S) \cap \mathbb{Z}^2)。设 (p) 是数字化核心中的一点,则 (p \in (u + S) \cap \mathbb{Z}^2) 且 (p \in (v + S) \cap \mathbb{Z}^2),进而 (w + p \in (u + S) \cap \mathbb{Z}^2) 且 (-w + p \in (v + S) \cap \mathbb{Z}^2),可改写为 (p \in ((-w + u) + S) \cap \mathbb{Z}^2) 且 (p \in ((w + v) + S) \cap \mathbb{Z}^2)。由此可知,若数字化核心中存在一个点在 (S) 的两个坐标上都是最大的,则对偶中不存在适当的全等数字化。
-
构建与切换边界幂集一一对应的环面划分
:为确保切换边界的任何子集都能在对偶中表示,沿 (B) 移动(按定义 1 中的顺序),用希尔伯特填充曲线的近似来构建新的边界。将 (\Gamma) 与 (B) 的第 (n) 个单元格相交的线段替换为希尔伯特填充曲线 (H_n) 的第 (n) 个近似(在其端点处扩展以确保边界的连续性)。考虑与曲线 (H_n) 相关的单位正方形的二进制划分 (P_n) 族,每个曲线 (H_{n + 1}) 穿过划分 (\bigcap_{i = 1}^{n} P_i) 的每个单元格,使得最终环面划分的大小为 (2^N),其中 (N) 是切换边界的基数。通过将单位正方形划分为 (2^n \times 2^n) 的小正方形 ((K_{i, j}^n)
{1 \leq i, j \leq 2^n})((n \geq 0)),其大小为 (\frac{1}{2^n} \times \frac{1}{2^n}),可以看到 (H_n) 穿过每个 (K
{i, j}^n) 的中心且不与 (K_{i, j}^{n + 1}) 的内部相交,所以 (\bigcap_{i = 1}^{n} P_i) 比划分 ({K_{i, j}^{n + 1} | 1 \leq i, j < n}) 更粗糙,由于 (H_{n + 1}) 穿过每个 (K_{i, j}^{n + 1}) 的中心,所以它穿过 (\bigcap_{i = 1}^{n} P_i) 的每个单元格。
2. 多维持久同调的匹配算法
多维持久同调在离散数据的拓扑分析中是重要工具,但有效计算因数据生成的复杂规模大而具有挑战性。下面介绍相关的匹配算法。
-
算法背景
:持久同调在离散数据拓扑分析中很重要,但计算复杂。一些工作致力于通过离散莫尔斯理论的无环部分匹配将原始复杂体简化为更小的同伦等价的细胞复杂体。之前的算法主要用于一维过滤的持久性,现在对多尺度问题中结合多个函数的持久性信息有强烈兴趣。之前的匹配算法存在识别出的关键单元有很多是虚假的问题,本文旨在改进匹配方法以减少虚假关键单元的数量。
-
初步概念
-
单纯复形
:设 (K) 是一个有限几何单纯复形,由顶点、边、三角形及其 (q) 维对应物(称为单纯形)组成。(q) 维单纯形是仿射独立顶点 (v_0, \ldots, v_q \in \mathbb{R}^n) 的凸包,记为 (\sigma = [v_0, \ldots, v_q])。(K) 的 (q) 维单纯形集合记为 (K_q)。若单纯形 (\tau) 的顶点构成 ({v_0, v_1, \ldots, v_q}) 的子集,则 (\tau) 是 (\sigma) 的一个面;若 (\dim \tau = q - 1),则 (\tau) 是 (\sigma) 的一个面,(\sigma) 是 (\tau) 的一个余面,记为 (\tau < \sigma)。
-
部分匹配
:(K) 上的部分匹配 ((A, B, C, m)) 是将 (K) 划分为三个集合 (A),(B),(C),并伴有一个双射 (m : A \to B)(也称为离散向量场),使得对于每个 (\tau \in A),(m(\tau)) 是 (\tau) 的余面。从拓扑上看,从 (\tau) 到 (m(\tau)) 边界的互补部分的投影诱导了 (K) 和一个更小的复形之间的同伦等价。(m) - 路径是一个序列 (\sigma_0, \tau_0, \sigma_1, \tau_1, \ldots, \sigma_p, \tau_p, \sigma_{p + 1}),其中对于每个 (i = 0, \ldots, p),(\sigma_{i + 1} \neq \sigma_i),(\tau_i = m(\sigma_i)),且 (\tau_i) 是 (\sigma_{i + 1}) 的余面。若不存在封闭的 (m) - 路径(即 (\sigma_{p + 1} = \sigma_0) 的 (m) - 路径),则部分匹配 ((A, B, C, m)) 是无环的。
-
向量值函数与过滤
:目标是产生一个无环部分匹配,以保留由向量值函数 (f : K_0 \to \mathbb{R}^k)(定义在 (K) 的顶点集上)的子水平集对单纯复形 (K) 进行的过滤。假设 (f : K_0 \to \mathbb{R}^k) 是分量 - 单射的,即其分量 (f_i) 是单射的。对于任何函数 (\tilde{f} : K_0 \to \mathbb{R}^k),可以通过以下过程获得一个任意接近 (\tilde{f}) 的分量 - 单射函数 (f):设 (n) 是 (K_0) 的基数,对于 (i = 1, \ldots, k),设 (\eta_i = \min{|\tilde{f}
i(v) - \tilde{f}_i(w)| : v, w \in K_0 \land \tilde{f}_i(v) \neq \tilde{f}_i(w)})。对于每个 (i)((1 \leq i \leq k)),假设 (K_0) 中的 (n) 个顶点按 (\tilde{f}_i) 递增的顺序由整数索引 (j)((1 \leq j \leq n))索引,定义 (f_i(v_j) = \tilde{f}_i(v_j) + \frac{j\eta_i}{ns})((s \geq 1),(s) 越大,(f) 越接近 (\tilde{f})),最后设 (f = (f_1, f_2, \ldots, f_k))。将 (f) 扩展为 (f : K \to \mathbb{R}^k),(f(\sigma) = (f_1(\sigma), \ldots, f_k(\sigma))),其中 (f_i(\sigma) = \max
{v \in K_0(\sigma)} f_i(v))。在 (\mathbb{R}^k) 中定义偏序:对于 (a = (a_i)),(b = (b_i) \in \mathbb{R}^k),(a \preceq b) 当且仅当对于每个 (i)((1 \leq i \leq k)),(a_i \leq b_i);(a \prec b) 当且仅当 (a \preceq b) 且 (a \neq b)。由 (f) 诱导的 (K) 的子水平集过滤是 ({K_a}_{a \in \mathbb{R}^k}),其中 (K_a = {\sigma = [v_0, v_1, \ldots, v_q] \in K | f(v_i) \preceq a, i = 0, \ldots, q})。每个 (K_a) 是 (K) 的一个单纯子复形,(f) 被称为测量函数或多维测量函数。单纯形的下星是 (L(\sigma) = {\alpha \in K | \sigma \subseteq \alpha \text{ 且 } f(\alpha) \preceq f(\sigma)}),简化下星是 (L^
(\sigma) = L(\sigma) \setminus {\sigma})。
-
索引映射
*:与可允许函数 (f) 兼容的单纯复形 (K)(基数为 (N))上的索引映射是一个双射 (I : K \to {1, 2, \ldots, N}),使得对于每个 (\sigma, \tau \in K)((\sigma \neq \tau)),若 (\sigma \subseteq \tau) 或 (f(\sigma) \prec f(\tau)),则 (I(\sigma) < I(\tau))。可以通过修改使用有向无环图(DAG)的拓扑排序算法来构建这样的索引映射。拓扑排序算法如下:
Algorithm 1. 拓扑排序
1: Input: A DAG whose list of nodes with no incoming edges is I
2: Output: The list L containing the sorted nodes
3: while there are nodes remaining in I do
4: remove a node u from I
5: add u to L
6: for each node v with an edge e from u to v do
7: remove edge e from the DAG
8: if v has no other incoming edges then
9: insert v into I
10: end if
11: end for
12: end while
这个算法可以确保每个节点和每条边都被访问一次,运行时间与 DAG 中的节点数和边数之和成线性关系。并且存在一个引理表明,对于可允许函数 (f),存在一个单射函数 (I : K \to \mathbb{N}),使得对于不同的 (\sigma, \tau \in K),若 (\sigma \subseteq \tau) 或 (f(\sigma) \prec f(\tau)),则 (I(\sigma) < I(\tau))。
通过以上这些概念和算法,为后续的匹配算法奠定了基础。在接下来的部分,我们将详细介绍匹配算法本身以及它是如何工作的。
mermaid 流程图 - 拓扑排序算法
graph TD;
A[开始] --> B{是否有节点在I中};
B -- 是 --> C[从I中移除节点u];
C --> D[将u添加到L];
D --> E{是否有从u到v的边e};
E -- 是 --> F[从DAG中移除边e];
F --> G{v是否没有其他入边};
G -- 是 --> H[将v插入I];
H --> B;
G -- 否 --> B;
E -- 否 --> B;
B -- 否 --> I[结束];
表格 - 部分匹配相关概念总结
| 概念 | 定义 |
|---|---|
| 单纯复形 (K) | 由顶点、边、三角形及其 (q) 维对应物(单纯形)组成的有限集合 |
| 部分匹配 ((A, B, C, m)) | 将 (K) 划分为 (A),(B),(C) 三个集合,(m : A \to B) 是双射,(m(\tau)) 是 (\tau) 的余面 |
| (m) - 路径 | 序列 (\sigma_0, \tau_0, \sigma_1, \tau_1, \ldots, \sigma_p, \tau_p, \sigma_{p + 1}),满足特定条件 |
| 无环部分匹配 | 不存在封闭的 (m) - 路径的部分匹配 |
| 向量值函数 (f) | 定义在 (K_0) 上,扩展到 (K) 上,诱导子水平集过滤 |
| 子水平集过滤 ({K_a}) | (K_a = {\sigma \in K |
| 下星 (L(\sigma)) | ({\alpha \in K |
| 简化下星 (L^*(\sigma)) | (L(\sigma) \setminus {\sigma}) |
| 索引映射 (I) | 双射 (I : K \to {1, 2, \ldots, N}),满足特定顺序条件 |
数字化对偶组合与凸情形及多维持久同调的匹配算法研究
3. 匹配算法
匹配算法是本文的核心内容,下面详细介绍其具体流程。
-
算法输入与初始化
:算法的输入包括一个有限单纯复形 (K)、一个基于分量 - 单射函数 (f : K_0 \to \mathbb{R}^k) 扩展得到的可允许函数 (f : K \to \mathbb{R}^k) 以及一个与 (f) 兼容的索引映射 (I : K \to {1, 2, \ldots, N})。初始化时,对于每个 (\sigma \in K),设置 (classified(\sigma) = false);同时,创建两个优先队列 (PQzero) 和 (PQone),分别用于存储有零个和一个未分类面的配对候选者,并将它们初始化为空集。
-
算法流程
1. 按索引递增顺序处理单纯形:算法按索引 (I) 的递增顺序处理 (K) 中的单纯形。对于每个单纯形 (\sigma),若 (classified(\sigma) = false),则进行后续处理。
2. 处理下星为空的情况:若 (L^
(\sigma) = \varnothing),将 (\sigma) 添加到关键单元列表 (C) 中,并将 (classified(\sigma)) 设置为 (true)。
3. 配对处理:若 (L^
(\sigma) \neq \varnothing),找到 (L^
(\sigma)) 中索引值最小的余面 (\delta),将 (\sigma) 添加到集合 (A) 中,(\delta) 添加到集合 (B) 中,并定义 (m(\sigma) = \delta),同时将 (classified(\sigma)) 和 (classified(\delta)) 都设置为 (true)。然后,将 (L^
(\sigma) - {\delta}) 中未分类面数量为零的单元添加到 (PQzero) 中,将 (L^
(\sigma)) 中未分类面数量为一且 (\alpha > \delta) 的单元添加到 (PQone) 中。
4. 优先队列处理:当 (PQone) 或 (PQzero) 不为空时,进行以下操作:
- 若 (PQone) 不为空,取出其队首元素 (\alpha)。若 (\alpha) 的未分类面数量为零,将其添加到 (PQzero) 中;否则,将 (\alpha) 的未分类面 (\lambda) 添加到 (A) 中,(\alpha) 添加到 (B) 中,定义 (m(\lambda) = \alpha),将 (classified(\alpha)) 和 (classified(\lambda)) 都设置为 (true),从 (PQzero) 中移除 (\lambda),并将 (L^
(\sigma)) 中未分类面数量为一且 (\beta > \alpha) 或 (\beta > \lambda) 的单元添加到 (PQone) 中。
- 若 (PQzero) 不为空,取出其队首元素 (\gamma),将其添加到关键单元列表 (C) 中,将 (classified(\gamma)) 设置为 (true),并将 (L^*(\sigma)) 中未分类面数量为一且 (\tau > \gamma) 的单元添加到 (PQone) 中。
Algorithm 2. 匹配
1: Input: A finite simplicial complex K with an admissible function f : K → Rk and
an indexing map I : K → {1, 2, ..., N} on its simplices compatible with f.
2: Output: Three lists A, B, C of simplices of K, and a function m : A → B.
3: for i = 1 to N do
4: σ := I−1(i)
5: if classified(σ)=false then
6: if L∗(σ) contains no cells then
7: add σ to C, classified(σ)=true
8: else
9: δ := the cofacet in L∗(σ) of minimal index I(δ)
10: add σ to A and δ to B and define m(σ) = δ, classified(σ)=true,
classified(δ)=true
11: add all α ∈ L∗(σ) − {δ} with num_unclass_facetsσ(α) = 0 to PQzero
12: add all α ∈ L∗(σ) with num_unclass_facetsσ(α) = 1 and α > δ to PQone
13: while PQone ̸= ∅ or PQzero ̸= ∅ do
14: while PQone ̸= ∅ do
15: α := PQone.pop_front
16: if num_unclass_facetsσ(α) = 0 then
17: add α to PQzero
18: else
19: add λ ∈ unclass_facetsσ(α) to A, add α to B and define m(λ) = α,
classified(α)=true, classified(λ)=true
20: remove λ from PQzero
21: add all β ∈ L∗(σ) with num_unclass_facetsσ(β) = 1 and either
β > α or β > λ to PQone
22: end if
23: end while
24: if PQzero ̸= ∅ then
25: γ := PQzero.pop_front
26: add γ to C, classified(γ)=true
27: add all τ ∈ L∗(σ) with num_unclass_facetsσ(τ) = 1 and τ > γ to
PQone
28: end if
29: end while
30: end if
31: end if
32: end for
mermaid 流程图 - 匹配算法
graph TD;
A[开始] --> B[按索引递增遍历单纯形σ];
B --> C{classified(σ)是否为false};
C -- 是 --> D{L*(σ)是否为空};
D -- 是 --> E[将σ添加到C,设置classified(σ)=true];
D -- 否 --> F[找到L*(σ)中索引最小的余面δ];
F --> G[将σ添加到A,δ添加到B,定义m(σ)=δ,设置classified(σ)=true, classified(δ)=true];
G --> H[将L*(σ) - {δ}中未分类面为0的α添加到PQzero];
H --> I[将L*(σ)中未分类面为1且α > δ的α添加到PQone];
I --> J{PQone或PQzero是否为空};
J -- 否 --> K{PQone是否为空};
K -- 是 --> L{PQzero是否为空};
L -- 是 --> J;
L -- 否 --> M[取出PQzero队首γ,添加到C,设置classified(γ)=true];
M --> N[将L*(σ)中未分类面为1且τ > γ的τ添加到PQone];
N --> J;
K -- 否 --> O[取出PQone队首α];
O --> P{α的未分类面是否为0};
P -- 是 --> Q[将α添加到PQzero];
Q --> J;
P -- 否 --> R[将α的未分类面λ添加到A,α添加到B,定义m(λ)=α,设置classified(α)=true, classified(λ)=true];
R --> S[从PQzero移除λ];
S --> T[将L*(σ)中未分类面为1且β > α或β > λ的β添加到PQone];
T --> J;
J -- 是 --> U[结束];
C -- 否 --> B;
E --> B;
表格 - 匹配算法状态及操作总结
| 状态 | 操作 |
|---|---|
| (L^*(\sigma) = \varnothing) | 将 (\sigma) 添加到 (C),设置 (classified(\sigma) = true) |
| (L^*(\sigma) \neq \varnothing) | 找到最小索引余面 (\delta),将 (\sigma) 添加到 (A),(\delta) 添加到 (B),定义 (m(\sigma) = \delta),设置 (classified(\sigma) = true),(classified(\delta) = true),处理 (PQzero) 和 (PQone) |
| (PQone) 不为空 | 取出队首 (\alpha),根据未分类面数量处理,更新 (PQzero) 和 (PQone) |
| (PQzero) 不为空 | 取出队首 (\gamma),添加到 (C),设置 (classified(\gamma) = true),更新 (PQone) |
4. 实验与应用
在合成和真实的 3D 数据上进行了一系列实验,以验证算法的有效性。实验结果表明,该算法能够显著减少单纯复形中的单元数量,同时保持与原始复形相同的多维持久同调。通过对不同数据集的测试,发现算法在处理大规模数据时,能够有效地降低计算复杂度,提高计算效率。
5. 总结与展望
本文围绕数字化对偶组合与凸情形以及多维持久同调的匹配算法展开研究。在数字化对偶组合与凸情形部分,通过严格的证明和丰富的示例,深入探讨了相关集合的交集性质和边界构造方法。在多维持久同调的匹配算法方面,详细介绍了算法的背景、初步概念和具体实现流程。实验结果显示算法在减少单纯复形单元数量方面具有显著效果。
未来的研究可以进一步优化算法,提高其在更复杂数据集上的性能。例如,可以探索更高效的索引映射构建方法,或者改进优先队列的管理策略。此外,还可以将算法应用到更多领域,如计算机图形学、生物学等,以解决实际问题。
超级会员免费看
1万+

被折叠的 条评论
为什么被折叠?



