图 (数据结构)

✍ dations ◷ 2025-11-26 11:52:01 #图 (数据结构)

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

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

相关

  • 小便器小便斗(或称尿斗、尿兜),是一种设置于墙壁上的小便设施,常见于男厕内,供男性小便使用。但也有少数专供女性使用的小便斗。小便斗较常出现在公共场所的厕所中,有时附有以红外线感应
  • 佩吉·阿什克罗福特伊迪丝·玛格丽特·艾蜜莉·“佩吉”·阿什克罗福特女爵士,DBE(英语:Dame Edith Margaret Emily Ashcroft,DBE,1907年12月22日-1991年6月14日)英国演员。
  • 01式轻型反坦克导弹01式轻型反坦克导弹(01式軽対戦車誘導弾,Type 01 LMAT,01-shiki kei-tai-sensha yūdō-dan)是一款由日本重工业企业川崎重工自1993年起研制,到2001年正式生产以后投入陆上自卫队
  • Egret白鹭引擎(Egret Engine)是一套开源免费的完整的HTML5游戏开发解决方案,用于构建二维游戏、演示程序和其他图形界面交互应用等。白鹭引擎是一个基于TypeScript语言开发的HTML5游
  • 卡尔·佩格劳卡尔·佩格劳(德语:Karl Peglau,1927年5月18日-2009年11月29日),德国交通心理学家、工程师及设计师,在1961年创造了广泛于前东德境内装设的交通信号灯小人(Ampelmännchen)。佩格劳出
  • GS集团GS集团的总部位于韩国首尔,为财富世界500强之一的企业,是韩国十大财阀之一。GS集团于2005年从LG集团分离后形成,并与雪佛龙合资的GS Caltex是韩国第二大炼油企业。
  • 杨觐光 (明朝)杨觐光(1585年-1635年),字星仲,号彬宸,又号百芝,山东招远县人,明朝政治人物、进士出身。万历三十四年丙午科举人,三十五年(1607年)登丁未科进士,授行人司行人,天启中,历任礼部主客司主事、精膳司郎中、祠祭司郎中,三年升江西右参政,加按察使,五年升陕西右布政使,兵备固原,六年升左布政。崇祯元年升南京太仆寺卿,迁通政使。有弟杨观光,官至詹事府少詹,兼翰林院侍读学士。
  • 油鬼仔油鬼仔,即马来语的Orang Minyak,是马来族文化传说中内学/隐秘之学的一种,学了这类巫术后就可以来去自如,类似中国文化的穿墙术之类的传说。油鬼仔的独门技巧是身上非常光滑,以致可以轻易地“滑进”人们住所偷窃或者做其他犯罪活动,即使被追捕,也因为身体光滑而轻易的从追捕者的指尖“滑走”。坊间也相信油鬼仔是采花贼,最近一次的油鬼采花惊魂发生在2007年7月份。民间传闻有二十多名马来族女子被油鬼仔奸污。另外一个传说是油鬼仔要是强奸44个处女,才能练成刀枪不入(ilmu kebal)
  • 木德星君木德星君,是道教信奉的尊神,为木星的星君。五星君之一,全称“东方木德岁星重华星君”。“岁星者,木也,日之魂水之精炁也。”姓碧空,名澄东。字清凝,夫人名宝容,字飞灵,居洞阳宫或治青华宫,“东方木德星君,木之精,苍帝之子。真君戴星冠,踢朱履,衣青霞寿鹤之衣,执玉简,垂七宝剑白玉环佩。下管山林,草木,龙蛇,风雷之事。木之气直行仁和司于有德。”“东方岁星主仁,生甲乙,化草木,司春令,宰蠕峭飞动千种化生之虫,凡十二岁纬—周天。”传说,汉朝学者“东方朔”即是“木德星君”转世,《西游记》中东方朔为东王公(东华帝君)的弟
  • 半点九棘鲈半点九棘鲈,为辐鳍鱼纲鲈形目鲈亚目鮨科的其中一种,分布于西印度洋区,从红海至波斯湾海域,栖息深度4-55米,体长可达35公分,栖息在珊瑚礁区,为底栖性鱼类,属肉食性,以甲壳类及鱼类为食,可做为食用鱼。 维基物种上的相关信息:半点九棘鲈