王朝百科
分享
 
 
 

变进制数

王朝百科·作者佚名  2010-05-08  
宽屏版  字体: |||超大  

常进制数在我们的学习、生活中常进制数的应用非常广泛。例如:十进制数、二进制数等等。实际上他们是以一个固定的整数作为进位值的。一般的,r 进制数就是每个位置满r 进一。设有r 进制数An,An-1,An-2,...,A1,其中0=< Ai<= r-1, 1<=i<=n,i位置的权重Pi=r^(i-1)。其对应的数值K 计算方法为:

K = ΣAi*Pi= An*Pn+An-1*Pn-1+...+A1*P1

变进制数推广的,我们不一定要用固定的数值作为进位值,设有正整数序列B1,B2,...,Bn,...,其中Bi>=2,我们就可以把它当作各个位置上的进位值,即第i个位置满Bi进一,添加B0=1,则权重Pi=B0*B1*...*Bi-1,i>=1,变进制数An,An-1,An-2,...,A1,其中0=< Ai<= Bi-1, 1<= i <=n,其数值的计算方法仍然是上述K 的公式。 实际上,我们日常生活中有很多变进制数,比如时间的描述“1年9个月8天6小时6分30秒”,假定1年有12个月,1个月30天。

阶乘数系最特殊、最简单的变进制数,就是取Bi=i+1,i>=1,则Pi=1*2*...*(i-1)*i =i!,其权重恰好是整数的阶乘,因而被称为阶乘数。阶乘数第i个位置最大数值是i。

例,4位的最大阶乘数是4321,为了区分其他进制,这里用字母f作为下标:(4321)_f ,则:

(4321)_f = 4*4!+3*3!+2*2!+1*1! = 119 = 120-1 = 5!-1 =(10000)_f -1

上式在10进制中相当于:9999 = 9*10^3+9*10^2+9*10+9*1 = 10000-1

我在2006年探讨全排列的排序问题时也独立的发现变进制数和阶乘数系,后来在一本数值计算的书上看到了这个概念,估计这个概念应该出现很久了,因为不常用而被忽视。

全排列和阶乘数系关系我们知道n个不同的元素有n!个排列,我们这里考虑数字1,2,...,n的排列。现在我们要给他们一个排序方法,也即是找到他们和自然数列0,1, 2, ..., n!-1 的一个对应,习惯上的,我们按照排列逆序的程度来排序。我们来逐一考虑,n=1时,只有1中排列,n=2时,我们要把2和1排在一起,则2可以排在1的后面或前面,有两种选择,当n=3时,1和2两个数字有三个空可以插入数字3,而3选定一个位置时,1和2又有2!种排列,我们可以这样,数字3每变动一次(从后向前移),小于它的所有数就轮换了一个周期(全排列)。这6个排列顺序如下:

(数字3在第3个位置)123, 213, (数字3在前移了1位)132, 231, (数字3又前移了1位)312, 321

数字3每前移一个位置,就经过了2!个排列。

一般的,按照这个方法,我们就可以把n!个排列排出来,在这种排列方法中,我们发现数字i 每前移一次,就经过了(i-1)! 个排列,也就是说“数字i 的位置的权重是(i-1)! ”,而i 移动的次数取决与在该排列中数字i 右侧小于i 的数字的个数(逆序)。

例:有排列 35241 ,我们从数字2开始看,2右侧有1个比它小的数字,数字3右侧有2个,数字4右侧有1个,数字5右侧有3个,我们将这些逆序数倒着写下来是:3,1,2,1,则该序列在我们这种排序方法中的位置序号是:

3*(5-1)!+1*(4-1)!+2*(3-1)!+1*(2-1)! = 3*4!+1*3!+2*2!+1*1! = 83 注意,排序是从0开始计数的。

我们就发现一个排列的逆序数组成的数列恰好是一个阶乘数,此例中就是(3121)_f 。特殊的排列1234...n 对应的是(0, 0,..., 0)_f = 0 即是第一个,n(n-1)...21对应的是(n-1, n-2, ..., 2, 1)_f = n!-1,即是最后一个,完全符合我们的排序意图。该阶乘数各个位置数字的和就是原排列的总的逆序数。多提一点,鉴于这种逆序数列和阶乘数的关系,我希望几年后,组合数学书上的逆序数列可以修改成我这里的定义方式:数字i 右侧小于i 的数字的个数。而不是:i 左侧大于i 的数字的个数。当然,大多数意义下两者是等效的。

综上所述:n个元素的全排列可以和n-1位的阶乘数一一对应起来。

阶乘数系的小数推广和负数的阶乘进一步考虑,我们可以扩展出阶乘数系的小数计数法。实际上我们的任务是去划分单位1,与整数计数法相似,可以定义一个大于等于2的整数列C1,C2,...,Cn,...作为划分的等分数,这里就不做阐述了,我们这里一种特殊的扩展方法:对称扩展法,即令Ci=Bi,i>=1。对比常进制数的小数计数法,小数实际上是每次把当前长度10等分,于是,在阶乘数的计数法中Ci=Bi=i+1 ,i>=1,我们最初我们将单位1进行2等分,再对每一份(长度是1/2)进行3等分(变成了1/6),如此下去,无穷的划分。于是,第i 次划分后,每一份的长度是1/(i+1)!, 这即是对称扩展后小数点后第i位置的权重,第i个位小数的最大数值是i。小数点后第i位置的权重P-i= 1/(i+1)! ,i>=0。

例如:最大的4位小数是(0.1234)_f , (0.1234)_f = 1/2!+2/3!+3/4!+4/5! = 119/120 = 0.991666666.....

至此,阶乘数的小数系统也构造完毕。并且,我们可以得出一个有趣的级数:

Σn/(n+1)! = 1 , 其中Σ是对n是从1到正无穷求和。 他的意义很明确,就是(0.123456......)_f = 1,正如十进制中的0.999999......=1一样。

大胆的,鉴于上述小数和整数权重表示的统一,我们可以定义负数的阶乘:

(-n)! = 1/(n+1)! , 其中n>=0。

这里我们发现,0!是符合这个公式的:0!=1/1!=1。则阶乘数系第i 位置的权重Pi=i! ,i是任意整数。对于整阶乘数,实际上在最低位置右边还有一个“隐藏位置”,该位置的数值只能是0,权重是0!=1,因而无计数意义,我们可以把它想象成小数点,小数点右边就是小数系统,很完美的合在一起:

(n,n-1,...21.123456......)_f = (n+1)! , 对应十进制是9999.9999...=10000。

说明:这里负数的阶乘的定义是根据对称扩展而来,能够吻合0的阶乘且能够完善阶乘数系的表示,暂时没有发现它对其它组合公式有什么扩展贡献。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格&#8203;十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有