satzz the lernanto online

目眩く思想世界擬きと言霊フロンティア
Depuis 2005/05/19

review!

2006年04月20日 22時58分09秒 | Math
 ブックレビューじゃないよ。ごめんね。

 某数学者のたまわく、最も効率よい勉強の秘訣は一に論文を書くこと、二に教えること。

 ってわけで(?)、ヤル気が花粉のように湧き出ているうちにまとめ、まとめ。まぁ多分僕以外全然面白くないと思うけど、ひょっとしたらどんな内容か知りたい人もいるかもしれないので。
計算機科学

 テキストはGlynn WinskelのThe Formal Semantics of programming Languages:An Introductionという本に添っているが今のところどうでもよい。

 プログラム言語の意味論には3通りある。操作的意味論operational semantics、表示的意味論denotational semantics、公理的意味論axiomatic semanticsである。後者になるほど抽象化するのだが、ここではまず操作的意味論を扱い、小さな命令型プログラミング言語IMP(Imperativeの略)を想定して話を進めるようだ。

 まず面白い、と思ったのはプログラムの実行過程における状態の定義。実行状態σとは、算術式の集合から整数の集合への関数である。算術式とは3とかa+3とかx*yとかそういう式だと思えばよい。状態σのもとで算術式aを評価(要するに計算)した値がnであるとき、これを<a,σ>→nと書く。これは表記上の問題で大したことではない。参考までにこれは状態の集合と算術式の集合と整数の集合の直積上の三項関係であるが、これもσが一変数関数なのだから当然だ。

 プログラムは状態σのもとで一つ一つコマンドを実行する。これは例えばソースコードの1行に相当する。操作的意味論における評価の表現は先の通りだが、コマンドの表現は<c,σ>→σ'である。これはコマンドcが状態σをσ'に変化させるという意味を表す。

 状態の定義から自然に状態の同値性が定義される。ある二つの状態σ1、σ2のもとで『同じ算術式a1,a2,...を評価した値がそれぞれ常に同じ』ならばこの二つの状態は同値とみなしてよい。同様に、二つの算術式a,a'が『任意の状態σと任意の整数nに対して<a,σ>→nと<a',σ>→nが同値』を満たすときa,a'は同値である(言い換えれば、どんな状態でも常に同じ値を返す2式は等しい)といい、二つのコマンドc,c'が『任意の2状態σ,σ'に対して<c,σ>→σ'と<c',σ>→σ'が同値』を満たすときc,c'は同値であるという。要するに、どんな状態に与える影響もそれぞれ常に等しい二つのコマンドは等しいとみなすということだ。

 コマンドの同値性を使うと一見ナンセンスな命題が導かれる。どの状態からスタートしても発散して答えが出ないプログラムは、互いに同値である。これは『<c,σ>→σ'⇔<c',σ>→σ'』という条件の(σ、σ')にはまる状態対が存在しない、つまり両辺が常にfalseということによるのである。ただプログラムの発散停止の違いがまだ僕にはよくわかっていない。

 最後にやったのは、IMPにおいて
while b do c(これをwとする)
if b then c;w else skip
という二つのコマンドが同値であることを導出木の計算を使って証明する、ということだったが、ここらへんはチマチマしてるので省略。

 こんなところでいいのかな。kawayuさんあたり、補正があれば頼みたいです。なかなか要約の難しい内容だ。さてどこが面白いのか。状態変数という数学的概念があって、ある状態のもとで変数を評価(計算)するとある数値がポンっと出る。何かに似てません?そう、量子力学ですよ。評価ってのを測定に変えるだけでそっくりそのまま。といっても僕がかじってたのはDiracの行列力学の方だけで、化学とかで扱う波動力学の方ではどうなってるのかさっぱりなんですが・・・素人目にもこんな類似があるとは思わなかった。まぁ、だからって量子コンピュータすごいとかそういう安易な展開にはならないわけですがw ってかもう操作的意味論の話終わったっぽい。はえぇ。
コンピュータサイエンス入門
 目下のキーワードは問題アルゴリズムプログラムの3つである。コンピュータサイエンスにおける問題には入力だけでなく必ず出力(答え)がなければならない。一つの問題を解くのに必要なアルゴリズムが存在する場合は解ける問題、しない場合は解けない問題とよぶ。プログラムの停止性問題、最速のプログラムを見つける問題、Hilbertの第10問題(整数係数のDiophantos方程式が整数解をもつか判定する)は解けない問題に属する。講義は解ける問題と解けない問題の境界線を探る。

 解ける問題のうち常に現実的な時間で解けるものを実際に解ける問題という。例えば素因数分解は実際には解けない問題である。最大公約数を求める問題は実際に解ける問題だが、それを解くアルゴリズムは一つとは限らない。さらにEuclidの互除法という一つのアルゴリズムをとっても、それを記述するプログラム(ソースコード)は何通りもある。

 話変わって、整数から整数への関数の集合(N→Nと書くことにする)が可算(整数添字をつけて全ての要素を数えることができる)ではないことの証明。参考までに、有理数や有限集合は可算、実数は不可算である。背理法を使うが、そんなに難しくないので気構えないで頂きたい。仮にN→Nが可算とすると、f_0(x),f_1(x),f_2(x),...と全ての関数を列挙することができる。ここでg(x)=f_x(x)+1を考える。gは明らかに整数に対して整数を返す関数で、従ってN→Nの元だから整数kが存在してg(x)=f_k(x)と書けるはずだが、ここでx=kを代入するとおかしなことになる。つまりf_k(k)=g(k)=f_k(k)+1となるのだ。目からウロコである。このように矛盾を導く論法を対角線論法と呼ぶが、確かGoedelの不完全性定理の証明にも対角線論法が使われていたような気がしてびっくりである。

P.S.明らかに文章がおかしいところを修正しました。どうやら<と>をブログで編集しようとするとバグに悩まされるようです。

疲労compile

2006年04月20日 21時01分08秒 | Diary
Google先生がかなりはっちゃけちゃってます。これは・・・ピカソ風?
19(WED)
1限解析力学休講。待て。1週間前にちゃんと予告しろ。まぁ大学柄しゃーないけど。いや待て。まだ講義入ってないのに金曜いきなり演習か。まぁ、去年の線型代数もそうだった気がするが・・・
2限計算機科学。今まで一度も見たことがない形の数学で地味に新鮮。論理学とか情報処理の授業なら既にこういう内容やってるのかな?大学に入ってから受けた理系授業で一番衝撃的かも。
3限微積続論。久々に夜1時半まで粘ったレポートを提出。
4限仏語。グループで会話するが、相変わらず勘が戻ってこない。
放課後のレスコン作業が軌道に乗っている感じだ。でも、帰ったらすっかりクタクタで体が全く動く気がしなかったので10時に寝る。自分でも驚きだ。


20(THU)
ビラ撒きと1限の間の、すごくどんよりしたこの疲れは何だ。

1限量子論出るか?出ないか?と散々迷った末図書館で爆睡。ダメだ。最近ダメダメだ。途中まで読んだラカンについての本が若干面白そうだったがどうなのこれ。来週から量子論出ちゃおっかな。
2限微分方程式論。講義はハキハキしてるからともかく、課題のレポート、何をすればいいのかさっぱり分からない。さすがは3回生のコアコース、これは一筋縄では単位とれないぞ・・・
3限ギリシア語。去年のラテン語やロシア語にはなかった問題発生。冠詞である。それも3性3数(ギリシア語にはsingularとpluralの他dual(双数)がある)4格変化つきの。これは手強い。慣れるだけなんだろうけど。英語みたいに定と不定に分かれてないだけマシか。中動相(能動相、受動相に続く第3の相)というシロモノもゾクゾクするがどうなんだろう。
4限数学基礎演習をすっぽかして問題と解答だけもらう。
5限コンピュータサイエンス入門。今回はあまり大した話はなかったが、一つだけおーっという証明があった。
ビラ配りのおかげで毎朝早起きできます。感謝・・・すべきところなのでしょうきっと。

2日で9コマも埋めつつあるのが、自分でも驚きだ。