コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

利用者:Mikoaisa/sandbox


符号化はそれぞれの位置ごとに逆転を数えることで行える。

また、次のような方法でインプレースに行うこともできる(ただし、現実的には単純に数える以上に効率的であるわけではない)。

この方法では、まず各要素を昇順にソートしたときの0から始まるインデックスへと置き換える。そして左から右へ順に、各エントリxについて、それより右でかつxより大きいエントリから1を引くことを繰り返す。 たとえば、B, F, A, G, D, E, Cは1, 5, 0, 6, 3, 4, 2という数列に置き換えられ、次のように処理される。

こうして、全エントリを処理し終わって得られた最後の行がレーマー符号である。 デコードはこの逆を行えばよい。右から左へ各エントリxについて、それより右にあるx以上のエントリに1を足すことを繰り返す。