最近在看《程序员的数学》,一本很好的“数学书”。书中用一些很简单的例子表达了数学在程序中的应用。
Example 1: 逻辑判断与德·摩根定律
1.1德·摩根定律: 简单的说,就是或,与,非的互相转化。如
Pic 1(from wikipedia)
1.2 程序中的if判断语句以及可能出现的逻辑错误
在程序设计中经常会出现逻辑条件的判断,而一些大型的程序,判断的条件可能还会是多个,如果多个判断条件嵌套使用,当程序员的思维出现一些些的错误时,很可能就会出现bug,而这样的逻辑bug在大型程序中很难进行调试。
1.3运用数学中的卡若图简化程序中的逻辑判断
Example:
二灯游戏:有两个灯泡,按下按钮,满足以下条件
1.绿灯灭,黄灯亮
2,绿灯,黄灯都灭
3.绿灯,黄灯都亮
问题:两灯的连接方式
设:
命题A 绿灯亮
命题B 黄灯亮
按照传统的方式,直接用if语句进行相应的逻辑判断即能得出条件语句。则上述表述为
if((!A && B) || (A && !B) || (A && B) )
条件判断看上去很多,但是若经过卡若图进行简化[找出与上面条件判断等价的判断]就会显得简单的多
Pic 2
如图Pic 2 所示,问题中的判断条件在表格中的表现为1,2,3所示,则可以很直观的看出条件可以简化成!A || B, 简化后的if语句为
if(!A || B)
(ps:数学归纳法,余数等都思想都可以在程序中实现,并优化程序的复杂性,未完待续。。。)