SlideShare a Scribd company logo
1 of 53
Download to read offline
アルゴリズムデザイン
                第1章まとめ
                             中村 成洋
                          ネットワーク応用通信研究所



Powered by Rabbit 0.5.9
今日の
 話
アルゴリズムデザイン




             2/52
アルゴリズムデザイン
 定価 15,750円
 とにかく分厚い
 鈍器
 従来のアルゴリズム本とは違う
   アルゴリズムを紹介するだけではない



                       3/52
今日はこの本
の第一章のま
とめをやりま
  す.
今日の話
 序文
 安定マッチング




           5/52
序文
アルゴリズム
を学ぶと何が
 嬉しいか?
アルゴリズムデザインの解
 色んな所の根本にアルゴリズム的な考えは
 あるよ
 アルゴリズムを知ってると色んな物が見えて
 くるよ
 「アルゴリズムを知ってたおかげで大病院に
 就職できました!」
  ニューヨークの○○さん談


                    8/52
従来のアルゴリズム本
 サーチ
 ソート
 技法のみしか記載されていない!




                   9/52
アルゴリズムだけ知ってても
駄目だよ
現実的なプログラミングでは...
 「これこれを探索して!」
 「じゃb-search使えますね!」
   いや,ないない!

 きれいにまとまった数学的な形をした問題と
 してやってこない
                      10/52
アルゴリズム的な思考とは
二つの基本要素からなる
 問題の中の数学的に綺麗な核を見つける
  石山からダイヤの原石をみつける

 適切なアルゴリズム設計技法を見極める
  適切に研磨し,カットする




                    11/52
アルゴリズムデザインでは
2つのアクションに、手法を提供する
 複雑な計算問題から、問題の定式化を発見
 する手法を紹介
 定式化に基づく、効率よいアルゴリズムの設
 計する手法を紹介




                    12/52
安定マッチング
安定マッチングは好例
 問題が自然に生じた
 定式化が明快
 アルゴリズムも簡単
これから説明していきます


               13/52
問題の背景
 1962年
 David Gale & Lloyd Shapley
   数理経済学者




                              14/52
David Gale




             15/52
Lloyd Shapley




                16/52
問題提起
 大学入試
 就職活動
これらのプロセスを自己規制的であるように設
計できるだろうか?
(自己規制的:裏取引とか制限できないか
なー)


                      17/52
具体例
夏期インターンの話
 中村君は大手の電話会社「N」から内定
 数日後,ベンチャー企業の「H」から内定
 中村君は「H」の方が良かった.




                       18/52
具体例
夏期インターンの話
 「N」の内定をキャンセル.
 「N」は店員が割れを気にして別の佐藤君に
 声を掛ける
 佐藤君は地元企業「F」から内定を貰ってい
 た.でも「N」の方が
 佐藤君は「F」の内定をキャンセルして「N」を
 受ける.
                     19/52
これ
なんて
カオス?
問題点
すべての人が利己的であった
 中村君も佐藤君も会社も利己的
  利己的な考えはカオスの序章




                  21/52
利己的にならなければ
夏期インターンの話
 中村君は大手の電話会社「N」から内定
 数日後,ベンチャー企業の「H」から内定
 中村君,これを断る
  「ごあいにくさま!」




                       22/52
この問題をア
ルゴリズムに
落としてみま
  しょう!
問題の
定式化
問題が複雑
 応募者は一つの企業を求める
 各企業は複数の応募者を採用
  定員オーバー
  定員割れ

 応募者がすべての企業に応募するわけでも
 ない


                  25/52
的確な単純化
的確な単純化
 問題の本質を損なわないように
 より一般的な問題に容易に拡張可能なよう
 に




                  26/52
単純化
 n人の応募者
 n社の企業
 各応募者はすべての企業へ応募
 各企業は最終的に1人の応募者を採用
とする.


                     27/52
もっと分かりやすい問題に
n人の男性とn人の女性の結婚問題
 n人の男性の集合
  M = {m_1 ... m_n}

 n人の女性の集合
  W = {w_1 ... w_n}




                      28/52
もっと分かりやすい問題に
n人の男性とn人の女性の結婚問題
 M×W
     m∈M かつ w∈W からなる順序対(m, w)の集合
     nのn乗になり凄い数

 S
     M×Wの部分集合


                             29/52
マッチング
部分集合S中の順序対
 MとWの各要素について、それ含む対は高々
 1個な状態
   (多くて1個ある状態)

 夫婦になれた人もいれば,なれなかった人
 もいる
マッチング(matching)と呼ぶ

                     30/52
完全マッチング
  MとWの各要素について、それ含む対はちょ
  うど1個の状態
  各人がちょうど1人の異性と夫婦になる状態
    多重婚もなし

完全マッチング(perfect matching)と呼ぶ



                               31/52
好意順
 各男性 m∈M は好きな女性にランクを付け
 る
 m は w より w' が好き

             m1 --- w2
                 |--w3
                 +--w1




                         32/52
好意順を作ると不安定性を
導ける
 夫婦(m, w)と(m', w')を考える
   実は m は w より w' が好き
   実は w' は m' より m が好き

 この結婚は自己規制的ではない
不安定性をもつペア

                         33/52
目標
 不安定性をもつペアを作らずに完全マッチン
 グさせること
  不満のない夫婦を
  不満のないインターンシップを

 つまり安定なマッチング(安定マッチング)



                    34/52
例1


m と w は好き同士
つまり (m, w), (m', w') が安定マッチング




                                35/52
例1


(m', w), (m, w')にしてしまうと..
  m と w は好き同士
  m, w はそれぞれのパートナーから離れたい!
     不安定性のペアである

                            36/52
例2


この場合,好みが互いに逆になっている.
 (m, w), (m', w')
    二人の男性は満足

 (w, m'), (w', m)
    二人の女性は満足
                      37/52
例2


この場合は二つの異なる安定マッチングがある.
安定マッチングは唯一とは限らない(*これ重要*)




                      38/52
安定マッチ
ングアルゴ
 リズム
安定マッチングアルゴリズム
 Gale-Shapleyアルゴリズム
 G-Sアルゴリズム




                      40/52
安定マッチングアルゴリズム
 最初はみんな未婚
 未婚の男性 m が一番好きな人 w にプロ
 ポーズ
 プロポーズを受けた w は一応婚約しておく
 (m, w)
 他の未婚の男性 m' が一番好きな人 w に
 プロポーズ

                      41/52
安定マッチングアルゴリズム
 w は m と m' どっちが好きか判断
 w は m との婚約を破棄, m' と婚約
 自由な身の人がいなくなるとアルゴリズム
 終了
  完全マッチング,婚約は結婚へ




                         42/52
安定マッチングアルゴリズム
 While すべての女性にはプロポーズしていない自由の身の男性 m がいる
   そのような男性 m を選ぶ
   w を m の好意順リストで m がまだプロポーズしていない女性の中で, 最も好きな女性とする
   m が w プロポーズする
   If w が自由な身である then
     (m, w) は婚約する
   Else
     w は現在 m'と婚約しているとする
     If w は, m より m'が好きである then
        m は自由な身で在り続ける
     Else
        (w は m'より m が好きである)
        (m, w) は婚約する
        m'は自由な身になる
     Endif
   Endif
 Endwhile
 婚約のペアの集合 S を返す.




                                                 43/52
アルゴリズ
ムの解析
アルゴリズムの終了時に返さ
れる S は完全マッチングであ
るか?
 終了時に m はすべての女性にプロポーズ
 済み
 自由な m はいない
 つまり完全マッチングである

                    45/52
Sは安定マッチングである
か?
Sに不安定性のペアがあると仮定する




                    46/52
不安定性のペア


不安定性のペアとは (m, w)と(m', w')に対して
  m は w' > w
  w は m > m'
  m と w' が好き同士


                          47/52
こういうペア
が存在しう
るだろうか?
不安定性のペアが存在する
と仮定


(m, w)ということは最後に m は w にプロポー
ズした
その前に m は w' にプロポーズしただろうか?
しなかったとすると w > w' になり,好意順と矛
盾する                     49/52
不安定性のペアが存在する
と仮定


プロポーズしたとすれば w' が断った事になる
しかし w' は m > m' のため断るはずがない
つまり (m, w'),(m', w) のペアになる
不安定性のペアが存在する仮定は矛盾する
                  50/52
G-Sアルゴリズムの特徴
 男性を優遇する不公平性がある
  好意順が完全に食い違うときは男性が一番好き
  な女性と結婚できる

 G-Sアルゴリズムはプロポーズを受ける側が
 不満足な結果になる
  男性がプロポーズすると男性が不満足
  女性がプロポーズすると男性が不満足


                      51/52
おわり
           第一章で27p
           全体で730pほどある
           1/27程度(先は長い)
    (第2章に続く)




                          52/52
Powered by Rabbit 0.5.9

More Related Content

What's hot

Ohp Seijoen H20 08 Jfreechart
Ohp Seijoen H20 08 JfreechartOhp Seijoen H20 08 Jfreechart
Ohp Seijoen H20 08 Jfreechartsesejun
 
Are You Enjoy Ruby 1 Day
Are You Enjoy Ruby 1 DayAre You Enjoy Ruby 1 Day
Are You Enjoy Ruby 1 DayKeisuke Hata
 
結構化程式設計
結構化程式設計結構化程式設計
結構化程式設計David Tang
 
広告代理店様用Ad Local媒体資料
広告代理店様用Ad Local媒体資料広告代理店様用Ad Local媒体資料
広告代理店様用Ad Local媒体資料guestd1d6539
 
曹操、中原に覇を称える
曹操、中原に覇を称える曹操、中原に覇を称える
曹操、中原に覇を称えるgunyouak
 
だいたい30分で分かるオブジェクト指向
だいたい30分で分かるオブジェクト指向だいたい30分で分かるオブジェクト指向
だいたい30分で分かるオブジェクト指向Anto Mioyama
 
もっと仕事で使うRuby
もっと仕事で使うRubyもっと仕事で使うRuby
もっと仕事で使うRubyKentaro Goto
 
仕事で使うRuby
仕事で使うRuby仕事で使うRuby
仕事で使うRubyKentaro Goto
 
地図データの紹介
地図データの紹介地図データの紹介
地図データの紹介You&I
 
インドネシア人介護福祉士候補者を対象とする 初級からの専門日本語教育研修プログラム
インドネシア人介護福祉士候補者を対象とする 初級からの専門日本語教育研修プログラムインドネシア人介護福祉士候補者を対象とする 初級からの専門日本語教育研修プログラム
インドネシア人介護福祉士候補者を対象とする 初級からの専門日本語教育研修プログラムkansaicenter
 
Presentation Pattern
Presentation PatternPresentation Pattern
Presentation Patternryohji ikebe
 
The First Introduction To Gtd In tugboat.GTD ver.0.8.6
The First Introduction To Gtd In tugboat.GTD ver.0.8.6The First Introduction To Gtd In tugboat.GTD ver.0.8.6
The First Introduction To Gtd In tugboat.GTD ver.0.8.6autumn_dream
 
More...Task In tugboat.GTD ver.0.8.6
More...Task In tugboat.GTD ver.0.8.6More...Task In tugboat.GTD ver.0.8.6
More...Task In tugboat.GTD ver.0.8.6autumn_dream
 
Agile Estimating And Planning(J)
Agile Estimating And Planning(J)Agile Estimating And Planning(J)
Agile Estimating And Planning(J)Yasui Tsutomu
 
大规模SOA系统中的分布事务处理 (DTP By Alipay Cheng Li)
大规模SOA系统中的分布事务处理 (DTP By Alipay Cheng Li)大规模SOA系统中的分布事务处理 (DTP By Alipay Cheng Li)
大规模SOA系统中的分布事务处理 (DTP By Alipay Cheng Li)Dahui Feng
 
NECビッグローブ/ビジネス事業部 グループマネージャー 山本氏
NECビッグローブ/ビジネス事業部 グループマネージャー 山本氏NECビッグローブ/ビジネス事業部 グループマネージャー 山本氏
NECビッグローブ/ビジネス事業部 グループマネージャー 山本氏loftwork
 

What's hot (20)

Ohp Seijoen H20 08 Jfreechart
Ohp Seijoen H20 08 JfreechartOhp Seijoen H20 08 Jfreechart
Ohp Seijoen H20 08 Jfreechart
 
3
33
3
 
Are You Enjoy Ruby 1 Day
Are You Enjoy Ruby 1 DayAre You Enjoy Ruby 1 Day
Are You Enjoy Ruby 1 Day
 
BRXbox
BRXboxBRXbox
BRXbox
 
結構化程式設計
結構化程式設計結構化程式設計
結構化程式設計
 
広告代理店様用Ad Local媒体資料
広告代理店様用Ad Local媒体資料広告代理店様用Ad Local媒体資料
広告代理店様用Ad Local媒体資料
 
曹操、中原に覇を称える
曹操、中原に覇を称える曹操、中原に覇を称える
曹操、中原に覇を称える
 
だいたい30分で分かるオブジェクト指向
だいたい30分で分かるオブジェクト指向だいたい30分で分かるオブジェクト指向
だいたい30分で分かるオブジェクト指向
 
もっと仕事で使うRuby
もっと仕事で使うRubyもっと仕事で使うRuby
もっと仕事で使うRuby
 
Future Of TV
Future Of TVFuture Of TV
Future Of TV
 
仕事で使うRuby
仕事で使うRuby仕事で使うRuby
仕事で使うRuby
 
地図データの紹介
地図データの紹介地図データの紹介
地図データの紹介
 
インドネシア人介護福祉士候補者を対象とする 初級からの専門日本語教育研修プログラム
インドネシア人介護福祉士候補者を対象とする 初級からの専門日本語教育研修プログラムインドネシア人介護福祉士候補者を対象とする 初級からの専門日本語教育研修プログラム
インドネシア人介護福祉士候補者を対象とする 初級からの専門日本語教育研修プログラム
 
Konseputo
KonseputoKonseputo
Konseputo
 
Presentation Pattern
Presentation PatternPresentation Pattern
Presentation Pattern
 
The First Introduction To Gtd In tugboat.GTD ver.0.8.6
The First Introduction To Gtd In tugboat.GTD ver.0.8.6The First Introduction To Gtd In tugboat.GTD ver.0.8.6
The First Introduction To Gtd In tugboat.GTD ver.0.8.6
 
More...Task In tugboat.GTD ver.0.8.6
More...Task In tugboat.GTD ver.0.8.6More...Task In tugboat.GTD ver.0.8.6
More...Task In tugboat.GTD ver.0.8.6
 
Agile Estimating And Planning(J)
Agile Estimating And Planning(J)Agile Estimating And Planning(J)
Agile Estimating And Planning(J)
 
大规模SOA系统中的分布事务处理 (DTP By Alipay Cheng Li)
大规模SOA系统中的分布事务处理 (DTP By Alipay Cheng Li)大规模SOA系统中的分布事务处理 (DTP By Alipay Cheng Li)
大规模SOA系统中的分布事务处理 (DTP By Alipay Cheng Li)
 
NECビッグローブ/ビジネス事業部 グループマネージャー 山本氏
NECビッグローブ/ビジネス事業部 グループマネージャー 山本氏NECビッグローブ/ビジネス事業部 グループマネージャー 山本氏
NECビッグローブ/ビジネス事業部 グループマネージャー 山本氏
 

Viewers also liked

名古屋Ruby会議02 LT:Ruby中級への道
名古屋Ruby会議02 LT:Ruby中級への道名古屋Ruby会議02 LT:Ruby中級への道
名古屋Ruby会議02 LT:Ruby中級への道Shigeru UCHIYAMA
 
Rubyで操るAWS 第67回Ruby関西 勉強会
Rubyで操るAWS 第67回Ruby関西 勉強会Rubyで操るAWS 第67回Ruby関西 勉強会
Rubyで操るAWS 第67回Ruby関西 勉強会Takuro Sasaki
 
JavascriptでRubyの作り方
JavascriptでRubyの作り方JavascriptでRubyの作り方
JavascriptでRubyの作り方Shuyo Nakatani
 
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby Book
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby BookRuby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby Book
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby BookTadashi Saito
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerTakuro Sasaki
 
RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版
RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版
RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版宏治 高尾
 
東方紅魔郷AI
東方紅魔郷AI東方紅魔郷AI
東方紅魔郷AIaki33524
 

Viewers also liked (7)

名古屋Ruby会議02 LT:Ruby中級への道
名古屋Ruby会議02 LT:Ruby中級への道名古屋Ruby会議02 LT:Ruby中級への道
名古屋Ruby会議02 LT:Ruby中級への道
 
Rubyで操るAWS 第67回Ruby関西 勉強会
Rubyで操るAWS 第67回Ruby関西 勉強会Rubyで操るAWS 第67回Ruby関西 勉強会
Rubyで操るAWS 第67回Ruby関西 勉強会
 
JavascriptでRubyの作り方
JavascriptでRubyの作り方JavascriptでRubyの作り方
JavascriptでRubyの作り方
 
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby Book
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby BookRuby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby Book
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby Book
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
 
RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版
RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版
RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版
 
東方紅魔郷AI
東方紅魔郷AI東方紅魔郷AI
東方紅魔郷AI
 

More from Narihiro Nakamura

More from Narihiro Nakamura (20)

Symbol GC
Symbol GCSymbol GC
Symbol GC
 
RUBYLAND
RUBYLANDRUBYLAND
RUBYLAND
 
Ruby's GC 20
Ruby's GC 20Ruby's GC 20
Ruby's GC 20
 
桐島、Rubyやめるってよ
桐島、Rubyやめるってよ桐島、Rubyやめるってよ
桐島、Rubyやめるってよ
 
Rubyによる本気のGC
Rubyによる本気のGCRubyによる本気のGC
Rubyによる本気のGC
 
Fxxking gc.c
Fxxking gc.cFxxking gc.c
Fxxking gc.c
 
Parallel worlds of CRuby's GC
Parallel worlds of CRuby's GCParallel worlds of CRuby's GC
Parallel worlds of CRuby's GC
 
Parallel worlds of CRuby's GC
Parallel worlds of CRuby's GCParallel worlds of CRuby's GC
Parallel worlds of CRuby's GC
 
GC FAQ
GC FAQGC FAQ
GC FAQ
 
G1GCへ伸びていた「いばらの道」
G1GCへ伸びていた「いばらの道」G1GCへ伸びていた「いばらの道」
G1GCへ伸びていた「いばらの道」
 
CRubyGCの並列世界
CRubyGCの並列世界CRubyGCの並列世界
CRubyGCの並列世界
 
円環の理(Garbage Collection)
円環の理(Garbage Collection)円環の理(Garbage Collection)
円環の理(Garbage Collection)
 
地獄のGC本スピンオフ
地獄のGC本スピンオフ地獄のGC本スピンオフ
地獄のGC本スピンオフ
 
シャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできることシャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできること
 
われわれは、GCをX倍遅くできる
われわれは、GCをX倍遅くできるわれわれは、GCをX倍遅くできる
われわれは、GCをX倍遅くできる
 
GCが止まらない
GCが止まらないGCが止まらない
GCが止まらない
 
GC本をGCしないための100の方法
GC本をGCしないための100の方法GC本をGCしないための100の方法
GC本をGCしないための100の方法
 
GC生誕50周年を祝って
GC生誕50周年を祝ってGC生誕50周年を祝って
GC生誕50周年を祝って
 
GC本のツクリカタ
GC本のツクリカタGC本のツクリカタ
GC本のツクリカタ
 
シャイなRubyistにできること
シャイなRubyistにできることシャイなRubyistにできること
シャイなRubyistにできること
 

AlgorithmDesign01