Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

写像 12 相

Oct 24, 2019 北海道大学競技プログラミングサークル勉強会
※文字が見えない場合は、ダウンロードするかフルスクリーンにしてご覧ください

  • Be the first to comment

写像 12 相

  1. 1. 写像 12 相を題材にした, 基本的な数え上げ問題に対す るアプローチ Hokkaido Univ. monkukui
  2. 2. 写像 12 相とは • 写像 12 相: • 個の玉を 個の箱に入れる問題の総称 • e.g. 個の区別できるボールを 個の区別できる箱へ入れる ときの通り数は?? • どうして写像と呼ばれるか • 写像: 集合の各元を、他の集合の元のいずれかへ対応づけること •ボールの箱への割り当てと考えると, これは写像 n k 3 2 !2 Ba Ba Ba Bo Bo
  3. 3. 達成目標 • 写像 12 相を題材に, 基本的な数え上げ問題へのア プローチを考える • AtCoder のレートが上がることが見込める !3
  4. 4. 準備 • 制約は以下で統一されているものとする • ,1 ≤ n ≤ 1000 1 ≤ k ≤ 1000 !4
  5. 5. 目次 !5 玉 箱 制限なし 1 個以内 1 個以上 区別する 区別する 区別しない 区別する 区別する 区別しない 区別しない 区別しない
  6. 6. 目次 !6 玉 箱 制限なし 1 個以内 1 個以上 区別する 区別する ここ 区別しない 区別する 区別する 区別しない 区別しない 区別しない
  7. 7. Balls and Boxes 1 • [問題] 難易度: 茶 • 個の区別できるボールを, 個の区別できる箱に入れるとき、 可能な入れ方の総数を求めよ. • ただし、箱に対する制限はないものとする. • e.g. • [入力] , • [出力] n k n = 2 k = 3 9 !7 Ba Ba Bo Bo Bo
  8. 8. Balls and Boxes 1 • [入力] ,n = 2 k = 3 !8 1 2 1 2 3 1 2 3
  9. 9. Balls and Boxes 1 • が答え • 時間計算量 kn Θ(n) !9
  10. 10. 目次 !10 玉 箱 制限なし 1 個以内 1 個以上 区別する 区別する ここ 区別しない 区別する 区別する 区別しない 区別しない 区別しない kn
  11. 11. Balls and Boxes 2 • [問題] 難易度: 茶 • 個の区別できるボールを, 個の区別できる箱に入れるとき、 可能な入れ方の総数を求めよ. • 各箱に入れることのできるボールの数は高々 個とする. • e.g. • [入力] , • [出力] n k 1 n = 2 k = 3 6 !11 Ba Ba Bo Bo Bo
  12. 12. Balls and Boxes 2 • 入れる箱を 個選んで • ボールを入れる n !12 Ba Ba Bo Bo Bo
  13. 13. Balls and Boxes 2 • 入れる箱を 個選んで • ボールを入れる n !13 Ba Ba Bo Bo Bo
  14. 14. Balls and Boxes 2 • 入れる箱を 個選んで • ボールを入れる n !14 Ba Ba Bo Bo Bo
  15. 15. Balls and Boxes 2 • が答え • 時間計算量 kPn Θ(n) !15
  16. 16. 目次 !16 玉 箱 制限なし 1 個以内 1 個以上 区別する 区別する ここ 区別しない 区別する 区別する 区別しない 区別しない 区別しない kn kPn
  17. 17. Balls and Boxes 3 • [問題] 難易度: 青 • 個の区別できるボールを, 個の区別できる箱に入れるとき、 可能な入れ方の総数を求めよ. • どの箱にも、 つ以上のボールを入れる必要がある. • e.g. • [入力] , • [出力] n k 1 n = 4 k = 3 36 !17 Ba Ba Ba Ba Bo Bo Bo
  18. 18. Balls and Boxes 3 • とする. • に対して, 箱 にボールが入らないような入れ方の 総数. • どの箱にも、 つ以上のボールを入れる入れ方の総数. • 包除原理より, となる. これを愚直に計算すると, かかってしまう. W ⊆ {1,2,...,k} N(W) := i ∈ W i X := 1 X = ∑ W⊆{1,2,...,k} (−1)|W| N(W) Ω(2k ) !18
  19. 19. Balls and Boxes 3 • 対称性を利用する • 例えば, と は同じになる. • は の濃度にのみ依存した関数である. • 箇所の箱にボールが入らないような入れ方の総数 となる. • で計算可能 N({1,2}) N({1,5}) N(W) W P(i) := i X = ∑ W⊆{1,2,...,k} (−1)|W| N(W) = P(0) − P(1) + P(2) + … + (−1)k P(k) P(i) =n Cr (k − i)n !19
  20. 20. Balls and Boxes 3 !20 前処理: Θ(k) 本処理: Θ(k) nCr や べき乗の処理は 以下の検索ワードでググりましょう (繰り返し 2 乗法, 逆元)
  21. 21. 目次 !21 玉 箱 制限なし 1 個以内 1 個以上 区別する 区別する 区別しない 区別する ここ 区別する 区別しない 区別しない 区別しない kn kPn k ∑ i=0 (−1)i kCi(k − i)n
  22. 22. Balls and Boxes 4 • [問題] 難易度: 緑 • 個の区別できないボールを, 個の区別できる箱に入れると き、可能な入れ方の総数を求めよ. • ただし、箱に対する制限はないものとする. • e.g. • [入力] , • [出力] n k n = 5 k = 3 21 !22 Ba Ba Ba Ba Bo Bo Bo Ba
  23. 23. Balls and Boxes 4 • (区別できない)棒とボールの並び替えに帰着 !23 Ba Ba Ba Ba Bo Bo Bo Ba
  24. 24. Balls and Boxes 4 • が答え • 時間計算量 n+k−1Ck−1 Θ(k) !24
  25. 25. 目次 !25 玉 箱 制限なし 1 個以内 1 個以上 区別する 区別する 区別しない 区別する ここ 区別する 区別しない 区別しない 区別しない kn kPn n+k−1Ck−1 k ∑ i=0 (−1)i kCi(k − i)n
  26. 26. Balls and Boxes 5 • [問題] 難易度: 茶 • 個の区別できないボールを, 個の区別できる箱に入れると き、可能な入れ方の総数を求めよ. • 各箱に入れることのできるボールの数は高々 個とする. • e.g. • [入力] , • [出力] n k 1 n = 3 k = 5 10 !26 Ba Ba Ba Bo Bo Bo BoBo
  27. 27. Balls and Boxes 5 • 入れる箱を 個選べば良いn !27 Ba Ba Ba Bo Bo Bo BoBo
  28. 28. Balls and Boxes 5 • が答え • 時間計算量 kCn Θ(k) !28
  29. 29. 目次 !29 玉 箱 制限なし 1 個以内 1 個以上 区別する 区別する 区別しない 区別する まだ半分.. 区別する 区別しない 区別しない 区別しない kn kPn n+k−1Ck−1 kCn k ∑ i=0 (−1)i kCi(k − i)n
  30. 30. Balls and Boxes 6 • [問題] 難易度: 茶 • 個の区別できないボールを, 個の区別できる箱に入れると き、可能な入れ方の総数を求めよ. • どの箱にも、 つ以上のボールを入れる必要がある. • e.g. • [入力] , • [出力] n k 1 n = 5 k = 3 6 !30 Ba Ba Ba Ba Bo Bo Bo Ba
  31. 31. BaBa Balls and Boxes 6 • とりあえずボールを ずつ入れちゃう1 !31 Ba Ba Ba Bo Bo Bo
  32. 32. BaBa Balls and Boxes 6 • とりあえずボールを ずつ入れちゃう • 棒のボールを並べる 1 !32 Ba Ba Ba Bo Bo Bo
  33. 33. Balls and Boxes 6 • が答え • 時間計算量 n−1Cn−k Θ(n) !33
  34. 34. 目次 !34 玉 箱 制限なし 1 個以内 1 個以上 区別する 区別する 区別しない 区別する 区別する 区別しない ??? ここ 区別しない 区別しない kn kPn n+k−1Ck−1 kCn n−1Cn−k k ∑ i=0 (−1)i kCi(k − i)n
  35. 35. Balls and Boxes 8 • [問題] 難易度: 灰 • 個の区別できるボールを, 個の区別できない箱に入れると き、可能な入れ方の総数を求めよ. • 各箱に入れることのできるボールの数は高々 個とする. • e.g. • [入力] , • [出力] n k 1 n = 5 k = 10 1 !35 Ba Ba Ba Ba Bo Bo Bo Ba BoBoBo Bo Bo BoBo
  36. 36. Balls and Boxes 8 • か が答え • 時間計算量 0 1 O(1) !36
  37. 37. 目次 !37 玉 箱 制限なし 1 個以内 1 個以上 区別する 区別する 区別しない 区別する 区別する 区別しない ??? ここ 区別しない 区別しない kn kPn n+k−1Ck−1 kCn n−1Cn−k or0 1 k ∑ i=0 (−1)i kCi(k − i)n
  38. 38. Balls and Boxes 9 • [問題] 難易度: 青 • 個の区別できるボールを, 個の区別できない箱に入れると き、可能な入れ方の総数を求めよ. • どの箱にも、 つ以上のボールを入れる必要がある. • e.g. • [入力] , • [出力] n k 1 n = 4 k = 3 6 !38 Ba Ba Ba Ba Bo Bo Bo
  39. 39. Balls and Boxes 9 • 個の区別できるボールをちょうど 個グループに 分ける方法を考えれば良い. • これは以下の漸化式で求めることができる. n k S(n, k) = S(n − 1,k − 1) + kS(n − 1,k) !39 1 5 4 3 2 8 6 9 7 S(9,4)
  40. 40. Balls and Boxes 9 • 玉 が単独でグループを形成するとき 残り 個の玉を グループに分ける方法は 通り •玉 が単独でない場合 以外の 個について グループに分ける方法が 通りあり, を入れるグループが 個あるので 通り 1 n − 1 k − 1 S(n − 1,k − 1) 1 1 n − 1 k S(n − 1,k) 1 k kS(n − 1,k) !40 1 32 N…
  41. 41. Balls and Boxes 9 • が答え • 時間計算量 S(n, k) O(nk) !41
  42. 42. 目次 !42 玉 箱 制限なし 1 個以内 1 個以上 区別する 区別する 区別しない 区別する 区別する 区別しない ここ 区別しない 区別しない kn kPn n+k−1Ck−1 kCn n−1Cn−k or0 1 S(n, k) k ∑ i=0 (−1)i kCi(k − i)n
  43. 43. Balls and Boxes 7 • [問題] 難易度: 青 • 個の区別できるボールを, 個の区別できない箱に入れると き、可能な入れ方の総数を求めよ. • ただし、箱に対する制限はないものとする. • e.g. • [入力] , • [出力] n k n = 5 k = 3 5 !43 Ba Ba Ba Bo Bo Bo BoBo
  44. 44. Balls and Boxes 7 • 個の区別できるボールをちょうど 個以下グルー プに分ける方法を考えれば良い. • これは以下の漸化式で求めることができる. n k B(n, k) = S(n,0) + S(n,1) + … + S(n, k) !44 15 4 3 2 8 6 97 B(9,5)
  45. 45. Balls and Boxes 7 • が答え • 時間計算量 B(n, k) O(nk) !45
  46. 46. 目次 !46 玉 箱 制限なし 1 個以内 1 個以上 区別する 区別する 区別しない 区別する 区別する 区別しない 区別しない 区別しない もう少し kn kPn n+k−1Ck−1 kCn n−1Cn−k or0 1 S(n, k)B(n, k) k ∑ i=0 (−1)i kCi(k − i)n
  47. 47. Balls and Boxes 10 • [問題] 難易度:青 • 個の区別できないボールを, 個の区別できない箱に入れると き、可能な入れ方の総数を求めよ. • ただし、箱に対する制限はないものとする. • e.g. • [入力] , • [出力] n k n = 5 k = 3 5 !47 Ba Ba Ba Ba Bo Bo Bo Ba
  48. 48. Balls and Boxes 10 • 自然数 を 個 の 以上の整数の和で表す方法の 通り数を考えれば良い. (ただし, 足す順番を入れ替えて同じ ものは同一視する) • これは以下の漸化式で求めることができる. • n k 0 P(n, k) = P(n, k − 1) + P(n − k, k) !48 P(5,3) = 5 5 = 0 + 0 + 5 = 0 + 1 + 4 = 0 + 2 + 3 = 1 + 1 + 3 = 1 + 2 + 2
  49. 49. Balls and Boxes 10 • 分解に を含むもの場合 一つの を取り除いて, を 個の 以上の 整数和に分解する問題に帰着することができるので 通り •分解に を含まない場合 個の整数が全て 以上なので, それぞれ 引くことで を 個の 以上の整数和に分解する問題に帰着できるので 通り 0 0 n k − 1 0 P(n, k − 1) 0 k 1 1 n − k k 0 P(n − k, k) !49 5 = 0 + 0 + 5 5 = 1 + 1 + 3
  50. 50. Balls and Boxes 10 • が答え • 時間計算量 P(n, k) O(nk) !50
  51. 51. 目次 !51 玉 箱 制限なし 1 個以内 1 個以上 区別する 区別する 区別しない 区別する 区別する 区別しない 区別しない 区別しない もう少し kn kPn n+k−1Ck−1 kCn n−1Cn−k or0 1 S(n, k)B(n, k) P(n, k) k ∑ i=0 (−1)i kCi(k − i)n
  52. 52. Balls and Boxes 11 • [問題] 難易度: 灰 • 個の区別できないボールを, 個の区別できない箱に入れると き、可能な入れ方の総数を求めよ. • 各箱に入れることのできるボールの数は高々 個とする. • e.g. • [入力] , • [出力] n k 1 n = 5 k = 10 1 !52 Ba Ba Ba Ba Bo Bo Bo Ba BoBoBo Bo Bo BoBo
  53. 53. Balls and Boxes 11 • か が答え • 時間計算量 0 1 O(1) !53
  54. 54. 目次 !54 玉 箱 制限なし 1 個以内 1 個以上 区別する 区別する 区別しない 区別する 区別する 区別しない 区別しない 区別しない ラスト!!! kn kPn n+k−1Ck−1 kCn n−1Cn−k or0 1 S(n, k)B(n, k) P(n, k) or0 1 k ∑ i=0 (−1)i kCi(k − i)n
  55. 55. Balls and Boxes 12 • [問題] 難易度:青 • 個の区別できないボールを, 個の区別できない箱に入れると き、可能な入れ方の総数を求めよ. • どの箱にも、 つ以上のボールを入れる必要がある. • e.g. • [入力] , • [出力] n k 1 n = 10 k = 5 7 !55 Ba Ba Ba Ba Bo Bo Bo Ba Bo Bo BaBaBaBaBa
  56. 56. Balls and Boxes 12 • が答え • 時間計算量 P(n − k, k) O(nk) !56
  57. 57. 参考資料 • AOJ 写像 12 相問題集 • 「写像12相」を総整理! ∼ 数え上げ 問題の学びの宝庫 ∼ • 高校数学の美しい物語 !57

    Be the first to comment

  • tanzaku

    Oct. 24, 2019

Oct 24, 2019 北海道大学競技プログラミングサークル勉強会 ※文字が見えない場合は、ダウンロードするかフルスクリーンにしてご覧ください

Views

Total views

2,247

On Slideshare

0

From embeds

0

Number of embeds

84

Actions

Downloads

14

Shares

0

Comments

0

Likes

1

×