O(1) 的小乐

Job Hunting

公告

记录我的生活和工作。。。
<2012年11月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

统计

  • 随笔 - 182
  • 文章 - 1
  • 评论 - 41
  • 引用 - 0

留言簿(10)

随笔分类(70)

随笔档案(182)

文章档案(1)

如影随形

搜索

  •  

最新随笔

最新评论

阅读排行榜

评论排行榜

算法设计4——贪心算法(3)

1 聚类问题:最大间隔的K聚类。我们定义一个K聚类的间隔是处在不同聚类中的任意一对点之间的最小距离。一个自然的目标是寻求具有最大可能间隔的k聚类。

这个问题的算法与Kruskal算法非常相似,首先每一个点都是一个聚类,然后依次按照Kruskal进行计算。。。相当于在Kruskal中删除了k-1条最贵的边。

2  假设给定一个连通图G,假定边的费用都是不同的,G有n个顶点和m条边,指定了G的一条特定的边e,给出一个运行时间在O(m+n)的算法来确定e是否包含在G的一棵最小生成树里。

算法现在就已经很显然了,我们通过从G中删除所有权比e大的边,(包括e)然后使用看一下e中的两个端的是否联通。当前仅当没有这样一条路径的时候,e属于一棵最小生成树。

3 看一下最小生成树的两个性质: 

割性质:当e是从某个集合S跨到补集V-S的最便宜的边,那么它在每一颗最小生成树里。

圈性质:如果e是某个圈C上最贵的边,那么它不在最小生成树里。

4 一个课后问题:

给定一个最短路问题,但是边权是一个到达时间的函数(边权统一为时间的量纲, 函数单调递增),此时仍然是Dijkstra算法,Dijkstra 算法实质就是一个宽度优先搜索。

QQ截图20121115145333

5 给定一棵完全二叉树,然后每个边有权值。要求修改边,然后使得跟到每个叶子节点的距离相同,要求修改的和最小?给出一个算法,这个在电路设计中就是同时性的要求。

这个是个非常不错的算法。还是一个递归的过程:

T0G6CYQEEWAT$ZESUY3J(L6

  给定一个连通图,他的边的费用都是不同的,证明G有唯一的一棵最小生成树。

如果G有两棵最小生成树,则T 和P,必然有不同的边,把T与P不同的边加入到P中,必然形成圈。

posted on 2012-11-15 16:38 Sosi 阅读(614) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


统计系统