🦔

ABC377-E の帰納法による証明

2024/10/27に公開

本記事はABC377-E (Permuate K times 2)の解説で説明されている

求める答えは (P_i^{2^k})_iです。

の帰納法による証明です。

サンプル1において、i → P_iに辺を張ったグラフを書くと、以下のようなグラフとなります。

たとえば、K = 3のとき、証明すべき命題が真であるとすると、最終的な列の1番目の値となるのは、1頂点1から8回移動した頂点である6になります。これはサンプルの出力例と一致しています。他の頂点についても同様に成り立ちます。

K\ge0とします。また、解説にある操作によって得られるグラフのうち、ある1つの連結成分・ある1つの頂点についてのみ記します。他の連結成分についても同様にすることで、証明することができます。

  1. K=0のとき成り立つことを示す
    K = 0とは、入力として与えられる列をそのまま出力するという操作を意味します。
    構築したグラフの定義から、頂点番号iから2^0 = 1だけ移動するとP_iとなります。したがって、帰納法の仮定で得られる列と、構築すべき列は一致することが示せます。

  2. K = kのとき成り立つと仮定して、K = k+1のときも成り立つことを示す
    解説の操作で得られるグラフの連結成分が、l, mを含んでいると仮定します。(1 \le l, m \le N)本解説の表記を採用すると、k回目の操作後、以下のような状態になっています。

    ここで、例えばP_l^{2^k} = mであったとします。このとき、k+1回目の操作における頂点lの移動先は、k回目の操作におけるm番目の値、即ちP_m^{2^k}です。
    帰納法の仮定から、lから2^k回移動するとP_l^{2^k} = mに移動し、mからさらに2^k回移動することでP_m^{2^k}に到達します。したがって、lからP_m^{2^k}までの移動にかかる総数は

    2^k + 2^k = 2^{k+1}

    となり、頂点lにおいて、k+1回目の移動においても帰納法の仮定が成り立つことが示せます。他の頂点・他の連結成分についても同様に示すことができるので、全体でK = k+1のときも成り立つことが示せました。

1, 2より、

求める答えは (P_i^{2^k})_i

であることを示すことができました。

Discussion