在我们遇到一些问题的时候,假如我们想从编程的角度解决问题,那么我们就需要从这个问题中提取出某些信息,经过我们人为分析以后,用程序语言将其描述出来从而解决该问题。可能大家都没有注意到,在我们解决问题的过程中我们已经默默的经过了“建模”这个过程。“建模”便是现实世界和抽象的编程世界之间的一座桥梁。
对于程序员来说,有一句话一定不会陌生——算法是程序的灵魂。一个好的算法能让一个程序的开发成本降低,提高程序的执行效率,更能提高程序的健壮性。要有好的算法,当然你就需要一个好的模型。
由于算法是一个很庞大的概念,本文就不再继续阐述。接下来我们来看一个个简单的例子来证明建模在编程中的作用。
——————————————————————————————————————————————————————
题目:
一个重为40克的砝码摔成了4份,要求能用这4份砝码称出1至40克所有的质量。题目中的数据均为整数。
——————————————————————————————————————————————————————
一个非常简单的题目。通过这个题目我们很容易想到,要先将4个砝码的质量表示出来,为了称出39克,必然有一个砝码的质量为1克。为了完成题目的要求,我们需要遍历砝码的质量,因此我们便可以如下表示4个砝码的质量:
表示完砝码质量以后,我们就应该考虑如何完成计算1-40克的问题了。最简单的一个思维方式就是对所有的可能性进行遍历。4个砝码总共的可能性加起来一共有3^4 = 81种。把这81中方法罗列出来用if进行判断也未尝不可。但是假如以后碰到个问题不是4个砝码而是5个砝码或者更多,那么这种以指数性增长的工作量一定不是大家想接受的。这个时候你就需要找到一个更合理的模型。
我们分析一下,对于一个砝码来说,它的状态无非是三种,一个状态是用来称重,一个状态是用来抵消其他砝码的质量以获得更多的可能性,最后一个状态则是闲置。如果你用过遍历所有可能性的方法那么你就会发现,这三种状态可以分别用“1”、“-1”、“0”来表示。这么一来我们要建立的模型就呼之欲出了:将现实的三种状态用纯粹的数字来表示。那么我们就可以得到以下的遍历程序:
这个分析问题解决问题的过程就是建模。有了这个模型,以后不管有多少个砝码摆在你面前,你都能轻松解决。
【结语】人们常常说数学专业的人转成计算机专业会特别顺利,因为数学中分析问题解决问题的这种思维方式是计算机编程中必不可少的。同时学好数学和计算机确实是件非常困难的事,也许我们不能熟练运用高等数学中某些专业的公式,但是我们必须培养我们的逻辑思维能力。数学建模涉猎的范围很广,如何把建模的思想移植到程序设计方面,这都是需要我们不断去磨练的。正所谓建模是为了设计算法,编程是为了实现算法。当程序的灵魂在你指尖“敲”然而生,你就离成功不远了。