图分析的 22 种算法与图形理解
图分析算法,以图论为驱动,进行算法优化,结合应用工程,业务形态研究,不同领域场景模拟不同网络结构,通过自由刻画网络图形关系,验证结构合理性,如边的有向和无向及权重,从而辅助分析图形关系、图结构分析、网络结构分析等研究工作。
我们通过清林情报分析师的应用插件“图分析”功能,通过算法计算图形生成容易理解的图形解释 22 种图算法。
1、最小生成树(Minimum Spanning Tree):
Prim 算法 、Kruskal 算法、Sollin(Boruvka)算法
(1)Prim 算法 ,普里姆算法,图论中的一种算法,基于一种贪心的思想,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。该算法于 1930 年由捷克数学家沃伊捷赫·亚尔尼克(英语:Vojtěch Jarník)发现;并在 1957 年由美国计算机科学家罗伯特·普里姆(英语:Robert C. Prim)独立发现;1959 年,艾兹格·迪科斯彻再次发现了该算法。因此,在某些场合,普里姆算法又被称为 DJP 算法、亚尔尼克算法或普里姆-亚尔尼克算法。Prime 算法本质是动态规划
(2)Kruskal 算法,中文名克鲁斯卡尔算法,本质是贪心算法,是求连通网的最小生成树的另一种方法。与普里姆算法不同,它的时间复杂度为 O(eloge)(e 为网中的边数),所以,适合于求边稀疏的网的最小生成树。
(3)Sollin(Boruvka)算法,Sollin(Brouvka)算法虽然是最小生成树最古老的一个算法之一,其实是前面介绍两种算法的综合,每次迭代同时扩展多颗子树,直到得到最小生成树 T。
2、连通结构(Connected Components)
无向图 G 的极大连通子图称为 G 的连通分量( Connected Component)。任何连通图的连通分量只有一个,即是其自身,非连通的无向图有多个连通分量。这种结构称作连通结构。
3、双联通结构(Biconnected Components)
任意两点之间都有多于一条的路径,则称为双连通图,也叫双连通分量,双连通分量的术语是 biconnected components,简称为 BCC,这种结构为双联通结构。任何一对顶点之间至少存在有两条路径, 在删去某个顶点及与该顶点相关联的边时, 也不破坏图的连通性。对于无向图的一个子图是双连通的,则称为双连通子图。极大的双连通子图称为双连通分量。一个无向图可以有多个双连通分量,一个点也算是双连通分量。
4、强联通结构(Strongly Connected Components)
有向图的极大强连通子图称为的强连通分量,强连通图只有一个强连通分量,即是其自身。非强连通的有向图有多个强连通分量。如果任意两点之间都能到达,则称为强连通图。如果对于有向图的一个子图是强连通的,则称为强连通子图,这种结构称为强联通结构。
5、可达性(Reachability)
在图论中,可达性是指在图中从一个顶点到另一个顶点的容易程度。在无向图中,可以通过识别图的连接分量来确定所有顶点对之间的可达性。我们的产品解决方案,通过定义一个实体为原点,通过原点链接计算出图中有向可达路径范围和无向可达路径范围,无向可达范围一般大于有向可达。
常用算法为:Floyd-Warshall,Thorup,Kameda 这三种算法。
(1)Floyd-Warshall 算法
Floyd-Warshall 算法(Floyd-Warshall algorithm)是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题,同时也被用于计算有向图的传递闭包。Floyd-Warshall 算法的时间复杂度为 O(N),空间复杂度为 O(N*N)。(2)Thorup 算法
对于平面有向图,一种更快的方法是如 Mikkel Thorup 在 2004 年所提出的算法。计算复杂度为 ,其中为增长速度非常缓慢的 inverse-Ackermann 函数。该算法还可以提供近似最短路径距离以及路由信息。
(3)Kameda 算法
如果图形是平面的,非循环的,并且还表现出以下附加属性,则可以使用由 1975 年的 T.Kameda 提出的更快的预处理方法:所有 0-indegree 和所有 0-outdegree 顶点出现 (通常假设为外面),并且可以将该面的边界分割为两个部分,使得所有 0 个不等的顶点出现在一个部分上,并且所有的 0 度外的顶点出现在另一个部分上 (即两种类型的顶点不交替)。
6、K 核算法(K-Core)
k-Core 算法是一种经典图算法,用于寻找一个图中符合指定核心度的顶点的集合,即要求每个顶点至少与该子图中的其他 k 个顶点相关联。k-Core 算法用于寻找一个图中符合指定核心度的顶点的集合,求每个顶点至少与该子图中的其他 k 个顶点相关联。这个我们提供 1-5Core 的图计算,在图谱中可以分别找出 1-5Core 的团结果发现,并可以用于子图分类。适用于图推演、生物学、社交网络、金融风控等场景。
7、全路径(All Paths)
全路径,就是网络图中的路径集合。分有向和无向,有向路径通过源到目标方向不可逆,无向路径通过源点和目标之间产生的图关系。在同一图形中,无向路径远多于有向。源点,是设定的初始点,目标是设置的需要通过源点要到达的点。有几种基本情况,一是源点和目标点同一设置,即自循环,有向情况下,自循环就是 1 个节点。二是无向情况下,自循环和有向情况一样,但二个节点以上则会多种混合循环体。产品可以通过设置源点和目标,进行分析源点和目标之间产生的有向无向关系。
8、链结构(ALL Chains)
链结构,包含循环或路径,结构从图形结构树的基本循环集派生而来。通过优先搜索图形结构,把图中链分解成一组循环或路径,从原点出发有向或无向远离根原点后又回到原点则为基本环。如果没有回到原点则为一条路径而不是一个环。每个循环或路径称为链。这种结构称为链结构。
9、Single Source
Single Source,称为单源,意为只有一个源为基础。首先是不允许有负环,单源实体到所有实体的最短路径构成一棵最短路径树。通过单源路径算法可以通过选中实体定义源,找出以这个实体源为中心或起始点的图结果。
10、环结构(Cycles)
环结构,即网络的循环结构,通过有向或无向路径最后,形成回到起点闭环。可以理解为形成一个“圈”。网络的基础循环是循环的最小集合,使得网络中的任何循环都可以写成基础中的循环总和。循环基数很有用,如单循环(自循环)、双向循环(双实体双向关系)、三角循环(三个实体循环路径)、四方循环(四个实体循环路径)、五边形以此类推。
11、度中心性(Degree Centrality)
(1)概念
这一概念起源于社会网络研究。最初对社会网络感兴趣的是英国著名的人类学家布朗,他在对社会结构的关注中,以相对来说非技术的形式提出了“社会网络”的思想。从 20 世纪 30 年代到 70 年代,越来越多的社会人类学家和社会学家开始构建布朗的“社会结构”和“社会网络”概念,一些关键概念也应运而生,诸如“密度”、“中心度”、“三方关系”等概念如雨后春笋,纷纷涌现。其中,美国加州大学艾尔温分校社会学系和数理行为科学研究所的研究教授林顿 C·弗里曼于 1979 年在美国社会网络杂志上发表《社会网络中心度的概念说明》一文中正式提出了度中心性的概念。
(2)图论
在图论与网络分析中,中心性是判定网络中节点重要性的指标,是节点重要性的量化。这些中心性度量指标最初应用在社会网络中,随后被推广到其它类型网络的分析中。在社会网络中,一项基本任务是需要鉴定一群人中哪些人比其他人更具有影响力,帮助研究人员分析和理解扮演者在网络中担当的角色。为完成这种分析,这些人以及人与人之间的联系被模型化成网络图,网络图中的节点代表人,节点之间的连边表示人与人之间的联系。基于建立起来的网络结构图,使用一系列中心性度量方法就可以计算出哪个个体比其他个体更重要。
(3)应用
度中心性,可以分为度中心度、度中心性及出度中心性。在一个有向图中,我们可以有出度和入度的中心性二种衡量方式。在网络中,一个节点的度越大,就意味着这个节点的度中心性就越高,就说明在网络中这个节点越重要。主要应用与社会网络分析、网络用户行为分析、信用网络分析、图论研究、复杂网络研究,脑功能网络分析、欺诈网络分析等场景。
12、重心(Weight Centrality)
重心,即权重中心性。每个实体节点为顶点,而实体节点之间的关系边。实体节点之间的相互作用是形成边权重。每个顶点的关联边数越多边权重占每个独立图中权重就越大。
13、图中心(Graph Centrality)
图中心,图中最强中心性的一个或多个实体节点,一个图中心,实体节点权重最大且唯一,多个图中心,在有向图中,二个以上实体节点在图中权重值相同且权重值相同。图中中心性用实体大小、颜色深浅进行区分,最高权重实体节点实体越大颜色最深,低权重或中心性低的实体节点则相反。
14、中介中心性(Node Edge Betweeness Centrality)
中介中心性,又叫中间中心性,中间性,居间中心性等等。主要计算实体节点在图中的中间性。以经过某个节点的最短路径数目来刻画节点的重要性指标。对于加权图,边权重必须大于零。零边权重可以在节点对之间产生无限数量的等长路径。对于有向图和无向图,源图(实体节点或实体节点关系集合)和目标之间的路径总数的计数方式不同。有向路径很容易计算。如果实体节点子集和目标子集相同,则我们要对无向路径进行计算。
15、近亲中心性(Closeness Centrality)
近亲中心性,又称接近度中心性,通过计算图网络中每个实体节点的接近程度。通过各实体节点的接近度在图中可良好比对呈现,接近度的中心性被归一化,每个实体节点的在本图网络中的中心分布。计算出每个实体节点所在位置链接部分的中心度。如果图形中的未完全链接的子网络,则计算按该子网络大小单独缩放的每个已连接实体节点或实体子网络的接近度中心性。
16、特征向量中心性(Eigenvector Centrality)一个节点的重要性即取决于其邻居节点的数量(即该节点的度),也取决与每个邻居节点的重要性。与之相连的邻居节点越重要,则该节点就越重要。
17、Page RankPageRank,Google 的网页排序算法,又称网页排名、谷歌左侧排名,是一种由搜索引擎根据网页之间相互的超链接计算的技术,而作为网页排名的要素之一,谷歌的两位创始人,拉里·佩奇 (Larry Page) 和尔盖·布林 (Sergey Brin) 对网页排序问题进行研究。后来以拉里·佩奇(Larry Page)之姓来命名。Google 用它来体现网页的相关性和重要性,在搜索引擎优化操作中是经常被用来评估网页优化的成效因素之一。当初主要是为了用来评估构成网络中的每一个节点的重要性。
18、链子结构(Chains)
链子结构,即链图中的独立子链结构,需要三个或以上实体节点,二个或以上边的条件形成。实体节点通过边形成有向或无向的链结构且无环路结构。有向链中方向流向一致。
19、环子结构(Cycles)
环子结构,即图中的独立子环结构,需要三个或以上实体节点,二个或以上边的条件形成。实体节点通过边形成有向或无向的环形子结构,且整个子结构的环中的环外链接有唯一实体节点链接,且链接唯一。
20、星型子结构(Stars)
星型子结构,是星型结构中包含至少一个子结构。星型结构以实体节点为中心,并用单独的线路使这个中心实体节点与其他各节点相连,相邻节点之间的链接都要通过中心节点,相当于单层结构。星型子结构包含最小独立星型和网络图中的星型子结构,最小独立星型即无向图三个实体节点形成的链,有向图三个实体节点形成方向向外的链,子结构,在图中的一个顶点为中心的边点链接形成星型结构,有向图方向有链接,但不包含这个链接,关联实体链接直接关联二条以上向外方向的边点结构的图结构,无向图符合基础结构。且子结构上不包含其他边点。
21、树状子结构(Trees)
树状子结构,是图中的树形结构,树形结构是一层次的嵌套结构。一个树形结构的外层和内层有相似的结构, 所以这种结构多可以递归的表示。树形结构是一层次的嵌套结构。一个树形结构的外层和内层有相似的结构, 所以这种结构多可以递归的表示。树状子结构和星型子结构类似,但树状子结构是多层的,星型子结构相当于单层结构,在图中像树杈一样可以不断向外扩散。
22、派系子结构(Cliques)
派系子结构,是图中产生的派系结构,派系结构在图论中叫做团,是实体节点集合(顶点集合)的一个完全子图,如果一个团不被其他任一团所包含,即它不是其他任一团的真子集,则称该团为图中的极大团(maximal clique)。顶点最多的极大团,称之为图中的最大团(maximum clique)。最大团问题的目标就是要找到给定图的最大团。
评论