zoukankan      html  css  js  c++  java
  • 算法问题的解决 —— 预测答案结构(限制答案的形式)

    对于一些存在数量庞大的子问题的问题,我们可以强制预测答案结构。所谓预测答案结构,即是寻找可行的答案中可能存在的 pattern,也即规律。

    比如序列的量化问题,将小于 1000 的自然数组成的序列量化成 s 个自然数组成的序列,且要求最终的误差平方和最小。比如,把序列{1 2 3 4 5}量化成{2 2 4 4 4}(s = 2)。

    该问题其实蕴含着丰富的子问题,对着这种具有庞大子问题的问题,我们就可以采用强制预测答案结构的方式进行。

    • 对于给定序列,那么被相同数值量化的数值一定相邻

    例如,量化 {1, 2, 3, 4}时,像{2, 2, 3, 2}形式的答案不可能是最优解。明白了这点,就等于找到了解决此问题的方法:

    • 首先对给定序列排序,
    • 然后采用适当方式分割出相邻数值组成的数值快;
    • 用相应数值表示每个数值快就可以得到最小误差;

    • {1, 4, 6, 744, 755, 777, 890, 897, 902}{{1, 4, 6}, {744, 755, 777}, {890, 897, 902}}

    通过以上步骤,原题就变成“把给定序列分割成 s 个数值快”的问题。显然这种问题采用递归调用的方式就可轻松解决,自然每次递归调用时决定第一个数值快的大小。

  • 相关阅读:
    行锁原理 天高地厚
    unity c#
    (转)C#导出Excel源码
    c#.net]做tooltip给控件动态添加属性的做法、IExtenderProvider接口的使用
    自定义提供程序控件
    在C#中使用SQLite
    哈佛大学凌晨4点半的景象
    (转)SQLServer常见查询问题
    .NET组件编程
    窗体着色
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9423836.html
Copyright © 2011-2022 走看看