§6.2问题求解的方法


常用问题求解的思维方法.
1. 穷举法也称为枚举法
在寻找一个问题的解时,从可能的解的集合中列出所有候选解,用题目给定的检验条件进行判定,能使命题成立的,即为解。在检查完部分或全部候选解后,便可得出该问题或者有解,或者没有解。例如一些密码破译软件就是用穷举法。算法效率并不高,但是适合于一些没有显示规律可循的使用场景,如:密码暴力破解。
【例6-1】一个密码锁由3位数字组成,最多要尝试多少次才能打开?

[分析]一个密码由3位数字组成,其组合方式有1千(103),也就是说解空间为{000,…,999},所以最多尝试999次才能找到真正的密码。如果不考虑时间和成本,即使是逐一尝试破解密码,也只是时间上的问题。

2. 归纳法又称为归纳推理,或归纳逻辑
其基本思想是根据一类事物的部分对象具有某种性质,推出这类事物的所有对象都具有这种性质的推理 ,是从特殊到一般的过程。
从定义上讲,“归纳法是指人们以一系列经验事物或知识素材为依据,寻找出其服从的基本规律或共同规律,并假设同类事物中的其他事物也服从这些规律,从而将这些规律作为预测同类事物的其他事物的基本原理的一种认知方法”。
归纳法:
条件:我养的一只猫A喜欢吃鱼;
邻居家的一只猫B喜欢吃鱼;
猫C喜欢吃鱼,猫D喜欢吃鱼.……
结论:猫喜欢吃鱼。

归纳法的使用步骤

归纳的过程可以分为三步:
一是搜集和积累一系列事物经验或知识素材;
二是分析所得材料的基本性质和特点,寻找出其服从的基本规律或共同规律;
三是描述和概括(作出系统化判断)所得材料的规律和特点,从而将这些规律作为预测同类事物的其他事物的基本原理。
归纳法有很多形式,在归纳逻辑上主要分为完全归纳法和不完全归纳法。
(1)完全归纳法
完全归纳方式从全部对象的一切情形中得出关于全部对象的一般结论。完全归纳法推理过程可表示为:S1是P,S2是P,…,Si是P (S1,S2,…,Si都是S类的全部对象),则所有S是P
【例6-2】三角形的面积等于底乘高的一半;
[分析]直角三角形的面积等于底乘高的一半;
钝角三角形的面积等于底乘高的一半;
锐角三角形的面积等于底乘高的一半;
所以,凡三角形的面积都等于底乘高的一半。
完全归纳法有两个规则:
一是,前提中被判断的对象,必须是该类事物的全部对象;
二是,前提中的所有判断都必须是真实的。
完全归纳推理是一种前提蕴含结论的必然性推理。
(2)不完全归纳法
由于完全归纳法具有一定的局限性和不可实现性,所以在实际情况中还用到不完全归纳法。
不完全归纳法是以关于某类事物中部分对象(不是全部)的判断为前提,推出关于某类事物全体对象的判断做结论的推理。不完全归纳法有两种逻辑形式:一是简单枚举归纳推理,这是或然性推理;二是科学归纳推理,这是必然性推理。
【例6-3】金、银、铜、铁、锡等金属导电;所以一切金属都导电
[分析]前提中列举的“金、银、铜、铁、锡”等部分金属都具有导电的属性,从而推出“一切金属都导电”的结论
【例6-4】事例:振动发声
[分析]如果某个物体因振动而发出了声音,并不能说明所有的声音都是由物体的振动而产生的。但若众多声音都是由物体的振动而产生,而且目前所经历的所有自然现象、实验现象等都无一例外!则不可能有那么多的偶然现象。即可通过归纳总结这些现象,可以证明声音就是由物体的振动而产生的。显然,这是一种不完全归纳法。设想若将来有人做了一个实验现象说明:物体发出声音时,声源并没有振动,那么这个结论就将被终结。

3. 演绎法或称演绎推理
指人们以一定的反映客观规律的理论认识为依据,从一般性的前提出发,通过推导即“演绎”,得出具体陈述或个别结论的过程。所以演绎法是认识“隐性”知识的方法,是从普遍性结论或一般性事理推导出个别性结论的论证方法,是从服从该认识的已知部分推知事物的未知部分思维方法。
演绎推理有多种逻辑形式,如三段论、假说推理、选言推理、关系推理等形式。
【例6-5】演绎法在经贸研究中的应用
A、价值规律是商品经济运动中的基本规律,在存在商品生产和商品交换的场合,价值规律必然存在并发生作用
B、社会主义经济是市场经济存在商品生产和商品交换
结论:在社会主义社会,价值规律存在并发生作用。
演绎推理+想象力+创造力=人类独有的财富

演绎推理的三段论
三段论推理是演绎推理中的一种简单推理判断。三段论是由两个含有一个共同项的性质判断作前提,得出一个新的性质判断为结论的演绎推理。它包括三个部份:
大前提:已知的一般原理;
小前提:所研究的特殊情况;
结论:根据一般原理,对特殊情况做出判断。

【例6-6】所有的金属都能导电 一般性的原理 大前提
[分析] 因为铜是金属 特殊情况 小前提
所以铜能够导电 结论 结论
假说-演绎法
在观察和分析基础上提出问题以后,通过推理和想象提出解释问题的假说,根据假说进行演绎推理,再通过实验检验演绎推理的结论。如果实验结果与结论相符,就证明假说是正确的;反之,则说明假说是错误的。这是现代科学研究中常用的一种科学方法,叫做假说—演绎法。

应用例子:孟德尔的豌豆杂交实验、遗传学界对基因与染色体的关系的探究历程、DNA分子复制方式的提出与证实、遗传密码的破译。
归纳法与演绎法的区别与联系
归纳法是从认识个别的、特殊的事物推出一般原理和普遍事物;而演绎法则由一般(或普遍)到个别。这是归纳法与演绎法两者之间最根本的区别。
归纳法的结论超出了前提的范围,而演绎法的结论则没有超出前提所断定的范围。归纳法根据已有前提,进行归纳并逻辑推导,得到新的结论;演绎法主要验证开始所列举的前提假设,最后验证的结论一般不会超出前提假设的范围。
归纳法:
条件:我养的一只猫A喜欢吃鱼。邻居家的一只猫B喜欢吃鱼。猫C喜欢吃鱼。猫D喜欢吃鱼,……。
结论:猫喜欢吃鱼。
演绎法:
条件:猫喜欢吃鱼。我家养的阿喵是一只猫。结论:阿喵喜欢吃鱼。

4. 递归法
最简单的递归理解:求n的阶乘n!,就相当于求n*(n-1)!……如此不停的将n的规模缩小,一直到我们所知道的最简单的阶乘0!和1!
如汉诺塔就是递归的问题求解,也可以理解是嵌套。

与递归相关的概念与术语
推入——(压入)就是暂停手头的工作,标记停止地点,开始另一项工作,新工作比原工作要“低一个层次”。
弹出——(出栈)就是结束低层次的工作,在上一层次暂停的地方恢复原工作。
堆栈——用来记录暂停地点的环境信息。
递归算法存在两个必要条件:
⑴可以通过自身调节来缩小问题规模,且新问题与原问题具有相同的形式;
⑵必须有一个终止处理或计算的结束条件。
递归法示例:
汉诺塔问题:汉诺塔是由三根杆子A,B,C组成的。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:每次只能移动一个圆盘;大盘不能叠在小盘上面。

斐波纳契数列:在数学上,斐波纳契数列以如下被以递归的方法定义:
F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n为正整数)

5. 分而治之法简称分治法
一种系统分析与划分方法。其基本思想是将一个难以直接解决的大问题划分成一些规模较小的子问题,以便各个击破,分而治之。更一般地说,将要求解的问题划分成k个较小规模的子问题,对这k个子问题分别求解。如果子问题的规模仍然不够小,则再将每个子问题划分为k个规模更小的子问题,如此分解下去,直到问题规模足够小,很容易求出其解为止。
分治法的求解过程
(1)划分:把规模为n的原问题划分为K个规模较小的子问题,并尽量使这K个子问题的规模大致相同。
(2)求解子问题:各个子问题的解法与原问题的解法通常是相同的,可以用递归的方法求解各个子问题,有时递归处理也可以用循环来实现。
(3)合并:把各个子问题的解合并起来,成为一个更大规模的问题的解,自底向上逐步求出原问题的解。分治法的有效性很大程度上依赖于合并的实现。

【分治法例子】
全排列问题:有1,2,3,4共4个数,有多少种排列?
大问题是所有数的排列方法
划分:分解得到的小问题就是以1开头的排列,以2开头的排列,以3开头的排列,以4开头的排列;而这些小问题又能继续分解,比如以1开头的排列中,只确定了1的位置,没有确定2,3,4的位置,把2,3,4三个又看成大问题继续分解,2做第二个,3做第二个,或者4做第二个,一直分解下去,直到分解成的子问题只有一个数字的时候,不再分解
合并:因为1个数字肯定只有一种排列方式啊,现在我们分解成了很多的小问题,解决一个小问题就合并,合并成一个大点的问题,合并之后这个大点的问题也解决了,再将这些大点的问题合并成一个更大的问题,那么这个更大点的问题也解决了,直到最大的问题解决为止
这个就是用分治的思想解决全排列问题

6. 回溯法
复杂问题通常有很多可能解,这些可能解构成了问题的解空间。解空间也就是进行穷举的搜索空间,所以解空间中应该包括所有的可能解。如果没有确定的解空间就开始搜索,可能会增加很多重复解,或者根本搜索不到正确的解。因此需要一种系统化的检查候选解的方法,这种方法将搜索空间缩小到最低程度。这种系统且有组织的搜索方法,称为回溯法。
在解空间中,问题的求解就是搜索。在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根结点出发深度搜索探索解空间树。当搜索到某一结点时,要先判断该结点是否包含问题的解,如果包含,就从该结点出发继续探索下去,如果该结点不包含问题的解,则逐层向其祖先结点回溯。而满足回溯条件的某个状态的点称为“回溯点”。
回溯法的基本思想
(1)针对所给问题,定义问题的解空间;
(2)确定易于搜索的解空间结构;
(3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。
用回溯法解题的一个显著特征是在搜索过程中动态产生问题的解空间。在任何时刻,算法只保存从根节点到当前扩展结点的路径。
回溯法示例:旅行售货员问题
某售货员要到若干城市去推销商品,已知各城市之间的路程(或旅费)。他要选定一条从驻地出发,经过每个城市一次,最后回到驻地的路线,使总的路程(或总旅费)最小。

如图:1,2,3,4 四个城市及其路线费用 最优值25,路径1,3,2,4,1
7. 计算思维
计算思维是一个问题解决的过程,该过程包括确认问题、 分析数据、 抽象、 设计算法、 选择最优方案、 推广六大要素。它是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动,它涵盖了反映计算机科学之广泛性的一系列思维活动。是人类求解问题的一条途径,但决非试图使人类像计算机那样地思考,它独立于技术而存在;
计算思维可以通过计算工具来实现,不仅要注重研究和运用工具,还要注重研究工具对思维的影响,通过学习和应用计算机,改变旧的思维方式,逐步培养了现代的科学思维方式和工作方式,懂得在信息社会处理问题的科学方法。
事实上,人们在学习和应用计算机解决问题的过程中,就是在不断地培养着计算思维。尤其是在学习程序设计中,算法和程序设计就是计算思维的具体实践。
计算思维的核心是算法,算法是计算机科学美丽的体现之一。

8. 思想实验
思想实验是指运用想象力去进行的实验,所做的都是在现实中无法做到(或现实未做到)的实验。
在计算学科中,图灵机的诞生是思想实验的一个著名案例,因为在现实世界中并不存在这样的机器。图灵机是对计算的高度抽象,在对计算的基本逻辑进行定义后,它可以不依赖于物质的计算机而完成每一个计算状态的演算,从而提出计算机的基本结构和工作原理。
从上述对思想实验的考察中,我们可以看到,思想实验是按真实实验的格式展开的一种复杂的思维推理活动,这样不必物化就可得到确定的结论。其思想操作包括以下几个层面:
(1)对从未进行过的或潜在的可以实现的实验进行预想;
(2)为形成理想实验, 对真实实验进行理想化的抽象;
(3)对现实中不存在,与经验相矛盾的现象进行合乎逻辑、有意义的想象。


丰田问题解决方法(TBP)的方法和步骤
前言:没有问题的人,才是问题最大的。
我们讲过了问题解决方法的定义和基本意识,这里我们将要讲到问题解决的方法和步骤。
问题解决方法分为8个步骤,它是每位学习丰田问题解决方法的人员所必备的基础知识。在详解8D之前,我们要说到PDCA循环,TBP是目标达成的理想科学的工具,而具体的目标、周密的计划、有力的执行、及时的检讨和有效的措施是使TBP成为更效率化、更经济的工具的途径。

下面我们来对8个步骤进行详细说明。
第一步明确问题
把业务的最终目标(期待水平)与目前的状态进行比较,看是否存在差距(问题)。分为3点:
(1)明确期待水平确认业务的最终目标,尽量把最终目标数值化,综合考虑,设定好用什么来评价结果;
(2)明确现状把握现状是什么样的结果
(3)明确问题比较期待水平和现状(结果)的差距,并可视化。
例如:
某品牌家具搬运损伤问题。
期待水平:损伤件数0件
现状:年承接任务 1655件,累计损伤28件
问题:作业时发生了28件损伤事件

第二步分析问题
有些问题是认识到了,但还处于莫名其妙的状态,要找出具体的解决方案,就要先找出问题中最有分量的部分,即问题的关键所在。具体的方法有:
(1)把问题层次化收集数据,分析数据,通过图表从高到低层次化,找出集中突出的问题。如果必要,再次“现地现物”,获取新的数据并层次化;
(2)确定问题的关键所在一般从问题占比最大的原因着手,也可以从问题对目标的影响程度、可能导致重大后果、放任不管会扩大影响的倾向性等方面来衡量确定问题的关键度。
例如:
某品牌家具搬运损伤问题。
问题分析:在不能使用搬送机、起重机等狭窄的地方,通过手工作业时,发生的损伤占50%以上,
问题的关键所在:在高层建筑(主要是在楼梯部分)进行搬入搬出作业时,发生的衣柜类损伤有14件

第三步设定目标
针对应该解决的问题点,要确定“解决什么”、“到什么程度”、“什么时候”。如何设定目标呢,具体的方法有:
(1)设定目标把要改善的内容具体化,确定解决什么;而且把改善的程度量化,并设定达成目标的期限,以便明确、客观的评价。
(2)确认目标针对问题的关键设定目标,可以把一部分改善手段也当成目标。
例如:
某品牌家具损伤问题
设定目标:到3月末,把在楼梯上发生的衣柜损伤事件从14件降到0件!
第四步把握真因
调查引发问题的关键所在的原因,找出原因中影响的大部分,具体的方法有:
(1)找出要因 5Why找出“为什么会这样”,相互交流,思考为什么。
(2)要因层次化用逻辑树图从4M1E整理找出的“为什么”。
例如:
某品牌家具损伤问题
思考为什么在楼梯上会发生损伤事故

第五步制定对策
针对真正的原因,设定解决方法的目标,把实行计划和相关人员等表格化:
(1)提出对策方案针对真因提问,“那么,该怎么办”,“把xx变成这样”,
把事情情具体化。头脑风暴,听取集体智慧和经验。
(2)整理对策,精选方案将对策层次化,从效果、成本、交期、预计的障碍等进行评估,制定相应的对策,确定目标和完成程度,并制定对策方案和执行日程。
(3)对选定的对策方案制定实行计划。
例如:
某品牌家具损伤问题
1.制定对策

2.制定实行计划

第六步实施对策
按照实行计划自律、迅速的行动,积极进行纵向和横向的交流。具体的方法:
(1)根据实行计划,确实地履行各实施事项。
(2)通过报告、沟通、协商,做好横向和纵向的交流。
(3)进度缓慢及时发现,明确为什么没完成,尽早采取对策。
例如:
某品牌家具损伤问题
1.通过实施日程表进行管理

第七步评价成果
评定设定的目标是否达成。具体的方法:
(1)评价实施的结果和业务目标与期待水平的达成度。
(2)目标的达成度。
例如:
某品牌家具损伤问题
1.期待水平的达成度
损伤总件数虽然没能降到0件,但是从28件降到10件,获得了 64.3%的削减效果

2.目标的达成度
在楼梯上搬运作业时衣柜类物品损伤件数为0,达成目标!
第八步巩固成果
把实施的结果进行总结并标准化,制定向后横向拓展计划。具体的方法:
(1)根据评价结果,选择行动方向。进展不顺利时,找出原因,制定第二方案,进展顺利时,结果标准化,横向展开,稳定成果。
(2)使业务的5W1H明了化和可重复性,将经验标准化,如样本、账本、检查表、流程图、程序文件等。
(3)跨越部门,横向拓展。
例如:
标准作业票例:

最后,我们通过A3报告完成相关步骤的总结和标准化。

到此为止,我们已围绕丰田问题解决方法的8个步骤的具体行动、思考方法进行了详细说明。因为工作多样化,比如有的问题已经明确,不必再进行分解;有的问题已经明确了方案,只需要实施就可以了;有的工作紧急,无时间遵循8步骤,必须先紧急处理;还有的工作只需要临时处理等。这种情况下,有人或许会觉得“这一步不对”、“根本不需要8个步骤”等,这是因为问题解决的整个过程不只是某一个人在做,自己没做的那一步肯定别人在做。在接受工作的时候,首先要明确真正的目的,明确自己是负责整体步骤中的哪个环节,能够做到这点和做不到这点,其工作过程和成果必然大相径庭。
另外,即使自己只负责某一个步骤,也同样可以按8步骤原则展开,完成这一步同样是实践问题解决的过程。充分理解丰田的问题解决,直到可以在实际工作中随机应变、灵活运用,培养自己实际应用“Toyota Way”的能力。
源自 https://www.sohu.com/a/200546419_576648