SlideShare a Scribd company logo
1 of 10
Majorizationについて
sky58
こんな競プロの問題がありました
• 2つの次元が同じベクトルA,Bが与えられる。A=XBを満たす、各要素
が非負で各行・各列の要素の和が1となる行列Xを構成できるか判
定せよ。
• A,Bの次元数は5000以下
• 全ての要素は非負
• Aの全ての要素の和とBの全ての要素の和は等しい
• 出展:ICPCアジア地区予選台湾大会2013I問題
当時考えたこと
• あるAの要素に対して、それ以上のBの要素が無ければ不可能
• 同様に、Aのある2要素の和に対して、それ以上の和となるBの2要素
が無ければ不可能
• Aの要素を降順に{𝑎1, 𝑎2, ⋯ 𝑎 𝑛}、Bの要素を降順に{𝑏1, 𝑏2, ⋯ 𝑏 𝑛}と並
べた時、あるの1 ≤ 𝑖 ≤ 𝑛に対し 𝑘=1
𝑖
𝑎 𝑘 > 𝑘=1
𝑖
𝑏 𝑘となれば不可能
• 逆に、そうでなければ構成できるのではないか?
• その方針で実装→AC
用語を導入すると
• 各要素が非負で、各行・各列の要素の和が1となる正方行列を二重
確率行列と呼ぶ。
• N個の実数の組A= {𝑎1, 𝑎2, ⋯ 𝑎 𝑛}, B= {𝑏1, 𝑏2, ⋯ 𝑏 𝑛}をそれぞれ降順
に並べたA’= {𝑎′1, 𝑎′2, ⋯ 𝑎′ 𝑛}, B’= {𝑏′1, 𝑏′2, ⋯ 𝑏′ 𝑛}に対し
• 𝑘=1
𝑛
𝑎′ 𝑘 ≤ 𝑘=1
𝑛
𝑏′ 𝑘
• 任意の1 ≤ 𝑖 ≤ 𝑛に対し、 𝑘=1
𝑖
𝑎′ 𝑘 ≤ 𝑘=1
𝑖
𝑏′ 𝑘
を満たす時、BはAをmajorizeすると呼び、A<<Bなどと表す。
• この用語を導入すると、先の問題は以下のような命題を表している
A<<Bと、A=XBを満たす二重確率行列Xの存在は同値である
(ざっくりとした)証明
• A<<Bなら、Bに有限回のT-変換を施すことでAを得られると仮定する
• T-変換とは、𝐶 ∈ 𝑅 𝑛に対して、𝑇𝐶 = 𝑐1, ⋯ , 𝑐𝑖−1, 𝑡𝑐𝑖 + 1 −
(ざっくりとした)証明
• A<<Bなら、Bに有限回のT-変換を施すことでAを得られることの証明
• 帰納法で示す。n=2は自明。以下、n-1では示されているとする。
• A<<Bかつ中身ソート済みの時𝑏1 ≥ 𝑏 𝑘−1 ≥ 𝑎1 ≥ 𝑏 𝑘を満たす2 ≤ 𝑘 ≤ 𝑛が存
在する。その為𝑎1 = 𝑡𝑏1 + 1 − 𝑡)𝑏 𝑘なる0 ≤ 𝑡 ≤ 1を満たす𝑡が取れる。
• なので、BをT-変換して{𝑎1, 𝑏2, ⋯ , 𝑏 𝑘−1, 𝑡𝑏 𝑘 + 1 − 𝑡 𝑏1, 𝑏 𝑘+1 ⋯ , 𝑏 𝑛}にできる。
• ここで、𝑏2 ≥ ⋯ ≥ 𝑏 𝑘−1 ≥ 𝑎2 ≥ ⋯ ≥ 𝑎 𝑘−1とA<<Bより、 { 𝑏2, ⋯ , 𝑏 𝑘−1, 𝑡𝑏 𝑘 +
他の問題でも似たような話が?
• 合計n個のアメをk人に配って、各人が持ってるアメの数の積を最大
化するにはどう配ればいいか?
• 出展:ARC039B問題「高橋幼稚園」
• もちろん、できるだけ均等に配ればいい。
• できるだけ均等に配るということは、他の全ての配り方にmajorizeさ
れているということでもある。
• A<<Bかつ全ての要素が正なら、Aの全ての要素の積はBの全ての要
素の積以上になるのではないか?
(ざっくりとした)証明
• 前述のように、A<<BならBから有限回のT-変換でAにできる。
• T-変換すると、要素の積が
𝑡𝑏 𝑖+ 1−𝑡)𝑏 𝑗) 𝑡𝑏 𝑗+ 1−𝑡)𝑏 𝑖)
𝑏 𝑖 𝑏 𝑗
倍になる。
• 𝑡𝑏𝑖 + 1 − 𝑡)𝑏𝑗) 𝑡𝑏𝑗 + 1 − 𝑡)𝑏𝑖) = 𝑡 1 − 𝑡) 𝑏𝑖 + 𝑏𝑗 )2≤
𝑏 𝑖+𝑏 𝑗
2
)2≤ 𝑏𝑖 𝑏𝑗より、
𝑡𝑏 𝑖+ 1−𝑡)𝑏 𝑗) 𝑡𝑏 𝑗+ 1−𝑡)𝑏 𝑖)
𝑏 𝑖 𝑏 𝑗
≤ 1となる。
• よってT-変換においては要素の積は増えないので、A<<Bかつ全ての
要素が正ならAの全ての要素の積はBの全ての要素の積以上になる
まとめ
• A<<Bと二重確率行列Xを使ってA=XBと表せるかは同値
• 何か面白そうな性質なので誰かこんな感じのことを使ったプロコンの
問題とか作ってみてください
参考URL
• 英語版Wikipedia
• http://en.wikipedia.org/wiki/Majorization
• 何とニコニコ大百科にも記事がある
• http://dic.nicovideo.jp/a/majorization

More Related Content

Viewers also liked

文字列検索のいろいろ
文字列検索のいろいろ文字列検索のいろいろ
文字列検索のいろいろKazuma Mikami
 
部内勉強会 数え上げの基礎
部内勉強会 数え上げの基礎部内勉強会 数え上げの基礎
部内勉強会 数え上げの基礎Kazuma Mikami
 
指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端Yoichi Iwata
 
様々な全域木問題
様々な全域木問題様々な全域木問題
様々な全域木問題tmaehara
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムTakuya Akiba
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化yosupo
 
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)AtCoder Inc.
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門Yoichi Iwata
 
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~Yuma Inoue
 
永続データ構造が分からない人のためのスライド
永続データ構造が分からない人のためのスライド永続データ構造が分からない人のためのスライド
永続データ構造が分からない人のためのスライドMasaki Hara
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~Takuya Akiba
 
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjpcocodrips
 
やさしい整数論
やさしい整数論やさしい整数論
やさしい整数論Kazuma Mikami
 

Viewers also liked (20)

文字列検索のいろいろ
文字列検索のいろいろ文字列検索のいろいろ
文字列検索のいろいろ
 
部内勉強会 数え上げの基礎
部内勉強会 数え上げの基礎部内勉強会 数え上げの基礎
部内勉強会 数え上げの基礎
 
指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端
 
Coqの公理
Coqの公理Coqの公理
Coqの公理
 
様々な全域木問題
様々な全域木問題様々な全域木問題
様々な全域木問題
 
動的計画法
動的計画法動的計画法
動的計画法
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
 
ソーティングと貪欲法
ソーティングと貪欲法ソーティングと貪欲法
ソーティングと貪欲法
 
計算量とオーダー
計算量とオーダー計算量とオーダー
計算量とオーダー
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化
 
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門
 
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~
 
計算量
計算量計算量
計算量
 
辺彩色
辺彩色辺彩色
辺彩色
 
永続データ構造が分からない人のためのスライド
永続データ構造が分からない人のためのスライド永続データ構造が分からない人のためのスライド
永続データ構造が分からない人のためのスライド
 
Nazoki
NazokiNazoki
Nazoki
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
 
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
 
やさしい整数論
やさしい整数論やさしい整数論
やさしい整数論
 

競技プログラミングにおけるMajorization