基本思想:
当我们求解某些问题时,由于这些问题要处理的数据相当多,或求解过程相当复杂,使得直接求解发在时间上相当长,或者根本无法直接求出。对于这类问题,我们往往先把它分解成几个子问题,找到求出这几个子问题的解法后,再找到合适的方法,把他们组合成整个问题的解法,如果这些子问题还比较大,难以解决,可以再把它们分成几个更小的子问题,以此类推,直至可以直接求出解为止。
二分法:
利用分治法求解时,所需时间取决于分解后子问题的个数,子问题的规模大小等因素,而二分法,由于其划分简单和均匀的特点,是经常采用的一种有效的方法。
解题步骤:
1、分解:将要解决的问题划分为若干个规模较小的子问题。
2、求解:用简单的方法去求解那些规模小的子问题。
3、合并:将子问题的解逐层合并构成原问题的解。
栗子:
给你一个装有1 6个硬币的袋子。1 6个硬币中有一个是伪造的,并且那个伪造的硬币比真的硬币要轻一些。你的任务是找出这个伪造的硬币。为了帮助你完成这一任务,将提供一台可用来比较两组硬币重量的仪器,利用这台仪器,可以知道两组硬币的重量是否相同。比较硬币1与硬币2的重量。假如硬币1比硬币2轻,则硬币1是伪造的;假如硬币2比硬币1轻,则硬币2是伪造的。这样就完成了任务。假如两硬币重量相等,则比较硬币3和硬币4。同样,假如有一个硬币轻一些,则寻找伪币的任务完成。假如两硬币重量相等,则继续比较硬币5和硬币6。按照这种方式,可以最多通过8次比较来判断伪币的存在并找出这一伪币。
另一种方法就是利用二分法,把16个硬币看成一个大问题,然后分解成两个小问题,8个硬币和8个硬币,比较这两组硬币的重量大小,哪组轻假币就在那组里,依此类推再分为4,4一组,2,2一组,直到找出哪个硬币是假币为止。