在解决实际问题的过程中,最首要也是最关键的一步是定义问题的对象。定义对象的过程就是所谓的抽象。在上一篇系统设计的归纳演绎法:开坑中,也反复提到系统设计的核心就在于对特定领域的合理抽象。
举个可能稍显偏题的例子。很多人分不清经济学和金融学的区别。但其实只需要两个很简单的关键字就可以立马让你感觉到他们的不同。经济学的关键词是“供需”,可以说大部分复杂的宏观古典经济学的概念就是建立在对“供需”的研究之上。换言之,供需关系决定了经济学研究这一领域的抽象思路。而对于金融学来说,这个关键词就是“无套利均衡”。这里不过多对于经济学和金融学的概念进行赘述,只想用来说明合理的领域抽象思路是识别问题的关键。
需要注意的是,我们一般会认为抽象的结果决定之后的具体操作。但实际上,更常见的情况是我们先有合适的操作方法或者工具,反过来将问题抽象成适合这种操作方法和工具的对象。这有点像我们常说的,“当你有一把锤子,你会把一切都看成钉子”。这句话本意是用来提醒不要刻舟求剑。但我们必须也要承认,有锤子肯定是比什么都没有,或者需要现造一把工具的情况好得多。我们需要避免的是“只有一把锤子”的情况。当你的工具箱里有足够多的工具并且懂得怎么使用它们的时候,凭借操作手段反过来决定问题抽象是最高效的做法。
再来一个例子。我们有请航空史上有名的奇葩战斗机米格25同学,就是下图里这个货。
米格25的最大空速可以达到3.2马赫。这是个什么概念?意思就是当时的导弹都没它快。在3.2马赫速度下,因为空气摩擦造成的表面温度在300摄氏度以上。而当时(20世纪70年代)的铝合金制造工艺最高耐热只能达到180摄氏度。当时外界分析苏联肯定是使用了非常高级的钛合金工艺,才能得到这种惊人的性能。但实际上,当时苏联的材料科学远远落后美国,根本不可能有成熟的钛合金机体制造工艺。耐高温的秘诀是,米格25的机体使用了不锈钢。没错,就是你家脸盆一样材质的不锈钢。不锈钢的耐热性极好,可以达到上千摄氏度,300度的空气摩擦就是小意思了。不过这个设计缺陷也很多,最明显的就是不锈钢太重,直接造成了米格25空重超标,非常不灵活。但为了高空高速的首要指标,这些都只能暂且忽略了。
这个例子只是用来说明,在有锤子的时候,就算锤子不怎么好用,但是也能凑合着用。本来系统设计就充满了无处不在的妥协,使用现有工具和方法来达到主要的设计目的往往要比坚决不妥协一定要找到完美解决方案要好得多。
当问题变得越来越复杂的时候,简单的抽象往往不能直接被现有的方法解决。这也是非常常见的现象。广义上来说,所有的研究其实都是为了找出新的方法来解决新出现的复杂问题。但我们必须看到,开创性的研究和新方法是昂贵的。实际上,在复用现有方法的情况下,不到万不得已我们是不会去开辟一条崭新的道路。所以在决定”现做一把新的工具“之前,我们总会想方设法地把复杂问题的抽象进行简化或者分解,使其能够适用于现有的工具和方法。这就是我们常说的“不重复造轮子”。这也是为什么变换在系统设计中那么重要。
变换的目的大致有如下两种:
- 简化问题对象的表达,便于理解
- 凸显问题对象的某一种或几种特征,便于操作
对于第一种,很好理解,大家平时做的各种图表就是属于这种变换形式。通过这种简单的变换可以帮助分析和简化问题。第二种可能对大家来说不是很直观。这里用工程领域中非常基本的傅里叶分析来举例。傅里叶变换可以把时域中的信号转换成为频域中的信号。很多没有工科背景知识的同学看到这里可能就一脸懵逼了。我们不去纠结什么叫时域和频域,重点是这个变换是个什么意思,有什么作用。直接上图:
这个图解释了傅里叶分解的概念,即看似复杂时域信号(右)可以分解成多个简单的周期信号(左)。如此,对于复杂信号的处理就可以简化成为对于各个简单周期信号的处理。本来复杂的问题就可以被拆解成一个个小问题。日常生活中所有和声音、电磁波相关的信号处理其实都是以这个理论为基础的。
在遇到很多复杂、难以下口的问题时,最重要的还是能找到合理的变换手段。当然如果真的觉得“蛮力”可解也是一种手段。所谓“一力降十会”,真有一把超强力的“锤子”确实也能以不变应万变。
公众号:花椒哥HJ
网友评论