包除原理はなぜ「足して引いて」を繰り返すのか ― ベン図からメビウス関数へ
包除原理のオーバーカウント修正の本質を指標関数を使って証明します.完全順列の数え上げや競プロ典型問題への応用,メビウス反転公式への発展も解説します.
包除原理は「足して引いてまた足して…」という一見不思議な操作で正しい数え上げを行います.2集合のベン図なら直感的に理解できますが,集合が3つ,4つ,…と増えるとなぜ交互の符号が正しい結果を与えるのか,その本質はどこにあるのでしょうか?
1 2集合の場合 ― ベン図の直感
これはベン図を描けば一目瞭然です.ではの部分が2回数えられるので,1回分を引いて修正します.
2 一般の定式化
展開すると,
3 指標関数による証明
4 完全順列(攪乱順列)
5 競プロ典型問題 ―以下で互いに素な数
6 メビウス反転公式への伏線
7 まとめ
包除原理は「各要素がちょうど1回数えられる」ことを二項定理 で保証します
完全順列 は包除原理の美しい応用で, です
競プロでは 以下で条件を満たす数の個数を求める典型パターンがあります
包除原理はメビウス反転の特殊ケースであり,より一般的な反転公式に拡張されます
次の記事では,数列を「関数」に変換して見通しをよくする母関数のアイデアを紹介します.