#关于数的算法

本文探讨了如何在图论问题中寻找最小方差生成树,强调了在Kruskal算法中按边权方差排序的重要性。同时,解释了在处理双向非负道路和单向航线时,如何利用Dijkstra算法求解最短路径,并保持航线不形成回路的拓扑顺序。文章还介绍了树的基本概念,包括无序树、有序树、二叉树等,并提及了哈夫曼树作为最优二叉树的应用。
摘要由CSDN通过智能技术生成

最小方差生成树:

问题:方差最小,按公式计算那么就是每条边的(val - ave)^2的和最小,在kruskal中就按这个排序,这里要有ave就要有和,求和的话就在最大值和最小值之间取就好,求和的方法是将边权从小到大排列,最小值取最小的n-1个,最大的去从大往小的n-1个值的和,和在这之间枚举,计算出每次枚举获得的值,不过在最后求得最小生成树后,要确认所生成最小生成边的边权值等不等于枚举的sum值,相等才说明这个生成树是满足和为sum的情况,这个最小生成树才睡有效的,才能更新最小值。

道路和航路

由于道路是双向的(非负),而航线是单向(可能为负,但是航线没有回路)。 那么我们可以按照道路相连的点划分为几个连通块 。航线就是连接各个连通块的边,根据题目描述,这些连通块符合拓扑序。
由于每个连通块内部的点都是道路相连(道路非负),那么我们可以在连通块内部求一次djkstra。按照拓扑序的顺序对每个连通块求解一次djkstra。按照拓扑序的顺序对每个连通块求最短路,这样就可以在求某个连通块时,其他连通块若能到达这个块,那么必然起点到其他点的最短路已经求好了,符合航线不构成回路的设定。
 

基本概念:

是一种数据结构,它是由n(n≥0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:

每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树。

种类:

种类

编辑 播报

无序树:树中任意节点的子结点之间没有顺序关系,这种树称为无序树,也称为自由树;

有序树:树中任意节点的子结点之间有顺序关系,这种树称为有序树;

二叉树:每个节点最多含有两个子树的树称为二叉树;

满二叉树:叶节点除外的所有节点均含有两个子树的树被称为满二叉树;

完全二叉树:除最后一层外,所有层都是满节点,且最后一层缺右边连续节点的二叉树称为完全二叉树;

哈夫曼树(最优二叉树):带权路径最短的二叉树称为哈夫曼树或最优二叉树。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值