大きな数字を小さな数字に変換する。①
今回は、もう一つの関数紹介です。
以前に複数次元を1次元に変換する方法を記事にしました。
今回の関数と前回の関数↓がそろってようやくできるインジケーターがあるので今回もその準備の記事です。
前に紹介した関数ではトイレットペーパーをヒントに
2つのデータを一つの数字で表すということを
実現しています。
しかし、それには課題があります。
代償としてバカみたいに大きな数字となってしまいます。
交換関数SW
そこで大きな数字を小さく変換するような関数
が必要となりました。
(実は今回紹介する関数SWは
sma符号のアイディアのもとにもなっています。)
そこ↑でも書いたのですが
数字には保存則のようなものが成り立ちます。
したがって次元を減らそうとすれば代わりに数字が大きくなるのです。
しかし、次元をへらしたまま数字も小さくもどすことも可能です。
符号に転嫁すれば良いのだ。
小さくしたいのだから引き算をしてやるだけです。
引き算をすることで、特定の領域ではゼロを突き破ってマイナスの値になり
符号に仕事が割り振られることになり、負担を符号に転嫁した格好です。
一応pine
SW1(n,p)=>
iff(n>=0,n-p,n+p)
この変換を
繰り返すことができれば、より値は小さくなります。
なので
複数段階変換できるように
機能を拡張します。
しかしこれがまた難儀なので
記事を分けます。
②につづく