首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

[动态规划]拦截导弹有关问题的一个疑问,没看懂解答

2012-08-24 
[动态规划]拦截导弹问题的一个疑问,没看懂解答这个经典题目是:【问题描述】某国为了防御敌国的导弹袭击,发展

[动态规划]拦截导弹问题的一个疑问,没看懂解答
这个经典题目是:

【问题描述】
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然
它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到
敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000 的正整数),计算
(1)这套系统最多能拦截多少导弹
(2)如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。

问题1就是求求最长非升子序列问题,标准的动态规划
问题2如何求解呢? 我看网上的答案都是这样说的:"其实认真分析一下题就回发现:每一个导弹最终的结果都是要被打的,如果它后面有一个比它高的导弹,那打它的这个装置无论如何也不能打那个导弹了,经过这么一分析,这个问题便抽象成在已知序列里找最长上升序列的问题。"

可是我实在是没有看明白,这个所谓的"这个问题便抽象成在已知序列里找最长上升序列的问题"是怎么分析出来的,大家能解释一下么?

[解决办法]
这涉及组合数学中的Dilworth定理.
基础知识我就写了.(T_T,理解基础知识的就不用看下面的内容了.)
关键之处在于证明不上升子序列的划分数=最长上升子序列的长度.
定义一个偏序关系≤:a≤b表示a比b出现的早且a的值大于等于b的值.即最长上升子序列就是这个偏序集的链,因为后面的元素肯定比前面的大啊,无法利用这个偏序关系比较.它的不上升子序列是偏序集的链.由Dilworth定理不上升子序列的最小划分数=最长上升子序列的长度.

[解决办法]
mark,有时间回去看看,我开始也想当然了。

探讨

这涉及组合数学中的Dilworth定理.
基础知识我就写了.(T_T,理解基础知识的就不用看下面的内容了.)
关键之处在于证明不上升子序列的划分数=最长上升子序列的长度.
定义一个偏序关系≤:a≤b表示a比b出现的早且a的值大于等于b的值.即最长上升子序列就是这个偏序集的链,因为后面的元素肯定比前面的大啊,无法利用这个偏序关系比较.它的不上升子序列是偏序集的链.由Dilworth定理不上升……

[解决办法]
厄,应该是基础知识我就不写了.
[解决办法]
sorry,T_T,即最长上升子序列就是这个偏序集的反链
[解决办法]
就是把最长上升子序列反过来,求最长下降子序列,前两天刚好解过这个问题,lz可以看看这个帖子:

http://www.51nod.com/question/index.html#questionId=160

用二分找的话,可以优化到n*log(m),其中m是队列的长度。

热点排行