トップ 追記

PRoxy Diary

個人サイト
Preferred Infrastructure
2004|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|03|04|06|07|08|12|
2009|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|08|

2010-08-28

_ [ICPC] プログラミングコンテストチャレンジブック

東大のプログラミングコンテスト常連の秋葉くん岩田くんと北川くんの三人でプログラミングコンテストの本を出すそうです!! 発売されたら僕も買います。目次を見た所、コンテストで必要な知識はかなり網羅されていると思うので、新しくこの業界に入る人の教科書として使えると思います。まだ経験知のようになっているのは探索のヒューリスティックの感性とか、特定の問題専用のアルゴリズムとかなんでしょうか。完全マッチングの個数という(SuperCon的に)タイムリーな話題もあるようですね。後輩(?)が成果を色々出し始めているのが、何となく嬉しい。

2010-08-27

_ [コンピュータ] Supercon 2010

今日はSupercon 2010の結果発表を観に行ってきました。前年まではTAをしていたのですが、今年は直前にアメリカにいて、直後にスペインに行くので、一日だけの参加に留めました。上記のページには殆どまだ何も情報が無いのですが、関東の高校が一位〜三位を占めるという結果でした。

今回は問題がなかなか面白かったです。今までだと最適化問題が主流で焼きなまし+適切なスコア関数以外やることあるんかいなという状況だったのですが、今年は正確な解を求めないといけない言わばICPCタイプの問題でした。具体的には50*50の盤面にいくつか障害物が置いてあり、障害物を避けながら2*1のタイルを敷き詰める置き方は何通り有るかという問題です。20*100とかならDPで、8*10^8とかでも行列乗算で解けるんでしょうか。コンテスト的にはそれに適当にヒューリスティックスを入れて、大部分の入力に対して解が求まれば勝てるようです。

ただジャッジが全データに対して正解データを用意しているということは50*50でも解く方法があるということなのですが、僕は最初全く分かりませんでした。二部グラフの完全マッチングの数え上げってPRASみたいなのは有ったような気がするけど#P-completeじゃなかったっけと悩んでいました。後で教えてもらったところによると、グリッドは二部グラフじゃなくて平面グラフとみなすのが良いようです。そして何と、平面グラフの完全マッチングの数え上げは多項式時間で解けるらしいです。リンク先の資料がとても詳しいです。Pfaffian Orientationというのが肝だそうで。

このアルゴリズムを僕は今まで全く知らなかったので、試しに実装してみました。例えば以下のような入力に対しては(各インスタンスの最初の行は、問題番号、高さ、幅、Mod)、

1 3 2 100000
..
..
..
1 3 2 100000
..
..
.*
1 3 6 100000
......
......
......
1 3 7 100000
....***
.......
.......
1 10 10 100000
****..****
***....***
**......**
*........*
..........
..........
*........*
**......**
***....***
****..****
次のように出力します。最初にPfaffian Orientationを出力したのち、タイルの敷き詰め方の総数を出力しています。解が大きい時は桁落ちします。
.>.
v v
.<.
v v
.>.
3
.>.
v v
.<.
v
. *
0
.>.>.>.>.>.
v v v v v v
.<.<.<.<.<.
v v v v v v
.>.>.>.>.>.
41
.>.>.>. * * *
v v v v
.<.<.<.>.>.>.
v v v v v v v
.>.>.>.<.<.<.
41
* * * * .>. * * * *
v v
* * * .<.<.>. * * *
^ v v v
* * .<.<.>.<.>. * *
v ^ v v v v
* .<.<.<.<.>.<.>. *
^ v ^ v v v v v
.<.<.<.<.>.<.>.<.>.
v ^ v ^ v v v v v v
.<.<.<.<.<.>.<.>.<.
^ v ^ v v v v v
* .<.<.<.>.<.>.<. *
v ^ v v v v
* * .<.<.<.>.<. * *
^ v v v
* * * .<.>.<. * * *
v v
* * * *
32768

本日のツッコミ(全3件) [ツッコミを入れる]

_ okamoto7 [どうもお久しぶりです.ご意見ありがとうございます.「解が多いときに桁落ちする」ということはたぶん本質的で,それを克服..]

_ oxy [お久しぶりです。今年も面白い問題をありがとうございました。 高校生に求めるのは酷ですが、ICPCの参加者でC/C+..]

_ okamoto7 [正しいかどうか,という判断は私にできないのですが,中国人剰余定理を使う方針は実践上よさそうですね.]


2010-08-09

_ [Daily] 帰国

先に結論を書いておきますと、8/23からの週(末)が暇なので、関西で何かイベントが有ったり、会ってくれる人が居れば連絡ください!

去年の10月からお世話になっていたRutgers Universityですが、この8/19に日本に帰国します。おかげ様でゆっくり研究することが出来ました。その間サポートして下さった方々に感謝です。大学の人も家の人もみんな親切で本当に助かりました。出来れば日本とアメリカとその日の気分で住むところを選びたいところですが、そうもいかないですね…。

アメリカに来てから考え始めて論文にするところまで持って行けたのが多分五本(うち一つは参考にしていた論文に致命的なミスが有ってポシャりましたが)で、今やっているプロジェクトが三つほど有るので、抜群に仕事をしたかというと微妙かもしれませんがまぁ及第点かなと思っています。こちらの大学の人とやっているプロジェクトはうち一つだけで、本当はもっと一緒にやりたかったのですが、思っていたより量子コンピュータを研究している人ばかりだったので仕方がないと言ったところでしょうか。勿論研究とは関係なしに友人は沢山出来ました。

留学したものの義務としてそのメリットを語る必要があるのかなと思ったので少し考えていました。理論計算機科学というのは基本的には「計算機に纏わる数学的に綺麗な事柄を証明していく」というのが目的で、現段階で一番大きな目標が「P != NPを示す」ということなのだと思います。当然これは一人でやるわけではなくて、世界中の人たちで協力しあってやっていく。その時に彼らがどんな人達か知ることはとても重要だと思うのです。一緒に仕事をするのも彼らだし、何が重要か(言い換えれば綺麗か)を判断するのも彼らです。基本的に理論計算機科学はアメリカを中心に動いているので、その本場で彼らがどのような流儀で仕事をしているのかを直に見れるのは良い経験であったなぁと思います。勿論そんな堅苦しいことを考えずに、単に外国の文化に触れるのはそれ自体楽しいことです。

逆にデメリットは余り思いつきません。日本の友人とは日本に帰ればまた会えますし、食べ物は確かに油っこくて辛い時がありますが、言ってもその程度です。

なので留学をするチャンスがある人には積極的に勧めたいです。ずっと一箇所に長い間いると空気が淀んで思考も固まってくるので、たまにはそこを離れて換気をするのが良いと思います。そういう意味では僕もコンピュータから離れて別のことしろって話ですね…。

本日のツッコミ(全2件) [ツッコミを入れる]

_ ikegami-- [おかえりなさいパーティをしたいです]

_ oxy [おぉ、それは有り難いです。主役になるのは余り得意ではないので、単に久しぶりに会う会ということで(笑)詳細はメールで。]


2010-06-22

_ [MISC] 最近の色々

  • arXivに一つ論文をアプロードしました。簡単に言うと、CSPの定数時間近似は、どんなCSPで有ったとしてもLPがベストで、それより良い近似度は得られないというものです。そのうち内容について詳しく語る機会があるかもしれません。
  • 先週一週間、IAS(プリンストン高等研究所)の擬似乱数に関するワークショップに参加してました。自分が元から知っている話(PCPとか等差数列がどうこうとか)は大体分かるし、そうでないもの(群論とか暗号とか)は全然分からないという当然の結果。
  • RANDOM 2010という会議に二つ論文が成仏されました。
  • ICFPのコンテストをやっているのは知っていましたが、あんまり周りで仲間が集まりそうにないのと、締め切りが近いのとで今回は諦めることに。問題はとても楽しかったそうなので無念。
  • とにかく暑い
  • そしてICPCの国内予選がもうすぐ!

2010-05-31

_ [研究] 代数幾何

P != NPを示すのに代数幾何が使えるという話があるのですが(Lance Fortnowによる動画解説)、本格的に学ぶべきかどうか悩む…。Ketan Mulmuleyによる講義の資料とビデオが有るので、勉強する材料は揃っているのですが、代数幾何はちょっと余りにハードルが高い。けれども近く発展して行くのは目に見えている。今出川通りの北に転がっている人たちをこっちに引き込んだ方がいい気がするなぁ。代数幾何自体を発展させようとして苦労している人たち沢山いそうだし。

本日のツッコミ(全3件) [ツッコミを入れる]

_ nushio [僕も今出川通りの北にころがってます。]

_ ikegami [Geometric complexity theory というものがあるのか!]

_ oxy [> nushioさん relativistic complexity theoryとか出たときは是非南に転がってき..]


2010-05-30

_ [研究] Pseudorandomness in Mathematical Structures Program @ IAS

まだ先の話ですが6/14からPseudorandomness in Mathematical Structures Programというワークショップに参加する予定です。お題はpseudorandomness(擬似乱数)です。擬似乱数の直接的な応用は暗号だったり、確率を用いたアルゴリズムを使わないように変形する(BPP = Pが目標)ことだったりだと思うのですが、実のところ僕はその辺りの話は興味がありません。それより僕が面白いと思っているのは、pseudorandomnessを他の分野の証明の道具に使うことです。例えば関数f : {-1,1}^n → {-1,1}のフーリエ展開が良い例です。フーリエ展開はある関数を別の特性関数の線形和で表すことと言って良いと思います。この時、どんな関数も「(nに寄らない)定数個の特性関数の線形和」と「ノイズ」に分けれるというのがフーリエ展開から示唆されます。このノイズの部分を良くpseudorandomと読んでいるのですが、ノイズの部分を捨ててしまえば、元の関数fは、要するに定数個の特性関数でよく近似出来るというわけです。個人的にはこの部分がとても哲学的な示唆に飛んでいて好きです。詳しくはFOCS 2007のTerrence Taoによるチュートリアルを参照してください。

この性質を使うことで、実に様々な定理が証明されています。まず、上のフーリエ関数はCSPの近似困難性の解析をする上でよく使われています。また、上の考えをグラフに適用すればSzemeredi's regularity lemmaも証明できます。そこから性質検査の話にもつながります。他にもTao & Greenの「素数列中には任意の長さの等差数列が存在する」という定理の証明の道具にもなっています。

話を元に戻すと、このワークショップでその辺りの道具の今の状況が知れれば良いな思っています。また最近、軽く群論の検査にも手を出しているのですが、群論とpsudorandomの関係もこのワークショップで語られるそうなので、それも楽しみです。


2010-05-24

_ [PFI] 夏季インターン

今年もPFIでは夏季インターンを開催します。

内容は前年度のインターンの方々の感想を見てもらうのが一番早いかと思います。面接対策にはなるんではないでしょうか(笑)実際には去年は5人が参加して下さいました。インターンをすることのメリットは、何らかの技術を身につけることが出来るということも勿論有りますが、この業界の人達と沢山知り合うことが出来るのが大きいのではないかと思います。僕も関西に住んでいて、人と知り合うということに関しては関東の地の利は大きいなと思っていたのですが、PFIのインターンでは遠方の方には住居も用意するということなので、関東外の人の応募もお待ちしております。

(追記) ところでオフィスが新しくなりました。写真


2010-05-04

_ [Daily]

最近New Jerseyは酷暑で連日30度越えです。清水寺のふもとで買っておいた扇子がとても役に立っています。アメリカの人は扇子やうちわはおろか下敷きで仰ぐという文化も無いみたいなので大変そうです。

本日のツッコミ(全2件) [ツッコミを入れる]

_ のびた [なぜ仰がないんだろう?どっかの国じゃ雨降っても滅多に傘ささないってきいた事あるけどさぁ〜 やっぱり国境を越える..]

_ oxy [コメント出来たのかー。おめ。このブログで顔文字を見るのは初めてじゃないか(笑) 滅多に傘ささないのは、少なくともア..]


2010-04-17

_ [研究] Unique Games Conjecture

こんな情報をここに書いても世の中の2,3人にしか影響が無い気がするのですが、最近Unique Games Conjecture (UGC)周りの発展の勢いが凄いです。暫く用語の説明が入るので詳しい人は読み飛ばして下さい。

まずUnique Gamesのインスタンスは(U, V, E, [R], Π)で与えらます。(U, V, E)は二部グラフ、[R]は大きさRのラベル集合、π_e∈Πは枝eに付随するラベル間の置換です。目的はUとVにラベルを与えて、π_eを満たす枝の個数を最大化するというもの。UGCとは「任意のεに対して、あるRが存在して、ラベル数RのUnique Gamesが与えられた時、その最適解が1-ε以上かε以下かを区別するのはNP-Hard」というものです。UGCは現在の理論計算機科学の中心的なトピックの一つと言えると思います。

何故このUGCが重要かを述べるには、まず近似アルゴリズムの話をしなければ成りません。最大カットや最小頂点被覆問題はNP-hardなことで有名な問題です。つまり最適解を求めるのは殆ど無謀です。なのでそれは諦めて、例えば最大カットなら正確な最大カットの何割の大きさのカットなら多項式時間で求めることが出来るだろうか、というのが問題になるわけです。現在知られていることを結果だけ述べると、最大カットは最適解の0.878倍のカット、最小頂点被覆は最適解の2倍の頂点被覆を多項式時間で見つけることが出来ます。

ではこれらを0.878+εや2-εで近似するのはNP-Hardなのかというのが次に解くべき問題になります。実のところ…これは分かっていません。現在知られているのは、最大カットだと0.941以上、最小頂点被覆だと1.36以下はNP-Hardというものです。UGCが発明されたのは、どう頑張っても埋めれないこのギャップを埋める為です。実際この予想を仮定すると0.878や2という値がタイトということが示せるのです。

UGCが考え出されたのは2002年なのですが、それから凄い勢いで研究がなされて、今では任意のCSP(最大カットを含む)に対して、UGCを仮定した上で「この近似度までは線形時間で求めることができるが、それよりちょっとでも良くしようとするとNP-Hard」ということまで分かってきました。

ここまでが導入です。アメリカの東海岸にいるといい大学が周りに沢山あるので、新しい結果の発表が頻繁になされます。その中でインパクトが有ったものを二つ概要だけ紹介します。一つ目はOn the Optimality of a Class of LP-based Algorithms by Kumar, Manokaran, Tulsiani, and Vishnoiです。これは上に述べた「CSPに対する近似アルゴリズムと、UGCを仮定した上でのタイトな近似困難性」と同様な結果を最小頂点被覆を含む広いクラスで証明したものです。最大カットは任意の頂点集合の分割が解になっているのですが、最小頂点被覆はそうではなくて、全ての制約を満たさないと解として認められないのが難しいところです。

僕のいるRutgers大でVishnoiによる講演が有ったのですが、元々1時間のはずの講演が延長を許されて2時間になった上に、世話人(Mario Szegedy)の授業でも話の続きが許されるという面白いことになっていました。興味が有ったのは世話人と数人の生徒だけで、他の生徒は聞かずに帰ってしまったようですが。

二つ目は、Subexponential Algorithms for Unique Games and Related Problems by Arora, Barak, and Steurerで、UGCは2^O(n^poly(ε))時間で解けると述べています。これが面白いのは、UGCはεをo(1)(例えば1/log log n)にするとNP-Hardではなさそうと予想出来ることです。というのもNP-Hardな問題を解くには必ず指数必要という予想が別にあるからです。これのお陰でUGCでεをo(1)にすることで解決(?)を見ていた問題(Sparsest Cutなど)が、全然解決になっていなかったということが分かりました。おそらく今後数年でそういった問題に対する準指数時間アルゴリズムが与えられて行くのでしょう。

この辺りの証明技法はとても面白いので、自分の研究分野に上手く取り込もうと画策している最中です。

_ [学校] 隣人というか同じ部屋の人

先週は僕の部屋にAram Harrowという人が来ていて結構楽しかったのですが、残念ながら彼は量子の人なので特に研究に発展することはなし。

_ [Daily] ニューヨーク観光

先日ymatsuxさんらがこちらに遊びにこられたときに、ひたすらニューヨークの一風堂(ラーメン屋)の話をしていたので、ずっと食べたいなぁと悶々としたままこの一ヶ月を過ごしていました。で、先日、遂にニューヨークに遊びにいくことが出来た! 大学の隣の部屋にTroy Leeという人がいるのですが、ちょうど彼がニューヨークに住んでいるので色々と案内してもらいました。 写真は無いのでGoogle Mapsか何かで見てください(笑)
  • High Line Elevated Park (昔の線路を改造して公園にしている。曰く古き良きニューヨークらしい)
  • Apple Store (iPadを見に行った。結論としては、そんなに欲しいとは思わなかった。)
  • Washington Square、New York University (Sakuraと言われた植物がどう見ても桜ではない)
  • 一風堂 (これはAuthentic!)
  • Union Square (絵画市が開かれていた。余裕でスルー)
  • Madison Square (ハンバーガーに長蛇の列。ニューヨーカーは並ぶのが好きとか言われたが、日本人も同じことをすると思う。並ぶのが好きなんじゃなくて、みんな並んでいるから)
  • Bryant Park (他の公園に比べて人は多いのに何故か静か)
  • 紀伊国屋 (現代史と将棋の本を買った)
  • Central Park (ジョン・レノンが殺された場所を経由。大道芸をずっとやっていたのが楽しかった)
  • 鳥人 (トリジンではなくてトットと読むらしい。焼き鳥屋。論文投稿記念に一杯)
また日本食食べに行きたい。次行く時はMetropolitan美術館と野球を見ないとなぁと思っている。

2010-03-22

_ [MISC] kkntkr

ニュージャージーも随分日中は暖かくなってきました。まだ風は少し冷たいですが、コートはもういらなさそうです。アメリカ人は強靭でもうランニングシャツに短パンとかになってます。凄い。

ところで日本に帰ったら環境が激変してみんな並列プログラミングでもしているのではないかと危惧したので、最近は暇な時間に以下の二冊を読んでいます。

Purely Functional Data Structuresは、結局のところ永続データ構造(Persistent Data Structure)が内容の殆どを占めます。永続データ構造はデータ構造の一種で、データの内容を更新したあとも、昔のデータ構造を操作することが出来るという代物です。実現方法は幾つかあって、ログを真面目に取るか、更新される部分だけ新しい領域に作って元のデータと共有出来るところを共有するかというのが代表的な方法でしょうか。何故これが並列プログラミングと関係があるかというと、永続データ構造は更新が基本的に無いのでスレッドセーフにするのが容易だからです。所々感心するところは有りましたが、万人が読まなければならない本というわけでもないかなと思いました。永続データ構造はその性質上、普通のデータ構造と比べて計算量が悪くなるのですが、それをどうやって避けるかというのが此の本の主旨で、永続データ構造があるからこそ、こんな非自明なことが出来るという例が無かったのが、そう思わせる原因かもしれません。例えば非自明なこととして、永続データ構造を使うとRange Reportingという問題が自然に(そこそこ)高速に解けるという話があります。これは秋葉君が思いついて聞いた話なのですが、僕はこのアイデアにいたく感動したので、こういった話が散りばめられていれば、もっと人に薦められたかもしれません。ちなみにRange Reportingへの応用は既知らしくて、例えば講義資料(ppt)にもなっています。

二冊目のThe Art of Multiprocessor Programmingはこれは楽しい!理論と実践のバランスがとても良く取れていて、並列プログラミングの理論を作ってきた人たちの思考を辿るのも楽しいし、実際にコードを書くときに役に立つ知識も沢山載っています。例えば何故CPUの演算にcmpxchg(compare and swap)が選ばれているかがこれを読めば明確に理解出来ます。こんなの誰も教えてくれなかった…。並列なコードは会社の同僚が普段から書いているのですが、僕はどうも自信が無かったので、これで少しは追いつけたらなと思っています。後は経験だろうなぁ。主にデバッグの。

_ [研究] Algorithmic game theory

一つ論文をほぼ書き終わったので、今日はAlgorithmic game theoryのsurveyをすることにしよう。ちょうど良い講義ノートがありました。