@gzm1997
2018-08-09T19:53:48.000000Z
字数 1430
阅读 1755
cayley
图数据库
为什么图状的数据结构的查询会对我们那么有用呢?
因为可以使用图状数据结构来表示人类可以直观理解的个体与个体之间的联系
但是为什么都使用其他的数据存储方式呢?
图数据库可以给你带来几样关键的好处
后面好像就没讲什么了 都是讲一些cayley图数据库的一些基础跟查询相关的 没有我想要的一些设计原理和并发处理的一些内容
全局地寻找一个点到每个点的最短路径
表示:
dx(y)x到y整条路径的最小cost
x到y的路径的cost等于它先到邻居的cost加上邻居到y的最小cost
Bellman-Ford例子:
要点:
Dx(y)是x到y的最小cost估计,N中每个节点都需要估计自己到y节点的最小cost。
每个节点中有一个距离向量
Dx = [Dx(y): y є N ]
这个距离向量包含着这个节点到N中所有节点最小cost的估计
而对于每个节点的邻居节点,也是这样:
Dv = [Dv(y): y є N ]
在距离向量算法下,每个节点需要维护的信息有:
算法:
DV算法例子: 注意每个节点定时需要更新和把它的距离向量广播给它的邻居
LS和DV比较
最小生成树就是给一个图给你 每个点都是可以互相联通的 但是每条边的权重是不一样的 需要找出一堆边 使得这些点都连接起来 但是都不构成环 而且这些权重架起来还是最小
最小生成树一个很常见的应用场景是 城市之间需要铺电缆 每个城市之间都是可以铺的 但是不同城市之间铺设电缆的成本不一样 那么就需要我们找出一个满足要求的最小生成树 来让成本最低
找最小生成树的方法 一般有Kruskal克鲁斯卡尔算法
步骤
维基百科上给的例子 非常容易理解
就是先找出一个图的所有的边 按照权重从小到大排序 一次选取权重最小的边 添加到结果图中 注意会跟已经选到的边构成环的边不要选择 抛弃就可以 知道图中的所有节点都在一个连通分量中
其实上面我们要搞清楚
寻找最小生成树的算法
克鲁斯卡尔算法是寻找整个图的边权重之和最小的一种方法 寻找最小生成树
但是上面的两种算法 1.戴克斯克拉算法 2.距离向量算法 这两个算法都是路由选路算法
路由选路算法最终找到的结果并不是最小生成树 而是一个点到其它点距离最小的路径集合 注意这个不一定是最小生成树的