数据结构和算法
文章平均质量分 62
zhanglizhe_cool
这个作者很懒,什么都没留下…
展开
-
进化树问题
给定一棵树的每个叶子节点到其他叶子节点的最短距离,求这棵树上所有边的距离和。用叶子节点表示某一个物种,叶子节点之间的距离表示某一物种和另一物种之间差异,用树来描述是因为用树来描述满足物种差异性的三角关系M(i,k)+M(k,j)>=M(i,j)。这种树可能就叫做进化树吧,那么树上所有边的距离和就应该表示整个生物界物种多样性的程度了。回归到正题:给定一棵树的每个叶子节点到其他叶子节点的最短距离,求这棵树上所有边的距离和。首先考虑一下简单的情况,假设只有两个节点,那么树的距离和就是这两个节点的最短距离。如果存在原创 2010-07-06 15:31:00 · 1083 阅读 · 0 评论 -
单行道问题 隔边
某个城市有n个景点,景点之间有单行道或者双行道,但是双行道的交通事故较多,所以准备把一些双行道改为单行,但是要保证所有的景点之间都可以到达。转化,有一个强连通的有向图,求去掉那些边可以使得有向图保持强连通性。首先要找出图的隔边,在有向图中,隔边是指去掉一个方向的边就会破坏整个有向图的强连通性的双向边。定义rank表示某一个节点本身或者孩子通过回边所能达到的具有最小编号的深度前序遍历的节点的编号。注意一个节点的回边的意思是绕过父亲指向祖先。那么如果一个节点的某一个孩子的rank值大于这个节点的深度前序遍历编号原创 2010-07-09 14:11:00 · 1028 阅读 · 0 评论 -
网络流关键路径
/*输入一个石油管道网,管道可以双向流通石油,即可以使用网络流计算最大流输出网络最大流的关键路径,即降低某一管道的容量会使整个网络流降低。首先可以尝试的方式是先计算最大流,然后遍历所有容量饱和的边,降低这些边的容量重新计算网络流和原网络流比较,太慢。可以假象当前网络流已经达到最大,如果把一个饱和边的容量降低1,那么包和边的起点就会堆积1个流量而饱和边的终点会少了1流量,如果在残留网络中,从这个起点到终点有一条容量大于等于1的增广路径,就不会影响整个网络流。如果只考虑在饱和边上最多只能降低1个流量那么在残留网原创 2010-07-10 13:29:00 · 627 阅读 · 0 评论