数据结构图论入门

图论基本知识

  图(Graph)可以简单表示为二元组G=<V,E>,其中V称为顶点(vertex)集合,E称为边(edge)的集合。图可分为以下几种类型

  • 1.有向图:E中的每一条边都具有方向的图。
    有向图
  • 2.无向图:E中每一条边不带方向,称为无向图。
    无向图
  • 3.混合图:E中一些边不带方向,另一些边带有方向。
    混合图
  • 4.多重图:含有平行边或自环的图。(有向图、无向图和混合图都属于简单图)
    在这里插入图片描述
  • 5.边的表示方法
  • 无向图的边叫无向边,用无序偶表示, ( v i , v j ) (v_i,v_j) (vi,vj)表示 i i i结点与 j j j结点之间的边,因为没有方向,所以 ( v i , v j ) ⇔ ( v j , v i ) (v_i,v_j)\Leftrightarrow(v_j,v_i) (vi,vj)(vj,vi)
  • 有向图的边叫有向边,用有序偶表示, &lt; v i , v j &gt; &lt;v_i,v_j&gt; <vi,vj>表示从 i i i指向 j j j的边或弧, v i v_i vi称为始点, v j v_j vj称为终端点, ( v i , v j ) ⇎ ( v j , v i ) (v_i,v_j)\nLeftrightarrow(v_j,v_i) (vi,vj)(vj,vi),称 v i v_i vi邻接 v j v_j vj, v j v_j vj邻接 v i v_i vi
  • 5.顶点的度
  • 无向图:无向图的度为与该顶点相关联的边的数目,各顶点的度数和等于边的数目的两倍。定义图中顶点数目为图的,若一个无向图中,每个顶点的度均为 n − 1 n-1 n1,称该图为 n n n阶无向完全图,其边的总数为 C n 2 = n ( n − 1 ) 2 C_n^2=\frac {n(n-1)}{2} Cn2=2n(n1)
  • 有向图:有向图的度分入度和出度,入度指终端点指向该点的弧的数目,出度指以该点为始点的弧的数目。若 n n n阶有向图每个顶点的入度等于出度等于 n − 1 n-1 n1,称该图为有向完全图,其弧的数目为 n ( n − 1 ) n(n-1) n(n1)
  • 6.图的连通性
  • 无向图:若从顶点 v i v_i vi到顶点 v j v_j vj有路径,则称 v i v_i vi v j v_j vj是连通的。若该图中任意两个顶点都是连通的,则称该图是连通图。
  • 有向图:在有向图中,略去所有边的方向形成的无向图如果是连通图,则该有向图是弱连通图,若在方向约束下,有向图中任意两个顶点互相可达,则称该有向图为强连通图。注:图的强弱连通只针对有向图。弱连通图可以理解为该图只是在表面上看起来有些“线”将顶点都连接了起来,但是由于有方向,该图并不能实现任意两个点互相可达。
  • 连通分量:无向图中,顶点之间的连通关系是一个等价关系,该等价关系将顶点集合划分的等价类成为连通分支即连通分量,这些等价类的数目称为连通分支数。可以这样理解,同一个连通分支中的所有顶点可以互相到达,任意两个连通分支中的两个顶点不能互相到达。
  • 7.生成树
  • 生成树:一个 n n n阶连通图的生成树是一个极小连通子图(包含最少的边的连通图),生成树包含 n n n个顶点, n − 1 n-1 n1条边,显然,一个连通图的生成树可能不唯一,其中所有边权值和最小的生成树称为最小生成树。在生成树中添加任意一条边,必然形成回路。
  • 最小生成树求解算法:Prim算法、Kluskal算法
  • 8.图的存储结构
    邻接矩阵
    邻接矩阵:用一个矩阵存储顶点之间是否直接有边相连,对于n阶图,设n阶方阵 a i j a_{ij} aij为该图的邻接矩阵,则
    a i j = { 1 , v i 邻 接 至 v j 0 , v i 不 邻 接 v j a_{ij}=\left\{ \begin{aligned} 1 ,v_i邻接至v_j \\ 0 ,v_i不邻接v_j \end{aligned} \right. aij={1,vivj0,vivj
    例如如下无向图
    在这里插入图片描述

邻接矩阵为
A = [ 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 0 0 1 1 0 0 ] A= \left[ \begin{matrix} 0&amp;1&amp;0&amp;1&amp;0 \\ 1&amp;0&amp;1&amp;0&amp;1 \\ 0&amp;1&amp;0&amp;1&amp;1 \\ 1&amp;0&amp;1&amp;0&amp;0\\ 0&amp;1&amp;1&amp;0&amp;0 \end{matrix} \right] A=0101010101010111010001100

邻接矩阵代码实现

#define MAX //最大顶点数
typedef struct
{
	int n;//n为实际顶点数
	ElemTp a[MAX][MAX];//邻接矩阵
	//这里的ElemTp为可选数据类型,若只是简单图,即没有边权值
	//则a[i][j]=1表示i和j之间有边存在,为0表示无边存在
	//其他图的邻接矩阵元素可以存储i到j的边权值,等
}Graph;

邻接表
  使用链表对邻接矩阵进行改进,每个顶点只保存所有直接与它相连的顶点,所有这些顶点通过链表来动态保存。那么对于 n n n阶无向图,需要 n n n个头结点,每个结点后链接直接与其相连的顶点。例如图:
在这里插入图片描述
(1)首先可以看到,与0结点直接相连的有1,3,那么把1,3号结点插入到0结点的头结点后面去(1,3的顺序是任意的,后面所有表结点皆是,表结点之间的链接不表示任何关系,只关心该结点链接在哪个头结点之后)
(2)然后按此方法可以发现1后面有0,2,4;2后面有1,3,4;3后面有0,2;4后面有1,2;建立邻接表如下所示
邻接表
邻接表代码实现

//头结点
typedef struct
{
	//顶点数据(可选)
	ElemTp data;
	InfoTp info;//顶点信息,可选
	int i;//顶点下标
	ArcNode *firstarc;//第一邻接的表结点
}HNode;

//表结点
typedef struct node
{
	double w;//边或弧的权重,可选
	InfoTp info;//边或弧的信息,可选
	int j;//邻接点的下标
	struct node *nextarc;//下一表结点
}ArcNode;

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书内容分为八个部分。共20章,分上、下两册,每册10章。各章均有大量习题。本书给出了大量的实际例子,这些例子涉及众多的学科和实际领域,但又不过于专门,容易理解。在大部分章节中都使用实例未引入主题,并把统计概念和这些非常实际的问题联系在一起进行讲解,深入浅出,从而可以避免许多人对统计所抱有的粗浅的感性认识,即认为统计仅仅是另一门数学课程。作者把统计数据的收集与分析过程总结成"四步法",并把"四步法"的讲解贯穿始终,利用实例逐步展开并阐明在设计调查研究或试验时所需要的统计技术和思路,然后讲解用直观、有效的"四步法"来收集并分析数据,非常利于初学者和实际工作人员抓住有关统计方法和模型的本质。书中提供了多种多样的示,如正态概率、盒形、散点、矩阵和残差等,通过这些,读者可以一方面理解数据的特点和概括数据的方法,--方面进一步理解有关统计方法的基本思想和特点。作者很重视统计在解决实际问题中的作用,在全书中用许多篇幅讨论如何解释数据分析的结果,并专门用一章讲述了如何写数据分析报告。 本书适用于作为我国文科各专业的统计学引论教程。以及理工科各专业应用统计学课程的教材或教学参考书;也可作为有关方面实际工作人员的统计入门书。阅读本书不需要其他统计方面的基础,也不需要高等数学知识。 目录: 序言 第一部分引论 第一章什么是统计 1.1引言 1.2为什么学习统计 1.3当前统计的一些应用 1.4统计学家做什么 1.5质量和工序改进 1.6学生注意 1.7小结 补充练习 第二部分收集数据 第二章利用调查和科学研究来收集数据- 2.1引言 2.2调查 2.3科学研究 2.4观察研究 2.5数据整理:为概括和分析准备数据 2.6小结 第三部分概括数据 3.1引言 3.2计算器、计算机及软件系统 3.3单个变量数据的描述:表法 3.4单个变量数据的描述:中心趋势的度量 3.5单个变虽数据的描述:变异性度量 3.6盒形 3.7多变量数据的概括 3.8小结 重要公式 补充练习 第四部分工具和概念 第四章概率和概率分布 4.1如何应用概率进行推断 4.2确定一个事件的概率 4.3基本的事件关系和概率法则 4.4条件概率和独立性 4.5Bayes公式 4.6离散变最和连续变量 4.7离散随机变量的概率分布 4.8一个常用的离散随机变量:二项分布 4.9连续随机变量的概率分布 4.10一个常用的连续随机变量:正态分布 4.11随机抽样 4.12抽样分布 4.13二项分布的正态逼近 4.14Minitab指令 4.15小结 重要公式 补充练习 第五部分数据分析:中心值方差和比例 第五章关于总体中心值的推断 5.1引言和案例 5.2μ的估计 5.3估计μ时样本容量的选取 5.4关于μ的统计检验 5.5对于进行检验时样本容量的选取 5.6统计检验的显著性水十 5.7正态总体均值p的统计推断。未知 5.8关于中位数的推断 5.9小结 重要公式 补充练习 第六章两总体中心值的比较 6.1引言和案例 6.2关于μ1-μ2的推断:独立样本 6.3非参数推断方法:Wilcoxon秩和检验 6.4关于μ1-μ2的推断:成对数据 6.5非参数推断方法:Wilcoxon符号秩检验 6.6惟断μ1-μ2时样本容量的选取 6.7小结 重要公式 补充练习 第七章关于总体方差的推断 7.1引言和案例 7.2单个总体方差的估计和检验 7.3比较两个总体方差时的估计和检验 7.4比较多个总体方差时的检验 7.5小结 重要公式 补充练习 第八章两个以上总体的中心值的推断 8.1引言和案例 8.2两个以上总体均值的统计检验:方差分析 8.3完全随机化设计中观测值的模型 8.4方差分析条件的检查 8.5其他的分析方法:数据变换 8.6另一种非参数方法:Kruskal-Wallis检验 8.7小结 重要公式 补充练习 第九章多重比较 9.1引言和案例 9.2线性对照 9.3控制哪个错误率 9.4Fisher(费舍尔)最小显著差异法 9.5Tukey的W方法 9.6Student-Newman-Keuls方法 9.7Dunnett方法:处理组与对照组的比较 9.8Scheffe的S方法 9.9小结 重要公式 补充练习 第十章类型数据 10.1引言和案例 10.2总体比例π的推断 10.3两总体比例之差π1-π2的推断 10.4多比例的推断:卡方拟合优度检验 10.5Pokmn(泊松)分布- 10.6列联表:独立性检验和齐性检验 10.7柏关程度的度量 10.8几率和优比 10.9小结 重要公式 补充练习 第六部分数据分析:回归方法和模型的建立 第十一章线性回归和相关 11.1引言和案例 11.2估计模型中的参数 11.3回归参数的推断 11.4利用同归预测新的y值 11.5线性回归中拟合不足的考察 11.6逆回归问题(校准) 11.7相关 11.8小结 重要公式 补充练习 第十二章多元回归与一般线性模型 12.1引言和案例 12.2一般线性模型 12.3估计多元回归系数 12.4多元回归中的推断 12.5回归系数子集的检验 12.6用多元回归进行的预测 12.7比较几条回归线的斜率 12.8Logistic回归 12.9多元回归的一些理论结果(任选) 12.10小结 重要公式 补充练习 第十三章多元回归续论 13.1引言和案例 13.2变量的挑选(第一步) I3.3模型形式的确定(第二步) 13.4模型假设的检查(第三步) 13.5小结 重要公式 补充练习 第七部分试验设计与方差分析 第十四章试验和研究的设计概念 14.1引言 14.2研究的类型 14.3设计的试验:术语 14.4控制试验误差 14.5试验单元对处理的随机化 14.6确定重复试验的次数 14.7小结 第十五章标准设计的方差分析 15.1引言和案例 15.2单因子的完全随机化设计 15.3随机化完全区组设计 15.4拉丁方设计 15.5完全随机化设计中的因子处理结构 15.6随机化完全区组设计中的因子处理结构 15.7处理差异的估计和处理均值的比较 15.8小结 重要公式 补充练习 第十六章协方差分析 16.1引言和案例 16.2具有一个协变量的完全随机化设计 16.3外推问题 16.4多维协变量和更复杂的设计 16.5小结 补充练习 第十七章一些固定效应、随机效应和混合效应模型的方差分析 17.1引言和案例 17.2具有随机处理效应的单因子试验:随机效应模型 17.3随机效应模型的扩充 17.4混合效应模型 17.5计算期望均方的规则 17.6套抽样和裂区设计 17.7小结 补充练习 第十八章重复测量与交叉设计 18.1引言和案例 18.2有重复观测的单因子试验 18.3一个因子有重复观测的两因子试验 18.4交叉设计 18.5小结 补充练习 第十九章一些非平衡设计的方差分析 19.1引言和案例 19.2有一个或多个缺失观察值的随机化区组设计 19.3有缺失数据的拉丁方设计 19.4平衡不完全区组(BIB)设计 19.5小结 重要公式 补充练习 第二十章分析结果的传达和备案 20.1引言 20.2做好传达沟通工作所面临的困难 20.3传达的障碍:形的歪曲 20.4传达的障碍:有偏抽样 20.5传达的障碍:样本容量 20.6为统计分析准备数据 20.7统计分析的指导原则和报告 20.8文档和结果的保存 20.9小结 补充练习 附录统计表 参考文献 索引 译后记
要从入门到精通cartographer,首先需要理解其原理和工作流程。Cartographer是一个用于SLAM(Simultaneous Localization and Mapping,同时定位与地构建)的开源库,能够将传感器数据转化为精确的地入门阶段,需要了解SLAM的基本概念和原理。SLAM是指在未知环境中,通过感知传感器数据来同时估计机器人的运动轨迹和环境的地。掌握SLAM的核心原理,包括前端、后端、回环检测等模块的作用和相互关系,能够帮助我们理解Cartographer的工作方式。 接下来,在学习Cartographer源码的过程中,需要逐行详解其实现细节。首先,可以通过阅读Cartographer的文档和官方教程来了解其整体结构和基本用法。然后,需要仔细研究Cartographer的核心算法和数据结构,包括激光雷达数据的处理、位姿变换的估计、地的构建与更新等。可以针对每个模块和函数进行调试和分析,逐行深入源码。 在深入源码的过程中,可以利用调试工具、打印输出等方法来观察程序的执行过程和数据变化。同时,可以结合论文和研究成果来深入理解算法和数据处理的原理。通过对每个细节进行分析和思考,能够更好地理解Cartographer的实现机制和运行逻辑。 在精通Cartographer之前,还需要多进行实践和调试。可以尝试使用不同的传感器数据和场景来测试Cartographer的性能和鲁棒性。通过实际应用中遇到的问题和挑战,能够进一步加深对Cartographer的理解和掌握。 总之,要从入门到精通Cartographer,需要系统学习SLAM的原理和基本概念,并逐行深入研究Cartographer的源码和实现细节。通过理论学习和实践应用相结合,能够全面掌握Cartographer的工作原理和使用方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值