中介数,顾名思义起到中介的作用,是从一个数字到另外一个数字的中间数字。这里说的中介数,特指在
组合数学的全排列生成方法中的中介数,它是一个排列与其序号之间桥梁。
在组合数学的全排列生成问题里,一个排列与其序号之间是一一对应的关系,在某些全排列生成算法中,如字典序法等,定义了从序号到排列的构造规则,但是二者之间直接转换比较复杂,因此引入了中介数的概念,中介数顾名思义是起到中介的作用,它的定义如下:
每个排列的序号都可以表示为a1*(n-1)!+a2*(n-2)!+a3*(n-3)!+...+an-1*1!,而a1, a2, a3,...,an-1的某个排列就是该排列的中介数。
说到中介数,则要提到
递增进位制数和递减进位制数(Wiki: Decreasing Carry)。
进位制/位置计数法是一种记数方式,故亦称进位记数法/位值计数法,可以用有限的数字符号代表所有的数值。可使用数字符号的数目称为基数(radix)或底数,基数为n,即可称n进位制,简称n进制。现在最常用的是十进制,还有二进制,十六进制,八进制,甚至是七进制。
在一些全排列生成算法中,利用中介数来构造排列。例如在字典序法(见
全排列)中规定,中介数记录的是当前数字右边比当前数字小的数字的个数,该中介数就是
递增进位制数。若使用字典序法来生成1234的全排列,通过中介数(221)↑构造排列的过程如下:
其实中介数体现的是模型转换的思想:当一个问题不好直接求解的时候,可以把它转化为与它等价的一个问题,通过解转换后的问题来得到问题最终的解。这似乎也给我们的生活带来一些启示,当“山穷水复疑无路”,也许换个角度,换个思路,就会“柳暗花明又一村”。