たし算とかけ算の間には
という関係がありますが(伝われ)、実はこれが と にも言えそうなのです。つまり
も言えそう、という感じ。
これは自分で作った問題を解く過程で発見したもので、先に予想が立ってから証明しました。必要は発明の母とはよく言ったものですね。
まずは結果から
結果から言うと、こうなります。
ゴツい。
等号の左右で見比べてみると、個あった がたった1個の にまとまっています。嬉しいです。
これが成り立つことを示します。そう、みんな大好き証明タイムです。
補題ってかっこいい
定理1を示すにあたり、以下の補題を考えます。
が消えています。あとでこれを繰り返し使うことで をまとめていくので、これが本質的な部分です。
以下の補題の証明は昔どこかのサイトで見たもののほぼそのままです。どこだったか覚えがなくてリンクを貼れないこと、引用元を明示できないことが残念ですが、必要なので使わせていただきます。どなたか心当たりがある方は教えていただけるとありがたいです。
証明
とおくと
なので
となる。ところで
なので
元の記号に戻すことで
が得られた。
定理1の証明
続いて定理1の証明です。めちゃくちゃゴツいです。
証明
なので
これを繰り返し適用することで
このままでも+ととの関係として十分面白いのですが、よく見ると一番右のは1をたしています。これではつまらないので、実用性を与えるために定理1を拡張します。
どんな数列でも足せる
定理1では1を足していました。定理1を拡張した定理2では任意の数列を足せるようにします。
とすると
がありませんが、内部ではがまとめられています。なので証明の中で定理1の証明で使った補題を再利用します。
紛らわしいですが、数列と添字数列は全く関係のないものであることに注意してください。
また、を形式的に数列ということにしましたが、これは定理の形の都合でから自然に定義されるもので、自動的にとなります。Σが並んでいるので、区別のために添字数列のようにまとめて扱いましたが、本来的に数列である必要性はありません。
よって、形式的な入れ替えが可能です。
定理2の証明
帰納法で示す。
ステップ1 のとき
ステップ2 のとき成り立つと仮定
するとのとき
式変形を続けると、
ここで補題を適用すると
これで定理1の拡張版である定理2が得られました。任意の数列を好きなだけ足し上げることができます。
ステップ2で足す順番を変えるところは、具体的に表を書いてみるとわかりやすいです。あとは技術的な問題なので、式をいじくり回すだけです。
実際に使ってみる
せっかくなので、フィボナッチ数列を例に定理2を使ってみます。
、 、とすると
愚直に足す
定理2を使う
一致しました。定理2を使った方がずっと楽に計算できました。素晴らしいです。
追記(2019/12/01)
先日大学で友達と一緒にお昼を食べていたら、
「特定のfor文のネストを線形時間で解けるようになる高速化アルゴリズムなんじゃない?」
という話が上がりました。
使う場面がどれだけあるかはさておいて、確かにm重ループの計算がO(Nm)からO(N)に削減できている気がします。
なかなか良い結果が得られたなぁとニヤニヤを深めました。