形式陈述
对全序字母表上的有限词 w = w 1 ⋯ w n ,沿用严格下降 理路 Eulerian 数与排列下降 Eulerian number · Eulerian polynomial · 排列下降数 以插入最大元素证明下降数递推,推导Eulerian多项式并用n=4分位置核验十一项。 ,定义
Des ( w ) = { i < n : w i > w i + 1 } , maj ( w ) = ∑ i ∈ Des ( w ) i , inv ( w ) = | { ( i , j ) : i < j , w i > w j } | . 相等字母既不构成下降,也不构成逆序。固定每个字母出现的次数,记全部不同重排组成的有限集合为 R 。存在一个保持重数、保持末字母的双射 Φ : R → R ,使
inv ( Φ ( w ) ) = maj ( w ) . 因此两种统计在每个重排类上等分布。下面定义的 Φ 是 Foata 第二基本变换 。既有Foata 基本变换 理路 Foata 基本变换 Foata fundamental transformation · Fundamental bijection on permutations 通过标准循环书写与纪录位置切分构造互逆双射,证明循环数对应纪录数、下降数对应亏位并迁移到超越统计。 擦除标准循环括号,处理循环、纪录和亏位;它不是这里的逐字分块旋转。
构造 γ x ( r ) :若非空词 r 的末字母 ≤ x ,在每个 ≤ x 的字母后切开;否则在每个 > x 的字母后切开。每块写成 U j y j ,把末字母搬到块首,得到 y j U j ,再按原块序拼接。规定 γ x ( ∅ ) = ∅ ,递归定义
Φ ( ∅ ) = ∅ , Φ ( w x ) = γ x ( Φ ( w ) ) x . 切口条件包含末项,所以没有未封闭尾块;U j 可以为空。
直觉
主指标把每次下降的位置全部加起来,逆序数则比较所有远近位置。把一个新字母 x 接到长为 m 的前缀 w 后,主指标只可能增加零或 m 。分块旋转的任务正是把像的逆序增量也精确做成这两个数。
每一步只重新排列已有字母,最后再添 x ,所以重数与末字母保持。特别是 Φ ( w ) 的末字母就是 w 的末字母,构造采用的分支确实知道原词是否出现新下降。
两个分支都要核算
设 r = Φ ( w ) ,| w | = m 。若末字母 ≤ x ,各块 U j y j 中 U j 的每项都 > x ≥ y j 。把 y j 搬到前面恰删去 | U j | 个逆序。追加 x 又产生一个与每个 > x 的旧字母配对的逆序,共 ∑ j | U j | 个,净增零。
若末字母 > x ,各块中 U j 的每项都 ≤ x < y j 。旋转恰增加 | U j | 个逆序;追加 x 又与每块唯一的 > x 字母 y j 产生逆序。若块数为 b ,净增
∑ j | U j | + b = m . 不同块之间的字母没有互换块序,跨块逆序总数不变。以上正好匹配
maj ( w x ) − maj ( w ) = m 1 { w m > x } . 从空词归纳便证明统计不变量。
从首字母判定逆分支
给输出 v x ,先取走末字母 x 。若 v 空,前缀也空。否则看 v 的首字母 :首字母 ≤ x 时,在每个 ≤ x 字母前切开;首字母 > x 时,在每个 > x 字母前切开。各块必为 y j U j ,把首字母移到末尾,恢复 r 。继续求 Φ − 1 ( r ) ,最后接回 x 。
这两个分支的输出首项分别属于 ≤ x 与 > x 两个不交类别,因而可识别。块内其余字母全部属于另一类,切口也唯一。每次递归长度减一,所以逆算法终止;左右旋转和追加、移除互相抵消,证明双射,不只是证明“算出的逆序数正确”。
例子与边界
取 w = 314265 。它在位置 1 , 3 , 5 下降,故主指标为九,而原逆序数只有四。逐字状态为
3 ⟶ 31 ⟶ 314 ⟶ 3412 ⟶ 34126 ⟶ 634125. 其中追加 2 时,314 的末项 4 > 2 ,切为 3 | 14 ,旋转成 3 | 41 ,接二得到 3412 。最后追加 5 时,34126 的末项 6 > 5 ,整段 34126 只有末项大于五,所以是一块,右旋并接五得到 634125 。
图片加载失败 逐字旋转与逆操作保留可恢复的块边界 输出的逐位右侧较小数为 ( 5 , 2 , 2 , 0 , 0 , 0 ) ,和为九。用Lehmer 逆序码 理路 排列逆序编码与字典序编号 Lehmer code · Permutation ranking and unranking · Inversion code 用右侧较小元素数构造排列的混合进位码,证明确定性编解码和字典序rank/unrank,再复用逆序生成乘积。 作这个独立检查,不把统计相等误当逐字相等。
完整逆算从 634125 开始:
取末项五,63412 首项六大于五;左旋唯一块得到 34126
取末项六,3412 首项三不大于六;各字母单独一块,保持 3412
取末项二,341 首项三大于二;在三、四前切为 3 | 41 ,左旋得到 314
取末项四,31 分成两个单块;再取末项一,单块三保持;最后取三
取出的末项依次为 5 , 6 , 2 , 4 , 1 , 3 ,反读恢复 314265 。
重复符号也能处理:2121 的主指标为四,状态 2 , 21 , 212 , 2211 给出四个逆序。另一个必要的等号测试是 2112 :追加第二个一时须把 21 作为一块,得到 121 ,最终 Φ ( 2112 ) = 1212 ,逆序数一等于原主指标。若把分支的 ≤ 偷换成 < ,相等末项可能没有合法尾块,整个算法就不再是上述双射。
空词、单字词、全相同词均固定,两个统计都为零。Φ 一般不是对合:Φ ( 314265 ) = 634125 ,逆向应执行明确的左旋算法,不能假定再应用一次前向变换即可。
推论与应用
对互异标签的排列,既有逆序码已证明
∑ w ∈ S n q inv ( w ) = [ n ] q ! := ∏ j = 1 n ( 1 + q + ⋯ + q j − 1 ) . 本页的新增结论是同一个多项式也等于 ∑ w q maj ( w ) 。由此主指标分布满足
M n , r = ∑ j = 0 n − 1 M n − 1 , r − j , M 0 , 0 = 1 , 越界下标取零。四阶系数 1 , 3 , 5 , 6 , 5 , 3 , 1 复用旧逆序分布;它不是新的 Eulerian 下降总数表。固定重复字母的闭式则由Gaussian 多项式与多重集加权计数 理路 Gaussian 二项式与多重集加权计数 Gaussian binomial coefficient · q-binomial coefficient · q-multinomial coefficient · Gaussian polynomial 以二元词逆序和矩形内分拆定义q二项式,证明递推、乘积及有限q二项式定理,再推导重复字母的逆序多项式。 给出。
还有一个可精确保留的条件。对 w ∈ S n ,定义逆下降集合
在 左 侧 IDes ( w ) = Des ( w − 1 ) = { i : i + 1 在 i 左侧 } . Φ 保持这个集合。逐步考察一对连续数值 i , i + 1 :若新字母就是其中之一,它在原词与像中都追加于所有旧字母之后;若两者都已经出现,新字母 x 与它们不同,不可能严格夹在连续数值之间。它们便同属 ≤ x 或 > x 一侧,而每块旋转只让一个异侧端点穿过另一侧的一段,不改变任一侧内部的相对次序。两者的左右先后保持,归纳即得。
直接实现可迭代维护当前词,每次扫描并复制一个长至 m 的前缀,前向与逆向总计 1 + 2 + ⋯ + ( n − 1 ) = O ( n 2 ) 次比较和字母移动。只保留当前词、下一词及逆向取出的末项列表时,额外工作空间为 O ( n ) ;若保存全部中间状态供展示,则要 O ( n 2 ) 空间。递归且每层保留整份词的实现也可能占用二次空间,不能沿用迭代版本的空间界。
因此在任意固定逆下降集合的排列子类中,主指标与逆序仍等分布。它 不 保持原下降集合:314265 有三次下降,像 634125 只有两次。对任意禁位、固定原下降集合或其他受限子类,必须先证明该类在变换下封闭,才可转移分布。下降数与主指标的联合计数 理路 Carlitz q-Eulerian 联合多项式 Carlitz q-Eulerian polynomial · Euler–Mahonian distribution · Descent major-index polynomial 按插入缝的主指标增量推导下降与主指标联合递推,并由稳定排序与差分参数给出加权Worpitzky生成函数。 另需自己的加权插入证明。
参考资料