![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
******I LOVE GRAPH THEORY*****
文章平均质量分 91
hhjian6666
路漫漫其修远兮,吾将上下而求索。修远兮,求索兮。
展开
-
图论(一)图:顶点,边,同构,有向/无向图,权重,路径(最短路径),环,连通图/连通分量
图(graph)是数据结构和算法学中最强大的框架之一(或许没有之一)。图几乎可以用来表现所有类型的结构或系统,从交通网络到通信网络,从下棋游戏到最优流程,从任务分配到人际交互网络,图都有广阔的用武之地。而要进入图论的世界,清晰、准确的基本概念是必须的前提和基础。下面对其最核心和最重要的概念作出说明。关于图论的概念异乎寻常的多,先掌握下面最核心最重要的,足够开展一些工作了,其它的再到实践中不断去理解...转载 2018-04-30 21:28:40 · 29955 阅读 · 4 评论 -
实验三:二叉树的操作(结构转换,递归和非递归的先序、中序和后序遍历,以及层次遍历,叶子结点和总结点的计数)
(1)将一棵二叉树的所有结点存储在一维数组中,虚结点用#表示,利用二叉树性质5,建立二叉树的二叉链表。(2) 写出对用二叉链表存储的二叉树进行先序、中序和后序遍历的递归和非递归算法。(3)写出对用二叉链表存储的二叉树进行层次遍历算法。(4)求二叉树的所有叶子及结点总数。//Sinhaeng Hhjian#include<stdio.h>#include<st...原创 2018-10-18 11:06:42 · 1222 阅读 · 0 评论 -
牛客网暑期ACM多校训练营(第一场)D.Two Graphs(图的同构)
链接:https://www.nowcoder.com/acm/contest/139/D来源:牛客网 题目描述Two undirected simple graphs and where are isomorphic when there exists a bijection on V satisfying if and only if {x, y} ∈ E2.Given...原创 2018-08-19 09:02:53 · 351 阅读 · 0 评论 -
图论算法
图的定义背景知识看到这篇博客相信一开始映入读者眼帘的就是下面这幅图了,这就是传说中的七桥问题(哥尼斯堡桥问题)。在哥尼斯堡,普雷格尔河环绕着奈佛夫岛(图中的A岛)。这条河将陆地分成了下面4个区域,该处还有着7座连接这些陆地的桥梁。问题是如何从某地出发,依次沿着各个桥,必须经过每座桥且每座桥只能经过1次,最终回到原地。不知道这个问题且好奇的童鞋现在肯定在忙活着找出来这道题的结果了。是伟大的数学家欧拉...转载 2018-05-01 13:48:25 · 7980 阅读 · 3 评论 -
图论(十)最小生成树-Prim算法
前面说过,Prim算法是从顶点着手构建最小生成树的。应该说,Prim算法比Kruskal更简单。我们还是以前面的乡镇假设光纤网络为例:Prim算法工作步骤(1) 构建全部顶点集V,选取初始顶点,加入顶点集U。构建顶点集V={a,b,c,d,e,f,g,h,i},从中选取任意一个顶点。我们假设从顶点a开始。将a加入到顶点集U={a}中。(2) 找U中顶点与V-U中顶点的所有边。 U中顶点只有a,V-...转载 2018-05-01 13:10:15 · 276 阅读 · 0 评论 -
图论(九)最小生成树-Kruskal算法
前面说过,Kruskal是从最短边着手构建最小生成树的。其基本过程是:先对图中的所有边按照权重值从小到大进行排序,然后着手选取边构建最小生成树。如果直接从小到大按顺序选取,有可能形成了环,所以对环的处理就成了核心问题。我们还是以前面的乡镇假设光纤网络为例:Kruskal算法工作步骤如下:(1) 将边进行排序。BeginEndWeightei7ch8ab10af11bg12bh12di16fg17b...转载 2018-04-30 21:43:42 · 203 阅读 · 0 评论 -
图论(八)最小生成树
一个正在进行信息化建设的国家级贫困县,需要在下属9个乡镇之间架设光纤网络。为减少建设难度,光纤网主要沿着这9个乡镇之间互连的公路进行铺设。这9个乡镇之间的公路网以及相互之间的距离(单位:km)如下图所示: 如果你是工程师,该怎样设计线路铺设方案?当然,你可以直接把所有的公路网都铺设上光缆,这样的线路总长度是247公里。但如果你是这样想的,那么我一定会怀疑你到底是不是一名工程师!你可以再设计一种方...转载 2018-04-30 21:42:49 · 277 阅读 · 0 评论 -
图论(七)哥尼斯堡七桥问题
1736年,年仅29岁的数学家欧拉来到普鲁士的古城哥尼斯堡(哲学家康德的故乡,今俄罗斯加里宁格勒)。普瑞格尔河正好从市中心流过,河中心有两座小岛,岛和两岸之间建筑有七座古桥。 欧拉发现当地居民有一项消遣活动,就是试图每座桥恰好走过一遍并回到原出发点,但从来没人成功过。欧拉证明了这种走法是不可能的。现在看来,欧拉的证明过程非常简单,但他对七桥问题的抽象和论证思想,开创了一个新的学科:图论(Grap...转载 2018-04-30 21:42:07 · 15854 阅读 · 1 评论 -
图论(六)图的两种表示方法:邻接表,邻接矩阵
如果要用图来解决问题,首先我们必须采用某种数据结构来存储和表示“图”。相对于数组、链表等来说,图的存储结构就复杂的多了。首先,图上的任何一个顶点都可以被看作是第一个顶点,任意顶点的邻接顶点之间也不存在次序关系。还记得在《图论(一)基本概念》中的“同构图”吧,图的形状可以千变万化的。因此也就无法以数据元素在内存中的物理位置来表示元素之间的关系,也就是说,图不可能用数组这样简单的顺序存储结构来表示。其...转载 2018-04-30 21:41:28 · 14381 阅读 · 0 评论 -
图论(五)深度优先搜索(DFS)
深度优先搜索(DFS, Depth First Search)是一个针对图和树的遍历算法。早在19世纪就被用于解决迷宫问题。对于下面的树而言,DFS方法首先从根节点1开始,其搜索节点顺序是1,2,3,4,5,6,7,8(假定左分枝和右分枝中优先选择左分枝)。 DFS的实现方式相比于BFS应该说大同小异,只是把queue换成了stack而已,stack具有后进先出LIFO(Last Input Fi...转载 2018-04-30 21:40:10 · 340 阅读 · 0 评论 -
图论(四)宽度优先搜索(BFS)
宽度优先搜索(BFS, Breadth First Search)是一个针对图和树的遍历算法。发明于上世纪50年代末60年代初,最初用于解决迷宫最短路径和网络路由等问题。对于下面的树而言,BFS方法首先从根节点1开始,其搜索节点顺序是1,2,3,4,5,6,7,8。 BFS使用队列(queue)来实施算法过程,队列(queue)有着先进先出FIFO(First Input First Output...转载 2018-04-30 21:38:04 · 509 阅读 · 1 评论 -
图论(三)图的遍历
图建构好后,针对具体的问题,我们常常需要通盘的读取图中的信息,包括顶点(vertex)和边(edge),以及它们之间的关系。这种读取图中所有信息的方法就是图的遍历(traversal),也称为搜索(search),就是从图中某个顶点出发,沿着一些边访问图中所有的顶点,且使每个顶点仅被访问一次。遍历是很多图论算法的基础。 遍历需要决定从哪里开始读,依照什么顺序读,要读到哪里为止。如果遍历方法与需解...转载 2018-04-30 21:36:52 · 524 阅读 · 0 评论 -
图论(二)树:节点,枝,根,叶,度,层/深度/高度,双亲/孩子/兄弟,祖先/后代,森林
建立了图(graph)的认识,“树”就好理解了。“树”是一种很特别的图(graph)。用图来定义“树”:任意2点之间都连通,并且没有“环”的图。下面的图就是一颗树,因此,树是图的特例。 当然,由于树是一种特别有用的数据结构,因此,它有着一些自身的特点和概念: 一、节点(node) 就是图(graph)的顶点(vertex)。如上图中的顶点:0,1,2,3,4,5,6,7,8。 二、枝(branc...转载 2018-04-30 21:34:27 · 12802 阅读 · 1 评论 -
图论整理
图(Graph)是表示物件与物件之间的关系的数学对象,是图论的基本研究对象。一个不带权图中若两点不相邻,邻接矩阵相应位置为0,对带权图(网),相应位置为∞。对于一个拥有n个顶点的无向连通图,它的边数一定多于n-1条。若从中选择n-1条边,使得无向图仍然连通,则由n个顶点及这 n-1条边(弧)组成的图被称为原无向图的生成树重要的图编辑树平面图连通图强连通图有向无...原创 2018-05-01 21:57:27 · 2060 阅读 · 0 评论