Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update graph #2072

Merged
merged 1 commit into from
Aug 17, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 20 additions & 12 deletions docs-2.0/1.introduction/0-0-graph.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,27 +18,33 @@

但是——总会有但是——我们在本书中讨论的图是另外一个概念——“图论”中的图。

在数学的分支图论中,图是基本研究对象,用于表示实体与实体之间的关系。一张图由一些小圆点(称为顶点或节点,即 Vertex)和连接这些圆点的直线或曲线(称为边,即 Edge)组成。“图(Graph)”这一名词最早由西尔维斯特在 1878 年提出。
图论始于 18 世纪初期的柯尼斯堡七桥问题。柯尼斯堡当时是普鲁士的城市,普雷格尔河穿过柯尼斯堡,不仅把柯尼斯堡分成了两部分,而且还在河中间形成了两个小岛。这就将整个城市分割成了四个区域,各区域由七座桥连接。在所有的桥都只能走一遍的前提下,如何能把这个地方所有的桥都走一遍呢?

通常,在英文中,为了区分这两种不同的图,前者会称为 Image,后者称为 Graph。在中文中,前者会强调为“图片”,后者会强调为“拓扑图”、“网络图”等。
![image](https://docs-cdn.nebula-graph.com.cn/figures/graph-1.png) ![image](https://docs-cdn.nebula-graph.com.cn/figures/graph-2.png) ![image](https://docs-cdn.nebula-graph.com.cn/figures/graph-3.png)

![Image](https://docs-cdn.nebula-graph.com.cn/books/images/undirectedgraph.png)

这才是本书所说的图。

简单来说,图论就是研究图的学问。图论始于 18 世纪初期的柯尼斯堡七桥问题。柯尼斯堡当时是普鲁士的城市(现在属于俄罗斯,更名为加里宁格勒)。普雷格尔河穿过柯尼斯堡,不仅把柯尼斯堡分成了两部分,而且还在河中间形成了两个小岛。这就将整个城市分割成了四个区域,各区域由七座桥连接。当时有一个与柯尼斯堡相关的小游戏,即如何只穿过每座桥一次,浏览整个城市的四个区域。下图为柯尼斯堡七座桥的简化图。 有兴趣的话可以试试寻找这个小游戏的答案[^171]。
有兴趣的话可以试试寻找这个小游戏的答案[^171]。下图为柯尼斯堡七座桥的简化图。

![image](https://user-images.githubusercontent.com/42762957/91536940-1526c180-e948-11ea-8fe8-90f40ce28171.png)

[^171]: 图片来源 https://medium.freecodecamp.org/i-dont-understand-graph-theory-1c96572a1401.

大数学家欧拉为了解决了这一问题。通过将城市的四个区域抽象成点,将连接城市的七座桥抽象成连接点的边,欧拉证明了这一问题是无法解决的。简化的抽象图如下[^063]:
大数学家欧拉于 1735年提出,并没有方法能圆满解决这个问题,并在第二年发表论文,证明符合条件的走法并不存在。这篇论文在圣彼得堡科学院发表,成为图论史上第一篇重要文献。

在论文中,欧拉把实际的抽象问题简化为平面上的点与边组合,将城市的四个区域抽象成点,将连接城市的七座桥抽象成连接点的边。

![image](https://docs-cdn.nebula-graph.com.cn/figures/graph-4.png)

![image](https://user-images.githubusercontent.com/42762957/91538126-e578b900-e949-11ea-980c-5704254e8063.png)
图中四个点代表柯尼斯堡的四个区域,点之间的线代表连接四个区域的七座桥。从图中不难看出,偶数座桥连接的区域可以轻松通过,因为来去可以选择不同的路线。奇数座桥连接的区域只能作为起点或者终点,因为同样的路线只能走一次。和节点相关联的边的条数称为节点度。现在可以证明,只有两个节点有奇数度,另外节点有偶数度时,也即两个区域必须有偶数座桥,剩下的区域有奇数座桥时,柯尼斯堡问题才能解决。欧拉论述了,由于柯尼斯堡七桥问题中所有区域都为奇数度,它无法实现符合题意的遍历。

[^063]: 图片来源 https://medium.freecodecamp.org/i-dont-understand-graph-theory-1c96572a1401
欧拉发表的相关论文被认为是图论领域的第一篇文章,因此普遍认为欧拉是图论的创始人。

图中四个点代表柯尼斯堡的四个区域,点之间的线代表连接四个区域的七座桥。从图中不难看出,偶数座桥连接的区域可以轻松通过,因为来去可以选择不同的路线。奇数座桥连接的区域只能作为起点或者终点,因为同样的路线只能走一次。和节点相关联的边的条数称为节点度。现在可以证明,只有两个节点有奇数度,另外节点有偶数度时,也即两个区域必须有偶数座桥,剩下的区域有奇数座桥时,柯尼斯堡问题才能解决。然而由上图得知,柯尼斯堡的任何区域都没有偶数座桥,所以这个谜题无解。
图论中的相关概念,我们将在后面的学习中提到。简单来说,图论就是研究图的学问。图是基本研究对象,用于表示实体与实体之间的关系。

在数学的分支图论中,图(Graph)是基本研究对象。在中文中,强调为“拓扑图”、“网络图”等。这一名词最早由西尔维斯特在 1878 年提出。他是著名的英国数学家、牛津大学几何教授,用图来表示数学和化学分子结构之间的关系。

一张图由一些小圆点(称为顶点或节点,即 Vertex)和连接这些圆点的直线或曲线(称为边,即 Edge)组成。

![Image](https://docs-cdn.nebula-graph.com.cn/books/images/undirectedgraph.png)

## 属性图

Expand All @@ -53,7 +59,7 @@

在现实生活中,有很多属性图的例子。

例如企查查或者 BOSS 直聘这类的公司,用图来建模商业股权关系网络。这个网络中,点通常是一个自然人或者是一家企业,边通常是某自然人与某企业之间的股权关系。点上的属性可以是自然人姓名、年龄、身份证号等。边上的属性可以是投资金额、投资时间、董监高等职位关系。
在网络理论中,图可以用来做可视化的社会网络分析,研究社会实体之间的关系结构。例如企查查或者 BOSS 直聘这类的公司,用图来建模商业股权关系网络。这个网络中,点通常是一个自然人或者是一家企业,边通常是某自然人与某企业之间的股权关系。点上的属性可以是自然人姓名、年龄、身份证号等。边上的属性可以是投资金额、投资时间、董监高等职位关系。

![image](https://docs-cdn.nebula-graph.com.cn/books/images/enterprise-relations.png)

Expand Down Expand Up @@ -132,6 +138,8 @@

图还可以用于更深度的知识推理,华为、vivo、OPPO、微信、美团等公司,将图用于表征底层知识关系的数据模型。

由此可见,图可用于在物理、生物、社会和信息系统中建模许多类型的关系和过程,许多实际问题可以用图来表示。因此,图论成为运筹学、控制论、信息论、网络理论、社会科学、语言学、计算机科学等众多学科强有力的数学工具。

## 为什么要使用图数据库

虽然关系型数据库与 XML/JSON 等半结构类型的数据库,都可以用来描述图结构的数据模型,但是,图(数据库)不仅可以描述图结构与存储数据本身,更着眼于处理数据之间的关联(拓扑)关系。具体来说,图(数据库)有这么几个优点:
Expand Down