图 (数据结构)

✍ dations ◷ 2025-11-29 14:15:05 #图 (数据结构)

在计算机科学中,图(英语:graph)是一种抽象数据类型,用于实现数学中图论的无向图和有向图的概念。

图的数据结构包含一个有限(可能是可变的)的集合作为节点集合,以及一个无序对(对应无向图)或有序对(对应有向图)的集合作为边(有向图中也称作弧)的集合。节点可以是图结构的一部分,也可以是用整数下标或引用表示的外部实体。

图的数据结构还可能包含和每条边相关联的数值(edge value),例如一个标号或一个数值(即权重,weight;表示花费、容量、长度等)。

图数据结构支持的基本操作通常包括:

如果该数据结构支持和边关联的数值,则通常也支持下列操作:

下表给出了在图上进行各种操作的复杂度。其中,用||表示节点数量,||表示边的数量。同时假设存储的信息是边上对应的值,如果没有对应值则存储∞。

邻接表在稀疏图(英语:sparse graph)上比较有效率。邻接矩阵则常在图比较稠密的时候使用,判断标准一般为边的数量| |接近于节点的数量的平方| |2;邻接矩阵也在查找两节点邻接情况较为频繁时使用。

其它表示和存储图的数据结构还包括链式前向星、十字链表、邻接多重表(英语:adjacency multilist)等。

图问题的并行计算主要存在如下几种困难:处理大量的数据、求解非常规的问题、数据不分散、数据存取对计算的比例很高等。面对这些困难,并行计算中图的表示和存储方式很重要。如果选取了不合适的表示方式,可能带来不必要的通讯花费,进而影响算法的可扩展性。在本节中,并行计算的共享和分布式(英语:distributed memory)存储模型都在考虑之列。

在共享存储模型下,图的表示和非并行计算中的场景是相同的,,因为在此模型下,对图表示(如邻接表)的并行读取操作效率已经足够高了。

在分布式存储(英语:distributed memory)模型下,通常会采用划分(英语:graph partition)点集 V {displaystyle V} p {displaystyle p} 个集合 V 0 , , V p 1 {displaystyle V_{0},dots ,V_{p-1}} 的方式,其中 p {displaystyle p} 是并行处理器的数量。随后,这些点集划分及相连的边按照标号分配给每个并行处理器。每个处理器存储原图的一个子图,而那些两个顶点分属两个子图的边则需额外特殊处理。在分布式图算法中,处理这样的边往往意味着处理器之间的通讯。

图的划分需要谨慎地在降低通讯复杂度和使划分均匀之间取舍。但图划分本身就是NP难问题。因此,实践中会使用启发式方法。

机器学习、社会网络分析等领域中,有时会处理数万亿条边的图。图的压缩存储可以减少存取和内存压力。霍夫曼编码等一些数据压缩的常见方法是可行的。同时,邻接表、邻接矩阵等也有专门的压缩存储方法以提高效率。

相关

  • 标靶治疗人体解剖学 - 人体生理学 组织学 - 胚胎学 人体寄生虫学 - 免疫学 病理学 - 病理生理学 细胞学 - 营养学 流行病学 - 药理学 - 毒理学靶向治疗或靶向分子治疗(英语:Targeted
  • 青瓦台事件青瓦台事件(又称一二一事件、金新朝事件)是指在1968年1月21日,31名北朝鲜的特种部队人员越过军事分界线,企图入侵韩国青瓦台行刺韩国总统朴正熙的事件。1968年1月13日,朝鲜民族保
  • 努里·比格·锡兰努里·比格·锡兰(土耳其语:Nuri Bilge Ceylan,1959年1月26日-)是一位土耳其摄影师、编剧、演员、电影导演。他与演员厄布鲁·锡兰结婚,两人曾共同演出《适合分手的天气》。努里·
  • 灵鳄属灵鳄属(属名:)是种主龙类,存活在三叠纪瑞替阶的新墨西哥。灵鳄的身长约2米。灵鳄化石是由爱德恩·柯伯特(Edwin H. Colbert)从幽灵牧场采石场的石块收集而成;幽灵牧场采石场是在194
  • 高凤高凤(?-1512年),字廷威,号梧冈,明朝宦官,涿州人,司礼监太监。正德年间“八虎”之一。高凤自幼进宫,送内书堂读书。明英宗命其管理司礼监的书札。天顺八年(1464年),英宗崩,他参与办理丧礼。
  • 何敞何敞(?-105年),字文高,东汉扶风郡平陵人,东汉官员。汉和帝时,何敞历任侍御史、尚书。上书反对外戚的奢侈。后来为汝南郡太守。修治鲖阳渠,增加三万多顷垦田。后来担任五官中郎将。
  • 墓碑符号墓碑符号∎(tombstone),在数学中用来表示证明完毕,以取代传统上使用的拉丁文缩写Q.E.D.(意为“证明完毕”)。该符号在Unicode中的代码为.mw-parser-output .monospaced{font-famil
  • 珠尔多河珠尔多河位于中华人民共和国吉林省敦化市境内,是牡丹江左岸支流,古作珠噜多观河、朱鲁多浑河,河名源自满语“珠噜”(满语:ᠵᡠᡵᡠ,转写:,意为“双”)和“多滚”(满语:ᡩᠣᡤᠣᠨ,转写:,意
  • 格洛克31手枪格洛克31(Glock 31)是一款由奥地利格洛克(Glock)公司设计及生产的手枪,是格洛克22的.357 SIG口径版本,标凖弹匣为15发。格洛克31发射.357 SIG弹药,装有改良过的套筒及套筒导轨,对应.357 SIG的枪管,外型与格洛克22非常相似。格洛克31在推出时已经是以第三版本(即第三代格洛克31)之姿出现,并在套筒下前方设有导轨,以安装各种战术配件。另外亦在握把上有手指凹槽。其后经历了一次修改版本,最新的版本称为第四代格洛克31(英语:4th generation Glock 31)。
  • 贾恩卡洛·德西斯蒂贾恩卡洛·德西斯蒂(意大利语:Giancarlo De Sisti,1943年3月13日-),意大利男子足球运动员,场上位置是中场。他曾代表意大利国家队参加1970年国际足联世界杯,结果获得亚军。