图 (数据结构)

✍ dations ◷ 2025-12-02 15:49:34 #图 (数据结构)

在计算机科学中,图(英语: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难问题。因此,实践中会使用启发式方法。

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

相关

  • 天美艺游天美艺游,(英语:Timi Studio)是腾讯游戏旗下的游戏工作室,于2013年成立。该工作室曾开发《天天连萌》、《天天爱消除》、《天天酷跑》。2014年,腾讯互娱自研游戏组织体系进行调整,
  • 弋阳县弋阳县位于中国江西省东北部,隶属于上饶市。东汉建安十五年(210年),东吴析余汗县置葛阳县。隋开皇十二年(592年),县治迁弋水之北(今弋江镇),改名为弋阳县。唐证圣元年(695年)分置玉山县;
  • 4f11 6s2 2, 8, 18, 29, 8, 2蒸气压 第一:581.0 kJ·mol−1 第二:1140 kJ·mol−1 主条目:钬的同位素 钬(旧译作錵)是一种化学元素,它的化学符号是Ho,它的原子序数是67,属于镧系元
  • 变性 (生物化学)变性(英语:Denaturation)在生物化学中是指蛋白质或核酸受到某些理化因素的作用,其高级结构发生破坏从而丧失生物活性的现象。蛋白质的变性理论最早由吴宪在1931年提出,他认为蛋白
  • 帕特·罗伯茨查尔斯·帕特里克·“帕特”·罗伯茨(英语:Charles Patrick "Pat" Roberts;1936年4月20日-),是一位美国共和党政治人物,1997年起担任堪萨斯州美国参议院议员,现时是参议院内农业委员
  • 全局搜索全局搜索(英语:Global search),又称为全域搜索,一般而言为本地搜索(英语:Local search (Internet))的对应概念。在不同的领域该词所表示含义不完全一致。通常而言,全局搜索一般表示一
  • 房献伯房献伯,隋末起义军领袖,济阴郡(今山东省定陶县西)人。617年,李密攻克洛口仓,赵、魏以南,江、淮以北,群雄莫不响应,孟让、郝孝德、王德仁及济阴房献伯、上谷王君廓、长平李士才、淮阳
  • 克罗伊茨山坐标:47°31′12″N 10°48′46″E / 47.52000°N 10.81278°E / 47.52000; 10.81278克罗伊茨山(德语:Kreuzkopf),是中欧的山峰,位于德国和奥地利接壤的边境,属于阿尔高阿尔卑斯山
  • 小霸尖山小霸尖山,为台湾知名山峰,也是台湾百岳之一,排名第36。小霸尖山3,418米,属于雪山山脉,行政区划属于苗栗县泰安乡梅园村。小霸尖山东北东方有大霸尖山,北边连接伊泽山。其特色为山
  • 功绩勋章功绩勋章可以指: