zoukankan      html  css  js  c++  java
  • 分而治之算法

    算法是问题的分步骤解决的方法。

    分而治之的思想是:有很多问题,可以划分为多个小问题,而小问题本身是易于解决的,那么就通过找到”划分方法“,得到小问题后,最终解决原问题。

    一、是否所有问题都能划分成小问题?

    比如1+1=?可以划分么?不行。因此并不是所有问题都能够划分。

    二、怎样的问题能够划分?

    和规模n相关的,可以划分成每一个节点,或者某一小段,形成可以直观解决的小问题。就如一条长的线段,分成若干定长的小段,进而解决所有问题。如,一个平面,可以划分为若干小区域,也是一样的道理。只要具备规模性,不是原子性的问题,都能够划分成小的问题。

    三、划分的方式有什么分别?

    我觉得有三种划分问题的方法,第一种,是根据问题的特点,划分为不同的子问题,每个子问题就是其中一个步骤。大多数数学的应用题都是这样。

    第二种,划分成子节问题和剩余问题,而这个划分方式可以重复应用到剩余问题之上。也就能够找出简单的子问题,并且证明剩余问题是重复的简单问题的集合。

    特点就是子问题是相似并重复的,不像第一种那样需要针对每个子问题做不同的解答。

    第三种,混合一二两种情况。

    四、分而治之的重点是什么?

    第一就是看是否能够发现重复的子问题,能否发现大问题存在的循环子结构,如果发现就把原问题转化为很简单的小问题。

    第二,是否能划分步骤(不同步骤不同解决方法),因为单个步骤往往比整个问题解决起来要简单很多。

    第三,子问题是否很容易解决,如果子问题都解决不了,那么划分还有啥意义?

    比如一个规模为n的问题,可以划分为1 和 n-1 两个部分,其中1是易于解决的。而n-1这个剩余部分可以用相同的划分方式分成1 , n-2两部分;重复这个过程,最终解决所有问题。

    也可以划分成n/2 和 n/2 两部分,然后对两个部分继续划分,最终都会成为一个1的简单问题。

  • 相关阅读:
    EXTJS 4.2 资料 控件之checkboxgroup的用法(静态数据)
    EXTJS 4.2 资料 控件之Window窗体相关属性的用法
    EXTJS 4.2 资料 控件之textfield文本框加事件的用法
    Entity Framework 学习笔记(一)之数据模型 数据库
    EXTJS 4.2 资料 控件之checkboxgroup的用法(动态数据)
    EXTJS 4.2 资料 控件之Grid 列鼠标悬停提示
    Entity Framework 学习笔记(二)之数据模型 Model 使用过程
    EXTJS 4.2 资料 控件之radiogroup 的用法
    EXTJS API
    vue移动端弹框组件,vue-layer-mobile
  • 原文地址:https://www.cnblogs.com/Nobel/p/2794545.html
Copyright © 2011-2022 走看看