読者です 読者をやめる 読者になる 読者になる

最大値関数と符号関数と行列式の美しい関係

雑記

最大値関数と符号関数. その織り成す美しい関係に注目しましょう.

絶対値関数を用いて最大値関数を表す

最大値関数とは, 次の関数のことです(ここでは実数のみ扱います).
\mathrm{max}\{x,y\} = \begin{cases} x & (x > y) \\ x = y & (x = y) \\ y & (x < y) \end{cases}
この関数, 3つの(実質2つの)場合分けになっていますが, 実は絶対値関数を用いると一つの式で書くことができます.
\mathrm{max}\{x,y\} = \frac{x+y}2 + \frac{|x-y|}2
数直線上ではxyの中点から, xyの距離の半分を足す, と言った具合です.

では, 3つの最大値関数はどうなるでしょう.
\mathrm{max}\{x,y,z\} = \begin{cases} x & (y \le x \wedge z \le x) \\ y & (z \le y \wedge x \le y) \\ z & (x \le z \wedge y \le z) \end{cases}
最大値関数は畳み込んで定義することができますので, 次のようになります.
\begin{eqnarray} \mathrm{max}\{x,y,z\} &=& \mathrm{max}\{\mathrm{max}\{x,y\},z\} \\ &=& \mathrm{max}\left\{ \frac{x+y}2 + \frac{|x-y|}2, z  \right\} \\ &=& \frac{\frac{x+y}2 + \frac{|x-y|}2+z}2 + \frac{\left|\frac{x+y}2 + \frac{|x-y|}2-z\right|}2 \\ &=& \frac{{x+y} + {|x-y|}+2z}4 + \frac{|{x+y} + {|x-y|}-2z|}4\end{eqnarray}
なんだか対称式じゃないし, あまり綺麗じゃありません. 無理して対称式にすることはできますが, 項が増えて汚いです.

符号関数を用いて最大値関数を表す

次のような関数を考えます.
x\cdot \frac{1+\mathrm{sgn}{(x-y)}}2 = \begin{cases} x & (x > y) \\ \frac x 2 & (x = y) \\ 0 & (x < y) \end{cases}
これはxの方が大きい時に限って, xの効果を発揮するような関数です. \mathrm{sgn}(0)はここでは0と定義しましょう. yの効果を発揮する関数と足し合わせると,
 \begin{eqnarray}x\cdot \frac{1+\mathrm{sgn}{(x-y)}}2 + y \cdot \frac{1+\mathrm{sgn}{(y-x)}}2 &=& \begin{cases} x + 0 & (x > y) \\ \frac x 2 + \frac y 2 & (x = y) \\ 0 + y & (x < y) \end{cases} \\ &=& \mathrm{max}\{x,y\}\end{eqnarray}
つまり, いかなる条件でも
 \mathrm{max}\{x,y\} = x\cdot \frac{1+\mathrm{sgn}{(x-y)}}2 + y \cdot \frac{1+\mathrm{sgn}{(y-x)}}2
が成立することが分かりました. これが, 最大値関数の符号関数を用いた表現です. この表現, 実は先程の絶対値の表現と全く同じものです. x\mathrm{sgn}{(x)} = |x|が成立するからです. しかし敢えて符号関数を用いることは, 3つの最大値への足がかりとなります.

3つの最大値を考えましょう. 先程と同様, xの効果を発揮する関数を考えます.
x\cdot\frac{1+\mathrm{sgn}{(x-y)}}2\cdot\frac{1+\mathrm{sgn}{(x-z)}}2 = \begin{cases} x & (y < x \wedge z < x) \\ 0 & (x < y \vee x < z) \end{cases}
こういう関数をy, zに関しても考えて足せばいいだけです.
\begin{eqnarray}\mathrm{max}\{x,y,z\} &=& x\cdot\frac{1+\mathrm{sgn}{(x-y)}}2\cdot\frac{1+\mathrm{sgn}{(x-z)}}2 \\ &+& y\cdot\frac{1+\mathrm{sgn}{(y-z)}}2\cdot\frac{1+\mathrm{sgn}{(y-x)}}2 \\ &+& z\cdot\frac{1+\mathrm{sgn}{(z-x)}}2\cdot\frac{1+\mathrm{sgn}{(z-y)}}2 \end{eqnarray}
この式は, x=y\ne zとその巡回の時は成立しますが, x=y=zの時は成立しません.
(\mathrm{rhs}) = \frac 3 4 x \quad (x = y = z)
2変数の時はx=yでも成立したけど, 今回はそうは行きませんでした. とは言え, そういう特殊な場合を除いて対照的な式で書けたのは, 良いことです. なぜなら, 次の一般的な式を得ることができるからです. (添字は\mathrm{mod}\,nで巡回させます)
\mathrm{max}\left\{x_1,x_2,\ldots,x_n\right\} = \sum_{k=1}^n \left[x_k\prod_{l=k+1}^{k+n-1}\frac{1+\mathrm{sgn}(x_k-x_{l})}2 \right] \quad\quad \left(x_i \ne x_j (i \ne j) \right)
ここでもやはり, 「同じものはない」という仮定を置いています. よくよく調べると, ある補正項を用いて, 次のように書けることが分かりました.
\mathrm{max}\left\{x_1,x_2,\ldots,x_n\right\} = \frac{2^{m-1}}{m}\sum_{k=1}^n \left[x_k\prod_{l=k+1}^{k+n-1}\frac{1+\mathrm{sgn}(x_k-x_{l})}2 \right]
ここでmとは, 同着で最大値となる個数のことです. 例えば{1, 2, 2}ならm=2, {2, 2, 2}ならm=3となります. 美しい式ですね.

行列式を用いて最大値関数を表す

驚くべきことに, 符号関数表現は行列式に書きなおすことができます. 逆に下の行列式を展開したらさっきの符号関数による表現になります.
\mathrm{max}\{x,y\} = - \frac 1 2 \left|\begin{array}{ccc}x & 1 & 1 \\ y & -1 & 1 \\ 0 & \mathrm{sgn}(x-y) & 1 \end{array}\right|
或いは, 次の式も成り立ちます.
\mathrm{max}\{x,y\} = \frac 1 2 \left|\begin{array}{ccc}x & \mathrm{sgn}(x-y) & 1 \\ y & 1 & \mathrm{sgn}(y-x) \\ 0 & 1 & 1 \end{array}\right|
3つの最大値も次のように書くことができます.
\mathrm{max}\{x,y,z\} = - \frac 1 4 \left|\begin{array}{cccc} x & \mathrm{sgn}(x-y) & \mathrm{sgn}(x-z) & 1 \\ y & \mathrm{sgn}(y-z) & \mathrm{sgn}(y-x) & 1 \\ z & \mathrm{sgn}(z-x) & \mathrm{sgn}(z-y) & 1 \\ 0 & 1 & 1 & 1 \end{array}\right| \qquad \left((x-y)(y-z)(z-x)\neq 0 \right)
非常に美しいです. 鳥肌が立ちそうです. 同じものがあったら成り立たないけど, この美しさのもとでそんなものは何でもないです. この行列式を展開したら符号関数の2乗が出てくるので, 同じものはないという仮定のもとでそれを1とすると, さっきの符号関数による式と一致します. 例えばxが一番大きいとすると, 行列のその行は\left(\begin{array}x&1&1&1\end{array}\right)となって, その1の連続が一番下の行とうまく消えるんですね.

この式からの類推で, 2変数の最初の方の行列の真ん中の列に\mathrm{sgn}(x-y)を掛けたくなる気持ちは物凄くよく分かりますが, なんか余計な符号関数が全体にかかって綺麗じゃありません.
\mathrm{max}\{x,y\} = - \frac 1 2 \mathrm{sgn}(x-y) \left|\begin{array}{ccc}x & \mathrm{sgn}(x-y) & 1 \\ y & \mathrm{sgn}(y-x) & 1 \\ 0 & 1 & 1 \end{array}\right|

4つ, 更に一般の個数の最大値も同じように行列式で表せるか, という疑問が出てきますが, これについては僕は分かりません. 4つの場合についてはプログラムで探索したのですが, あらゆる条件に於いて一つの行列式で表せる, みたいなそういうことは無いと思われます. 大小関係で言うと24通りありますが, そのうちの幾通りかで成立するかという勝負になり, 最高で20通りで成立する式があるんです. おそらく「置換」に関する云々かんぬんだと思います. (あやふや無責任

最小値

最大値が分かれば最小値は簡単です. なぜなら,
\mathrm{min}\{x,y\} = - \mathrm{max}\{-x,-y\}
が成立するからです.
\mathrm{min}\{x,y\} = \frac{x+y}2 - \frac{|x-y|}2
\mathrm{min}\{x,y\} = - \frac 1 2 \left|\begin{array}{ccc}x & 1 & 1 \\ y & -1 & 1 \\ 0 & \mathrm{sgn}(y-x) & 1 \end{array}\right|
\mathrm{min}\{x,y\} = \frac 1 2 \left|\begin{array}{ccc}x & \mathrm{sgn}(x-y) & -1 \\ y & -1 & \mathrm{sgn}(y-x) \\ 0 & -1 & -1 \end{array}\right|
\mathrm{min}\{x,y,z\} = - \frac 1 4 \left|\begin{array}{cccc} x & \mathrm{sgn}(x-y) & \mathrm{sgn}(x-z) & 1 \\ y & \mathrm{sgn}(y-z) & \mathrm{sgn}(y-x) & 1 \\ z & \mathrm{sgn}(z-x) & \mathrm{sgn}(z-y) & 1 \\ 0 & -1 & -1 & 1 \end{array}\right| \qquad \left((x-y)(y-z)(z-x)\neq 0\right)

更に, 3変数の場合は, 2番目に大きい数を次のように求めることができます.
\begin{eqnarray}\mathrm{mid}\{x,y,z\} &=& x + y + z - \mathrm{max}\{x,y,z\} - \mathrm{min}\{x,y,z\} \\ &=& x+y+z+ \frac 1 2 \left|\begin{array}{cccc} x & \mathrm{sgn}(x-y) & \mathrm{sgn}(x-z) & 1 \\ y & \mathrm{sgn}(y-z) & \mathrm{sgn}(y-x) & 1 \\ z & \mathrm{sgn}(z-x) & \mathrm{sgn}(z-y) & 1 \\ 0 & 0 & 0 & 1 \end{array}\right| \\ &=& x+y+z+ \frac 1 2 \left|\begin{array}{cccc} x & \mathrm{sgn}(x-y) & \mathrm{sgn}(x-z)  \\ y & \mathrm{sgn}(y-z) & \mathrm{sgn}(y-x)  \\ z & \mathrm{sgn}(z-x) & \mathrm{sgn}(z-y) \end{array}\right| \qquad \left((x-y)(y-z)(z-x)\neq 0\right)\end{eqnarray}

まとめ

4変数以上の最大値関数を行列式で書けるかどうかは分かってません. 残念ながら書けないと思います. 実は行列式表現というのは, 符号関数の表現よりも項数が多くて式をややこしくしてるんです... それにしても, 3変数の行列式, 非常に美しいです. もし何か分かったらコメント下さい. 何も分からなくてもコメント下さい.