赞助论坛
  • 10760阅读
  • 0回复

解释什么是“算法” [复制链接]

楼层直达
jnlwei  
级别: 中级会员
发帖
144
精华
0
金币
297
威望
7
贡献
21
好评
20
注册
2010-01-25
楼主    jnlwei 发表于: 2010-07-21 08:46:46 

    “算法”可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。它包含基本算法、数据结构,动态规划以及数值分析,运用检索、随机化、并行等导出数据。看似复杂,其实就是这样。 也可理解为一个数学模型,当空升时,新的算法代表新的PID码计算方法,前两次升级。GD把算法泄露了,所以山鸡可以屏蔽空升,而只改算法,利用刷机后的算法直接计算PID码等等,改算法真的是个头痛的大事,如果新算法不泄露,那只有正版机能进行升级,导出数据,查找PID码,再修改山鸡。没想到小小的山鸡升级牵扯到这么多的数学知识吧,别头痛,有高手解决吧。

  知道了算法知识,就由衷的佩服我们的破解高手了,只从代码分析就能解决升级,太不容易了,太辛苦了,关键是高手吗。再次谢谢。

切忌:算法不等于公式,公式却是提供一种算法

典型算法举例:
  历史上有三大算法:1,求最大公约数的欧几里得辗转相除法;2,求素数的埃拉托塞尼筛法;3,求方根的开方算法。后面两种方法都可以用公式表达。
  一,求素数的埃拉托塞尼筛法公式。属于递归的。
  筛法与公式的关系:
  公元前250年同样是古希腊的数学家埃拉托塞尼提出一种筛法:
  (一)“要得到不大于某个自然数N的所有素数,只要在2---N中将不大于√N的素数的倍数全部划去即可”。
  (二)将上面的内容等价转换:“如果N是合数,则它有一个因子d满足1
  (三)再将(二)的内容等价转换:“若自然数N不能被不大于(根号)√N的任何素数整除,则N是一个素数”。见(代数学辞典[上海教育出版社]1985年。屉部贞世朗编。259页)。
  (四)这句话的汉字可以等价转换成为用英文字母表达的公式:
  N=p1m1+a1=p2m2+a2=......=pkmk+ak 。(1)
  其中 p1,p2,.....,pk表示顺序素数2,3,5,a≠0。即N不能是2m+0,3m+0,5m+0,...,pkm+0形。若N
  (五)可以把(1)等价转换成为用同余式组表示:
  N≡a1(modp1), N≡a2(modp2),.....,N≡ak(modpk)。 (2)
  例如,29,29不能够被根号29以下的任何素数2,3,5整除,29=2x14+1=3x9+2=5x5+4。 29≡1(mod2),29≡2(mod3), 29≡4(mod5)。29小于7的平方49,所以29是一个素数。
  以后平方用“*”表示,即:㎡=m*。
  由于(2)的模p1,p2,....,pk 两两互素,根据孙子定理(中国剩余定理)知,(2)在p1p2.....pk范围内有唯一解。
  例如k=1时,N=2m+1,解得N=3,5,7。求得了(3,3*)区间的全部素数。
  k=2时,N=2m+1=3m+1,解得N=7,13,19; N=2m+1=3m+2,解得N=5,11,17,23。求得了(5,5*)区间的全部素数。
  k=3时,
  | 5m+1-|- 5m+2-| 5m+3,| 5m+4.|
  
  
  求得了(7,7*)区间的全部素数。
  仿此下去,可以求得任意大的数以内的全部素数。
  二,求方根的开方方法公式;
  开方的反馈方法或者叫做自动调节开方。方法是迭代的。
  公式:
  X_(n+1)={X_n+【A/(X^(k-1)-X_n】1/k}
  "_"表示下角标,“^”表示上角标。例如,X^2,表示x的平方;X_1表示第一个X。

 

  例如,A=5,k=3.即开3次方。
  公式:X(n+1)=Xn+(A/Xn^2-Xn)1/3
  5介于1^3至2^3之间(1的3次方=1,2的3次方=8)
  X_0可以取1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0都可以。例如我们取2.0.按照公式:
  第一步:X_1={2.0+[5/(2.0^2-2.0]1/3=1.7.}。即5/2×2=1.25,1.25-2=-0.75,0.75×1/3=0.25,
  2-0.25=1.75,取2位数值,即1.7。
  第二步:X_2={1.7+[5/(1.7^2-1.7]1/3=1.71}.。即5/1.7×1.7=1.73010,1.73-1.7=0.03,0.03×1/3=0.01,
  1.7+0.01=1.71。取3位数,比前面多取一位数。
  第三步:X_3={1.71+[5/(1.71^2-1.71]1/3=1.709}
  第四步:X_4={1.709+[5/(1.709^2-1.709]1/3=1.7099}.
  这种方法可以自动调节,第一步与第三步取值偏大,但是计算出来以后输出值会自动转小;第二步,第四步输入值偏小,输出值自动转大。X_4=1.7099.
  当然也可以取1.1,1.2,1.3,,1.8,1.9中的任何一个。
  ......a必须大于或等于零``,即a为非负数
  开平方公式
  X(n + 1) = Xn + (A / Xn − Xn)1 / 2.。(n,n+1与是下角标)
  例如,A=5:
  5介于2的平方至3的平方;之间。我们取初始值2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9都可以,我们最好取 中间值2.5。
  第一步:2.5+(5/2.5-2.5)1/2=2.2;
  即5/2.5=2,2-2.5=-0.5,-0.5×1/2=-0.25,2.5+(-0.25)=2.25,取2位数2.2。
  第二步:2.2+(5/2.2-2.2)1/2=2.23;
  即5/2.2=2.27272,2.27272-2.2=-0.07272,-0.07272×1/2=-0.03636,2.2+0.03636=2.23。取3位数2.23。
  第三步:2.23+(5/2.23-2.23)1/2=2.236。
  即5/2.23=2.2421525,,2.2421525-2.23=0.0121525,,0.0121525×1/2=0.00607,,2.23+0.006=2.236.,取4位数。
  每一步多取一位数。这个方法又叫反馈开方,即使你输入一个错误的数值,也没有关系,输出值会自动调节,接近准确值。
  例如A=200.
  200介如10的平方---20的平方之间。初始值可以取11,12,13,14,15,16,17,18,19。我们去15.
  15+(200/15-15)1/2=14。取19也一样得出14.。:19+(200/19-19)1/2=14.。
  14+(200/14-14)1/2=14.1。
  14.1+(200/14.1-14.1)1/2=14.14.
  中间值,即1.5。 1.5+(5/1.5^2;-1.5)1/3=1.7。
  顺便介绍开5次方公式:
  X(n+1)=Xn+(A/X^4-Xn)1/5 . (n,n+1是下角标)
  例如:A=5;
  5介入1的5次方至2的5次方之间。2的5次方是32,5靠近1的5次方。初始值可以取1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9.例如我们取中间值1.4;
  1.4+(5/1.4^4-1.4)1/5=1.38
  1.38+(5/1.38^4-1.38)1/5=1.379.
  1.379+(5/1.379^4-1.379)1/5=1.3797.
  计算次数与精确度成为正比。即5=1.3797^5.。
  这个方法的依据是根据牛顿切线法得来。也可以通过牛顿二项式定理推出。
  三,求最大公约数的欧几里得算法还没有找到公式。

本帖最近评分记录: 4 条评分