
发表日期: 2021-04-17 09:00:26 浏览次数:111
赵县网站建设【赵县网络公司】赵县做网站、赵县微信公众号开发、赵县网站设计、赵县小程序制作
赵县,隶属于河北省石家庄市,古称赵州,地处石家庄市区东南40公里,总面积为675平方公里,总人口61.3万(2017年),辖11个乡镇、281个行政村。县府驻赵州镇。汉为平棘县,晋为赵国,北魏置赵郡,曾为赵州治,隋改为赵州。1913年改为赵县。赵县历史悠久,文物众多,共有文物保护单位21处。
县境位于河北平原,光热充足,地下水丰富,利于井灌,又有石津渠灌溉之利,一年四季分明,春秋两季时间短,夏冬两季时间长。东部为沙质褐土,适于雪花梨生长。赵县农业发达,玉米、小麦是主要粮食产品。特产雪花梨俗称象牙梨,个大,皮薄、汁多、含糖分高,成熟后洁白如雪,故名,是河北省大宗出口的优质水果之一。
2018年12月27日,经河北省人民政府研究,同意灵寿县、赵县、阳原县县城为河北省园林县城。 [1] 2019年3月,被列为第一批革命文物保护利用片区分县名单。
从某种意义上讲,图就是二元关系。不过,它利用一系列由线(称为边)或箭头(称为弧)连接的点(称为节点)提供了强大的视觉效果。在这方面,图就是我们在第5章中研究过的树数据模型的泛化。和树一样,图也有多种形式:有向图/无向图,以及标号图/无标号图。
图还和树一样可以解决大范围的问题,比如距离的计算、关系中环的查找,以及连通性的确定。我们在第2章中已经见识过用图来表示程序的结构。而第7章也用到图来表示二元关系,并用图展示了关系的某些属性,比如交换律。在第10章中将看到用图表示自动机,而在第13章中会看到用图表示电路。而图除上述这些之外的若干重要应用将在本章中讨论。
本章的主要内容包括以下这些。
与有向图和无向图有关的定义(9.2节和9.10节)。
表示图的两种重要数据结构:邻接表和邻接矩阵(9.3节)。
用来在无向图中找出连通分支的算法和数据结构(9.4节)。
找出最小生成树的技巧(9.5节)。
名为“深度优先搜索”的用于探索图的实用技巧(9.6节)。
应用深度优先搜索测试有向图是否有环路,找出无环图的拓扑次序,以及确定是否存在从一个节点到另一节点的路径(9.7节)。
用来找出最短路径的迪杰斯特拉算法(9.8节)。该算法可找出从某个“源”节点到每个节点的最小距离。
找出任意两个节点间最小距离的弗洛伊德算法(9.9节)。
本章中的很多算法都是比解决问题的直观方法更加高效的实用技巧。
有向图,是由节点集合N 以及N 上的二元关系A 组成的。我们将A 称为有向图弧的集合,因此弧是节点的有序对。
绘出的图如图9-1所示。各节点是用圆圈表示的,节点的名称就在圆圈中央。我们通常会用从0开始的整数为节点命名,或者使用等效的枚举。在图9-1中,节点集合N={0,1,2,3,4}。
A中的弧(u,v)都是由从u 到v 的箭头表示的。在图9-1中,弧的集合是
A={(0,0),(0,1),(0,2),(1,3),(2,0),(2,1),(2,4),(3,2),(3,4),(4,1)}

图 9-1 有向图的示例
在文本中,一般习惯将弧(u,v)表示为u→v。我们将v 称为弧的头部,而将u 称为弧的尾部,以适应v 在箭头的头部而u 在其尾部的概念。例如,0→1就是图9-1中的一条弧,它的头部是节点1,而尾部是节点0。另一条弧是0→1,这样一条从某节点通向其自身的弧就叫作自环(loop)。对该弧而言,头部和尾部都是节点0。
当u→v 是弧时,还可以说u 是v 的前导(predecessor),而且v 是u 的后继(successor)。因此,弧0→1就表示0是1的前导而1是0的后继,而弧0→0则表示0同时是其本身的前导和后继。
就像对树那样,也可以为图的各节点附加标号(label)。标号是绘制在所对应的节点附近的。同样,可以在靠近弧中点的位置为弧放置标号。节点的标号或弧的标号可以是任意类型的。例如,图9-2就展示了节点名为1,标号为“狗”,节点名为2,标号为“猫”,而且有一条标号为“咬”的弧1→2。

图 9-2 含两个节点的标号图
和树一样,不应该把节点的名称与其标号弄混。同一幅图中各节点的名称必须是唯一的,但可能有不止一个节点的标号相同。
有向图中的路径是一列节点(v1,v2,…,vk),其中每个节点都有到下一节点的弧,也就是vi →vi+1,i=1,2,…,k-1。该路径的长度是k-1,也就是这条路径上弧的数量。例如,图9-1中的(0,1,3)就是一条长度为2的路径。
k=1的情况也是可以存在的。也就是说,任何节点v 本身都是一条从v 到v 的长度为0的路径。该路径上没有弧。
有向图中的环路(cycle)是指起点和终点为同一节点的长度不为0的路径。环路的长度就是这条路径的长度。请注意,路径长度为0的情况不是环路,虽然“其起点和终点是同一节点”。然而,由一条弧v→v 构成的路径是一条长度为1的环路。
考虑图9-1中的图。因为有自环0→0,存在一条长度为1的环路(0,0)。还有一条长度为2的环路(0,2,0),因为有弧0→2和2→0。同样,(1,3,2,1)是一条长度为3的环路,而(1,3,2,4,1)则是长度为4的环路。
请注意,环路的起点和终点可以是其中的任一节点。也就是说,环路(v1,v2,…,vk ,v1)也可以写为(v2,…,vk ,v1,v2),或者写为(v3,…,vk ,v1,v2,v3),等等。例如,环路(1,3,2,4,1)也可以写为(2,4,1,3,2)。
在每条环路中,第一个节点和最后一个节点都是相同的。如果环路(v1,v2,…,vk ,v1)的节点v1、…、vk 中没有一个出现一次以上,就说该环路是简单环路,也就是说,简单环路的唯一重复出现在最终节点处。
示例9.1中的环路都是简单环路。在图9-1中,环路(0,2,0)是简单环路。不过,也有些环路不是简单环路,比如环路(0, 2, 1, 3, 2, 0)中节点2就出现了两次。
给定含有节点v的非简单环路,就能找到含有v的简单环路。要知道原因,可以假设有一条起点和终点都是v的环路(v,v1,v2,…,vk ,v1)。如果该环路不是简单环路,就只会是以下两种情况之一。
(1) v出现了3次或3次以上;
(2) 存在某个v 之外的节点u,它出现了两次,也就是,环路肯定是(v,…,u,…,u,…,v)这样的。
在第(1)种情况下,可以直接删除倒数第二次出现v 的位置之前的所有节点,结果是一条从v 到v 的更短环路。在第(2)种情况中,可以删除从u 到u 的部分,将其用一个u 替代,得到环路(v,…,u,…,v)。不管哪种情况,得到的结果肯定仍然是环路,因为结果中的每条弧都是原环路中的,因此肯定是出现在该图中的。
在让环路成为简单环路之前,可能有必要多次重复该变形。因为环路在每次迭代后总会变得更短,所以最终一定能得到简单环路。我们刚刚已经证明了,如果图中有一条环路,那么一定至少含有一条简单环路。
服务热线
顶部
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: http://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878