2010/07/18

[新知] Expander graphs

最近在讀 "Expander graphs and their applications" by Hoory, Linial and Wigderson.
目前人在第三章, 但理解應該只有到第二章...
這是一篇寫得相當清楚的文章,
動機充足, 技術細節也寫得簡潔, 難怪別人也常引用它!
第一章提到 Expander 這種擁有某種 "特殊性質" 的圖被造出來的三個用途,
目前先嘗試的講其中一種, 也就是減少 random bits 的使用量.

考慮底下這樣的問題:
若有一個問題 Q, 假設我們有一個演算法能在 poly. time 決定給定的 input 是不是在 Q 中,
若在的話我們有 1/16 的機率會答錯成不在, 而若不在的話一定不會答錯.
(注: 這樣的問題的集合稱作 RP, randomized poly. time, 1/16 是亂定的, 小於 1/2 就可以)
請問若原先的演算法需要 k 個 random bits,
那若我們想將錯誤的機率 1/16 降到某個夠小的 e (例如 1/2^100),
需要多少個 random bits?

最直接的想法, 就是將原先的演算法跑個 L 次,
這樣錯誤率就會降至 (1/16)^L = 1/2^4L.
在題目中我們令 e = 1/2^100, 因此 L = 25.
這時, 我們需要 k*L = 25k 個 random bits.

Expander graph 厲害的地方,
就在於同樣重複執行了數次的演算法,
它仍然只需要 k 個 random bits!!
(當然, 這裡用了一些骯髒的手段, 例如只有對於 input 長度夠大時才行)

我們先定義 (n,m,d)-expander 為一張 bipartite graph G = (L,R,E),
|L| = n, |R| = m, 分別為圖的兩個點集,
而任意點 v in L 都有 d 個鄰居在 R 中,
滿足底下的延展性質(expansion properties):
(1) N(S) >= 5/8 * d * |S| 對於所有 L 的子集 S 滿足 |S| <= n/10d;
(2) N(S) >= |S| 對於所有 L 的子集 S 滿足 n/10d < |S| <= n/2.
換句話說, expander graph 所擁有的特殊性質其實就是:
對於每個點的子集, 它們的鄰居都很多!

當然第一個問題就是, 真的會有這麼好的圖嗎?
下面的引理保證了這件事.

Lemma. 對於夠大的 (n,m,d), (n,m,d)-expander 存在.

因此, 我們可以利用這樣的圖來讓演算法的錯誤機率降低,
同時又不使用額外的 random bits.
令原先的演算法為 M(x,r), x 是 input, 而 r 是 random bits.
因此我們有 M(x,r) = 0 若 x 不在 Q 中,
而有 1/16 的機率 M(x,r) = 0 且 x 在 Q 中.
固定一個 x 在 Q 中,
我們把這種壞掉不好的 r 的集合取名叫 B = {r in {0,1}^k | M(x,r) = 0}.
這時我們有的資訊很少, 若我們令 n = 2^k,
先固定一個 (n,n,d)-expander (L,R,E),
(n 其實也就是所有長度為 k 的 random bits 的數量, 同時也是 L 跟 R 的大小)
我們知道 B 是 L 跟 R 的一個子集, 而且 B 很小, 只有 <= n/16.

我們可以想像演算法選了某一個 r, 就像是從 L 中挑一個點一樣.
利用 expander 的延展性, 我們現在要從 R 的子集當中選出 d 個點,
讓演算法執行 M(x,r_1), ..., M(x,r_d),
如果其中有任何一次它成功的回答 M(x,r_i) = 1,
我們就知道其實 x 是在 Q 中的. (因為如果不在, 演算法一定答 0)
不然就還是回答 x 不在 Q 中.

這時答錯的機率有多少呢?
唯有當我們選到的 r_1, ... r_d 通通都掉在 B 裡!
怎麼選呢? 我們就從剛剛用 k 個 random bits 選出的 L 中的一點,
取它在 R 中的 d 個鄰居!!(這就是省 random bits 的所在! 因為鄰居是固定的!)
我們來算算這 d 個鄰居都在 B 中的機率:
令 S 是 L 的子集合, 包含了所有點 v 使得 N(v) 都在 B 中;
只要算出 S 的大小, 就是答錯的機率了.
假設 |S| > n/10d, 會得到以下的矛盾:

|B| >= |N(S)| > 5/8 * d * |S| > 5/8 * d * n/10d = n/16,

這樣跟 B 的大小矛盾!
所以, 我們有 |S| <= n/10d, 換句話說,
錯誤率只有 1/10d!!!

回想剛剛的例子中 e = 1/2^100,
如果我們選 d = 2^100/10,
一切就搞定了...
甚至更可怕的, 對於任意的 e,
我們只要選一個鄰居夠多(d 夠大) 的 (n,n,d)-expander 就好了!
無怪乎 expander 是這樣強大的工具...

什麼? 你說減少 random bits 有什麼用?
哼哼... 請期待下集 (對不起我累了... 下次再打!)

Guessing numbers with wrong answers (Q)

在 Math Overflow 上看到的有趣問題!
假設給定平常常見的猜數字遊戲:
在 1~1000 當中選擇一個數字, 請問最少要多少次可以猜出來?
有經驗的玩家一定知道切半法是最好的答案, 因此是 10 次.

這是, 若我們假設回答問題的人會有一次的機會回答錯誤,
請問這時猜的人最少要多少次才能猜對?

晚點再來寫答案!

2010/02/17

Separator in a graph excluding a minor!!

A linear time algorithm to find a separator in a graph excluding a minor,
D. Wood and B. Reed, ACM Transactions on Algorithms, accepted in 2009.
[pdf]

2009/09/26

Mobius Transformations!!



Mobius Transformations,
PSL_2(C) acts on C by

f(z) = (az+b)/(cz+d)

代數作業老師還真敢出!
不過,能夠把它的各種性質真真實實算出來的感覺...
還是挺棒的(笑)

2009/09/14

Current Research Projects

這也是今天 Senior Seminar 的報告主題...
順便來統計一下吧!
--
Main Attack:
Even/Odd holes in graphs, and related topics (skew partitions, perfect graphs)

Swap Disks:
Intersection represetation of plane graphs (with pishen)
Grid embedding of planar graphs

Minor issues:
Max cut (with coldestegg)
k-connected subgraphs (with coldestegg)

Surveys:
Geometric Complexity Theory
Algebraic Graph Theory
--
在研究上真是貪心...
廣博不忘專精!

2009/09/07

Tools on planar graphs

Just make a note...
--
Klein's Spanner,
Lipton-Tarjan's Separator,
    Miller's Cycle Separator,
    Goodrich's Separator Decomposition Tree,
Schnyder's Realizer,
de Fraysseix-Pach-Pollack & Kant's Canonical Ordering,
Chiang-Lin-Lu's (My Teacher!!) Orderly Spanning Tree,
Yannakais' Four Page Embedding,
--
more to come!!

帽子戲法

網路上看到兩個有趣的帽子問題:]
--
1. 有 10 個人排了一條隊,每人頭上都有一頂黑色或者白色帽子。每個人只可以看到排自己前面的人所穿帽子的顏色,而且他們均不能看到自己帽子的顏色。

現在有一個公証人,他會向每個人問一條問題:「你自己的帽子是甚麼顏色?」他會順序由排最後的人問到排最前的人。每個人只可以回答:「黑色」或「白色」,而每個人回答時,其他人都是可以聽到他的答案的。

這 10 個人可以事先商量怎樣回答,以確保答對的次數最多。問:他們可以確保答對多少次?怎樣可以達到?

2. 監獄裏有 n 個囚犯。有一日,皇上要跟這 n 個囚犯玩一個遊戲。皇上會選出 n 種顏色。獄長會在每一個囚犯頭上戴上一頂帽子,每頂帽子的顏色是這 n 種顏色之一。帽子的顏色並無其他限制,所以可能每個囚犯的帽子顏色都相同,亦有可能每個囚犯的帽子顏色均不同的。

每個囚犯都可以看到其他囚犯的帽子,唯獨是不可以看到自己的帽子。現在,囚犯們要同一時間向獄長交一張紙,上面寫上他們猜測自己帽子的顏色。當然,這樣子就是說囚犯們不會看到其他囚犯的猜測了。

皇上說如果有任何一個囚犯答對了,就釋放所有囚犯;否則,全部囚犯都要處死。這些囚犯可以事先商量怎樣回答,以確保他們一定能夠被釋放?問:他們怎樣達到目的?
--
第二題比較難,不過蠻有趣的!!