- 各S\in\mathcal{S}に対して|S|=n.
- 各S\neq T\in \mathcal{S}に対して|S\cap T|\leq d.
理論計算機科学 (Thoerotical Computer Science) の色んな定理やアルゴリズムを紹介していきます. 基本的には日本語の資料がほとんどないような知見を解説していきます.
2022年7月4日月曜日
combinatorial designの構成
2022年4月19日火曜日
ランダム行列の行列積 part 3
Part1, Part2に引き続き, 有限体\mathbb{F}_q上の二つの独立な一様ランダムな行列A,B\sim\mathbb{F}_q^{n\times n}が与えられた時に積ABを計算せよという問題は最悪計算量 (任意の与えられたA,Bに対してABを計算する時の計算量) とほぼ一致することを見ました. 具体的にはPart1,2で以下の二つの定理を証明しました.
- 定理1では\mathcal{A}の成功確率は0.75以上でなければ意味をなさない.
- 定理2では\mathbb{F}_qのサイズが大きくなければならない.
- v_1,\dots,v_k\sim\mathbb{F}_q^nを一様ランダムに生成する.
- v_{k+1},\dots,v_nをそれぞれv_1,\dots,v_kのランダムな線形結合とする (結合の各係数が\mathbb{F}_q上一様ランダム).
- v_1,\dots,v_nを並べた行列をR_kとして出力する.
- A\in Dを満たす任意の入力(A,B)に対してABを計算するアルゴリズム\mathcal{A}_1を構成する.
- \mathcal{A}_1をサブルーチンとして呼び出すことでA\not Dに対してもABを計算できるアルゴリズム\mathcal{A}_2を構成する.
- R_kとS_1,S_2,S_3\sim \mathbb{F}_q^Nをサンプリングし, S_4=S_1+S_2-S_3-(B+R_k)とする.
- AR_kを計算する (R_kのランクが小さくサンプリングした時に線形結合もわかっているのでO(kn^2)時間で計算できる).
- C=\mathcal{A}(A,S_1)+\mathcal{A}(A,S_2)-\mathcal{A}(A,S_3)-\mathcal{A}(A,S_4)-AR_kとする. AB=CかどうかをFreivaldのアルゴリズムで確認し, Yesならば出力. そうでなければ最初のステップに戻る.
- R_kとS'_1,S'_2,S'_3\sim \mathbb{F}_q^Nをサンプリングし, S_4=S_1+S_2-S_3-(A+R_k)とする.
- R_kBを計算する (R_kのランクが小さくサンプリングした時に線形結合もわかっているのでO(kn^2)時間で計算できる).
- C=\mathcal{A}_1(S_1,B)+\mathcal{A}_1(S_2,B)-\mathcal{A}_1(S_3,B)-\mathcal{A}(S_4,B)-R_kBとする. AB=CかどうかをFreivaldのアルゴリズムで確認し, Yesならば出力. そうでなければ最初のステップに戻る.
2022年4月18日月曜日
Bogolyubov-Ruzsaの補題 (加法的組合せ論)
- D+D = \{a+a'\colon a,a'\in D\}.
- -D = \{-a\colon a\in D\}.
- k\in\mathbb{N}に対してkD=\{a_1+\dots+a_k\colon a_1,\dots,a_k\in D\}.
- D-D = D+(-D) = \{a-a'\colon a,a'\in D\}.
- v=0
- v\in R_\epsilon
- それ以外 (v\not\in R_\epsilon\cup\{0\})
- v=0の時は\chi_0\equiv 1より\widehat{\mathbb{1}}_D(0)\chi_0(x)=\langle \mathbb{1}_D,1\rangle = \deltaである.
- v\in R_\epsilonの時は, Vの定義より\langle x,v\rangle = 0なので\widehat{\mathbb{1}}_D(v)\chi_v(x)=\widehat{\mathbb{1}}_D(v)である.
2022年4月15日金曜日
ランダム行列の行列積 part 2
前回の記事に引き続き, 独立一様ランダムな二つの行列A,B\sim\mathbb{F}_q^{n\times n}が与えられた時に積ABを計算せよという問題を考えます.
前回は[Blum, Luby, Rubinfeld, 1993]による以下の定理を証明しました. ここで有限集合Sに対してx\sim Sと書いた時はxはS上一様ランダムに選ばれた元と解釈してください.
1. 準備
2. 定理2の証明
- R,S\sim\mathbb{F}_q^{n\times n}を一様ランダムな行列とする.
- f(t)=A+tR,g(t)=B+tSとし, m=\lceil 6/\alpha \rceilとする.
- 各t=1,\dots,mに対してC_t=\mathcal{A}(f(t),g(t))を計算し, 補題1のアルゴリズムを使ってf(t)g(t)=C_tかどうかをチェックし, f(t)g(t)=C_tとなるような最初の三つのtをt_1,t_2,t_3とする. そのようなt_iが三つとれなければステップ1に戻る.
- f(t_1)g(t_1), f(t_2)g(t_2), f(t_3)g(t_3)を使ってf(t)g(t)の各成分を多項式補間し, f(0)g(0)を出力する.
2022年4月14日木曜日
理論計算機科学におけるフーリエ解析 (定義)
フーリエ変換とは関数の良い基底を使って線形和で表すことを指します. 競技プログラミングの文脈などでは畳み込みのフーリエ変換と積の関係が非常に有名だと思いますが, それ以外にも様々な応用があります. 基本的にフーリエ変換と聞くと\sinや\cosが混じった積分がでてくるというイメージだと思いますが, 理論計算機科学では離散的なものを扱う都合上そういったものは(文脈によるが)登場せず, 全てが初等的に定義されるのでより親しみやすいと個人的に思います.
本記事では定義と基本的な事実だけ紹介します. 将来的にフーリエ変換を使った証明等を書く時にこの記事を参照していきます.
n\in\mathbb{N}に対し[n]=\{1,\dots,n\}と略記します. 有限集合S上で一様ランダムにxが選ばれることをx\sim Sで表します.
\mathbb{F}_qを素体とし, \omega=\mathrm{e}^{\frac{2\pi i}{q}}とします. 二つの関数f,g\colon\mathbb{F}_q^n\to\mathbb{C}に対し, その内積を
\langle f,g\rangle := \mathbb{E}_{x\sim\mathbb{F}_q^n}[f(x)\overline{g(x)}] = \frac{1}{|\mathbb{F}_q^n|}\sum_{x\in\mathbb{F}_q^n}f(x)\overline{g(x)}
最後に, f\colon\mathbb{F}_q^n\to\mathbb{C}と1\leq p\leq\inftyに対してfの\ell_pノルムを\|f\|_p=\left(\mathbb{E}_{x\sim\mathbb{F}_q^n}[|f(x)|^p]\right)^{1/p}で定めます.
本記事では\mathbb{F}_q^n上の関数を対象にしていましたが, より一般にアーベル群上の関数に対して群の表現を考えることで似たような枠組みを考えることができます.
ランダム行列の行列積 part 1
二つの行列A,B\in\mathbb{F}_q^{n\times n}が与えられたときにその積ABを計算せよという問題はこれまで多くのアルゴリズムが提案されており, 2022年4月現在では[Alman, Williams, SODA2021]によるO(n^{2.37286})時間が(漸近的な意味で)最速のアルゴリズムとされています. 行列積はn^2個の値を計算する問題なので明らかに\Omega(n^2)時間かかるので, 2と2.37286の間に限界があるというわけです.
本記事では「A,Bが\mathbb{F}_q^{n\times n}上一様ランダムに与えられた時にABを計算せよ」というランダム行列に対する行列積を計算する問題を考えます.
幾つかの問題ではランダムなインスタンスに対して比較的効率的に問題が解けるということが知られています. 例えばランダムグラフの文脈ではErdős–RényiグラフG(n,p)上ではO(n^{4+o(1)})時間でハミルトン閉路を検出し見つけることができます [Bollobás, Fenner, Frieze, Combinatorica, 1987].
果たして行列積は簡単になるでしょうか?
実は答えは(ある意味で)否です. というのも, ランダムな行列の行列積を高速に計算するアルゴリズムがあればそれとほぼ同等の時間で全ての行列に対して行列を計算する乱択アルゴリズムが存在します.
本記事では以下を証明していきます.
- 一様ランダムな行列R_1,S_1\sim \mathbb{F}_q^{n\times n}をサンプリングし, R_2=A-R_1,S_2=B-S_1とする.
- \sum_{i,j\in\{1,2\}}\mathcal{A}(R_i,S_j)を出力する.
2022年2月24日木曜日
Goldreich-Levinの定理 (アルゴリズム的側面の紹介)
1. 線形関数の復元
2. Goldreich-Levinの定理
- 2行目で生成したランダムベクトルに対し, g(r_1),\dots,g(r_t)の値はオラクルに聞いていないので分からないが, 4行目で\{0,1\}^tを列挙しているためどれか一つのbに対してはb_i=g(r_i) (\forall i) が成り立ちます. 以後この条件を満たすbに対して話を進めます.
- 7行目で与えたb_Sはgの線形性よりb_S=g\left(\sum_{i\in S}r_i\right)=g(r_S)が成り立ちます. ここまでの議論は任意の線形関数gで成り立ちます.
- 9行目では, ベクトルr_1,\dots,r_tの一様ランダム性によりr_S+e_iの分布も一様ランダムです. なのでオラクル\mathcal{O}の性質により, \Pr[c_S=g(e_i)]\geq 0.5+\epsilonです (b_S=g(r_S)の仮定の下で).
Markovの不等式とChebyshevの不等式
今後の記事で参照できるようにするために, 確率に関する非常に基礎的な不等式であるMarkovの不等式とChebyshevの不等式を紹介します. Markovの不等式さえ覚えていればChebyshevの不等式は非常に簡単に導出できます.
定理 (Markovの不等式). Xを平均が有限であるような非負の確率変数Xとする. 任意のa>0に対し\Pr[X\geq a]\leq \mathrm{E}[X]/a.
2022年2月16日水曜日
McDiarmidの不等式(小記事)
確率集中不等式の文脈でよく知られているMcDiarmidの不等式について解説します.
準備: 集中不等式でよくある設定
McDiarmidの不等式
2022年2月7日月曜日
von Neumannのmin-max定理に基づくhardcore lemmaの証明
Impagliazzoのhardcore lemmaに関する以前の記事ではboosting algorithmとして解釈できる証明を与えました. 本記事ではvon Neumannのmin-max定理に基づく証明を与えます. この証明はImpagliazzo(95)に書いてありますが, アイデア自体はNisanによって与えられたものらしいです. Impagliazzoの元論文やArora--Barakの本にも同様の議論が紹介されていますが, これらを自分なりにかなり噛み砕いて説明していきます.
1. hardcore lemmaの復習
- 関数f\colon\{0,1\}^n\to\{0,1\}と入力分布Dを考える. 任意のサイズs以下の回路Cに対し \Pr_{x\sim D}[C(x)=f(x)]\leq 1-\deltaが成り立つとき, fはD上でサイズsに対して\delta-hardであるという.
- 関数M\colon\{0,1\}^n\to[0,1]をmeasureと呼ぶ. |M|:=\sum_{x\in\{0,1\}^n}M(x)\geq \delta 2^nを満たすときMは\delta-denseであるという.
- measure M が誘導する以下の\{0,1\}^n上の確率分布を考える: 各x\in\{0,1\}^nが選ばれる確率はM(x)/|M|. これをx\sim Mと表す.
- \{0,1\}^n上の一様分布をU_nで表す.
定理2の証明の準備としてvon Neumannのmin-max定理の特殊ケースとして得られる以下の補題を述べておきます.
定理2の証明
- ケース1: \min_{\mathcal{H}}\max_{\mathcal{C}} c(\mathcal{H},\mathcal{C})<1/2+\epsilon.
- ケース2: \max_{\mathcal{C}}\min_{\mathcal{H}} c(\mathcal{H},\mathcal{C})\geq 1/2+\epsilon.
ケース1: \max_\mathcal{C}の混合戦略の部分を純粋戦略に置き換えても期待報酬は上がらないので, \min_{\mathcal{H}}\max_{C} c(\mathcal{H},C)<1/2+\epsilonです (ここでCはサイズs'以下の回路全体を動きます). また, \mathcal{H}は\{0,1\}^nの分布Dを以下のように誘導します: まずHを\mathcal{H}に従って選択し, H上の一様分布を出力する.
2022年2月3日木曜日
単純ランダムウォークの到達時間と全訪問時間のまとめ
概要
1. 用語と定義
例(単純ランダムウォーク)
1.1. 到達時間, 全訪問時間, 混交時間
1.2. SRWに対する有名なバウンド
hardcore lemmaとその証明
1. 導入
Impagliazzoのhardcore lemmaと呼ばれる非常に面白いメッセージ性を持つ平均計算量理論において有名な結果[Impagliazzo, FOCS95]を紹介し, その証明をします. 直感的に言えばこの結果は「任意の"まぁまぁ困難な"計算問題に対して"めちゃくちゃ難しい"インスタンスの集合Hであって密なものが存在する」ということを主張します.
平均計算量理論については以前の記事で触りだけ紹介しています. 本記事では問題として判定問題f\colon \{0,1\}^n\to\{0,1\}を考え, 入力分布としてある有限集合H (例えばH=\{0,1\}^n) 上の一様分布を考えます. また, 計算モデルとしては回路を考え, その効率性を回路サイズ (=ゲートの個数) で測ります. これを回路計算量と呼びます. アルゴリズムの時間計算量と回路計算量の関係性は非自明で以前の記事で触れていますが, 任意のアルゴリズムはその動作を回路で(少しのオーバーヘッドがあるものの)シミュレーションできるため, 「時間計算量が小さいならば回路計算量が小さい」は成り立ちます (逆は必ずしも成り立たちません).
2. Hardcore lemmaの主張
3. 証明
3.1. Hardcore measure
注釈: measureは集合H\subseteq \{0,1\}^nを"連続化したもの"と解釈できます. 例えばMとしてHの指示関数 (M(x)=1 if x\in H, M(x)=0 if x\not\in H) をとれば, Mが\delta-dense \iff |H|\geq \delta 2^n となります.
まず, 定理1の代わりにそれのmeasure版となる以下の結果を証明します:
有向グラフG |
3.2. Hardcore measure \Rightarrow Hardcore set
4. 教師有り学習のブースティングとの関係
講義資料をNotionで書いてみた
プログラミング応用という名前の講義を受け持っており, そこで組合せ最適化のベーシックな話題とそのPythonでの実装を教えているのですが, 資料をNotionで書いてみました. 講義資料をNotionで公開しているのでアルゴリズムの基礎とかNP困難性とかを勉強したい人はどう...

-
0. 概要 本記事では ランダムグラフ理論の動機と応用 ランダムグラフ理論のさわり ランダムグラフの面白い定理 について書きます. 1. ランダムグラフ理論の動機と応用 ランダムグラフ理論の主な動機としては 「とある性質Pを満たすグラフ...
-
0. 概要 グラフマイナー定理とは 有限グラフの全体は, マイナー順序によってよい擬順序になっている (well-quasi-ordered) という定理です. ...さてこれは何を言ってるんでしょうか. 本記事では現代のグラフ理論において最も重要な定理の一つで...
-
1. 全点対最短経路問題の計算量の外観 グラフ G が与えられたときに 全点対最短経路 ( APSP : all pair shortest paths)を求めたいときがあります. そんなときはほとんどの人がワーシャル・フロイド法または各点ダイクストラなどを使うかと...