SlideShare a Scribd company logo
2014/03/19立命館大学競技プログラミング合宿
G: Derangement!
- 完全順列 -
原案:井上!
解答:井上
"1
2014/03/19立命館大学競技プログラミング合宿
問題概要
順列pが与えられるので、完全順列となるように並
べ替えたい!
順列qが完全順列 ⇔ qi≠i for all i !
操作は任意の2要素pi,pjの交換のみで、1回のコスト
は(pi+pj)×|i-j|!
コストを最小化せよ
"2
12354 → 21354 → 23154
(1+2)×1 (1+3)×1
完全順列
コスト7
例:
2014/03/19立命館大学競技プログラミング合宿
想定解法: 最小費用流
"3
補題1: 順列pを特定の順列qに並べ替えるための最小コストは、"
1. pi,pjの交換をコスト(pi+pj)×|i-j|で行う操作"
2. piを位置jにコストpi×|i-j|で割り当てる操作"
のどちらでも等しくなる
補題2:piを位置jにコストpi×|i-j|で割り当てる操作を用いて

順列pを完全順列に並べ替えるための最小コストは、"
最小費用流を用いて求めることができる
52314
32514
(5+3)×|1-3| 52314
42513
4×|5-1|
正確には
最小重み完全2部
マッチング
2014/03/19立命館大学競技プログラミング合宿
想定解法: 最小費用流
"4
定理: pi,pjの交換をコスト(pi+pj)×|i-j|で行う操作を用いて"
順列pを完全順列に並べ替えるための最小コストは、"
最小費用流を用いて求めることができる
証明:補題2により求めた最小コストをC、コストCを実現
する順列をqとする。補題1より、順列qは入替操作に
よってもコストCで得られる。入替操作によりコスト
C未満で得られる完全順列q’を仮定すると、q’は割当
操作によってもC未満で得られることになり、Cが最
小コストであることに矛盾する。■
2014/03/19立命館大学競技プログラミング合宿
補題1: 入替最小=割当最小
割当コストpi×|i-j|は入替コスト(pi+pj)×|i-j|を分
解したものになっているので、入替最小 割当最小!
!
pからqへの割当最小は、pi=qjとなるjに割り当てる
こと!
よって、入替操作も上記割当最小と等しいコスト
で可能なことを示せばよい
52314 32514
(5+3)×|1-3|
52314
32514
3×|1-3|5×|1-3|
2014/03/19立命館大学競技プログラミング合宿
補題1: 入替最小=割当最小
割当で行きたいところへ行きたいところへコ
スト付きの辺を張ったグラフを考える
35 82 91 67 4
例: p = 532819764, q = 821465739 (例えば4は4番目に行きたい)
9×35×5 3×6
4×5
1×2
8×3
2014/03/19立命館大学競技プログラミング合宿
補題1: 入替最小=割当最小
割当で行きたいところへ行きたいところへコスト
付きの辺を張ったグラフを考える!
サイクルに分解できる。分けて考えてよい
3 5 82 91 6 74
5×5 9×3
4×58×3
2014/03/19立命館大学競技プログラミング合宿
補題1: 入替最小=割当最小
サイクルになっている = 左端から右端へのパ
スがある
35 82 91 67 4
5-4パス
4-5パス
2014/03/19立命館大学競技プログラミング合宿
補題1: 入替最小=割当最小
サイクルになっている = 左端から右端へのパスがある!
これを無駄なコストなしの操作で順路のみにしたい!
上・下分けて考える
35 1 6 4
5-4パス
4-5パス
2014/03/19立命館大学競技プログラミング合宿
補題1: 入替最小=割当最小
逆辺をその行き先と入れ替えればよい
35 82 91 67 4
9×2
5×5 8×5
35 92 81 67 4
5×5 8×3
9×2 + 8×2
2014/03/19立命館大学競技プログラミング合宿
補題1: 入替最小=割当最小
左端→順路→右端→逆路→左端にできた
35 92 81 67 4
5×3 8×39×2
4×41×4
端の様子は2通り!
出ていく先の方が入ってくる元より奥!
入ってくる元の方が出ていく先より奥
2014/03/19立命館大学競技プログラミング合宿
補題1: 入替最小=割当最小
出ていく先の方が入ってくる元より奥

→入ってくる元と端を交換
35 92 81 67 4
5×3 8×39×2
4×4
1×4
35 92 81 67 4
5×3 9×2
4×11×4
4×3 + 8×3
2014/03/19立命館大学競技プログラミング合宿
補題1: 入替最小=割当最小
入ってくる元の方が出ていく先より奥

→入ってくる元と出て行く先を交換
35 92 81 67 4
5×3 8×39×2
4×41×4
35 92 81 67 4
5×3 8×39×1
4×41×3
9×1 + 1×1
2014/03/19立命館大学競技プログラミング合宿
補題1: 入替最小=割当最小
無駄なコストなしにサイクルを分解していく
方法がある!
どの操作においてもサイクルの長さは真に小
さくなるため、必ずすべて分解することがで
きる!
!
結論:入替最小 = 割当最小
2014/03/19立命館大学競技プログラミング合宿
補題2: 割当最小=最小費用流
n個の要素とn個の位置との最小重み最大二部マッチ
ングとなる!
piを位置jに割り当てるコストはpi×|i-j|!
piからjにコストpi×|i-j|の辺を張る!
それぞれの要素・位置は1度しか使えない = 流量1
S
1
2
3
1
3
2 T
例: 132
2014/03/19立命館大学競技プログラミング合宿
補題2: 割当最小=最小費用流
n個の要素とn個の位置との最小重み最大二部マッチ
ングとなる!
piを位置jに割り当てるコストはpi×|i-j|!
piからjにコストpi×|i-j|の辺を張る!
それぞれの要素・位置は1度しか使えない = 流量1
S
1
2
3
1
3
2 T
例: 132 0/1
0/1
0/1 0/1
0/1
0/1
0/1
2/1
4/1
コスト/流量
2014/03/19立命館大学競技プログラミング合宿
補題2: 割当最小=最小費用流
n個の要素とn個の位置との最小重み最大二部マッチ
ングとなる!
piを位置jに割り当てるコストはpi×|i-j|!
piからjにコストpi×|i-j|の辺を張る!
それぞれの要素・位置は1度しか使えない = 流量1
S
1
2
3
1
3
2 T
例: 132 0/1
0/1
0/1 0/1
0/1
0/1
0/1
4/1
コスト/流量
2014/03/19立命館大学競技プログラミング合宿
writer解
井上(C++) 97行 O(N3)!
井上(C++) 90行 O(N3logN)!
辺がN×(N-1)本あるグラフなので、primal-
dual法でのダイクストラはO(V2)の実装を用
いた方が理論計算量上は高速になります
2014/03/19立命館大学競技プログラミング合宿
提出状況
First Acceptance!
on-site: lyozukky (02:13)!
on-line: natsugiri (00:48)!
on-rail: pepsin_amylase (00:39)!
正答率 8/13 (61.5%)

More Related Content

Viewers also liked

Graph Clustering on Missing Data
Graph Clustering on Missing DataGraph Clustering on Missing Data
Graph Clustering on Missing Data
Yuma Inoue
 
LP Duality
LP DualityLP Duality
LP Duality
Yuma Inoue
 
Thesis Defence for Doctor of Information Science
Thesis Defence for Doctor of Information ScienceThesis Defence for Doctor of Information Science
Thesis Defence for Doctor of Information Science
Yuma Inoue
 
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~
Yuma Inoue
 
博士論文執筆の流れ
博士論文執筆の流れ博士論文執筆の流れ
博士論文執筆の流れ
Yuma Inoue
 
RUPC2014_Day3_F
RUPC2014_Day3_FRUPC2014_Day3_F
RUPC2014_Day3_FYuma Inoue
 
RUPC2014_Day3_D
RUPC2014_Day3_DRUPC2014_Day3_D
RUPC2014_Day3_DYuma Inoue
 
RUPC2014_Day3_A
RUPC2014_Day3_ARUPC2014_Day3_A
RUPC2014_Day3_AYuma Inoue
 
RUPC2014_Day3_E
RUPC2014_Day3_ERUPC2014_Day3_E
RUPC2014_Day3_EYuma Inoue
 
RUPC2014_Day3_B
RUPC2014_Day3_BRUPC2014_Day3_B
RUPC2014_Day3_BYuma Inoue
 
RUPC2014_Day3_C
RUPC2014_Day3_CRUPC2014_Day3_C
RUPC2014_Day3_CYuma Inoue
 
RUPC2014_Day3_Summary
RUPC2014_Day3_SummaryRUPC2014_Day3_Summary
RUPC2014_Day3_SummaryYuma Inoue
 
Revisiting floorplan representation
Revisiting floorplan representationRevisiting floorplan representation
Revisiting floorplan representation
Yuma Inoue
 
2年生向けICPC紹介資料
2年生向けICPC紹介資料2年生向けICPC紹介資料
2年生向けICPC紹介資料Yuma Inoue
 
Planar graph
Planar graphPlanar graph
Planar graph
Yuma Inoue
 

Viewers also liked (17)

Graph Clustering on Missing Data
Graph Clustering on Missing DataGraph Clustering on Missing Data
Graph Clustering on Missing Data
 
LP Duality
LP DualityLP Duality
LP Duality
 
Thesis Defence for Doctor of Information Science
Thesis Defence for Doctor of Information ScienceThesis Defence for Doctor of Information Science
Thesis Defence for Doctor of Information Science
 
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~
 
博士論文執筆の流れ
博士論文執筆の流れ博士論文執筆の流れ
博士論文執筆の流れ
 
RUPC2014_Day3_F
RUPC2014_Day3_FRUPC2014_Day3_F
RUPC2014_Day3_F
 
RUPC2014_Day3_D
RUPC2014_Day3_DRUPC2014_Day3_D
RUPC2014_Day3_D
 
RUPC2014_Day3_A
RUPC2014_Day3_ARUPC2014_Day3_A
RUPC2014_Day3_A
 
RUPC2014_Day3_E
RUPC2014_Day3_ERUPC2014_Day3_E
RUPC2014_Day3_E
 
RUPC2014_Day3_B
RUPC2014_Day3_BRUPC2014_Day3_B
RUPC2014_Day3_B
 
RUPC2014_Day3_C
RUPC2014_Day3_CRUPC2014_Day3_C
RUPC2014_Day3_C
 
RUPC2014_Day3_Summary
RUPC2014_Day3_SummaryRUPC2014_Day3_Summary
RUPC2014_Day3_Summary
 
Senshu lt
Senshu ltSenshu lt
Senshu lt
 
Arc 010 d
Arc 010 dArc 010 d
Arc 010 d
 
Revisiting floorplan representation
Revisiting floorplan representationRevisiting floorplan representation
Revisiting floorplan representation
 
2年生向けICPC紹介資料
2年生向けICPC紹介資料2年生向けICPC紹介資料
2年生向けICPC紹介資料
 
Planar graph
Planar graphPlanar graph
Planar graph
 

RUPC2014_Day3_G