PDF File

 アルゴリズムデザイン
(エーバ タルドシュ) 著
(ジョン クラインバーグ) 浅野孝夫 浅野泰仁 小野孝男 平田富夫 訳
著者紹介
は 大学情報学科の教授である.彼は, 年
に から の学位を獲得している.以下の賞も受賞してい
る. , !"#
# ,$
#"#
!# ,# # %&' ( %%"
( ##!" "%,"% (")" (& #
%* #",#%
" (& # +
&) # %% )#&#.
の専門分野は,アルゴリズムに関する研究で,具体的には,ネットワーク構造と情
報の構造の分野と,情報科学,最適化,データマイニング,計算生物学への応用の分野に興味を
もっている.ハブとオーソリティを用いたネットワーク解析の彼の仕事は,現在のインターネッ
トサーチエンジンの発明の基礎となっている.,-- 年にこれらの業績で国際数学連合(./
から理論情報科学の優れた研究を成し遂げた研究者に贈られるネバンリンナ賞を受賞している.
0 " は 大学情報学科の教授である.彼女は 12 年に
+!
3 ' の $ )"# 市の +4#!4" 大学から の学位を獲得して
いる.彼女は,&% %&' ( #" %%" のメンバーで
あり, フェローでもある.以下の賞も受賞している. "5
# !"#
# , *" 6,"% (5
")" (& # 7 &8 %*8 #",
#%
" (& # +
&5
) # %% )#&#.
" の研究の関心は,グラフとネットワークに対するアルゴリズムの設計と解析が主と
なっている.彼女は,ネットワークフローアルゴリズムとネットワーク問題に対する近似アル
ゴリズムの研究で最もよく知られている.最近の彼女の研究には,アルゴリズム的ゲーム理論,
すなわち,利己的な関心を最優先するユーザーで構成される社会に対するシステムとアルゴリ
ズムの設計を研究する新分野領域に関係するものが多い.
目 次
詳細な解説付き問題の一覧
詳細な解説付きアルゴリズムの一覧
序文
第章
,
はじめに:いくつかの代表的問題
第一の問題:安定マッチング
五つの代表的な問題
解答付き演習問題
演習問題
ノートと発展文献
第章
アルゴリズム解析の基礎事項
,
計算容易性
,,
増加の漸近的オーダー
,:
,2
リストと配列による安定マッチングアルゴリズムの実装
,;
より複雑なデータ構造:優先順位付きキュー
よく現れる計算時間の復習
解答付き演習問題
演習問題
ノートと発展文献
第章
グラフ
:
:,
基本的定義と応用
::
:2
:;
キューとスタックを用いたグラフ走査
グラフの連結性とグラフ走査
二部グラフ性の判定:幅優先探索の応用
有向グラフの連結性
1
,,
,9
,
:2
2
2;
;2
:
;
9
9,
9
1;
11
:
有向無閉路グラフとトポロジカル順序付け
解答付き演習問題
演習問題
ノートと発展文献
第章
グリーディアルゴリズム
2
9
-,
2
2,
2:
区間スケジューリング:グリーディアルゴリズムの先進性
-2
遅延最小化スケジューリング:交換議論
,
1
22
グラフにおける最短パス
2;
2
最小全点木問題
29
クラスタリング
21
= 2
最適キャッシング:より複雑な交換議論
"* のアルゴリズムの実装:.5 データ構造
3 <& 符号とデータ圧縮
最小コスト有向木:多フェーズグリーディアルゴリズム
解答付き演習問題
演習問題
ノートと発展文献
第章
分割統治法
;
;,
;:
最初の漸化式:マージソートアルゴリズム
;2
;;
;
最近点対の発見
さらなる漸化式
反転数の数え上げ
整数の積の計算
畳込みと高速フーリエ変換
解答付き演習問題
演習問題
ノートと発展文献
第章
動的計画法
重み付き区間スケジューリング:再帰的手続き
,
:
2
;
9
動的計画法の原理:部分問題上での記憶化と反復
区分最小二乗法:多肢選択
部分集合和とナップサック:変数の追加
二次構造:区間上での動的計画法
系列アライメント
分割統治法による線形の領域の系列アライメント
1 グラフの最短パス
最短パスと距離ベクトルプロトコル
= - グラフの負閉路
,2
,
:9
2:
29
9
1;
11
9
,-
,-9
,-
,
,
,,,
,,2
,,
,:,
,:
,2,
,2
,;:
,;1
,;
,
解答付き演習問題
,92
演習問題
,91
,9
ノートと発展文献
第章
9
9,
9:
= 92
ネットワークフロー
最大フロー問題と 5 *" アルゴリズム
ネットワークの最大フローと最小カット
良い増加パスを選ぶ
プリフロープッシュ最大フローアルゴリズム
9;
最初の応用:二部グラフのマッチング問題
9
99
有向グラフと無向グラフにおける素パス
91
市場調査デザイン
最大フロー問題の拡張版
9 航空スケジューリング
9- 画像分割
9 プロジェクト選択
9, 野球優勝可能性消去
= 9: 続き:マッチング問題にコストを加える
解答付き演習問題
演習問題
ノートと発展文献
第章
と計算困難性
多項式時間リダクション
1
19
分割問題
11
数値問題
>ガジェット? を用いたリダクション:充足可能性問題
の定義
5完全問題
系列化問題
グラフ彩色問題
1 %5 と の非対称性
1- 計算困難な問題の部分的な分類
解答付き演習問題
演習問題
ノートと発展文献
第章
,
:
::
:1
:,1
:::
::1
:22
:2
:;:;2
:;9
:,
:1
:9
2-
1
1,
1:
12
1;
効率的な証明と
:-:-1
:クラス
を超える問題のクラス
クラス +
+ に属する困難な問題
限量化問題とゲームの多項式領域解法
2-2
22;
21
2,;
2:,
2:
22,
22
221
2;
2;
299
29
21
21:
2
計画問題の多項式領域解法
21;
;
+5完全性の証明
解答付き演習問題
22:
演習問題
2
ノートと発展文献
29
第 章 計算容易性の拡大
- 小さい点カバーの発見
-, 木の上での 5困難問題を解く
;-;-:
-: 円弧集合の彩色
;-9
;
;,
= -2 グラフの木分解
= -; 木分解の構成
解答付き演習問題
演習問題
ノートと発展文献
第 章 近似アルゴリズム
;:,
;:;
;:1
グリーディアルゴリズムと最適解に対する近似解の上界:負荷均等化問題への
適用
, センター選択問題
: 集合カバー:一般的なグリーディヒューリスティック
2 価格付け法:点カバーへの適用
; 価格付け法による最大化:素パス問題
線形計画法とラウンディング:点カバーへの適用
= 9 負荷均等化問題(再考):より高度な @ の応用
1 究極の近似保証:ナップサック問題
解答付き演習問題
演習問題
ノートと発展文献
第 章 局所探索
, 最適化問題の景観図
,, #)" アルゴリズムとシミュレーテドアニーリング
,: 3)A ニューラルネットワークへの局所探索の応用
,2 局所探索による最大カットの近似
,; 近傍関係の選択
= , 局所探索による分類
,9 最善反応行動と " 均衡
解答付き演習問題
演習問題
ノートと発展文献
;2,
;29
;;,
;;9
;:
;
;92
;1;1;
;19
;:
;
--2
-1
:
,
::,
:;
第 章 乱択アルゴリズム
: 第一の応用:競合の解消
:, 大域的最小カットを求める
:: ランダム変数と期待値
:1
2:
:2 B :5 に対する乱択近似アルゴリズム
:; 乱択分割統治法:中央値発見とクイックソート
: ハッシング:辞書の乱択実装
;,
;;
:9 最近点対を求める:乱択アプローチ
1
:1 乱択キャッシング
: < 限界
9
1:
:- 負荷均等化
: パケットルーティング
:, 背景:いくつかの基本的な確率の定義
1;
19
:
解答付き演習問題
9-2
9:
演習問題
ノートと発展文献
21
第 章 エピローグ:永遠に動作するアルゴリズム
参考文献
人名索引
問題索引
アルゴリズム索引
用語和(英)索引
用語英(和)索引
詳細な解説付き問題の一覧
問題 問題 安定マッチング 区間スケジューリング 問題 問題 問題 問題 問題 問題 問題 問題 問題 問題 $
問題 (
問題 +
問題 問題 問題 問題 問題 問題 問題 問題 問題 問題 問題 $
問題 $
問題 $
問題 $
問題 $
問題 $
重み付き区間スケジューリング 部グラフのマッチング 独立集合 競争的施設配置問題 !" #
問題
問題
問題
問題
問題 $
問題 $$
問題 $(
優先順位付きキューの実装 %" &
部グラフ性の判定 ''
トポロジカル順序付け ) *
区間分割 %
遅延最小化スケジューリング - #''
キャッシュ管理 最短パス ' %
最小全点木 )
./! データ構造 ./! 0 の実装
クラスタリング '
符号とデータ圧縮 ' 0 ''
最小コスト有向木 /' 1'
反転数の数え上げ ''
最近点対 '' % 2 %'
整数の積の計算 畳込み 区分最小二乗 #' 3'
部分集合和 ' 451 二次構造 451 " 系列アライメント 3 1 線形の領域の系列アライメント 3 1 # 最短パス ' %(問題 )
グラフの負閉路 5 "' 6
最大フロー 7 /!8
部グラフのマッチング (問題 )
辺素パス 9/0': %'
需要付き循環フロー 8 0 '
$
(
+
,+
(
+
(
$
+$
,
,$
,+
$
(
+
,,
(
(
下界のある需要付き循環フロー
8 0 ' #8 '
市場調査デザイン " 0'
航空スケジューリング 1 画像分割 詳細な解説付き問題の一覧
問題 $+
問題 $ ,
プロジェクト選択 %: 野球優勝可能性消去 ' 9 問題 $
問題 (
問題 (
問題 (
最小コスト完全マッチング /' %2 独立集合:決定版 点カバー:決定版 ;7 集合カバー:決定版 問題 (
問題 (
問題 (
集合パッキング:決定版 %<
充足可能性 '="> 1)
/充足可能性問題 /'="> /1)
問題 ($
問題 ((
問題 (+
問題 ( ,
回路充足可能性 '="
巡回セールスマン:決定版 ) ' ハミルトン閉路 ? "
ハミルトンパス ? %
問題 (
問題 ( 問題 ( 問題 ( /次元マッチング /0 ' グラフ彩色 6 % 部分集合和:決定版 ' (問題 )
(
,
,$
,(
,
+
$
開始時刻と期限をもつスケジューリング:決定版
問題 +
問題 +
問題 +
8 4' ) ' 0'
計画 %
限量化 /1) &= 1)> &1)
ゲーム 6 '
問題 ,
問題 ,
/点カバー /;7 円弧彩色 1'
問題 ,
問題 問題 問題 木分解 ) 0 '
負荷均等化 # センター選択 集合カバー $
問題 点カバー ;7 最大素パス 7 0': %'
一般化負荷均等化 6- # ナップサック @'<
,,
,(
$
(
$
(
?= ニューラルネットワークの安定状態図
= ?= 5 58<
最大カット 7 ラベル付け #
5' 均衡解 5' 93 競合の解消 4'
大域的最小カット 6 1A /1)
中央値発見 ! ハッシング ?'
最近点対 '' % 2 %'(問題 )
キャッシュ管理 (問題 )
負荷均等化 # (問題 )
パケットルーティング %< 4
,
,(
(
+
$
(
($
問題
問題
問題
問題
問題 問題 問題 問題 問題 問題 $
問題 (
問題 +
問題
問題
問題
問題
( > (
(
(
詳細な解説付きアルゴリズムの一覧
アルゴリズム アルゴリズム 安定マッチングアルゴリズム 1 部グラフ性判定アルゴリズム )' ''
アルゴリズム アルゴリズム トポロジカルソート ) 区間スケジューリングに対するグリーディアルゴリズム
アルゴリズム 6" 1 区間分割アルゴリズム % 1 アルゴリズム 最大遅延最小化スケジューリングアルゴリズム
1
2 - 7 #''
アルゴリズム 最適キャッシングアルゴリズム * 1 アルゴリズム アルゴリズム アルゴリズム $
アルゴリズム (
0:<' のアルゴリズム 0:<'B' 1 最小全点木アルゴリズム ) 1 クラスターリングアルゴリズム ' 1 最適な接頭語符号を構築する ?C のアルゴリズム
アルゴリズム +
最小コスト有向木アルゴリズム
アルゴリズム アルゴリズム アルゴリズム アルゴリズム アルゴリズム /' 1' 1 反転数の数え上げアルゴリズム '' 1 最近点対発見アルゴリズム '' % 1 整数積アルゴリズム 1 畳込み計算アルゴリズム 1 アルゴリズム アルゴリズム アルゴリズム アルゴリズム アルゴリズム $
アルゴリズム +
アルゴリズム $
アルゴリズム $
アルゴリズム $
アルゴリズム $
,
,
+(
,
,$
重み付き区間スケジューリングアルゴリズム:反復版
1 D 区分最小二乗法 #' 3' 1 部分集合和アルゴリズム ' 1 451 二次構造アルゴリズム 451 " 1 系列アライメントアルゴリズム 3 1 1 ,
(
+
系列アライメントアルゴリズム(線形領域版)
3 1 1
アルゴリズム (
,
重み付き区間スケジューリングアルゴリズム
1 アルゴリズム (
+
# 最短パスアルゴリズム(動的計画法版)
' %D 0" %
1 負閉路発見アルゴリズム 5 " 1 !/!<' アルゴリズム
スケーリング最大フローアルゴリズム 7/!8 1 +
$,
,
プリフロープッシュ最大フローアルゴリズム
%E8/%' 7 /!8 1 部グラフのマッチングアルゴリズム
1 (
(
詳細な解説付きアルゴリズムの一覧
アルゴリズム $
アルゴリズム $
アルゴリズム $$
辺素パスアルゴリズム 9/0': %' 1 需要付き循環フローアルゴリズム
1
,
2 8 0 '
下界のある需要付き循環フローアルゴリズム
1
アルゴリズム $(
アルゴリズム $+
アルゴリズム $ ,
アルゴリズム $
アルゴリズム $ アルゴリズム $ アルゴリズム +
アルゴリズム +
アルゴリズム ,
アルゴリズム ,
アルゴリズム ,
アルゴリズム
アルゴリズム
アルゴリズム
アルゴリズム
アルゴリズム
アルゴリズム
$
アルゴリズム
2 8 0 ' #8 '
市場調査デザインアルゴリズム " 0' 1 航空スケジューリングアルゴリズム 1 1 画像分割アルゴリズム 1 プロジェクト選択アルゴリズム %: 1 野球優勝可能性消去アルゴリズム ' 9 1 最小費用完全マッチングアルゴリズム
/' %2 1 &1) に対するアルゴリズム 1 2 &1)
計画アルゴリズム % 1 /点カバーアルゴリズム /;7 1 円弧彩色アルゴリズム /1 1 木分解アルゴリズム ) 0 ' 1 負荷均等化アルゴリズム # 1 センター選択アルゴリズム 1 集合カバーアルゴリズム 1 (
;7 1 D % 最大素パスアルゴリズム 7 0': %' 1 価格付け法アルゴリズム % 1 アルゴリズム 競合解消に対する乱択アルゴリズム
4 - 1
アルゴリズム アルゴリズム アルゴリズム アルゴリズム アルゴリズム $
アルゴリズム (
アルゴリズム +
$
ナップサック問題に対する多項式時間近似スキーム
アルゴリズム アルゴリズム アルゴリズム +
一般化負荷均等化アルゴリズム
%" /) 17 2 @'< % ?= ニューラルネットワークの安定状態図を求めるアルゴリズム
1 2 = ?= 5 58<
最大カットアルゴリズム 7 1 ラベル付けアルゴリズム # 1 アルゴリズム (
($
,
,
(
点カバーアルゴリズム:価格付け法
6- # 1 アルゴリズム
(
+
2 4'
(
,
,+
+
大域的最小カットに対する乱択アルゴリズム
4 - 1 2 6 1A /1) に対する乱択近似アルゴリズム
4 - 17 1 2 1A /1)
中央値発見アルゴリズム 1 2 ! ハッシュデータ構造の設計 0' 0 2 ?'
最近点対問題に対する乱択アプローチ
4 - 1 2 '' % 2 %'
マーク付けアルゴリズム < 1 乱択マーク付けアルゴリズム 4 - < 1 +
$$
(
パケットルーティングに対する乱択スケジューリングアルゴリズム
4 - 1
2 %< 4
+,
序文
アルゴリズム的な考え方は世の中に広く浸透してきている.実際,それは,情報科学分野は
もちろん,実社会の様々な状況からみても明らかである.インターネットのルーティングの標
準化において,大きな変更は何度か行われてきたが,それは,ある最短パスアルゴリズムの欠
点と,他のアルゴリズムの相対的な利点とを論議した結果として捉えることもできる.遺伝子
やゲノムの近似度を表現するのに生物学者が用いている基本的な概念も,アルゴリズム的な定
義を有している.現実の組合せ的オークションの実行可能性において経済学者が懸念する事項
は,部分的には,これらのオークションが,特殊な場合に計算不可能となるような探索問題を
含んでいることに起因している.このように,アルゴリズム的な概念は,伝統的な旧来の有名
な問題にのみ存在するのではなく,広範囲にわたる分野のいたるところで生じている新しい問
題において,ごく普通に反映されているのである.ユーザーに広告を提供する C社のシ
ステムは,本質的にはネットワークフローを用いてモデル化して問題を記述しているのだと,
C社の科学者がある日の昼食の談話で話してくれた.また,ニューヨーク市への旅行の途
中でたまたま出会った人からも,以前学生のときにアルゴリズムを学んでいたおかげで,現在
は,大病院における人員配置のマネージメントのコンサルタントとして働いている,というこ
とも聞いている.
重要な点は,アルゴリズムが単に多くの応用をもつということだけではない.アルゴリズム
的な考え方が,情報科学の全分野において,通常では見えなかったものまで見えてくるように
なるというような,強力なレンズとしての役割を果たしているということが,より深い意味で
重要なのである.このように,アルゴリズム的な問題が情報科学の核心部となっていることは
確かであるが,それらは,きれいにまとめられて数学的に正確な形式をした質問としてやって
くることは極めてまれなのである.むしろ,煩雑で応用に特化した細部がたくさん付いてくる
傾向があり,その一部は本質的であるが,他の一部は余分なものであったりするのである.結
果として,アルゴリズム設計の実際的な作業は,問題の中の,数学的にきれいな核となる部分
を見い出す仕事と,問題の構造に基づいた適切なアルゴリズム設計技法を見極める仕事という,
二つの基本的な構成要素からなっているのである.これら二つの構成要素は相互に関連し合っ
ている.すなわち,利用できる様々な設計技法に熟練すればするほど,この世界に氾濫してい
る煩雑な問題に潜むきれいな定式化に気づけるようになるのである.このように,アルゴリズ
ム的な考え方の最大の効用は,設定が整った問題の解を得られることだけにとどまるのではな
詳細な解説付きアルゴリズムの一覧
く,むしろ,アルゴリズム的な考え方に基づいて,潜んでいる問題を明快に表現する言語が獲
得でき,そしてさらなる展開への扉が開けるという点にあるのである.
したがって,本書では,様々な応用で生じる計算が必要となる問題に対して,まずその問題
を定式化することから始めて,複数あるアルゴリズム設計技法からどの技法を用いるべきかを
きちんと判断できる力を確立し,そして最終的にこれらの問題に対する効率的な解法を構築す
る,ということがアルゴリズムを設計するプロセス(過程)であるという立場をとって,アル
ゴリズムにアプローチしていく.情報科学におけるアルゴリズム的な考え方の役割を幅広く探
求していき,これらの考え方を,アルゴリズムを設計し解析できるように正確に定式化された
問題に関連づけていく.言い換えれば,これらの問題の動機付けとなっている潜在的な問題点
とは何なのか,そしてそれらを定式化する特定の方法はどのようにすれば選べるのか,あるい
は,さまざまな状況においてどの設計原理を適用すれば適切なのか,というようなことを解決
していくのである.
このようなことを考慮して,本書の目標は,計算を伴う様々な分野から生じる複雑な形式を
した問題からアルゴリズム的な問題の明快な定式化を発見する方法と,その定式化に基づいて
実際の問題に対する効率的なアルゴリズムを設計する方法に関する助言を提供することである
と言える.さらに,洗練されたアルゴリズムを理解するには,誤った出発点や袋小路も含めて,
単純な最初のアプローチから,最終的な解に至るまでの一連のアイディアを再構築するのが最
も良いということもしばしば経験されている.したがって,本書のアルゴリズム記述の形式は,
必ずしも問題の記述からアルゴリズムへ至る最短の道になっていないことも多い.著者らは同
僚とともに,これらの点について一生懸命熟考した結果,特定のある問題に対してはこのやり
方がより良いものであると確信している.
本書の概観
本書は,
( と , に対応する)プログラミング演習付きの標準的な情報科学基礎の , 単
位 , 科目を履修し,基礎的なアルゴリズム,木やグラフなどの操作,配列,リスト,キュー,
スタックなどの基本的なデータ構造のプログラムを作成して実行した経験を有する学生を念頭
に置いている.D, の両科目からアルゴリズム基礎の科目への橋渡しは,完全には標準
化されていないので,本書でのトピックスの扱いは,自己完結する形で取り上げている.すな
わち,本書で取り上げている入門的な部分のトピックスに関して,ある大学では D, の
両科目ですでに学習済みの場合もあるだろうし,他の大学ではアルゴリズム基礎の科目に入っ
ているということもあると思われる.したがって,そのようなトピックスは,復習として取り
上げることもできるし,新しいトピックスとして取り上げることも可能である.本書にそのよ
うなトピックスを含めたのは,予備知識を仮定せず,より広範囲の科目に柔軟に対応できるよ
うにと願っているからである.
上記の点を考慮して,情報科学や関連する分野にまたがる広い領域での問題を取り上げてア
ルゴリズム設計技法を展開している.実際,代表的な例を数例挙げると,システムやネットワー
クからの応用で生じる問題(キャッシング,スイッチング,インターネットでの内部ドメイン
ルーティング)
,人工知能から生じる問題(プランニング,ゲームプレーイング,3)A ネッ
トワーク)
,コンピュータービジョンからの問題(画像分割)
,データマイニング(変更点検出)
,
詳細な解説付きアルゴリズムの一覧
オペレーションズリサーチ(航空スケジューリング),計算生物学(系列アライメント,
二次構造)などを本書で取り上げている.
計算困難性の概念,特に,5完全性の概念は,本書では大きい役割を果たしている.これ
は,アルゴリズム設計のプロセスに対する著者らの考えに一貫するものである.実用上生じる
問題は,効率的に解を求められるときもあるが,一方で 5完全であるときもある.したがっ
て,新しく直面した問題に対して,その問題を本当にまじめに取り上げるのであれば,どちら
の状況になったとしても,対処できるようにしておくことが必要となる.実用から自然に生じ
る情報科学の問題は 5完全であることが多いので,そのような計算困難問題にうまく対応で
きる方法を開発することが,アルゴリズムの研究分野では極めて重要なテーマになっているの
である.本書では,このテーマを真剣に取り上げて議論している.実際,5完全であるよう
な問題に対して,5完全であることを発見することが最終目標ではなく,発見後はさらに,
近似アルゴリズム,局所探索のヒューリスティック技法,あるいは,計算容易な特別な構造の
可能性の追求が大切であると考えている.したがって,本書では,これら三つのアプローチを
詳細に取り上げ,議論している.
演習問題と解答付き演習問題
本書の特徴の一つは演習問題にある.すべての章に演習問題があり,全体で ,-- 以上の演習
問題になっている.これらの演習問題は,ほとんどすべてが 大学の授業の一環として,
実際にレポート課題や試験問題として取り上げたものである.演習問題は,本書の最も重要な
構成要素であり,各章で取り上げたテーマに沿うように段階的に構成されている.それらの演
習問題は,情報科学やそれ以外の関係する分野の応用から生じた問題が多いので,問題の詳細
な背景の説明も述べている.したがって,本文で述べた訓練もできるようなものにしている.
すなわち,最初に問題の本質を抽出して必要な記法を用いて数学的に定式化し,次にアルゴリ
ズムを設計し,そして最後に,そのアルゴリズムの解析を行って正当性を証明する訓練ができ
るようにしている(これらの演習問題のいずれに対しても,完全な解答とは,詳細なアルゴリ
ズム,計算時間の解析,正当性の証明からなるものと考えている)
.これらの問題は,異なる分
野の研究者との長年にわたる議論を経験して選んできたものであり,ある問題に対しては,副
産物として,
(もちろん努力すれば可能なものではあるが)これまでどこにも見られなかった興
味深いアルゴリズムを記述して残すこともできるようになったと言えるのである.
演習問題にどのように解答すればよいか迷うことがあるかもしれない.そこでその手助けと
して,各章に >解答付き演習問題? を 題あるいは , 題(2 章では : 題)取り上げ,解答の書き
方について述べている.これらの解答付き演習問題の解答における議論では,演習問題の完全
な正解以上のことを書き記している(言い換えると,演習問題がレポート課題として出された
ときに要求される満点の解答より,本質的に極めて詳細なものになっている)
.むしろ,本書の
他の節でも同様であるが,>解答付き演習問題? の節での議論は,この種の問題を深く考えて正
解を記述することができるような感性の育成を目的としていると見なしてもらえばよいだろう.
授業において,これらの演習問題をレポート課題として用いる際の注意を,, 点述べておき
たい.第一に,問題はほぼ難易度順に並べられている.もちろん,その並べ方はおおよその基
準に基づくものであるので,その順番を重大視しすぎないようにお願いしたい.実際,ほぼす
詳細な解説付きアルゴリズムの一覧
べての問題が自習用のレポート課題として作成したものであり,したがって,各章の大部分の
問題は,ほぼ同程度の難易度であるのである.第二に,最初の数題を除いて,演習問題はある
程度の時間をかけないと解けないような問題にしていることである.すなわち,そのような問
題に対しては,その章で取り上げたアルゴリズム技法とその問題の定式化との関係をまず明ら
かにし,その後必要とされるアルゴリズムを実際に設計することに,ある程度の時間をかける
ことを要求しているのである. 大学の学部の授業では,毎週これらの問題から : 題程
度をレポート課題としていた.
教育的工夫と補助教材
本書は,演習問題と解答付き演習問題の他にも,授業を進める上で役に立つ教育的工夫と補
助教材も多数備えている.
前にも注意したように,本書では,極めて多数の節において,アルゴリズム的な問題の定式
化,特に,その問題の背景と動機付けも含めた定式化,およびその問題に対するアルゴリズム
の設計と解析に力点をおいた記述をしている.このスタイルを明快にするために,これらの節
は,本書全体を通して,以下のように統一された一連の小節で構成されている.最初に,>問
題? の小節では,問題を説明しながら正確な定式化を与えている.次に,>アルゴリズム? の小
節では,適切なアルゴリズム技法を用いてアルゴリズムを実際に設計している.最後に,>ア
ルゴリズムの解析? では,設計したアルゴリズムの性質を明らかにし,アルゴリズムの計算時
間を解析している.本書では,これらの小節を鳥の羽のアイコンでハイライトを当てて示して
いる.問題の拡張やアルゴリズムのさらなる解析が望まれるときは,これらの議論のためにさ
らに小節を加えている.これらの構造を採用することにより,応用から生じる計算問題に対し
て,最初の問題の議論から始めて最終的にそれを解決する方法の詳細な解析までを,かなり統
一的なスタイルで与えるという目標が達成できていると確信している.
本書をサポートする補助教材も多数利用できる.すべての問題に対する解答付きの教員用マ
ニュアルも利用できる.さらに,%# 大学の ! E' により開発された講義スラ
イドも利用できる.これらの講義スライドは,本書の節の順に準じており,したがって,本書
に基づく講義の基礎教材としても用いることができる.これらのファイルは
か
ら手に入れることができる.教師用のログインアカウントやパスワードは >
? あるい
は >"? のホームページを探すか,近くの "5E"' 出版社に連絡すれば,手に入
れられる.
最後に,本書に対する感想やコメントを歓迎したい.特に,この程度に長い本ではよくありう
ることであるが,本書にも誤りがまだ残っているものと思われる.誤りに対するコメント等は,
*%"% にメールで知らせてもらえればと思っている.その際には,メッセージ
行に >(%*? の言葉を書いていてくれるようお願いしたい.
各章の概要
第 章は代表的なアルゴリズム的問題の紹介から始めている.そこでは,はじめに安定マッ
チング問題を取り上げている.この問題を介することで,他の抽象的な議論を用いるよりも,
詳細な解説付きアルゴリズムの一覧
アルゴリズム設計における基本的な問題点の提起がより具体的になり,明快に華麗にできるよ
うになると確信しているからである.実際,安定マッチング問題は,複雑な実世界から生じた
問題であるにもかかわらず,極めて自然な問題であり,したがって,問題の定式化も興味深い
形で記述でき,それを解く有効なアルゴリズムも驚くほど印象的に書けるのである.第 章の
残りの部分では,本書の後の章で取り上げるトピックスと深く関係している五つの >代表的な
問題? を議論している.これらの五つの問題は,独立集合問題の変種版あるいは特殊版と見な
すことができて,互いに密接に関係するものである.それらのうちで,一つはグリーディアル
ゴリズムで解け,一つは動的計画法で解け,一つはネットワークフローで解け,一つは独立集
合問題そのもので 5完全であり,最後の一つは +5完全である.密接に関係する問題
でありながら,このように計算の複雑さが大きく異なるということが本書の重要なテーマとな
る点であり,したがって,本書での進行に伴い,これらの五つの問題はそれぞれ道標として働
くことになるのである.
第 , 章と第 : 章は,前述したように講義科目 D, からの橋渡しの役割を果たしている.
第 , 章では,アルゴリズム解析で用いられるキーとなる数学的な定義と記法を,それらの背景
の動機付けのもとになっている原理とともに紹介している.問題が計算容易であることの意味
するものは何であるのかということを形式ばらずに概観し,多項式時間の概念を効率性の正式
な概念として採用している.そして,関数の増加率と漸近的解析をより形式的に議論している.
さらに,アルゴリズム解析でよく現れる関数をその関数が実際に生じる標準的な問題とともに
紹介している.第 : 章では,本書の多数の問題で出てくるグラフの基礎概念とグラフを扱う原
始的アルゴリズム操作を取り上げている.講義科目 D, でも,最後のあたりで基本的な
グラフアルゴリズムを複数実装した経験をもっていると考えられるが,本書のようにより広い
アルゴリズム設計の枠組みで,基本的グラフアルゴリズムを取り上げることも,重要であると
考えている.特に,基本的なグラフの概念の定義,幅優先探索と深さ優先探索のグラフ走査技
法,強連結性とトポロジカル順序を含む有向グラフの概念を議論している.
第 , 章と第 : 章では,本書全体でアルゴリズムを実装する際に用いる基本的なデータ構造も
多数取り上げている.より高度なデータ構造については,後続の章で取り上げている.本書に
おけるデータ構造の扱いは,本書でアルゴリズムを実装するときに必要となったデータ構造を
そのとき説明するというものである.したがって,第 , 章と第 : 章で取り上げるデータ構造は
極めて基本的なもので,多くが講義科目 D, でも説明済みのものとなっているが,それ
らは後の章のアルゴリズムで頻繁に用いるものである.すなわち,本書では,より広いアルゴ
リズムの設計と解析の枠組みでこれらのデータ構造に焦点を合わせているのである.
第 2 章から第 9 章までは,アルゴリズム設計の主たる技法を取り上げている.すなわち,グ
リーディアルゴリズム,分割統治法,動的計画法,ネットワークフローを取り上げている.グ
リーディアルゴリズムでは,それがうまく働くときとうまく働かないときを識別することが
チャレンジとなる.本書の第 2 章では,グリーディアルゴリズムがうまく働くことを証明する
のに用いられる議論を整理して分類することが中心となっている.グリーディアルゴリズムの
応用についても第 2 章の後半で取り上げている.具体的には,最短パス,無向グラフの全点木
と有向グラフの全点木,クラスタリング,圧縮への応用を取り上げている.第 ; 章の分割統治
法では,計算時間の限界を表す漸化式を解く戦略についてまず議論している.その後,このよ
うな漸化式の解法を用いて,様々な問題に対して,素朴な解法を改善するアルゴリズム設計に
詳細な解説付きアルゴリズムの一覧
ついて示している.より具体的には,二つのランク付けの比較,平面上の最近点対の発見,高
速フーリエ変換を取り上げている.第 章の動的計画法では,直観的に得られる問題に内在す
る再帰式から始めて,自然に生じる応用問題を取り上げ,より高度な再帰式を得る方法を示し
ている.そして第 章の最後に,二つの基本的な問題に対して,動的計画法のアプローチの詳
細な議論を取り上げている.より具体的には,計算生物学への応用を有する系列アライメント
とインターネットルーティングのプロトコルに関係するグラフの最短パスに対して,動的計画
法のアプローチを議論している.第 9 章では,ネットワークフロー問題に対するアルゴリズム
を説明するとともに,フローを応用できる問題を多数取り上げ議論している.アルゴリズムの
講義で取り上げられるネットワークフローでは,通常,その広範にわたる問題への応用につい
ては,学生自身に任されてしまうことが多いのであるが,本書ではそれを踏襲することをあえ
て避けている.すなわち,負荷均等化,スケジューリング,画像分割,およびそれ以外の多数
の問題への応用を実際に示して,フローの応用可能性が極めて広範囲にわたることを議論して
いる.
第 1 章と第 章では計算困難性を取り上げている.主として 5完全性について議論してい
るが,基本的な 5完全問題をテーマ別に組織化して与えている.したがって,新しい問題に
遭遇してその 5完全性を証明する際のリダクションの候補を適切に選べるように工夫してい
る.かなり複雑な 5完全性の証明も,困難なリダクションをいかにして構成するのかという
ガイダンスとともに,与えている.第 - 章では,さらに,5完全性を超える計算困難性の
+5完全性のトピックについて取り上げている.これにより,計算困難性は決して 5
完全性で終わるのではないことを強調できている.実際,+5完全性は,人工知能の分
野におけるプランニングやゲームプレーイングでの中心となる概念の基盤となっている.本書
では,+5完全性を含めてアルゴリズムの計算複雑さに基づく景観を整理し分類してい
るが,こうしてはじめて人工知能の分野の問題を議論できるようになるのである.
第 - 章から第 , 章では,計算困難性に対処する三つの主たる技法を取り上げている.すな
わち,特殊構造に基づくアルゴリズム,近似アルゴリズム,および局所探索によるヒューリス
ティクスを議論している.第 - 章の特殊構造に基づくアルゴリズムでは,実際に生じる 5完
全問題のインスタンスにおいて,必ずしも最悪のケースのインスタンスとならないことも多い
ことを強調している.したがって,ある種の構造を有して,その構造を利用して効率的に解く
アルゴリズムを設計できることもあるのである.そこで,木構造に限定された入力では,5
完全問題がしばしば効率的に解けることを説明し,そして,グラフを木分解することについて
詳細に議論する.この木分解のトピックは,学部の講義より大学院の講義に適したものである
が,実用上の有効性と密接に関連する技法であるにもかかわらず,現在のところこのトピック
を扱っている書籍が極めて少ないことから,本書であえて取り上げている.第 章の近似ア
ルゴリズムでは,有効なアルゴリズム設計のプロセスを説明するとともに,その近似性能を得
るために最適解を十分深く理解するための議論を行っている.アルゴリズム設計の技法として
は,グリーディアルゴリズム,線形計画法,および両者のアイデアを利用した第 : の >価格付
け法? と呼んでいる方法に焦点を絞って説明している.第 , 章では,#)" アルゴリズ
ムとシミュレーテドアニーリングを含む局所探索ヒューリスティクスについて議論している.
局所探索のトピックは,そのようにして得られたアルゴリズムに対して証明可能な近似保証が
ほとんど知られていないこともあり,通常の学部のアルゴリズムの科目では取り上げられるこ
詳細な解説付きアルゴリズムの一覧
とはないが,実際には広く用いられている方法であるので,それらについての知識をもってお
くのは良いことであると考えている.そこで本書では,このトピックを取り上げ,そしてある
場合には,近似保証が証明できることを示している.
第 : 章では,アルゴリズム設計における乱数の使用を取り上げている.ランダム化アルゴ
リズム(本書では乱択アルゴリズムと呼んでいる)は,大学院レベルの良い本がいくつか出版
済みのトピックである.本書では,学部の離散数学の講義で取り上げられる確率の知識のみを
予備知識として仮定してランダム化技法を用いて,乱択アルゴリズムについての簡潔な解説を
目標として与えている.
本書の利用法
本書は,第一義的には,学部の講義科目のアルゴリズム基礎のための教科書として執筆した
ものであるが,大学院の講義の入門用の教科書としても用いることができる.
大学で学部用として用いるときには,各節をほぼ 回の講義で終わるようにして進
めてきている.内容的に 回では済まないような節(たとえば,さらなる応用が付加的な例と
して挙げられている節など)では,この追加の内容の部分を講義外での自習用の補助材料とし
て取り上げている.星印のついている節はスキップして省略している.もちろん,これらの星
印の節は重要なトピックを含んでいるが,主題のテーマからは中心的なものではないこともあ
るし,また内容がより高度になっているときもある.以上の点から, 大学の学部では,
前半の章では,各章で 8 , 節程度スキップして省略している(たとえば,2: 節,29 節,21
節,;; 節,; 節,; 節,9 節,9 節は省略することが多い).
最後の点についてもう少し注意しておこう.後半の章を >より高度である? と見なして学部
のアルゴリズムの授業から除外するのではなく,むしろそれらの章の最初の数節に関しては,
学部の学生も知っておいたほうがよいと考えて構成している.したがって, 大学の学
部の講義では,後半の章の題材も取り上げている.実際,これらのトピックスはすべて学部レ
ベルでも重要視してよいものである.
第 , 章と第 : 章に関しては, 大学ではアルゴリズム基礎の科目以前の科目で取り上
げているので,その復習として扱っている.しかしながら,前述したように,各大学でのカリ
キュラムに依存するところが大きいので,それに基づいてこれらの章の扱いを決定すればよい
ものと思われる.
したがって, 大学ではアルゴリズム基礎の科目のシラバスはおおよそ以下のような
構成になっている.すなわち,第 章,第 2∼1 章(ただし 2: 節,29∼2 節,;;∼; 節,
; 節,- 節,92 節,9 節,9 節,9: 節は除く),第 章(ごく簡単に),第 - 章の
- 節と -, 節,第 章の 節,, 節, 節,1 節,第 , 章の ,∼,: 節,
第 : 章の :∼:; 節からなる構成となっている.
大学院のアルゴリズムの科目の入門用としてももちろん用いることができる.そのような科
目では,アルゴリズム設計における現在の重要研究テーマを紹介して,学生の将来の異なる様々
な分野での研究において役立てるようにすることが大切であると考えている.そこで,ここで
も有用となる問題の定式化に重点をおいている.学生がそれぞれの分野で,自分の研究で取り
上げる問題の定式化がすぐに必要となると考えているからである.この種の目的の科目内容と
詳細な解説付きアルゴリズムの一覧
して,第 2 章と第 章の後半のトピックス(2;∼2 節と ;∼- 節)
,
(前半の節はかなり
(大学院入学の学生は学部の授業でこのトピック
スピードを上げて取り扱い)第 9 章の全部,
をあとで眺めることになっているので)第 1 章の 5完全性(をかなりスピードを上げて取り
上げ)
,その後,残りの時間を第 -∼: 章に当てるというシラバスの構成をとっている.この
大学院の入門科目用では,より高度な節に焦点を合わせているが,復習や背景となる基礎知識
を得るための完全な書物があると非常に役に立つということも分かっている.実際,そのよう
な入門の科目を受講する学生には,獲得している背景となる予備知識に大きな差があることが
多いからである.
最後に,本書は,大学院生,研究者,情報学科の教師の自習用のテキストとしても用いるこ
とができる.自分の仕事の枠組みで,ある特定のアルゴリズム設計技法を用いることができる
ようになる感性を身につけたいと考えているような人には,自習用に最適であると考えている.
実際,多数の大学院生や同僚がこのような形で本書を用いてきている.
謝辞
本書は, 大学で著者らが担当してきたアルゴリズムの長年の講義の経験から生まれた
ものである.何年にもわたる一連のこれらの講義を通して,取り上げる内容もこの分野の成長
と歩調を合わせて広がり洗練されてきている.この科目で取り上げるべき内容の改善および決
定については,その間における 大学の教授陣からの助言に基づくところが大きい.特
に, " 3#&"8 * 36
8 3)%(#8 F# 68 ## (8
& から助言をいただいた.さらに, 大学のすべての同僚からも,取り上げる
べき題材やこの分野の本質に関する問題点について限りないほどの討論をいただいた.
この講義の授業では,教育補助者に題材の提供も含めて限りない協力をいただいた.学部
と大学院の教育補助者 G/ の # F8 8 +# "!%8 @"
$%*"#&8 #! $*8 ) $6
8 $%*#8 $ %*8 * 8
H& 68 &8 F '8 $ 8 " +!A&!"*8
( 78 H& 7") 8 3')#'8 " 8 #"8 & 8
* '*!8 F )'!8 $ "8 &# &8 @8 3'
@8 " %!II8 ' 8 $ %"*'8 @ '
68 +!
8 I I8 #8 !" #
8 # 08 ""8 ##
#"*8 "#8 * "%##8 B J8 H &" &8 #' 8
! %"8 $ 8 %# &8 "# 8 F !*"8
#' &'8 ' &8 ' !8 H""!#"*8 ## E%"8
& EF8 5@ !%* E8 "# 8 " K#"& に深く感謝する.
彼らの多くが,本書について価値ある洞察,提案,コメントをしてくれた.授業を受講して本
書の草稿に対してコメントや感想をくれたすべての学生にも感謝する.
過去数年にわたり,本書の草稿の段階から授業に利用してくれた他大学の先生からの感想や
助言も本書の改善に大いに役立った. は,E"
# 大学で彼女の担当する講
義の教科書として,本書の草稿を勇断して使用してくれた.彼女に続いて,講義の教科書や参
考書として使用してくれた先生の $&8 $8 !## "8 !
詳細な解説付きアルゴリズムの一覧
&)8 7 8 F# 68 &# &8 * '8 ! 8 &
8 F )8 8 ! !"8 # ! **8
! E'8 & EF8 E#"" からの感想と助言にも感謝したい.本書の多く
の内容を彼らの助言に基づいて改訂している.! E' は,本書に付随する補助教材ま
で作成してくれたので,彼にはさらに特別に感謝したい.これらの補助教材は,本書を使用し
て講義をする先生の真の手助けになると確信している.
そのほかにも,本書の特別なトピックスに対するアプローチはそれぞれの分野の先生や研究者か
らの助言に基づいている. $'*!8 +8 3 ##%8 $' 8
+! 8 @ @8 ! %"#8 * &8 * !8
$# &8 ! &'"8 #! #
#68 H*"8 % E##"8 & K
には特に感謝したい.見過ごしている人も多いと思われるので,ここでお詫びするとともに,
感謝しておきたい.
" E"' 社のスタッフと一緒に仕事をできたことは楽しい思い出である.第一に,
本書の編集から完成への一連の過程における助言と指導に対して,## 7"# に感謝した
い.彼には,本書に対する膨大な量の査読結果を整理しそれを生かした改善策の具体化におい
て限りない協力をいただいた.本書の初期の段階での " 3#& との会話も極めて有用
であった.## と ",そして," E"' 社の % $8 ' @'8
##' #8 # 65!" E( (# 社の "#) ", %L %## の全員がしてくれた本書の編集,印刷,管理における仕事に感謝する.専門家とし
ての本書の構成に尽力してくれた と %L には,さらなる感謝をしたい.#& #
"
社のスタッフにもお世話になった.特に,表紙のデザインに対して '% E" に,
図の作成に対して %' )' に,索引に対して @ F に,コピー編集と構成に対し
て, @' と ( % に感謝する.
本書の草稿に対して,貴重な時間を割いて詳細で思いやりのある意見をくれた "& $ &
G (#" .!"#'/8 % G.!"#' ( '8 $#& #'/8 !
&)# G.!"#' ( %
/8 * G.!"#' ( F"8 #/8 35 G.!"#' ( "8 .5&)
/8 I! G.!"#' (
"'!/8 ) G$ .!"#'/8 ! ##" G ## .!"#'/8
& '" G.@/8 % #6&% G3! .!"#'/8 #) G & .!"#'/8 # G. /8 +
&" G.!"#'
( "8 .5&)
/8 I' * G.!"#' ( 8 7"!/8 @
6* G%"# "## # ( %
'/8 " G. # $/8 #
! ** G.!"#' ( E"%"8 "/8 $ # G"" '#%%
"## #/ に感謝する.彼らからのコメントにより,最終版では非常に多くの箇所で改善がで
きた.
(" の家族の)!8 %%
最後に家族全員,
(
の家族の)@ と %,
と &' にも感謝したい.彼らのサポート,忍耐,ここでは記すことのできないほどのもろも
ろの貢献に心から感謝する.
本書は,- 年代後半の豊かさの絶頂期に,最初の構想が練られたものである.その時代に
なるまでは,情報技術の凱旋門は伝統的に有名人や天空の世界の住人に限定された領域である
詳細な解説付きアルゴリズムの一覧
と多くの人には思われたものである(これは単に著者らの想像でしかないかもしれない)
.数年
後の株価も安定し幻想から現実の世界に戻った今日では,その時代を経験して情報科学の分野
も大きく変化したとも考えられるし,あるいは別の意味でそのままであったとも考えられる.
この分野が生まれたときからの特徴である原動力となっている興奮は,現在も強烈で魅惑的で
あり,世の中の情報技術に対する関心も依然として極めて高く,計算技術の応用分野はさらな
る新分野へと展開されてきているのである.したがって,多くの様々な理由で,このアルゴリ
ズム研究の分野に興味をもったすべての学生に対して,各自の目的とするものがどのような計
算の応用であったとしても,本書が楽しく学べて有用な道標の役割を果たせるようにと願って
いる.
(ジョン クラインバーク)
0 "(エーバ タルドシュ)
+!
#%8 ,--;
第 章
はじめに:いくつかの代表的問題
第一の問題:安定マッチング
本書の核となるテーマや概念をうまく説明できるようなアルゴリズム的な問題を,最初のト
ピックとして取り上げることにしよう.それは,実際的な問題から極めて自然に生じたもので
あり,したがって,問題の定式化が単純で明快な形でできるものである.さらに,問題を解く
アルゴリズムもまた明快であるので,アルゴリズムの正当性の証明と,解が得られるまでに必
要となる計算時間の上界の導出に対しても,十分な説明を与えることができるものである.実
際,安定マッチング問題 G# #%
&/ は,そのような問題であり,その起源は
多岐にわたっている.
問題
安定マッチング
:問題の背景と定式化
安定マッチング問題は,, 年,二人の数理経済学者の ! 7 と @' )' が
以下の問題を提起したのに一部起源を発していると言われている.大学の入学プロセス,就職
活動プロセスなどを,自己規制的 G"(5(%
/ であるように設計できるであろうか? そも
そも自己規制的とは,一体どんなことを意味するのであろうか?
問題をきちんと記述するために,具体的な例題を考えてみよう.情報学科の : 年生の複数の
友人からなるグループがあって,夏期インターンシップのため,企業への応募を始めている状
況を思い浮かべてみよう.応募採用のプロセスが難解になるのは,企業(雇用者)と学生(被
雇用者)の二つの異なるグループの相互作用による意思決定行動であるからである.そこでは,
各学生が全企業に対する希望順のリストをもっている.一方,各企業も,学生からの応募がく
れば,それらの応募者に対して,採用したい順番付けをもっている.これらの順番によって,
企業は何人かの学生に内定を出し,学生は得られた内定から自分の一番良いものを選び,そし
てインターンシップへと向かう.
7 と )' は,状態を規制するメカニズムのない場合,このプロセスが全くうまく動
作しなくなりうる状況を考えた.たとえば,友人の I は大手の電話会社 # からの夏期
インターンシップの内定を受諾したとする.さらに数日後,最終的な決定を引き延ばししてい
第
章
はじめに:いくつかの代表的問題
た最近設立の小さなベンチャー企業の E+F " から,I に電話が来て,夏期インターン
シップの内定が連絡されたとしよう.そこで,I は, # より E+F " のほうがよ
り働きたいところであり,何でもありの雰囲気であったので,この展開をより良いものと判断
して, # への受諾を取り消し,E+F " へ行くことに決めたとしても不思議ではない
だろう.突然断られた # は,そこで内定待ちの応募者の一人に内定を出す.すると,こ
の内定をもらった学生はそれまでに受諾していたソフトウェア大手の $"(# からの内定を
取り消す.こうして,次から次へと状況は変化しはじめて制御不能になりうる.
他の点からも,状況はより悪いというわけではないが,同様に悪くなりうる.I の友人
" は $"(# に行くことになっていたが,I の話を聞いて E+F " に電話し,
「$"(# より,E+F " で皆さんと一緒に夏期インターンシップをしたいと心から思っ
ております」と言ったとしよう.E+F " はすぐにこれを信じて," の応募書類を
見て,すでに夏期インターンシップの内定を出している他の一人の学生より," を採用
すべきだったと思うかもしれない.このような場合,E+F " が少し誠実性に欠ける企業
だとすると,すでに夏期インターンシップの内定を出しているこの一人の学生に対して内定を
取り消し,代わりに " を採用してしまうこともありうるだろう.
このような状況が実際に起きると,大規模なカオスが急速に生じることもありうる.そして
企業と学生のいずれにおいても,プロセスと結果に不満をもつ人が多く生じることになる.何
が悪かったのであろうか? 実は,プロセスに自己規制がなかったことが一つの大きな原因なの
である.個人の関心のみによる利己的な行動を許すと,破滅につながる恐れがあるのである.
以下の安定性のある状況が,よりふさわしいと考える人もいるだろう.内定取り消しと応募
変更に対して個人の価値観に基づく規制を導入する. # で夏期インターンシップが決定
しているある一人の学生が E+F " に電話して,彼もまた E+F " で夏期インターン
シップを行いたいと打ち明けたとしよう.しかし,E+F " は >いいえ,すでに内定済み
の人のほうがあなたより上ですので,再考はできません? と答えることも可能である.逆に,
すでに他企業から内定の出ている学生に対して,ある企業の担当者が,真に欲しい人材である
ので彼らに自社に来て欲しいとお願いしても,内定済みの学生は >いいえ,現在内定をもらっ
ている企業のほうがより希望です? と答えることも可能である.このような状況では,これ以
上の進展は生じない.
これが 7 と )' の提起した問題である.すなわち,企業と応募者間の希望順のリス
トの集合が与えられたとき,各企業 に対して, のもとで働くことになっていないどの応募
者 も以下の二つの場合のいずれかが成立するように,応募者を企業に割り当てることが可能
か,という問題である.
G/ 企業 は応募者 より内定済みの応募者をより好む.
G/ は のもとで働くより,現在の企業のもとで働くほうをより好む.
これが成立するときは,結果は安定する.個人の価値観に基づく規制により,応募者D企業間の
裏取引が制限されるからである.
7 と )' は,この問題を解く極めてすばらしいアルゴリズムを与えている.それを
これから議論することにしよう.その前に,これは安定マッチング問題のみから発生した問題
ではないことを注意しておく.実は,7 と )' がこの問題のアルゴリズムを与えたよ
第一の問題:安定マッチング
りも ,- 年ほど前に,彼らは気づかなかったことであるが,全国研修医マッチングプログラム
G# "# #%
&/ は,同一の必要性に迫られて,ほぼ同様の手続きを
採用していて,対象となる研修医を病院に割り当てていたのである.実際,このシステムは,
比較的小さい修正が施されてきたものの,現在も使用されている.
これは,安定マッチング問題の有する本質的な魅力の証拠でもある.このような問題は,組
合せ的な定義とそれに基づくアルゴリズムの必要性が容易に認識できるので,本書の観点から
も極めて格好な題材である.
問題の定式化
この概念の本質を見定めると,問題がかなり明快に記述できるようになる.企
業と応募者の状況では,ともすると本質を見失ってしまいそうになる非対称性が存在する.実
際,応募者は一つの企業を求めるのに対して,各企業は複数の応募者を採用する.さらに,夏
期インターンシップの定員を超える応募がくるときもあるし,定員未満のときもある.また,
応募者が必ずしもすべての企業に応募するわけでもない.
したがって,少なくとも最初のうちは,この複雑性を除去していたほうがよさそうである.
そこで,以下の >より本質的な単純? 版で議論することにしよう. 人の応募者と 社の企業
があって,各応募者は 社の企業すべてに応募する.一方,各企業は最終的に一人の応募者を
採用する.このようにしても,問題の本質は失われないことを,あとで示すことにする.実際,
上記の単純版が,より一般的な問題版に,すぐに拡張できることを示す.
7 と )' に従い,この単純版が, 人の男性と 人の女性の集団の結婚問題として
定式化できることを確認しよう.実際,応募者と企業の安定マッチング問題は,この男女間の
両性の結婚問題に自然に対応し,要求されることは,各個人に対して,ペアとなる異性の一人
を求めることである .
そこで, 人の男性の集合を M
とする. と , 人の女性の集合を M
からなる順序対 G / のすべての集合を と書くことに
する. の部分集合である は, のどの男性と のどの女性に対しても,その人を
含むような の順序対が高々 個であるとき,マッチング G&#%
/ と呼ばれる.マッチン
グ は, のどの男性と のどの女性に対しても,その人を含むような の順序対がちょ
うど 個であるとき,完全マッチング G)(%# &#%
/ と呼ばれる.
マッチングと完全マッチングは,本書を通して頻繁に使用される概念である.それらは,多
岐に渡るアルゴリズム的問題をモデル化するのに用いられている.現在の状況では,完全マッ
チングは,各人がちょうど一人の異性と夫婦になることに対応している.そこでは,独身の人
も多重婚をしている人も存在しない.
この状況で,好意順 G)(%/ の概念を加えることができる.各男性 はすべての
女性を好きな順にランクを付ける. が に より高いランクを付けることは, は よ
り が好きであることを意味する. の順序付きランクを好意順リスト G)(% "#/ と
いう.同様に,各女性も全男性に対してランクを付ける.
与えられた完全マッチング に対して,どんな不都合がありうるだろうか? 企業と応募者に
と
は同性間の安定マッチング問題も考えている.そこでは,単一の性しかない.これは,
関係する応用から生じたものであるが,技術的なレベルでは,かなり異なる問題になる.本書で扱う応募者と企
業の採用問題は,両性の問題版に限定されている.
第
章
はじめに:いくつかの代表的問題
不安定性: m と w' は
現在のパートナーよりも
お互いが好きである
図
m
w
m'
w'
不安定性 ¼ をもつ完全マッチング .
よる最初の問題に基づけば,以下のような状況が心配なのである.すなわち,
(図 に示して
いるような)二つのペア G /8 G
が好きで, が / が に存在すること,言い換えると, が より
より が好きであるというような二つのペア G /8 G / が に
存在することが心配なのである.この場合, と がそれぞれ現在のパートナーを離れて互
いに一緒になることを抑制できない.したがって,この結婚は自己規制的ではない.そのよう
なペア G / を に関する不安定性 G"##'/ ということにする.実際,G / は に
属さないが, と のどちらも の現在のパートナーよりお互いが好きであるからである.
目標は不安定性をもたない結婚の集合である.マッチング は,G/ 完全であり,かつ G/
に関する不安定性が存在しないとき,安定 G"#/ であると呼ばれる.すると,二つの問題が
すぐに生じる.
どのような好意順リスト集合に対しても安定マッチングは存在するか?
与えられた好意順リスト集合に対して,安定マッチングが存在するときは,いつでも安
定マッチングを効率的に求めることはできるか?
例題
上記の定義を説明するため,以下の二つの極めて簡単な安定マッチングの例を考えてみ
よう.
まずはじめに,二人の男性の集合
と二人の女性の集合
を考える.好意順リ
ストは以下のとおりであるとする.
は より が好きである.
は より が好きである.
は より が好きである.
は より が好きである.
この好意順リスト集合を直観的に考えると,完全な合意が成立している.すなわち,男性は女
性のランク付けが一致し,女性も男性のランク付けが一致している.この場合,安定マッチン
グが存在し,G / と G
/ からなる唯一の安定マッチングになる.別のペア G / と
G / からなる完全マッチングは安定マッチングでない.G / がこのマッチングに関する
第一の問題:安定マッチング
不安定性となるからである( と の両者がそれぞれのパートナーから離れてペアになりた
がるからである)
.
次に,より微妙な例を考えよう.好意順リストは以下のとおりであるとする.
は より が好きである.
は より が好きである.
は より が好きである.
は より が好きである.
この場合どうなるだろうか? 男性二人の好みは互いに逆になっていて,女性二人の好みも同様
に互いに逆になっている.さらに,男性の好みと女性の好みも完全にくいちがっている.
この , 番目の例では,二つの異なる安定マッチングが存在する.ペア G / と G
/か
らなるマッチングは安定である.二人の男性がともに最大に満足で,現在のパートナーを手放
すことはないからである.一方,ペア G
/ と G / からなるマッチングも安定である.
二人の女性がともに最大に満足で,現在のパートナーを手放すことはないからである.これは
重要な事実を示唆している.問題によっては,安定マッチングは唯一とは限らないことである.
アルゴリズム
安定マッチングアルゴリズム
男女間の全好意順リスト集合に対して安定マッチングが存在することから示そう.さらに,
この証明から,上記の , 番目の問題に対する解答も得られる.実際には,全好意順リスト集合
を入力として,安定マッチングを求めるアルゴリズムを与えることにする.
そこで最初に,アルゴリズムにつながる基本的なアイデアについて考える.
最初,いずれも未婚であるとする.未婚の男性 が自身の好意順で最も高い女性 を
選びプロポーズする.このとき,最終的な安定マッチングにこの G / が含まれると
断定できるであろうか? 実は必ずしもそうとは断定できない.実際,将来のある時点で
がより好きな男性 からプロポーズされるかもしれないからである.一方, が に断りをすぐ行うのは危険すぎるだろう.将来, より良い男性からプロポーズされな
いかもしれないからである.したがって,自然なアイデアであるが,ペア G / を中
間的な状態,すなわち婚約としておくことにする.
そこで,何人かの男性と女性は婚約せずに自由な身であり,残りの男性と女性は婚約の
状態にあるとする.すると,次の段階は以下のようになる.自由の身の男性 がまだ
プロポーズしていない女性のうちで好意順で最も高い女性 を選びプロポーズする.
も自由の身であるときは と婚約する.そうではなく, がすでにある男性 と婚約
しているときは, は と でどちらが好きか判断し, は好きな男性のほうと婚約
し,残りのほうの男性は自由の身になる.
そして,自由な身の人がいなくなるとアルゴリズムは終了する.この時点で婚約は決定
的なものになり,結婚に至り,完全マッチングが返される.
以下, アルゴリズム G75)' #&/(略して
アルゴリズ
ムということも多い)の具体的な記述とともに,アルゴリズムの途中の状態を図 , に示して
第
章
はじめに:いくつかの代表的問題
女性 w は m' より m が
好きならば m と婚約
することになる
m
w
m'
図
自由の身の男性 が女性 にプロポーズしている 6/ アルゴリズムの途中の状態.
おく.
安定マッチング を求める 7 )' アルゴリズム:
すべての男性 とすべての女性 は自由な身であると初期設定する
すべての女性にはプロポーズしていない自由の身の男性 がいる
そのような男性 を選ぶ
を の好意順リストで がまだプロポーズしていない最も好きな女性とする
が自由の身である G / は婚約する
は現在 と婚約しているとする
が より が好きである は自由の身であり続ける
(コメント: は より が好きである)
G / は婚約する
は自由の身になる
! ! !" 婚約ペアの集合 を返す
75 アルゴリズムは記述が極めて単純である.しかし,どうしてこれで正しい安定マッチン
グが返されるかは明らかでないし,本当に完全マッチングが得られるのかも明らかでないと思
われる.実は,これが興味をそそる点である.これを,いくつかの中間的な事実を用いてこれ
から証明しよう.
第一の問題:安定マッチング
アルゴリズムの解析
まずはじめに,アルゴリズムが進行するに従い女性 の状況がどのようになっていくか眺め
てみよう. はプロポーズを受けずしばらくは自由の身である.ある男性 からいったんプ
ロポーズされるとそこで婚約する.その後さらに複数の男性からプロポーズされうるが,パー
トナーのランクが高くなるときは婚約を引き受ける(もちろん前の婚約は解消される).した
がって,以下が成立することが分かる.
女性 は最初にプロポーズされた後は(相手は変わるかもしれないが)ずっと婚約状
態である.さらに,後から婚約する男性ほどより好きな男性になる.
一方,アルゴリズムの進行に従い男性 の状況はかなり異なる. は自分の一番好きな女
性にプロポーズするまでは自由の身である.そしてはじめてプロポーズした時点で婚約にたど
りつけるときもあるし,そうでないときもある.その後も自由の身と婚約の状態が入れ替わる.
しかしながら,以下の性質が成立する.
男性 がプロポーズする女性は好きな度合いがだんだん減っていく.
アルゴリズムが終了することを示し,終了までの反復の回数の上界を与えることにしよう.
75 アルゴリズムは ループを高々 回反復して終了する.
証明 (本書でしばしば用いて)ここでも用いるが,アルゴリズムの計算時間を上から抑える
有用な戦略は,その進捗度測定器 G)
"" &" /,すなわち,進捗度を測定する物差し,
を見つけることである.それにより,アルゴリズムの各ステップが終了に向かって確実に近づ
いているということを正確に言い表せるからである.
このアルゴリズムでは,各反復は,ある男性がまだプロポーズしていない女性にプロポーズ
するということからなる.そこで,
(アルゴリズムの開始時から)反復 の終了時までに,
が にプロポーズしたペア G / のすべての集合を G/ とする.すべての で G N / の
サイズは G/ のサイズより真に大きくなることが分かる.しかし,男性と女性のペアの総数
は高々 であるので,アルゴリズム全体で G/ は高々 回しか増加できない.したがって,
高々 回しか反復がないことになる.
上記の事実と証明に対して二つ注意を与えておくことは良いことであろう.第一に,このア
ルゴリズムで 回に近い反復を実現するような好意順リストが存在するので,上記の解析は
最適な解析からそれほど離れてはいない点である.第二に,各反復で真に増加するとは限らず,
アルゴリズムの進捗度測定器として適切でないようなものが多数考えられることである.たと
えばそのような例として,自由な身の人数などが挙げられる.実際,この数は,ある反復から
次の反復に移っても同じことがある.したがって,自由な身の人数などは,反復回数の上界を
与えるのに直接的には用いることができない.これは上記の証明のようにはうまく働かないの
である.
次に,アルゴリズムの終了時に返される が完全マッチングであることを示すことにする.
これはどうして自明でないだろうか? 本質的には,どの男性も好意順リストの最後までいって
も婚約できなくなってしまう,すなわち,>好意順リストの端から落ちてしまう?,ことのない
第
ことが言えればよい.これが言えれば,
章
はじめに:いくつかの代表的問題
ループを脱出する唯一の方法は自由の身の男
性がいなくなったときのみになるからである.したがって,実際,婚約中のペアの集合が完全
マッチングになるからである.
以上より,以下のことさえ示せばよいことになった.
アルゴリズムの実行中のある時点で,男性 が自由の身ならば,まだ がプロポーズ
していない女性がいる.
証明
が自由の身であるにもかかわらず,すべての女性にプロポーズしてしまっていると
いう時点が存在したと仮定する.すると,G/ により,この時点で 人の女性はいずれも婚
約中ということになる.婚約中のペアの集合はマッチングになるので,この時点で婚約中の男
性も 人ということになる.しかし,男性は全部で 人で が自由の身であるので,これは
矛盾である.
アルゴリズムの終了時に返される は完全マッチングである.
証明 婚約中のペアの集合は常にマッチングになる.自由の身の男性 がいるのにアルゴリ
ズムが終了したとする.終了時には, はすべての女性にプロポーズしていたことになる.そ
うでないと,
ループから脱出されなかったはずであるからである.しかし,これは G2/
に矛盾し,したがって,すべての女性にプロポーズした自由の身の男性は存在しないことが得
られる.
最後に,アルゴリズムの主たる性質,すなわち,安定マッチングが得られることを証明しよう.
を 75 アルゴリズムの一つの実行で返されるペアの集合とする.すると,
は安定
マッチングである.
証明
が完全マッチングであることは,G;/ ですでに眺めている.そこで,
に関する不
安定性が存在すると仮定する.そして矛盾を導き,
が安定マッチングであることを証明する.
以前にも眺めたように,このような不安定性は二つのペアと関係している.そこで,
に含ま
れる二つのペア G / と G
/ が以下の性質を満たすとする.
は より が好きである.
は より が好きである.
を出力するアルゴリズムの実行において,最終的に G / であることから, の最後
のプロポーズは に向けられたものである.そこで,アルゴリズムのそれ以前に は にプ
ロポーズしたであろうか? と質問してみよう.もししなかったとすると, の好意順リストで
は より高かったことになり は より が好きであるという上記の仮定に反する.一
方, は にプロポーズしたとすると, は より好きな男性 と婚約していて, か
らのプロポーズを断ったことになる. が の最終的なパートナーであるので, M
であるか,あるいは G/ より, は より最終的なパートナーの が好きであることに
なる.しかしながら,いずれも は より が好きであるという上記の仮定に反する.
したがって,
は安定マッチングであることが得られた.
第一の問題:安定マッチング
発展トピックス
安定マッチングの概念の定義から始めて,実際に安定マッチングが 75 アルゴリズムで得ら
れることを証明してきた.次に,75 アルゴリズムの振舞いについての問題を取り上げ,75
アルゴリズムで得られない安定マッチングとの関係を考えることにしよう.
まずはじめに,異なる安定マッチングが複数ありうる例をすでに眺めたことを思い出そう.
もう一度取り上げると,その例の好意順リストは以下のとおりであった.
は より が好きである.
は より が好きである.
は より が好きである.
は より が好きである.
75 アルゴリズムを実行すると,最初に が と婚約し,次に が と婚約して(ある
いは逆に,最初に が と婚約し,次に が と婚約して),そして終了する.したがっ
て,G
/ と G / のペアからなる別の安定マッチングは,男性がプロポーズする 75 ア
ルゴリズムの実行では決して得られない.一方,女性がプロポーズする 75 アルゴリズムの版
では,G / と G / のペアからなる安定マッチングが得られる.男性と女性がとも三人
以上のときには,さらに多くの安定マッチングが存在し,その中のほとんどが,自然なアルゴ
リズムで得られないというような例もありうることになる.
この例は,75 アルゴリズムに男性を優遇するある種の >不公平性? G (""/ が存在する
ことを示している.男性の好意順リストの一番好きな女性が全員異なり完全にバラバラになっ
ているときに,75 アルゴリズムを実行すると,女性の好意順リストに関係なく,すべての男
性が一番好きな女性と結婚する安定マッチングが得られる.したがって,上記の例のように,
女性の好意順リストが男性の好意順リストと完全にくいちがっているようなときには,すべて
の男性が一番好きな女性と結婚するという安定マッチングが得られるが,それは女性から見て
最悪なものになる.したがって,上記の例の好意順リストは,いずれかの側が不満足になると
いう運命の世界を簡潔に表現していると言える.実際,男性側からプロポーズすることにすれ
ば女性が不満足になり,女性側からプロポーズすることにすれば男性が不満足になる.
そこで,75 アルゴリズムをより詳しく解析して,この >不公平性? の現象がどの程度一般
的なのか調べてみることにしよう.
まずはじめに,前述の 75 アルゴリズムでは,自由な身の男性がいる限り,どの男性を選ん
で,その男性が次のプロポーズをするとしてよいという,自由度のあることを再度注意してお
く.異なる選び方は,アルゴリズムの異なる実行になる.これが,G/ で,>
を 75 アルゴ
リズムで返された集合? ではなく,>
を 75 アルゴリズムの一つの実行で返されるペアの集
合? としている理由である点に注意しよう.
したがって,別の極めて自然が疑問が生じてくる.すなわち,75 アルゴリズムのいずれの
実行でも得られるマッチングは同一であるか? という疑問である.この種の問題は情報科学の
分野で様々な状況で頻繁に生じる問題である.異なる独立のコンポーネントが相互に複雑に絡
み合って非同期的に動作を実行するような非同期アルゴリズム G"'% " #&/ に
おいて,この非同期性により,最終的な結果がどの程度まで異なりうるか,きちんと抑えたい
第
章
はじめに:いくつかの代表的問題
ことがよくある.異なる独立のコンポーネントが男性と女性でないような例としては,飛行機
の両翼の様々な部分の動作を制御する電子機器などが考えられる.それらの動作の非同期性は
極めて重大な影響を及ぼすからである.
今回の問題では,解は極めて明快である.75 アルゴリズムのいずれの実行でも得られるマッ
チングは同一である.これを以下で証明することにしよう.
いずれの実行でも得られるマッチングは同一である
このような命題を証明する方法は多数考
えられるが,通常は極めて複雑になることが多い.そこで,得られるマッチングを唯一に特徴
づけることにする.そしてこの特徴付けを満たすマッチングがすべての実行で得られることを
示そう.実際,これが最も単純で有効な方法であることが分かることになる.
それではその特徴付けはどんなものになるだろうか? どの男性も >可能な最善のパートナー?
とペアになることを具体的に示そう(もちろん,すべての男性の一番好きな女性が異なるとき
は,これは明らかであることを思い出しておこう).各男性 に対して,ペア G / を含む
安定マッチングが存在するとき, は の正当なパートナー G! )#/ であるといい,
が の正当なパートナーでありかつ より好きなどの女性も の正当なパートナーでない
とき, は の最善の正当なパートナー G"# ! )#/ であるという. の最善の正
当なパートナーを G/ と書くことにする.
ペアの集合 G G// O を と表すことにして,以下の事実を証明する.
75 アルゴリズムのどの実行でも,集合 が得られる.
この命題は,複数のレベルにおいて驚異的なことである.まず第一に,
がマッチングにな
ることが定義から簡単に分かる,という理由が思い当たらないからである.さらに,安定マッ
チングになるということはなおさら信じがたい.同一の女性を最善の正当なパートナーとする
男性が本当に二人以上になることのないのはなぜか? 第二に,75 アルゴリズムで得られる結
果が全員の男性にとって同時に最善の正当なパートナーになるという点である.すなわち,ど
の男性もそれ以上の女性とパートナーになれるような安定マッチングは存在しないという点で
ある.そして最後に,75 アルゴリズムにおけるプロポーズの順番は最終的に得られる結果に
全く影響を及ぼさないということが言えて,上記の問題に対する解答になる.
以上のような状況であるが,証明はそれほど困難ではない.
証明 背理法で証明しよう.75 アルゴリズムのある実行 で,ある男性が最善の正当なパー
トナーでない女性とペアになっているようなマッチング が得られたと仮定する.男性は好き
な順にプロポーズしているので,75 アルゴリズムの実行 のいずれかの段階で,ある男性が
正当なパートナーに断られていることになる.そこで,実行 で初めて,男性が正当なパート
ナーに断られた瞬間を考えてみよう.その男性を とし,その正当なパートナーを とする.
男性は好きな順にプロポーズしているし,そのような断りが初めて起きた時点を考えているの
で, は の最善の正当なパートナー G/ であることになる.
からの への断りは,以下のいずれかの理由による.すなわち, がプロポーズしたと
き は現在のパートナーのほうが好きだったので断ったか,あるいは他の男性からプロポーズ
があってその男性のほうが好きだったので婚約中の を断ったかのいずれかである.いずれ
五つの代表的な問題
にせよ,この時点で, は より好きなある男性 と婚約(中)となる
は の正当なパートナーであるので,ペア G / を含む安定マッチング が存在する.
そこで問題である.このマッチング で は誰とペアになっているのか? ということで
ある.ペアになっている女性を M としよう.
からの への断りは,実行 で正当なパートナーからの最初の断りであったので, の実
行で は と婚約する時点まで,正当なパートナーからは断られていなかったということに
なる. は好きな順にプロポーズしていて,さらに は明らかに の正当なパートナーで
あるので, は より が好きということになる.一方,すでに眺めてきたように, は,
より が好きだったので, の実行で を選んで を断ったわけである.したがって,
G / であるので,G / は に関する不安定性となっていることが得られる.
これは が安定マッチングであったことに反する.したがって,最初の仮定が間違ってい
たことが得られる.
したがって,男性にとって 75 アルゴリズムは最善である.一方,残念ながら女性にとって
これは最善とは言えない.女性 に対して,ペア G / を含む安定マッチングが存在すると
き は の正当なパートナーといい, が の正当なパートナーであり,かつ より嫌い
な(好きでない) の正当なパートナーが存在しないとき, は の最悪の正当なパートナー
G"# ! )#/ ということにする.
証明
安定マッチング において,女性は最悪の正当な男性とペアになっている.
が の最悪の正当な男性でないようなペア G / が に存在した仮定する.する
と, が より嫌いな男性 とペアになっている安定マッチング が存在する.
におい
て, は女性 M
とペアになっているとする. は の最善の正当なパートナーであり
が の正当なパートナーであるので, は より が好きであることが分かる.
これから G / は において不安定性となる.しかし,これは が安定マッチングであ
るとしたことに反する.したがって,最初の仮定が間違いであったことが得られる.
男性の好意順リストと女性の好意順リストが完全にくいちがっている上記の単純な例から暗
示されたように,以下の極めて一般的な事実が得られることが分かった.すなわち,任意の入
力に対して,75 アルゴリズムは,プロポーズする側に対しては実現できる最善の安定マッチ
ングを,プロポーズを受ける側に対しては実現できる最悪の安定マッチングをもたらすことが
分かった.
五つの代表的な問題
安定マッチング問題を通して,アルゴリズム設計におけるプロセスの様々な側面を十分に例
示することができた.実際多くの問題において,このプロセスは重要ないくつかのステップか
ら構成されているのである.まずはじめに,与えられた問題に対して,問題が何であるのかが明
確に分かり,それを解くアルゴリズムを考えることができるように,数学的に十分な正確さで
定式化するステップである.次に,実際にアルゴリズムを設計するステップであり,そして最
後に,そのアルゴリズムの正当性を証明し,計算時間の上界を与えて効率性を確立するステッ
プである.
第
はじめに:いくつかの代表的問題
(b)
(a)
図
章
点からなる二つのグラフ.
さらに,上記のハイレベルでの戦略は,実際には,いくつかの基本的なアルゴリズム設計技
法に基づいて実行されるのである.そして,これらの技法は,問題の本質的な複雑さを見極め,
それを解くアルゴリズムを得るのに非常に役に立つものである.どの分野でも同様であるが,
これらの設計技術に習熟することは一長一短には達成できない(漸進的な)プロセスである.
しかしながら,習熟すると,問題がどの範疇のクラスに属するかが理解できるようになり,問
題の記述の小さな変更がそれを解くアルゴリズムの計算時間に大きく影響しうることも分かっ
てくるようになる.
そこで,この議論を始める前に,手助けとして,アルゴリズムを研究していく上で遭遇する
ことになるいくつかの典型的な問題を例にとって,具体的な説明を与えることにしよう.それ
らの問題は,明確に定式化されていずれも一般的なレベルではお互いに類似した問題であるが,
付随する困難性とアプローチの観点からは極めて異なっているものである.最初の三つの問題
は効率的に解ける問題である.アルゴリズムの技法は,後の問題になるにつれて段階的により
高度になる.2 番目の問題は,大きく議論が転換する問題で,効率的なアルゴリズムでは解け
ないだろうと考えられている.; 番目の問題は,さらに困難であろうと考えられている問題の
クラスに繋がるものである.
いずれの問題も自己完結していて,実際の応用から生じたものである.さらに,いくつかは,
グラフ G
)/ の用語を用いると問題の説明がはっきりとする.グラフは,情報科学系のカリ
キュラムでアルゴリズム設計よりも以前に行われる講義科目で取り上げられるものであるが,
本書でも第 : 章でかなり深く解説することにする.なお,グラフは極めて強力な道具であるの
で,本書の随所で頻繁に用いることになる.本節では,グラフ とは,単に複数の集合からな
る集合族における二つの集合間の関係を具体的に(符号化して)表現する方法である,と考え
ておけば十分であろう.したがって, は点 G/ の集合 と , 点を >結ぶ? 辺 G
/ の集
合 からなる順序対 G / であると考えてよい.なお,辺 あり,ある , 点 に対して M
は の , 要素部分集合で
であると考えることもできる.このとき, と
は の端点 G/ と呼ばれる.グラフを図 : のように表すことも多い.すなわち,各点を
小さい丸で表し,, 点を端点とする辺をそれらを結ぶ直線分で表している.
それでは五つの代表的な問題の議論に移ろう.
問題
区間スケジューリング
以下の非常に単純なスケジューリング問題を考える.使用できる資源がある.それは,たと
えば,教室であったり,スーパーコンピューターであったり,電子顕微鏡であったりする.多
五つの代表的な問題
図
区間スケジューリング問題のインスタンス.
くの人がある期間その資源を利用したいと要求している.要求 GL "#/ は,時刻 から時刻
までその資源の利用をしたいが予約することができるか? という形式をしている.なお,そ
の資源は各時刻で高々一人しか利用できないものと仮定している.それらの要求のいくつかを
許可し,残りは全部断る.スケジューラーはかち合わない要求ができるだけ多くなるように許
可したい.すなわち,目標は,許可する要求の個数の最大化である.
より形式的には,区間スケジューリング問題 G#! % &/ は以下のよう
に定義される.
のラベルの付けられた 個の要求が与えられる.各要求 には開始時
刻 と終了時刻 が付随する.もちろん,すべての で である.二つの要求 と は,要求する区間(時間帯)が交差しないとき,すなわち,要求 の終了時刻が要求 の開始
時刻よりも早い G / か,要求 の開始時刻が要求 の終了時刻よりも遅い G / とき
は,共存可能 G%&)#/ であるという.これを一般化して,要求の部分集合 は, の異
なる二つのすべての要求 が共存可能であるとき,共存可能であるという.目標は,サ
イズが最大の共存可能な部分集合を選ぶことである.
区間スケジューリング問題のインスタンスの例を図 2 に挙げている.この例では,サイズ
2 の共存可能な集合が唯一存在し,それが最大である.
この問題は,要求集合をあるヒューリスティックに基づいて並べ,そして一度だけなぞりなが
ら,>グリーディに? G
'/ 処理していき,共存可能な部分集合でできるだけ大きいものを
選んでいく,という極めて自然なアルゴリズムで解けることを近いうちに眺めることにしよう.
これは,様々な問題に対して適用することになるグリーディアルゴリズム G
' #&/
と呼ばれているアルゴリズムのクラスの典型例である.なお,グリーディアルゴリズムとは,
各時点で入力の一部分を,将来そのためにしっぺ返しをくらうなどの不都合なこともありうる
ことを考えずに,近視眼的に眺めて処理して行く方法である.問題のすべての入力に対して,
グリーディアルゴリズムで最適解が得られるなどということは,なかなかありえない.実際,
そのような単純な方法で最適解が得られるときはいつでも,その問題に何か良い構造の内在す
ることが分かることになる.
問題
重み付き区間スケジューリング
区間スケジューリング問題では,共存可能な要求の個数を最大化する集合を求めることであっ
た.次に,より一般的な問題である以下の問題を考えよう.各要求区間 には - の価値あ
るいは重みが付随している.すなわち, 番目の要求を受諾すれば,それだけの収入が得られる
と考えてもよいだろう.したがって,重み付き区間スケジューリング問題 GE
# #!
% &/ の目標は,価値が最大になるような共存可能な要求の集合を求めること
第
x1
y1
x2
y2
x3
y3
x4
y4
x5
y5
図
章
はじめに:いくつかの代表的問題
二部グラフ.
になる.
各 で M のケースがこれまでの区間スケジューリング問題であるが,重み付き区間スケ
ジューリング問題では任意の大きさの価値が存在しうるので,その本質は区間スケジューリン
グ問題と大きく異なることになる.たとえば, が他のすべての の和より大きいとき,最
適解は,区間の集合の状態にかかわらず,区間 のみを含むことになる.したがって,アルゴ
リズムは,価値に極めて敏感に対応できるとともに,同時に,特殊ケースとして,すべての区
間の価値が で等しい(重みなしの)区間スケジューリング問題も解けるようなものでなけれ
ばならないことになる.
任意の大きさの価値が存在するときには,この問題に対して,各時点で区間を 個だけたど
りながらワンパスで正確な決断をするような単純なグリーディ法はなさそうである.そこで代
わりに,すべての最適解の価値を簡潔な表形式で構成し,極めて効率的なアルゴリズムにつな
がる動的計画法 G'&% )
&&
/ を用いてこれを解決する.
問題
二部グラフのマッチング
安定マッチング問題を考えたときに,男女のペアの集合で,男性と女性の各人がいずれもそ
の集合の高々 個の男女のペアに含まれるとき,その集合をマッチング G&#%
/ として定
義した.そして,男性と女性の各人がいずれもその集合のちょうど 個の男女のペアに含まれ
るとき,その集合を完全マッチング G)(%# &#%
/ として定義した.
グラフの用語を用いると,これらの概念をより一般的に定義できる.ここでは,これから定
義する二部グラフ G)## )/ の概念が有効である.グラフ M G / は, のどの辺
も の点と の点を結ぶように点集合 を と に分割できるとき二部 G)##/ であ
るということにする.二部グラフは,通常,図 ; に示すように図示される.特に,>二部グ
ラフであること? G)##""/ を強調するときは, と の点集合を , 列に別々に並べて,
この図のように表すことにする.もちろん,そのように描かれていなくとも,たとえば,図 :
の二つのグラフも二部グラフであることを注意しておく.
安定マッチングを求める問題では,マッチングの集合は男女のペアの集合であったが,対応
する二部グラフでは,辺は点の順序対であり,各点が の高々 個の辺に含まれるような辺
の部分集合 がグラフ M G / のマッチングである.さらに,各点が のちょう
ど 個の辺に含まれるとき, は完全マッチングである.
五つの代表的な問題
実際に安定マッチング問題での概念と同一であることは, 人の男性の集合を , 人の女
性の集合を として, の各点と の各点とを結ぶすべての辺からなる二部グラフ を考
えればよいだろう.すると, のマッチングと完全マッチングは男女間のマッチングと完全
マッチングに一致する.
安定マッチング問題では,さらに好意順リストをこの図に加えることになる.ここでは,好
意順リストは出てこない.しかしながら,本質的に任意の二部グラフを扱うことになるため,
二部グラフのマッチング問題では別の困難性が新しく加わる.すなわち,各 と各 を結ぶ辺が必ずあるというわけではないので,可能なマッチングの集合は極めて複雑な構造を
もつからである.言い換えると,ある限定された男女間のみがペアになりたいと思っているの
で,それに矛盾しないようにして,できるだけ多くのペアを探し出さなければならないからで
ある.たとえば,図 ; の二部グラフ を考えてみよう. にマッチングは多数あるが,完全
マッチングは唯一である(見つけてみよう)
.
二部グラフのマッチングは,対象物を別の対象物に割り当てる状況をモデル化するのにも用
いることができる.したがって, の点はジョブを表し, の点は機械を表し,辺 G / は
機械 がジョブ を処理できることを表すのにも利用できる.すると,完全マッチングは,
各機械に処理できるジョブをちょうど 個割り当てる割当て G""
&#/ に対応する.毎春,
国内のいたるところの情報学科で以下のようなことが繰り返される.すなわち,学科の教授の
集合が で,開講される講義科目の集合が であり,辺 G / は教授 が講義 を担当
することが可能であることを表す二部グラフが取り上げられ,担当講義科目の割当てが熟考さ
れている.このグラフの完全マッチングは,各教授が担当可能な講義をちょうど 科目担当し
てすべての講義科目が開講できるような割当てを表現している.
したがって,二部グラフのマッチング問題 G$)## #%
&/ は,任意の二部グラ
フ が与えられて,サイズが最大のマッチングを求める問題,として定義される. M M であるときは,完全マッチングが存在するのは,最大マッチングのサイズが であるとき,そ
してそのときのみである.二部グラフのマッチング問題に対して,前述のアルゴリズム技法で
はうまく効率的なアルゴリズムにたどりつけないことが,すぐに分かることになる.一方,最
大マッチングを求める華麗で効率的なアルゴリズムが知られている.それは,部分的にバック
トラックしながら反復を繰り返して,マッチングのサイズを次第に大きくしていく方法で,最
大マッチングを構成するというものである.この反復のプロセスは増加操作 G &##/
と呼ばれ,それは,ネットワークフロー問題 G#* P )&/ と呼ばれる,より大き
なクラスの問題を効率的に解くための中心的な構成要素となっている.
問題
独立集合
上記の問題をほぼ特別なケースとして含む極めて一般的な問題に移ろう.与えられたグラフ
M G / に対して,点の部分集合 は,
のどの , 点も辺で結ばれていないとき,
独立集合 G)# "#/ あるいは独立である G)#/ と呼ばれる.独立集合問題
G)# # &/ は,グラフ が与えられて,できるだけ大きい の独立集合を
求める問題として定義される.たとえば,図 のグラフの独立集合の最大サイズは 2 であり,
2 ; などがそのような 2 点からなる独立集合である.
第
1
3
図
はじめに:いくつかの代表的問題
2
4
6
章
5
7
サイズ の最大独立集合とサイズ の最小点カバーをもつグラフ.
独立集合問題は,ある対象物の集合とそれらの対象物のいくつかの対に互いに競合 G%P%#/
があるとき,
(その中から競合のない)必要なものを選ぶ問題などを符号化した問題であると
言える.たとえば, 人の友人がいるとしてその中の何人かをディナーに招待したいと考えて
いるとする.一方,それらの友人間では,関係のよくない友人同士も何組か存在するものとす
る.招待した友人の中にそのような友人同士がいると,ディナーの雰囲気は台無しになってし
まう恐れがあるので,できれば避けたい.このとき,どれだけ多くの人を招待できるであろう
か? という問題を考える.すると,この問題は,友人をグラフの点に対応させ,関係の悪い二人
の友人に対応する , 点を辺で結んでできるグラフの最大サイズの独立集合を求める問題になる.
区間スケジューリングと二部グラフのマッチングは,いずれも独立集合問題の特殊ケースと
して符号化できる.区間スケジューリングに対しては,区間の集合をグラフの点に対応させ,
交差する区間に対応する , 点間に辺を加えて得られるグラフを M G / と定義すればよい
(このグラフは競合グラフと呼ばれることも多い)
.すると,共存可能な区間の集合は, の独
立集合に対応する.これに対して,二部グラフのマッチングを独立集合の特殊ケースとして符
号化するのは少し技巧的になる.与えられた二部グラフ M G
/ に対して,選ばれる対
象は辺であり,, 本の辺は端点を共有するとき競合が生じる(実際,これらの , 本の辺は,同一
のマッチングに同時に含まれることはない)
.したがって,点集合 が の辺集合 に一致
し, の端点を共有する各 , 辺に対応する , 点間に辺を加えて得られるグラフを M G /
として定義する(このグラフも競合グラフと呼ばれる)
.すると, の独立集合が のマッチ
ングに正確に対応することが分かる.この対応をきちんと確認することは複雑ではないが,こ
の種の >辺対点,点対辺? G
"5#5"8 "5#5
"/ の変換を扱うのは集中力を必要と
する .
一般の独立集合問題に対して,それを解く効率的なアルゴリズムがあれば極めて素晴らしい
ことである.それは,同時に,区間スケジューリング,二部グラフのマッチング,および多数
の自然な最適化問題を解くアルゴリズムになっているからである.
独立集合問題の現状は以下のとおりである.この問題に対する効率的なアルゴリズムは未知
であり,実際そのようなアルゴリズムは存在しないだろうと予想されている.すべての点部分
集合に対して,それが独立集合であるかどうかを順番に調べて,調べている部分集合が独立集
疑問を抱く人のために,独立集合問題のインスタンスは,必ずしも区間スケジューリングあるいは二部グ
ラフのマッチングのインスタンスであるというわけではないことを注意しておく.完全版の独立集合問題はもっ
のグラフは,区間スケジューリングのインスタンスで生じる競合グラフになる
と一般的なのである.図
のグラフは,二部グラフのマッチングのインスタンスで生じる競合グラフになる
ことはない.また,図
ことはない.
五つの代表的な問題
合ならば,そのサイズがそれまでの独立集合の最大サイズよりも大きいときはそれを現在まで
の最大サイズの独立集合として保存しておき,全探索するという自明な方法が考えられる.実
はこれが,独立集合問題に対する現在可能な最善の方法に近いものなのである.本書の後の章
で,独立集合問題は,#完全 G5%&)#/ と呼ばれる問題のクラスに属する問題の一つ
であることを眺める.このクラスの問題に対しては,どの問題に対しても効率的なアルゴリズ
ムが知られていない.しかしながら,このクラスのいずれか一つの問題に対してでもその解が
得られれば,このクラスの他のすべての問題の解も得られることになる,という意味でこのク
ラスの問題は等価であるのである.
独立集合問題の計算複雑さに対して何か良いことは言えるか? という質問は極めて自然なも
のであろう.これに対する一つの良い例は以下のようなものである.--- 点からなるグラフ
が -- 点の独立集合 をもっているとき,それを納得させることは簡単である.実際,
に含まれるグラフ の点に赤で丸を付けて示せばよいからである.そうすると,あとは単に
赤丸の点同士を結ぶ辺が存在しないことを検証すればよい.したがって,大きな点の部分集合
が独立であるかどうかを検証すること G%%*
/ と実際に大きな点の独立集合を求めること
GA
/ の間には,計算複雑さの観点から,大きな違いがあることが分かる.これは,極めて
基本的な事実に思えるし,実際そのとおりである.そして,これがこの 5完全問題のクラス
の理解には本質的なことなのである.さらに,次に眺めるように,このような意味で解を >検
証する? ことさえも困難な問題もありうるのである.
問題
!
競争的施設配置
" #$ %
最後の ; 番目の問題は,以下の二人ゲームに基づいているものである.国内のいたるとこ
ろにフランチャイズのカフェー店を経営する二つの大手の会社があったとしよう.便宜上,
!# と J L Q" < としておく.そして現在,ある地域でシェアの競争をしてい
るとする.最初 !# がフランチャイズ店を開店し,次に J L Q" < がフラン
チャイズ店を開店するとする.さらにその後, !#,J L Q" <,と交互にフ
ランチャイズ店を開店していくとする.地域の開設店舗規制により,二つのフランチャイズ店
が近接して開店することは禁じられている.もちろん, !# と J L Q" < の
いずれもできるだけ好位置にフランチャイズ店を開店したいと考えている.どちらが勝つであ
ろうか?
この >ゲーム? G
&/ のルールをもっとはっきりとしよう.問題となっている地域は, 個
の区域に分割されている.それらに ,
のラベルが付けられている.各区域 には,い
ずれの会社もそこにフランチャイズ店を開店したときに得られる収入に対応する価値 が付随
している.地域店舗規制により,会社にかかわらず,同時には店を開店できないような隣接す
る GI%#/ 二つの区域 G / の対がいくつかあるものとする.(同一の区域に,フランチャイ
.これらの競合は,区域の集合を とし,二
ズ店を , 店開店することもできないものとする)
つの区域 と が隣接するとき辺 G / を加えてできる集合を とすると,グラフ M G /
でモデル化できる.すると,地域店舗規制は,開店されるすべてのフランチャイズ店の集合が,
の独立集合であることを要求していることになる.
したがって,ゲームは,二人のプレーヤー と が交互に の点を選んでいくことにな
第
10
1
5
図
15
5
1
5
章
はじめに:いくつかの代表的問題
1
15
10
競争的施設配置問題のインスタンス.
る.最初 が の点を選ぶ.すべての時点で,選ばれた点の集合は の独立集合になる.そ
こで,プレーヤー は価値 を達成目標としているものとする.このとき, がどのよう
,すなわち, の得られる
にプレーしようとも, が目標を達成する戦略(必勝戦略という)
価値が 以上となる方法,が存在するかどうか知りたいとする.これが,競争的施設配置問題
G&)##! %#' @%# &/ のインスタンスである.
たとえば,図 9 に示したインスタンスを考えてみよう.そして, の達成目標は M ,であるとする.すると, には必勝戦略がある.一方, の達成目標を M ,; とすると,
には必勝戦略が存在しないことになる.
この図をしばらく眺めて考えれば上記の解を見つけることができるだろう.しかし,>もし がここに来たら はここへ行き,あるいは が別のこちらに来たら はそこへ行き, ?
というような場合分けを検証して,はじめて解にいたるので,かなりの時間を要する.実は,
これがこの問題の本質的な側面なのである. が必勝戦略をもつかどうかを決定することが計
算複雑さの観点から困難であるだけでなく,それほど大きくないサイズの問題であっても,
が必勝戦略をもつことを納得させることも難しいのである.簡単に納得させられるような短い
証明はなさそうで,極めて長い場合分け解析でしか納得させることができなさそうに思える.
大きいサイズの独立集合を求めることは困難であると考えられるが,与えられた大きいサ
イズの独立集合が実際に独立集合であることを検証するのは易しいので,独立集合問題と大き
く異なるのは,この点である.この対比が,競争的施設配置問題を含む 完全問題
G+5%&)# )&/ と呼ばれている問題のクラスを定義するのに用いられている.
+5完全問題は,5完全問題よりも,真に計算困難な問題であると信じられている.解
に対して簡単に納得させられるような短い証明がないという予想が,より計算困難である根拠
の一つに挙げられている.+5完全問題の概念は,ゲームプレーイングや各種計画問題
を含む多くの問題の本質を把握するもので,人工知能の分野の大きな研究トピックスになって
いる.
解答付き演習問題
解答付き問題
ある町に 人の男性と 人の女性がいてお互いに結婚を望んでいる.各男性は女性全員を好
きな順に並べた好意順リストを,各女性は男性全員を好きな順に並べた好意順リストをもって
いる.
, 人の集合は , タイプに,すなわち良い人と悪い人に分類される.そこで, のある に対して, 人の良い男性と 人の良い女性がいるとする.したがって, 人の
悪い男性と 人の悪い女性がいることになる.
解答付き演習問題
誰もが,悪い人よりも良い人と結婚したいと思っている.したがって,各人の異性に対する
好意順リストでは,良い人が好きなほうの先に来て,その後に悪い人が続いている.すなわち,
人の良い人が前で 人の悪い人が後である.良い人同士,悪い人同士の好きな順序は,
各人任意であってよいとする.
このとき,いずれの安定マッチングでも,良い男性は良い女性と結婚することになることを
示せ.
解答
命題をどのようにして証明しようかと考え始めて,命題が真でないと仮定して矛盾を導
き出そう,ということに至ることは,自然な成り行きであろう.ところで,命題が真でないと
いうことは,何を意味するのであろうか? それは,ある安定マッチング が存在して,ある
良い男性 がある悪い女性 と結婚することになっているということを意味する.
そこで, における他のペアがどうなっているか考えよう. 人の良い男性と 人の良い女
性がいるが,このマッチング において,すべての良い女性が良い男性と結婚しているであ
ろうか? もちろん答は である.良い男性の一人(すなわち )が悪い女性と結婚している
ので,良い男性は 人しか残っていない.したがって,その全員が良い女性と結婚してい
るとしても,悪い男性と結婚している女性が一人はいることになるからである.
そこで, を悪い男性と結婚している良い女性とする.すると, における不安定性はす
ぐに得られる.ペア G / を考えればよい. と はどちらも良い人であるが,いずれも
悪い人と結婚している. と はどちらも現在のパートナーよりお互いがより好きである.
したがって,G / は不安定性である.これは, が安定であると仮定したことに矛盾する.
したがって,証明が完成したことになる.
解答付き問題 禁止されているような男女ペアのある場合に一般化された安定マッチング問題について考え
ることもできる.たとえば企業と応募者の関係では,必要な資格や証明書などがないため,あ
る応募者はどんなに入りたくてもある企業には応募できない,という状況を思い浮かべてみれ
ばよいだろう.男女間の結婚の例では, 人の男性の集合 と 人の女性の集合 におい
て,結婚することが許されないペアの集合 が存在する状況である.各男性 は
G / となるようなすべての女性 を好きな順に並べた好意順リストをもち,各女性 は G / となるようなすべての男性 を好きな順に並べた好意順リストをもつ.
このより一般化された状況では,マッチング は,以下のいずれにも当てはまらないとき,
安定 G"#/ であると呼ばれる.
G/ (これまでと同じ通常の不安定性) G / であり, が より が好きで,かつ
が より が好きであるような二つのペア G / と G / が に存在する.
G/(既婚女性との不倫の可能性のある独身男性の存在による不安定性)G / であり,
は のどのペアにも含まれず,かつ が より が好きであるようなペア G / と男性 が存在する.
G/ (既婚男性との不倫の可能性のある独身女性の存在による不安定性)G / であり,
は のどのペアにも含まれず,かつ が より が好きであるようなペア G / 第
章
はじめに:いくつかの代表的問題
と女性 が存在する.
G!/ (未婚の男女の結婚の可能性による不安定性)G / であるが,
のどのペアにも
含まれないような男性 と女性 が存在する(二人の独身男女に対して,結婚が禁止さ
れていなければ,この二人が結婚に進むことに対して障害は何もない)
.
このような一般的な定義のもとでは,安定マッチングは必ずしも完全マッチングにはならない
ことを注意しておく.
ここで問題は,どのような好意順リストおよびどのような禁止ペア集合に対しても安定マッ
チングはいつも存在するか? ということになる.この問題を解決するには,以下の二つのうち
いずれか行えばよい.すなわち,G/ 任意の好意順リストと任意の禁止ペア集合に対して安定
マッチングを求めるアルゴリズムを与えるか,あるいは,G/ 安定マッチングが存在しないよ
うな好意順リストと禁止ペア集合の反例を与えればよい.
解答
75)' G75/ アルゴリズムは,安定マッチング問題の様々な変形版にも対応で
きるかなり頑健(ロバスト)なものである.したがって,安定マッチング問題の新しい変形版
に直面したとき,もし安定性に対する反例が見つけられないならば,75 アルゴリズムを直接
適用して,実際安定マッチングが得られないかどうかを検証してみることは,良いアイデアと
言えるだろう.
ここでは,これがうまくいくことになる.禁止ペアのある一般化された状況でも,75 アル
ゴリズムを少し修正して適用して,実際安定マッチングが得られることを示すことにする.そ
こではじめに,これまでの 75 アルゴリズムをどうして直接適用できないか考えてみよう.も
ちろん,75 アルゴリズムは禁止ペアについて何も知らないで動作するので,そこが問題なわ
けである.したがって,
ループの条件
すべての女性にはプロポーズしていない自由の身の男性 がいる
は正しく動作しない.そこで,ペア G / が禁止されているとき, は にプロポーズしな
いようにしたい.
したがって,ここの ループの 箇所のみを
自由の身の男性 がいて,かつ
G / であるようなすべての女性 にはプロポーズしていない
と修正した 75 アルゴリズムの修正版を考える.
修正したアルゴリズムの詳細は以下のとおりである.
すべての男性 とすべての女性 は自由な身であると初期設定する
自由の身の男性 がいて,かつ
G / であるようなすべての女性 にはプロポーズしていない
そのような男性 を選ぶ
を の好意順リストで がまだプロポーズしていない最も好きな女性とする
が自由の身である G / は婚約する
解答付き演習問題
は現在 と婚約しているとする
が より が好きである は自由の身であり続ける
(コメント: は より が好きである)
G / は婚約する
は自由の身になる
! ! !" 婚約ペアの集合 を返す
新しい定義の安定性のもとで,このアルゴリズムにより,安定マッチングが得られることを
これから証明しよう.
本文の事実 G/8 G,/8 G:/ はそのまま成立する(特に,アルゴリズムは高々 回の反復
で終了する)
.また,得られるマッチング が完全であるかどうかについては考えなくてもよ
い(実際完全マッチングでないことも多い)
.新しく成立する以下のいくつかの事実にも注意す
る. が のどのペアにも含まれないときは, は禁止されていない女性すべてにプロポー
ズしたことになる.また, が のどのペアにも含まれないときは, はどの男性からもプロ
ポーズを受けなかったことになる.
したがって,以下を示しさえすれば十分である.
返されるマッチング に関する不安定性は存在しない.
証明 一般化した新しい定義の不安定性は四つの不安定性からなる.したがって,これらの四
つの不安定性のいずれも成立しないことを示せばよいことになる.
第一に,タイプ G/ の不安定性,すなわち,G / であり, が より が好きで,
かつ が より が好きであるような二つのペア G / と G
/ が に存在したとす
る.すると, は にプロポーズしたはずである.したがって, は のプロポーズを断っ
たことになり, は より最終的なパートナーが好きだったことになる.しかしこれは上記
に矛盾する.
第二に,タイプ G/ の不安定性,すなわち,G
/ であり, は のどのペアにも
含まれず,かつ が より が好きであるようなペア G / と男性 が存在したと
する.すると, は にプロポーズしたはずであり, は のプロポーズを断ったことに
なる.したがって, は より最終的なパートナー が好きだったことになる.同様に,こ
れは上記に矛盾する.
第三に,タイプ G/ の不安定性,すなわち,G / であり, は のどのペアにも
含まれず,かつ が より が好きであるようなペア G / と女性 が存在したと
する.すると,どの男性も にプロポーズしなかったことになり, も にプロポーズし
なかったことになる.一方, は の最終的なパートナーであるので は にプロポーズし
たことになり,これから は より が好きだったということになる.これは上記に矛盾
する.
第
最後に,タイプ G!/ の不安定性,すなわち,G / 章
はじめに:いくつかの代表的問題
であるが,
のどのペアにも含ま
れないような男性 と女性 が存在したとする.すると,男性 は独身であるので,禁止さ
れていない女性すべてにプロポーズしたはずであり,したがって にもプロポーズしたはずで
ある.これから がこれ以上独身であるはずはないことになり,矛盾が得られる.
演習問題
以下の命題が正しいかどうか判定せよ.正しいときはその理由を簡単に述べよ.正しくな
いときは反例を与えよ.
安定マッチング問題のどのインスタンスに対しても, が の好意順リストで
最高位であり,かつ も の好意順リストで最高位であるようなペア G / を
含むような安定マッチングが存在する.
, 以下の命題が正しいかどうか判定せよ.正しいときはその理由を簡単に述べよ.正しくな
いときは反例を与えよ.
が の好意順リストで最高位であり,かつ も の好意順リストで最高位で
あるような安定マッチング問題のインスタンスに対して,すべての安定マッチン
グ はペア G / を含む.
: あるタイプの >安定性? G"##'/ 原理と関係する問題が生じる他の状況も多い.その中
の一つに以下のようなものがあり,それは二つの企業間の競争に関するものである.
二つのテレビ放送局, と ,があるとする. 個のプライムタイム(視聴率競争激戦
時間帯)でしのぎを削っている.どちらもそれ用の 個の H 番組をもっている.各テレ
ビ局は,自社の 個の H 番組のそれぞれを 個のプライムタイムに一つずつ割り当てる
スケジュールをうまく組んで,もう一方のテレビ局との視聴率競争にできるだけ多くの時
間帯で勝とうとしている.
, 社からスケジュールが与えられたとき,そのスケジュールが他社に対してどれだけ良
いか判断する基準は以下のとおりである.各番組は,昨年の放送したその番組に対して,
それを見た視聴者の人数に応じた評価点が付随している.その評価点は番組ごとにすべて
異なり,同じ値をとる番組はないものと仮定する.一方のテレビ局が,与えられたある時
間帯で,そこに割り当てた番組が他方のテレビ局の割り当てた番組よりも評価点が高いと
き,その時間帯で勝つという.このとき,各テレビ局の目標は,できるだけ多くの時間帯
で勝つことである.
秋のシーズン開始の週に,テレビ局 のスケジュール とテレビ局 のスケジュール
が発表されたとする.この二つのスケジュールに基づいて,上記のルールにより,各テ
レビ局はいくつかの時間帯で勝つことになる.二つのスケジュール対 G
/ は,自社の
スケジュールをどのように変えても勝てる時間帯の個数が増加しないとき,安定であると
いう.すなわち,テレビ局 が,どんなスケジュール に変更しても,スケジュール対
G
/ での勝ちの個数は,スケジュール対 G
/ での勝ちの個数を上回ることができず,
同様に,テレビ局 も,どんなスケジュール
に変更しても,スケジュール対 G
/ で
演習問題
の勝ちの個数は,スケジュール対 G
/ での勝ちの個数を上回ることができないとき,ス
ケジュール対 G
/ は安定である.
この種の安定性に対して,7 と )' のときと同様に以下の問題が考えられる.任
意の H 番組の集合と付随する任意の評価点の集合に対して,安定なスケジュール対は必
ず存在するか? この問題に対して以下の二つのいずれかを示して答えよ.
G/ 任意の H 番組の集合と付随する任意の評価点の集合に対して,安定なスケジュール
対を求めるアルゴリズムを与えよ.
G/ 安定なスケジュール対が存在しないような H 番組の集合と付随する評価点の集合の
例を与えよ.
2 7 と )' は,, 年に安定マッチング問題についての論文を発表した.しかし,
アルゴリズムの一つの版は,それより - 年前から,医局を修了した医学生を病院に割り
当てる問題を解決するため,全国研修医マッチングプログラムですでに使用されていた.
簡単に説明すると状況は以下のとおりであった.各病院が何人かの医局修了生を雇うこ
とになっている病院が 個ある.また,ある年に医局を修了した学生が 人いて, 個
の病院のいずれかで働きたいと思っている.各病院はすべての学生に対して採用のための
ランク付けをもち,各学生もすべての病院のランク付けをもっている.ここで, 個の病
院の総採用定員よりも学生の数のほうが多いと仮定する.
もちろん,ここで問題になるのは,各病院の定員がすべて満たされるようにして各学生を
高々 個の病院に割り当てる方法である(学生の総数のほうが病院の総採用定員よりも多
いと仮定しているので,どの病院にも割り当てられないような学生が存在することになる)
.
以下の二つの状況のどちらも起きないとき,学生の病院への割当ては安定であるという
ことにする.
第一の不安定性:以下を満たすような学生 $ は ! に割り当てられている.
$ はどの病院にも割り当てられていない.
$ !
は, よりも がよい.
第二の不安定性:以下を満たすような学生 $ と病院 ! が存在する.
と病院 !
!
が存在する.
は ! に割り当てられている.
$ は ! に割り当てられている.
$ !
は, よりも がよい.
$ は,! よりも ! がよい.
したがって,G/ 一般に病院は二人以上の学生を定員としている,G/ 医学生の数は病院
の総採用定員を超えている,の , 点を除いて,本質的には,安定マッチング問題である.
学生の病院への安定な割当てが常に存在することを示し,安定な割当てを求めるアルゴ
リズムを与えよ.
第
章
はじめに:いくつかの代表的問題
; 本文で述べた安定マッチング問題では,すべての男性とすべての女性の好意順リストはい
ずれも全順序であることを仮定していた.ここでは,男性と女性が好きな順番を付けると
き,選択肢として順番に差を付けられない G<#/ ものも含むことができる安定マッ
チング版を考える.前と同様に, を 人の男性の集合, を 人の女性の集合とする.
すべての男性とすべての女性の異性の好きな順番付けの好意順リストは,一部に同順位の
部分もありうるものと仮定する.たとえば,
( M 2 の)例で,ある女性は, が一番好
きで, と は , 番目に好き(二人のどちらも同じく好き)で,最後に が好きで
ある,ということもできる. の好意順リストで が より上位にある(同じでない)
ならば, は より がより好きであるという.順番付けの一部に同順の部分を含むと
きは,, 種類の安定性を考えることができる.そして,それぞれの安定性のもとで,次の
ように安定マッチングの存在を問う問題が得られる.
G/ 強不安定性 G"#
"##'/ 完全マッチング において,現在のパートナーより
お互いが好きであるという男性 と女性 が存在するとき,それを の強不安定性
という.強不安定性を含まないような完全マッチングは常に存在するか?
これに対して,完全マッチングが必ず強不安定性を含むような男女の好意順リスト
の集合の例を挙げるか,強不安定性を含まないような完全マッチングを必ず求めてく
るアルゴリズムを与えよ.
G/ 弱不安定性 G* "##'/ 男性 と女性 および完全マッチング における
と のそれぞれパートナー と に対して,以下のいずれかが満たされるとき,
それを の弱不安定性という.
$ $ は より が好きであり,かつ, は より が好きであるか は と
が同じく好きである.
は より が好きであり,かつ, は より が好きであるか は と
が同じく好きである.
すなわち, と は(現在のパートナーより)お互いがより好きであるか,一方がよ
り好きで他方が同じく好きである,のいずれかである.弱不安定性を含まないような
完全マッチングは常に存在するか?
これに対して,完全マッチングが必ず弱不安定性を含むような男女の好意順リスト
の集合の例を挙げるか,弱不安定性を含まないような完全マッチングを必ず求めてく
るアルゴリズムを与えよ.
巡回船便会社 G)##% ))
@"8 %8 以下略して @ 社という)は, 個の
船を所有し 個の港間でサービスをする船会社である.各船は毎月どの日にどこの港にい
るかあるいは洋上にいるかがきちんとスケジュールされている(なお,> か月? は 日か
らなり,
であると仮定してよい)
.毎月各船は各港をちょうど 日だけ訪れる.安
全性の観点から,@ 社は以下の要求を必ず守っている.
G/ 二つの異なる船は同じ日に同じ港を訪れることはしない.
演習問題
@ 社は来月,各船のスケジュールを以下のように途中で打ち切ることにして,すべて
の船のメンテナンスを行いたいと考えている.より詳しくは,各船 に対して予定のス
ケジュールのある港に到着したら,メンテナンスを受けるために,来月そこにずっと留ま
ることにする.すなわち、
はスケジュールで来月訪れることになっている残りの港には
行かないことになる.これでもかまわないとしている.したがって,
のスケジュールの
打ち切り G# %#/ は,ある指定された日にある港 を訪れるまではスケジュール と同一であるが,その後は港 に留まることになる.
このとき,@ 社の当面している問題は以下のとおりである.来月の各船のスケジュー
ルが与えられたとき,条件 G/ が引き続き満たされるような,すなわち,二つの異なる船
は同じ日に同じ港にいることはない,を満たすような,各船のスケジュールの打ち切りを
求めよ.
そのような打ち切りが常に存在することを証明し,それを見つけるアルゴリズムを与
えよ.
例題.二つの船と二つの港があるとする.>来月? は 2 日からなるとする. 番目の船のス
ケジュールは,
港 ; 洋上; 港 ; 洋上
であるとする., 番目の船のスケジュールは,
洋上; 港 ; 洋上; 港 であるとする.すると,打ち切りは唯一で, 番目の船は第 : 日の港 からそこに留ま
り,, 番目の船は第 , 日の港 からそこに留まるというものになる.
9 大手の通信ネットワーク会社の一つである # で,友人の何人かが働いているとする.
彼らは,ある特殊な入力D出力クロスバーのスイッチングアルゴリズムを求めている.
以下はその背景である. 本の入力線 G) # / と 本の出力線 G #) # / が
あり,いずれも入口 G" %/ から出口 G#& "/ へと向きづけられている.各入力線と
各出力線は,結合点 GI %# F/ と呼ばれる特殊なハードウェア機器で,ちょうど 点
でつながれている.線上のそのような点は入口から出口に向かって自然に順番づけられて
いる.同一線上の二つの異なる結合点 と に対して, が よりも入口に近いとき は
の上流 G )"#&/ にあるという.そうでないときは, は の下流 G"#&/ に
あるという.一つの入力線が出力線と交差する結合点の順序と別の入力線が出力線と交差
する結合点の順序とは,必ずしも一致しない(同様に,二つの出力線が入力線と交差する結
合点の順序は必ずしも一致しない)
.図 1 に,入力線と出力線の集合の例を示している.
この状況でのスイッチ機能は以下のとおりである.各入力線は異なるデータストリーム
を伝送し,このデータストリームはいずれかの出力線にスイッチされる.入力線 のスト
リームが結合点 で出力線 にスイッチされると,このストリームは,まず入力線 の より上流のすべての結合点を通過し,次に を通り,最後に出力線 の より下流のす
べての結合点を通過する.入力データストリームがいずれの出力線にスイッチされてもか
まわないが,どの入力データストリームも異なる出力線にスイッチされなければならない.
さらに,微妙な制約であるが,スイッチ操作に基づいて,二つの異なるデータストリーム
第
結合点
結合点
章
はじめに:いくつかの代表的問題
出力線1
(入力線1の前に入
力線2と交差する)
出力線2
(入力線2の前に入
力線1と交差する)
結合点 結合点
入力線2
入力線1
(出力線1の前に出 (出力線2の前に出
力線2と交差する) 力線1と交差する)
図
本の入力線と 本の出力線の例.入力線
は,出力線 との結合点が出力線
との結合点
よりも上流にある.入力線 は,出力線 との結合点が出力線 との結合点よりも上流にあ
る.正しい解は,入力線 のデータストリームを出力線 にスイッチし,入力線 のデータ
ストリームを出力線 にスイッチすることである.一方,入力線 のデータストリームが出
力線 にスイッチされ,入力線 のデータストリームが出力線 にスイッチされると,両方
のストリームが入力線
れは許されない.
と出力線 との結合点を通過するようになってしまう.そして,こ
は同じ結合点を通ることが許されない.
これで,問題を提示できるようになった.各入力線と各出力線がちょうど 回結合点で
交差するどのパターンに対しても,各入力データストリームが異なる出力線にスイッチさ
れ,得られるストリームは同一の結合点を通ることのない正しいデータストリームが常に
存在することを示せ.さらに,正しいデータストリームを求めるアルゴリズムを与えよ.
1 この問題では,安定マッチング問題と 75)' アルゴリズムにおける正直性 G# #5
( ""/ の問題を取り上げる.嘘の順番付けの好意順リストを用いて得をすることができ
るであろうか? もっと具体的に言うと,参加者は正しい順番付けの好意順リストを用い
ていると仮定する.そこで,一人の女性 を考える. は男性 より男性 が好きで
あるとする.さらに, と は の好意順リストで下位にあるとする. の好意順リス
トで と の順番を交換して(すなわち,故意に より が好きであると主張する
と)
,この嘘の の好意順リストでアルゴリズムを走らせると, は と よりも真に
良い男性 とペアになれるであろうか?(男性についても同一の問題を考えることがで
きるが,ここでは女性に限定することにしよう.
)
この問題に対して以下の二つのいずれかを示して答えよ.
G/ 任意の好意順リストに対して,女性のある一人の好意順リストで好きな二人の男性の
順番を替えても,75)' アルゴリズムで得られるパートナーは良くならないこと
の証明を与えよ.
G/ 女性のある一人の好意順リストで好きな二人の男性の順番を替えると,75)'
ノートと発展文献
アルゴリズムで得られるパートナーが良くなるような例を与えよ.
ノートと発展文献
安定マッチング問題は,7 )' G,/ で初めて定義され解析された.!
7 によれば, * 誌で取り上げられた大学の入学合格発表のプロセスの複雑さにつ
いての当時の記事を読んだことが,彼らが研究を始めた動機になったということである G78
,--/. 安定マッチング問題はそれ自身でも研究の対象となり,7 "A !
G1/
と # G9%/ の本でも取り上げられている.7 "A !
には,医学や他の職業
で応募者と採用者のマッチングに対して開発された技法が独自の分野で >平行? G)/ して
進展した研究の歴史の良い調査も載っている.
本章で述べたように,五つの代表的な問題は,本書では,それぞれ,グリーディアルゴリズ
ム,動的計画法,ネットワークフロー,5完全性,+5完全性の中核的な議論に結びつ
くものである.本書の後の章でこれらの問題をこの枠組みで取り上げることにする.