根据弗罗斯特和沙利文的观点,“图形是计算机科学的统一主题之一——一种描述运输系统的组织、人类交互和电信网络的抽象表示。” 对于受过教育的程序员来说,这么多不同的结构可以用一种形式主义来建模是一种巨大的力量。”

要利用这种力量,你需要一些基本概念。 本博客系列旨在帮助您更好地利用图形分析,以便您能够更快地有效创新和开发智能解决方案。

上周,我们看了Neo4j图形分析,以及如何需要一个本地图形平台来使其易于表达多种类型的数据元素之间的关系。

本周我们将研究图形算法的概念,包括两种基本的图形遍历算法:广度优先搜索(BFS)和深度优先搜索(DFS),以及各种图形属性,这些属性将通知您选择如何遍历图形以及您使用的算法。

图-算法-in-neo4j-图-算法-概念

最基本的图形任务是以一种有条理的方式访问节点和关系——这被称为遍历图形。 遍历意味着使用前一个和后一个操作按排序顺序从一个项目移动到另一个项目。

虽然这听起来很简单,但因为排序顺序是合乎逻辑的,所以下一跳由节点的逻辑前身或后继节点决定 通过它的接近度。

复杂性的产生是因为分配给节点和关系的值可能被考虑在内。 例如,在一个未排序的图中,一个节点的前一个节点将持有比当前节点的值小的最大值,而它的后继节点将是具有比当前节点的值大的最小值的节点。

有两种基本的图遍历算法:广度优先搜索(BFS)和深度优先搜索(DFS)。

图-算法-in-neo4j-图-算法-概念

算法之间的主要区别是它们在图中探索节点的顺序。

广度优先搜索通过先搜索节点的邻居,然后考虑这些邻居的邻居来遍历图。 深度优先搜索将探索尽可能远的路径,总是在可能的地方拜访新邻居。

虽然这些算法不常直接使用,但它们构成了其他图形算法的一个组成部分:

    • 深度优先搜索 由强连接组件算法使用。
    • 广度优先搜索 由最短路径、接近中心和连接组件算法使用。

有时不清楚其他图形算法正在使用哪种算法。 For example,
Neo4j ‘s Shortest Path algorithm uses a fast bidirectional breadth-first search as long as any predicates can be evaluated while searching for the path.

Neo4j的最短路径算法使用快速双向广度优先搜索,只要在搜索路径时可以评估任何谓词。

图-算法-in-neo4j-图-算法-概念

图有几个基本属性,它们将告诉你如何选择遍历图和你使用的算法。 在无向图中,节点之间的关系没有方向。 例如,城市之间的高速公路是双向的。 在有向图中,关系有一个特定的方向。

例如,在城市中,一些道路是单行道。 对于一些分析,你可能也想忽略方向,比如友谊,你想假设关系是相互的。

我们还将看到这与社区检测算法的关系,尤其是弱连接和强连接组件。

在图论中,循环是通过关系和节点的路径,在这里你从一个特定的节点来回走动。 图中有许多类型的循环,但是在使用可能导致无限循环的算法时需要考虑循环,例如PageRank。

无环图没有循环;树形结构是一种常见的有连接和无连接(和无方向)图。

加权图为节点或其关系赋值(权重);一个例子是行进一段的成本或时间或者节点的优先级。 通过广度优先搜索可以快速找到通过未加权图的最短路径,因为它总是具有最少数量关系的路径。

实时同步数据库

加权图通常用于寻路算法,需要考虑计算附加值。 与节点相比,具有大量关系的图称为密集图。
大多数图形趋向于稀疏,尤其是在物理元素(例如管道尺寸)起作用的地方。

大多数图形趋向于稀疏,尤其是在物理元素(例如管道尺寸(起作用的地方。

在为社区检测算法准备图形数据时应格外小心:在非常密集的图形上,您会发现过度聚集的,毫无意义的社区;而在频谱的另一端,极为稀疏的图可能根本找不到任何社区。
我们开发该库是我们努力使Neo4j可以更轻松地用于各种应用程序的一部分。

下周,我们将看一下Neo4j图算法库。

相关文章:

  • 2022-01-02
  • 2021-11-04
  • 2021-06-12
  • 2021-05-07
  • 2022-12-23
  • 2022-12-23
  • 2021-08-18
  • 2021-04-23
猜你喜欢
  • 2021-11-10
  • 2022-12-23
  • 2022-12-23
  • 2021-11-02
  • 2021-06-29
相关资源
相似解决方案