PKUWWT

单纯复形(Simplicial Complexes)[译]

  • 主题: 单纯形(simplices), 单纯复形(simplicial complexes), 抽象单纯复形(abstract simplicial complexes), 几何实现(geometric realization), 神经(nerves)
  • 1999-01-04
  • 原文

单纯形(simplices)

点,边,三角形,四面体是低维的单纯形例子。我们使用点的组合来定义一般维度上的单纯形。令是一个-维欧氏空间上的有限集合。这些点的一个仿射(affine)组合也是一个点,其中仿射壳(affine hull),记为,是所有仿射组合的集合。等价的,它是所有包含的超平面的交集。中的点是仿射独立(affine independent, a.i.),如果没有一个点是其它点的仿射组合。比如,三个仿射独立的点的仿射壳是一个平面,两个构成一条线,单个点得到这个点本射。

一个凸组合是一个系数非负的仿射组合: 对所有。而凸壳(convex hull),记为,是所有凸组合的集合。等价的,它是所有包含的半空间的交集。一个单纯形(simplex)是一个a.i.点集的凸壳。如果是一个包含个a.i.点的集合,则此单纯形的维度为,且被称为是-单纯形。中a.i.点的数目最多为,我们得到的单纯形的维度从-1到。图1显示了中的5种类型的单纯形。

图1: 空集是(-1)-单纯形,点或顶点是0-单纯形,边是1-单纯形,三角形是2-单纯形,四面体是3-单纯形

任意子集中的点依然是a.i.,因此的凸壳同样是单纯形。具体地说,当不在中时,是所有点的子集,只不过系数。单纯形的一个面(face),我们将这种关系记为。如果,则称为是-面。是非真面(improper faces),其它的面都是的真面(proper faces)。-面的个数等于从个点中选择个点的组合数,即

因此总的面的数目是

单纯复形(simplicial complexes)

一个单纯复形是一个单纯的有限集合,满足

  • (i) 若,则
  • (ii) 若,则

注意,空集是所有单纯形的面,因此也属于。第2个条件属性互不相交。图2中是违反了上述条件的3个单纯形集合,因此也就不构成复形。

图2. 左边缺一条边和两个顶点,中间两个三角相交于边片断,它不是任何三角形的边,右边边穿过三角形的内部点。

子复形(subcomplex)是一个本身是单纯复形的子集。注意,每个单纯形的子集都满足条件(ii)。为了满足条件(i),我们添加一些面和单纯形到此子集中。正式地讲,一个子集闭包(closure)是包含的最小子复形,即

一种特别的子复形是-骨架(skeleton),它由所有维度小于等于的单纯形组成。顶点集(vertex set)的定义是

顶点集基本等同于0-骨架,只不过不包含(-1)-单纯形。维度(dimension)是它的维度最大的单纯形: 。如果,则是一个-复形。如果它的每个单纯形都是-单纯形的面,则此-复形称为是纯粹(pure)的。单纯形所覆盖的点集的底空间(underlying space)是: 。比如,一个多面体(polyhedron)是一个单纯复形的底空间。有时,考虑一个单纯复形的子结构是有用的。一个单纯形星(star)由所有包含的单纯形构成,而它的链接(link)是星中不与相交的单纯形的所有面。

见图3的例子,星一般是不封闭的,但链接总是一个单纯复形。

图3. 一个顶点的星(star)和链接(link)。左边的实线和阴影三角形表示实心顶点的星(注意虽然包括三角形,但是不包括外面的边,三角形和边都是单纯形)。右边的实心边和实心顶点为空心顶点的链接。

抽象单纯复形(abstract simplicial complex)

如果把单纯复形中的每个单纯形替换成它的顶点集,我们得到一个顶点集的子集构成的系统。这样做相当于丢弃了单纯形的几何结构,这样我们可以集中精力研究其组合结构。

正式地,有限集合的一个有限系统是一个抽象单纯形(abstract simplicial complex),如果蕴含。这个要求与几何单纯复形的条件(i)类似。一个集合是一个(抽象)单纯形,它的维度是顶点集。其它概念,如面,子复形,闭包,星,链接,都可以直接由几何单纯复形扩展至抽象单纯复形。

这个集合系统,加上集合间的包含关系,构成了一个半序集,或偏序集(poset),记为。偏序集通常使用Hasse图来表达,其中集合是结点,小结合在大集合下面,边则是包含关系。如图4。暗含的包含关系通常不画出来。

图4. 从左至右是空集,顶点,边,三角形和四面体的偏序集

为了画出一个-单纯形的Hasse图,我们画两个(k-1)-单纯形的Hasse图。一个是-单纯形-面,另一个是顶点的星的图。最后,将的星中的每个单纯形连接到闭包中的单纯形

抽象单纯复形的幂集的子系统。我们可以因此而将其视为一个-单纯形的子复形,其中。这种视角可以用一个抽象复形的图来表达,如图5。

图5. 这个洋葱头是的幂集。水线下面的区域是抽象单纯复形。

几何实现(geometric realization)

我们可以将一个抽象单纯复形理解为几何单纯复形的抽象版本。为了形式化这个观点,我们定义一个抽象单纯复形的一个几何实现(geometric realization)为一个单纯复形,加上一个双射(bijection),使得当且仅当。反过来,被称为是抽象(abstraction)

给定,我们可以寻找构成几何实现的最低维度。比如,图是1维抽象单纯复形,它总是可以在上实现。两个维度通常不总是足够。这个结果一般化到维抽象单纯形上: 它们总是可以在,且有时不够。为了证明这个断言的充分性,我们将说明任何-单纯形的-骨架都可以在上实现。将个顶点映射到上的一般的点上。特别地,我们要求任意个这样的点是a.i.。-骨架的两个单纯形共有个顶点,因此它们是a.i.。换句话说,是同一个单纯形的面,而此单纯形最大维度不超过。因此,是两者共同的面。

定理1 任意维抽象单纯形复形都有一个上的几何实现。

神经(nerves)

一个构造抽象单纯复形的方便方法是使用任意有限集合。这样的一个集合神经(nerve)是无非空交集的子集的系统:

如果,则。因此,可得,这表示神经是一个抽象单纯复形。考虑是覆盖某个几何空间的例子,如图6所示。此覆盖中的每个集合对应于一个顶点,而个有非空交集的集合定义出一个-单纯形。

图6. 左边: 有8个集合的一个覆盖,右边: 它的神经。这些集合三元组中相遇,但不是四元组,这表示此神经是2维的。

之前,我们已经看到一个此构造过程的例子了。一个有限集的Voronoi区域定义了平面的一个覆盖。假定Voronoi区域一般成对相遇,在三元组中相遇,但不在四元组中相遇。因此,此神经只包含了抽象顶点,和三角形。考虑函数,它将一个Voronoi区域映射到它的生成器上: 。 这个函数定义了一个的几何实现:

这是的Delaunay三角化。如果中的点不是一般位置呢?如果,Voronoi区域有一个非空公共交集,则包含了相应的抽象-单纯形。所以与其在面体的可能的三角化中选择,此神经将所有可能的三角化合并起来,并将它们视为一个-单纯形的子复形。此方法的缺点自然是不再能够在上实现了。

参考文献

在20世纪的头50年,组合拓扑是一个繁荣的数学领域。我们将Paul Alexandrov[1]作为一个全面的参考文献,它最初是作为多本书发表的。拓扑学的许多技术性结果的促进下,该文献将此领域进行了基础性的重组织。组合拓扑的一个后继学科是代数拓扑,其重点由组合转移到代数结构。我们推荐James Munkres[5]作为该领域的入门书籍。

我们证明了每个-复形可以在上几何实现。需要维的-复形例子参见Flores[2]和van Kampen[3],他们的工作是独立的。这样的一个例子是-单纯形的-骨架。对于,这是5个顶点的完全图,是Kuratowski[4]找到的图的平面化的两个障碍之一。

  • [1] P. S. Alexandrov. Combinatorial Topology. Dover, New York 1956.
  • [2] A. Flores. Uber n-dimensionale Komplexe die in selbstverschlungen sind. Ergeb. Math. Kol l. 6 (1933/34), 4-7.
  • [3] E. R. van Kampen. Komplexe in euklidischen aumen. Abh. Math. Sem. Univ. Hamburg 9 (1933), 72-78.
  • [4] K. Kuratowski. Sur le problme des courbes en topologie. Fund. Math. 15(1930), 271-283.
  • [5] J. R. Munkres. Elements of Algebraic Topology. Addison-Wesley, Redwood City, California, 1984.

python programming visualization GPU scholarship algorithm data linux pdf foxit geometry math OpenGL zip D3 java vim makefile C++ gdb >>>> <<<<


pkg
node.js
bundle
Bunlde node.js app to standalone executable with pkg
2020-04-17 00:00:00 +0000
/programming/2020-04-17-bundle-node-js-app-to-standalone-executable-with-pkg/

	
	
tighervnc
ubuntu
Install tigervnc on Ubuntu18.04
2020-04-06 00:00:00 +0000
/techniques/2020-04-06-install-tigervnc-on-ubuntu-18.04/

	
	
go
qt
Usage of Go binding for Qt
2020-04-05 00:00:00 +0000
/programming/2020-04-05-usage-of-go-binding-for-qt/

	
	
docker
registry
web-UI
Setup a private docker registry v2 with web-ui
2020-04-04 00:00:00 +0000
/techniques/2020-04-04-setup-a-private-docker-registry/

	
	
jenkins
flask
continuous integration testing
docker
python
Continuous Integration Testing For Flask with Jenkins
2020-03-16 00:00:00 +0000
/programming/2020-03-16-jenkins-continuous-integration-testing-for-flask/

	
	
android
python
functional testing
uiautomator
Python-based ui-automator for Android
2020-03-15 00:00:00 +0000
/programming/2020-03-15-android-ui-automator-python/

	
	
sqlite3
linux
How to show Sqlite3 output as Man page table
2020-03-14 00:00:00 +0000
/techniques/2020-03-14-how-to-show-sqlite3-output-as-man-page-table/

	
	
gis
algorithm
Encoded Polyline Algorithm
2020-03-11 00:00:00 +0000
/programming/2020-03-11-encoded-polyline-algorithm/

	
	
你应该了解的所有wget命令
2015-09-26 00:00:00 +0000
/techniques/2015-09-26-all-the-wget-commands-you-should-know/

	
	
linux
gnome
GNOME 3 Usage
2015-02-17 00:00:00 +0000
/techniques/2015-02-17-gnome3-usage/

	
	
visualization
CFD
Usage of OpenFoam
2015-02-10 00:00:00 +0000
/scholarship/2015-02-10-openfoam-usage/

	
	
Script of converting tikz script to pdf file
2014-11-19 00:00:00 +0000
/techniques/2014-11-19-tikz-to-pdf-script/

	
	
linux
gimp
gimp使用笔记
2014-11-16 00:00:00 +0000
/techniques/2014-11-16-gimp-notes/

	
	
visualization
scholarship
draw critical points classification of planar system using tikz
2014-10-31 00:00:00 +0000
/scholarship/2014-10-31-planar-system-critical-points-with-tikz/

	
	
LaTeX
scholarship
Latex中bibtex的命名
2014-10-29 00:00:00 +0000
/scholarship/2014-10-29-latex-bibtex-author-name/

	
	
python
PyQt
programming
PyQt4 signal and slot Example
2014-10-19 00:00:00 +0000
/programming/2014-10-19-pyqt4-signal-slot-example/

	
	
programming
C++
Null Ostream Class in C++
2014-10-18 00:00:00 +0000
/programming/2014-10-18-cpp-null-ostream/

	
	
第一个GeoGebra应用
2014-10-09 00:00:00 +0000
/math/2014-10-09-first-geogebra-program/

	
	
linux
shell
shell用法集锦
2014-10-07 00:00:00 +0000
/techniques/2014-10-07-bash-notes/

	
	
swim
blog
游泳技术动画
2014-09-30 00:00:00 +0000
/blog/2014-09-30-swimming-animation/

	
	
scholarship
zotero
文献管理工具Zotero
2014-09-27 00:00:00 +0000
/scholarship/2014-09-27-Literature-Management-Software-Zotero/

	
	
programming
lisp
clojure
第一个clojure程序
2014-09-18 00:00:00 +0000
/programming/2014-09-18-the-first-clojure-program/

	
	
visualization
OpenGL
OpenGL使用技巧
2014-08-27 00:00:00 +0000
/scholarship/2014-08-27-opengl-utility/

	
	
python
crawler
用python来扒网页
2014-08-23 00:00:00 +0000
/programming/2014-08-23-web-scrap-with-python/

	
	
programming
Unicode
中文转码工具
2014-08-23 00:00:00 +0000
/programming/2014-08-23-unicode-conversion/

	
	
vim使用笔记
2014-08-22 00:00:00 +0000
/techniques/2014-08-22-vim-notes/

	
	
ImageMagick使用笔记
2014-08-21 00:00:00 +0000
/techniques/2014-08-21-ImageMagick-notes/

	
	
programming
C++
C++中打印指针
2014-08-17 00:00:00 +0000
/programming/2014-08-17-std-ostream-output-pointer-in-cplusplus/

	
	
programming
gdb
gdb笔记
2014-08-16 00:00:00 +0000
/programming/2014-08-16-gdb-notes/

	
	
programming
bit操作
2014-08-16 00:00:00 +0000
/programming/2014-08-16-bit-operation/

	
	
programming
C++
C++使用笔记
2014-08-12 00:00:00 +0000
/programming/2014-08-12-cpp-usage/

	
	
geometry
programming
python
平面三角形求交测试(Planar Triangles Intersection)
2014-08-07 00:00:00 +0000
/programming/2014-08-07-triangle-intersect/

	
	
vim
makefile
Makefile模板
2014-08-06 00:00:00 +0000
/techniques/2014-08-06-makefile-template/

	
	
programming
java
Java Usage
2014-08-03 00:00:00 +0000
/programming/2014-08-03-java-usage/

	
	
wxMaxima连不上maxima
2014-08-01 00:00:00 +0000
/techniques/2014-08-01-wxmaxima-not-connected-to-maxima/

	
	
用djvulibre将png图片转化为pdf
2014-07-27 00:00:00 +0000
/techniques/2014-07-27-convert-png-images-to-pdf-with-djvulibre/

	
	
用djvulibre来设置djvu文件的索引
2014-07-26 00:00:00 +0000
/techniques/2014-07-26-djvulibre-reset-outline/

	
	
python
programming
python的profile工具
2014-07-24 00:00:00 +0000
/programming/2014-07-24-python-profile/

	
	
隐函数定理
2014-07-22 00:00:00 +0000
/math/2014-07-22-Implicit-Function-Theorem/

	
	
google-chrome浏览器的标题栏字体渲染问题
2014-07-17 00:00:00 +0000
/techniques/2014-07-17-google-chrome-title-bar-font-rendering/

	
	
linux
备份文件Shell脚本
2014-07-14 00:00:00 +0000
/techniques/2014-07-14-linux-backup-shell-script/

	
	
Linux下将多个图像转换为pdf
2014-06-18 00:00:00 +0000
/techniques/2014-06-18-convert-multi-images-to-pdf/

	
	
D3
visualization
D3.js入门资料集锦
2014-05-24 00:00:00 +0000
/scholarship/2014-05-24-d3-js-tutorials/

	
	
linux
zip
python
Linux下zip文件解压乱码问题
2014-05-21 00:00:00 +0000
/techniques/2014-05-21-unzip-gbk-zip-file-in-linux/

	
	
关于Linux下有线网卡不能连接的问题
2014-05-14 00:00:00 +0000
/techniques/2014-05-14-about-r8169-ethernet-driver/

	
	
Linux下用wvdial为3G上网卡拨号
2014-05-04 00:00:00 +0000
/techniques/2014-05-04-3g-connection-with-wvdial/

	
	
algorithm
geometry
两个平面三角形的相交测试
2014-04-29 00:00:00 +0000
/scholarship/2014-04-29-intersections-between-two-2d-triangles/

	
	
使用另一个版本的glibc
2014-04-25 00:00:00 +0000
/techniques/2014-04-25-use-another-glibc-installation/

	
	
LaTeX使用方法集锦
2014-04-19 00:00:00 +0000
/techniques/2014-04-19-latex-usage/

	
	
scholarship
资源网站集锦
2014-04-16 00:00:00 +0000
/scholarship/2014-04-16-good-resource-website/

	
	
python
programming
Python使用问题集锦
2014-04-15 00:00:00 +0000
/programming/2014-04-15-python-usage/

	
	
修复pdf没有嵌入字体的问题
2014-04-07 00:00:00 +0000
/techniques/2014-04-07-repair-pdf-font-embedding-problem/

	
	
visualization
用VTK生成非结构化网格上的矢量场
2014-04-03 00:00:00 +0000
/scholarship/2014-04-03-use-vtk-create-vector-field-on-unstructured-grid/

	
	
algorithm
visualization
geometry
光线-三角形求交测试算法[译]
2014-04-03 00:00:00 +0000
/scholarship/2014-04-03-ray-triangle-intersection-tests-for-dummies/

	
	
OpenGL
python
programming
Python下写OpenGL代码示例
2014-04-03 00:00:00 +0000
/programming/2014-04-03-python-opengl-sample/

	
	
使用tikz绘制函数
2014-03-30 00:00:00 +0000
/techniques/2014-03-30-use-tikz-to-plot-function/

	
	
使用maxima求解非线性方程组
2014-03-21 00:00:00 +0000
/techniques/2014-03-21-use-maxima-to-solve-non-linear-system/

	
	
linux
在Linux下为笔记本添加两指左右滚动功能
2014-03-11 00:00:00 +0000
/techniques/2014-03-11-add-horizontal-two-finger-scroll/

	
	
Linux下常用工具
2014-03-08 00:00:00 +0000
/techniques/2014-03-08-usual-life-linux-tools/

	
	
Linux下使用github
2014-03-08 00:00:00 +0000
/techniques/2014-03-08-how-to-use-github/

	
	
git使用笔记
2014-03-08 00:00:00 +0000
/techniques/2014-03-08-git-usage/

	
	
LaTeX笔记(texlive)
2014-03-06 00:00:00 +0000
/techniques/2014-03-06-latex-notes/

	
	
geometry
visualization
几种基本几何预测
2014-03-01 00:00:00 +0000
/scholarship/2014-03-01-geometric-predicates/

	
	
math
visualization
geometry
单纯复形(Simplicial Complexes)[译]
2014-02-27 00:00:00 +0000
/scholarship/2014-02-27-simplicial-complexes/

	
	
linux
一个用于寻找文件,并便于打开文件的脚本
2014-02-22 00:00:00 +0000
/techniques/2014-02-22-a-script-for-find-and-open-file/

	
	
linux
清理Linux中的不用内存或缓存
2014-02-21 00:00:00 +0000
/techniques/2014-02-21-free-linux-memory/

	
	
visualization
geometry
形状指数(shape index)
2014-02-20 00:00:00 +0000
/scholarship/2014-02-20-shape-index/

	
	
用wget下载C++的手册
2014-02-10 00:00:00 +0000
/techniques/2014-02-10-download-cplusplus-reference/

	
	
linux
pdf
foxit
在Linux下使用wine+foxit
2014-02-08 00:00:00 +0000
/techniques/2014-02-08-using-foxit-in-linux/

	
	
在Bash的输入循环中使用readline和历史记录
2014-02-06 00:00:00 +0000
/techniques/2014-02-06-completion-and-history-in-bash-read-loop/

	
	
visualization
data
可视化数据集
2014-01-07 00:00:00 +0000
/scholarship/2014-01-07-visualization-dataset-collection/

	
	
关于几种窗口系统的透明效果
2014-01-06 00:00:00 +0000
/techniques/2014-01-06-transparent-window/

	
	
使用淘宝提供的Ruby源
2014-01-06 00:00:00 +0000
/techniques/2014-01-06-taobao-gems/

	
	
函数的临界点上的海森(Hessian)矩阵的含义[译]
2013-12-29 00:00:00 +0000
/math/2013-12-29-Meaning-of-the-Hessian-of-a-function-in-a-critical-point/

	
	
algorithm
visualization
层次集方法讲稿[译]
2013-12-25 00:00:00 +0000
/scholarship/2013-12-25-the-level-set-method-lecture-notes/

	
	
visualization
algorithm
层次集方法(Level Set Method) -- 解释[译]
2013-12-24 00:00:00 +0000
/scholarship/2013-12-24-level-set-method-explanation/

	
	
scholarship
微软的学术搜索引擎还是很好用的
2013-12-17 00:00:00 +0000
/scholarship/2013-12-17-academical-search-with-microsoft-search-engine/

	
	
GNU screen 保存会话
2013-12-12 00:00:00 +0000
/techniques/2013-12-12-gnu-screen-save-session/

	
	
GNU Screen--介绍和初学者指南[译]
2013-12-04 00:00:00 +0000
/techniques/2013-12-04-gnu-screen-an-introduction-and-beginners-tutorial/

	
	
visualization
GPU
GPU Gems - 第39章 基于纹理的体绘制技术[译]
2013-12-04 00:00:00 +0000
/scholarship/2013-12-04-gpugems-ch39-texture-based-volume-rendering/

	
	
MathJax使用示例
2013-12-03 00:00:00 +0000
/techniques/2013-12-03-mathjax-example/

	
	
Jekyll中使用MathJax
2013-12-03 00:00:00 +0000
/techniques/2013-12-03-jekyll-using-mathjax/

	
	
visualization
GPU
GPU Gems - 第17章 环境光遮蔽[译]
2013-12-01 00:00:00 +0000
/scholarship/2013-12-01-gpugems-ch17-ambient-occlusion/

	
	
python
programming
python解释器中的自动补全
2013-11-30 00:00:00 +0000
/programming/2013-11-30-python-interpreter-autocomplete/

	
	
Github建站过程
2013-11-29 00:00:00 +0000
/techniques/2013-11-29-build-a-github-website/

	
	
python
programming
最简单的python服务器
2013-11-29 00:00:00 +0000
/programming/2013-11-29-python-simple-server/