您学到了哪些通用数学公式,这些公式可以帮助您编写更好的算法并成为更好的程序员?
示例:我了解了ecludian距离公式:sqrt((x1-x2)^2+(y1-y2)^2)
通过比较两个因素,它帮助我了解了如何找到相似的物体。
您学到了哪些通用数学公式,这些公式可以帮助您编写更好的算法并成为更好的程序员?
示例:我了解了ecludian距离公式:sqrt((x1-x2)^2+(y1-y2)^2)
通过比较两个因素,它帮助我了解了如何找到相似的物体。
Answers:
知道2的幂很容易,尤其是在处理低级按位运算时。
setsockopt(...SO_KEEPALIVE..)
更容易了很多读取或写入比setsockopt(...16...)
已经提到了布尔代数,但是我想提供一些实际的例子。
当您使用复杂的布尔表达式(if
例如在语句中)时,布尔代数非常有用。
结合有用的表达方式和规律:
分布性
A&(B | C)=(A&B)| (A&C)
A | (B&C)=(A | B)&(A | C)
所以下一次您偶然发现这样的表达:
if((A || B) && (A || C) && (A || D) && (A || E)) { ... }
您可以轻松地将其缩小为:
if(A || (B && C && D && E)) { ... }
否定与德摩根定律
!(!A)= A
!(A&B)=!A | !B
!(A | B)=!A&!B
假设您有这样的陈述:
if(!A && !B && !C) {..}
而您需要构建相反的东西。写作:
if(!(!A && !B && !C)) {...}
可以工作,但看起来不像这样等效:
if(A | B | C) {...}
(P -> Q) <=> (!P | Q)
。我一直使用它,因为很少有环境提供逻辑蕴涵运算符,这对于SQL CHECK约束非常方便。
以我的经验,数学公式用于非常具体的计算,可能适用于您的项目,也可能不适用于您的项目。
如果您需要计算某些东西,通常在库或示例源代码中都会有一个函数可以为您计算出来。例如,Excel的PMT()函数计算在Y期间以X%偿还债务所需的付款。您是否真的想知道它是如何计算的,或者仅调用内置函数就足够了吗?
在过去的十年中,我认为除了Ceil(),Min()和Max()之外,我不需要使用数学库中的任何东西,这表明即使计算机是为解决基于数学的问题而设计的,当今的普遍用途是围绕数据流进行决策。
以Facebook为例,它具有大量的代码。某处可能有一些数学运算,但我怀疑主要是在Crypto API中,它可能是一个系统库。但是数据库访问,授权决策,页面构建和信息路由可能不会使用大量的Math。
是的,有些市场需要大量数学-金融,物理学,工程学-但是在这些行业中,您的主要学科是数学/经济学,物理学,工程学等,因此您的问题是“我怎么写”语言Y中的公式f(x)?
IMO可以更好地利用您的时间来研究算法(包括Big O表示法)和设计模式。
我想提到泰勒级数,它对于快速获得“较重”功能非常有用。例如sin(x)
,可以用近似0 x-(x*x*x/6)
。
总的来说,有一种聪明的方法可以快速地近似事物,而不是将其计算到最后一个有效数字(尽管对于基本函数,大多数现代处理器都包含快速的硬连线实现,因此使用泰勒近似正弦可能并不那么重要)。速度增益)。
我见过太多的学校在教“编写一个循环以求x和y之间所有数字的总和”,而不是“算法是极好的”
另外... https://docs.google.com/viewer?url=http://courses.csail.mit.edu/6.042/fall10/mcs-ftl.pdf
编程是一个非常广阔的领域。数学公式取决于您所位于的编程领域。如果您喜欢图形,游戏编程,则需要了解更多的三角学和几何学。游戏编程可以进一步分类为物理,渲染,着色器等领域。因此,如果您是物理模拟专家,那么您应该了解与物理相关的知识。
如果您喜欢安全性,那么您必须是数论专家。
通常,您可以将这些结合使用,无论您感兴趣的是哪种。学习永无伤害。
对于优化问题,最好了解对数可能性。例如,如果您尝试最小化平方和,则与最大化似然对数相同,因为(大致而言)
log( Product( exp( -(x[i]-mean)^2 )) )
=
- Sum( (x[i]-mean)^2 )
性能调整领域中的其他收藏夹是二项式和Beta分布。它们非常容易计算。
如果您从程序状态中抽取10个随机时间样本,并且在一定条件下(对于F = 40%的时间)处于某种状态,则就像使用不公平硬币进行抛硬币实验一样。在这种情况下,您看到它的次数是平均数为10 * 0.4 = 4的二项分布,并且sqrt(10 * 0.4 * 0.6)= sqrt(2.4)= 1.55的标准偏差。
另一方面,如果您抽取10个样本,并且碰巧在4个样本的条件下看到它,那告诉您关于F有多大?可能的结果是0、1、2、3、4,...,9、10。这是11种可能性,您看到的可能性(4)是第五种。因此,取11个均匀(0,1)随机数,并对它们进行排序。第五个分布是F的分布,即Beta分布。它的模式是4/10。平均为5/11。其方差为5 * 6 /(11 ^ 2 * 12)= 0.021,标准偏差= 0.144。
许多人认为需要大量样本来定位软件性能问题并避免发现错误的样本。这些分布表明,少量样本可以揭示很多有关其成本的信息。
这可能有点简单,但G=(V,E)
要牢记一个好方法。换句话说,图是一组顶点和边。图对于表示很多事物非常有用。