Network Flows Theory, Algorithms, and Applications 2.3节

       本节内容来源于Network Flows Theory, Algorithms, and Applications2.3节,主要介绍网络的表示方法。

        网络(Networks)的表示归根结底主要存储两类信息:

        1)网络拓扑结构(network topology),主要是节点和弧的结构;

        2)数据信息(data),如成本(cost)、容量(capacity)、供应(supply)、需求(demand)等。

        本文下面的表示方式均基于图1所示网络。

图1 网络图

1. 节点-弧关联矩阵(node-arc incidence matrix)

        行代表节点,列代表弧;与列弧有关的起点标为1,终点标为-1,无关则标为0。

图2 节点-弧关联矩阵

2. 节点-节点关联矩阵(node-node adjacency matrix)

      行、列均代表节点。如果节点之间有连接,则为1;否则为0。此种表示方法只有在网络密集时表示效率才高。

图3 节点-节点关联矩阵

3. 邻接表(adjacency lists)

      左侧i代表节点,右侧是链接表,其中j、cij、uij分别代表连接的节点、成本、弧容量。邻接表即为节点邻接表(the node adjacency list)的变形。

图4 邻接表

4. 前向星形图(forward star representations)

      前向星形图也是节点邻接表(the node adjacency list)的一种变形。首先将弧按从节点1、节点2、节点3、....出发的顺序标号,从同一节点出发的弧按任意顺序标号。例如图1所示网络中,从节点1出发的有(1,2)、(1,3),从节点2 出发的有(2,4)。则可将弧排序为(1,2)、(1,3)、(2,4)、(3,2)、(4,3)、(4,5)、(5,3)、(5,4)。前向星形图分为两部分,左半部分point(i)表示从节点1-5出发的最小弧标号。为保持一致性,point(1)=1,point(6)即为总弧数+1;右半部分表示8条弧分别对应的头(tail)、尾(head)、成本(cost)、容量(capacity)。

图5 前向星形图

5. 后向星形图

        首先将弧按进入节点1、节点2、节点3、....的顺序标号,从同一节点出发的弧按任意顺序标号。例如图1所示网络中,无进入节点1的弧,进入节点2的弧有(3,2)、(1,2)。则可将弧排序为(3,2)、(1,2)、(1,3)、(4,3)、(5,3)、(5,4)、(2,4)、(4,5)。后向星形图分为两部分,右半部分rpoint(i)表示进入节点1-5的最小弧标号。为保持一致性,point(1)=1,point(6)即为总弧数+1;左半部分表示8条弧分别对应的头(tail)、尾(head)、成本(cost)、容量(capacity)。

图6 后向星形图

6. 前后向星形图的组合表示

         为节省存储空间,可将前向星形图和后向星形图的冗余部分去掉,组合成图7所示。point、tail、head、cost、capacity均按前向星形图表示,rpoint按后向星形图表示,trace作为两部分的桥梁,表明了后向星形图的弧排序与前向星形图弧排序的对应关系。例如,后向星形图的弧1-8对应前向星形图分别是4、1、2、5、7、8、3、6。

图7 前后向星形图的组合表示

7. 星形图与邻接表的比较:星形图相比邻接表的表示空间效率高,占用存储空间少;邻接表涉及链表操作,更易于在C语言等实现,且增删弧(或节点)所需时间是常数。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值