AGC027-C ABland-Yard

初AGC2完記念(今更?)&初900AC記念&初黄パフォ記念。

問題概要

N頂点M辺のグラフがある(単純とも連結とも限らない)。各頂点にはAまたはBと書かれている。好きな頂点を始点とし,好きな回数隣接する頂点の移動をしたときに,訪れた頂点に書いてある文字を訪問順に並べることでAとBからなる文字列を作る。このとき,AとBからなる任意の文字列を作ることができるか判定せよ。
C - ABland Yard

考察過程

まず,問題の条件を次のように言い換えた。

与えられたグラフの連結な部分グラフHであって「Hの任意の頂点について,Aと書かれた頂点にもBと書かれた頂点にも移動できる」ようなものが存在する。

もとのグラフはGとして,Gの頂点のうちAにもBにも移動できるものを良い頂点,できないものを悪い頂点と呼ぶことにしよう。Gのうち連結な良い頂点の集合を探せばいいのだから,Gの各頂点が良いか悪いかを判定して,良い頂点の連結成分(大きさ2以上)があるかを判定すればいいと思ったのだが,サンプルさえ通らず考え直す。

よく考えると,目標は上のような部分グラフHがあるか判定することであったから,一番最初の時点で悪い頂点はHを構成する頂点になり得ない。だから,悪い頂点はないものと考えてよい。

さらによく考えると,悪い頂点をないものと考えたことによって,最初は良かったはずの頂点が悪くなっていしまう可能性があることに気付く。悪は伝搬するのである。この伝搬を素直に見ていって,すべての頂点が悪くなったらNo,良い頂点が生き残ればYesっぽいということがわかった。

そうすると,これをシミュレートする方法を考えればよい。頂点vの,隣接する頂点でAが書かれているものの数をa_v,Bが書かれているものの数をb_vとする。a_v,b_vの一方が0であればvは悪い頂点である。これはBFSでできる。
まとめると

  1. 最初に,すべての頂点vについてa_v,b_vを数えて,この時点で悪い時点をqueueに入れる。
  2. queueから頂点vを取り出し,隣接する頂点にvが悪いことを伝える。つまりvに書かれた文字がAなら,vに隣接する頂点uについて,a_uを1減らす。Bの場合も同様である。
  3. 2によって悪くなった頂点があればqueueに入れる。
  4. 2~3をqueueが空になるまで繰り返す。
  5. 悪くなった頂点の数をカウントし,N個ならNo,そうでないならYesである。

計算量はO(N+M)であり,間に合う。実はコンテスト中はTLEするかもと思っていた。

提出

コンテスト中に出したものは試行錯誤の残骸が多く汚いので,整理したものを貼っておく。実装は重くない。
Submission #3206813 - AtCoder Grand Contest 027

雑談

  • うまく頂点を増やして辺を張って閉路検出という方法もあるらしいが,それよりは比較的自然に出てくる解法だと(個人的には)思う(自分で思いついた方を自然に思うに決まっている)。閉路検出が書けるか怪しいため,後でやってみる。
  • パフォは2143でレートが100くらい上がった。嬉しい。最近の精進の結果が少し出たかもしれない。今解説を見ても天才だな...と思うってしまう問題でも,そのうち自然だなあと思えるようになってくるのかもしれない。
  • この回のAGCはBが100人程度しか正解していないという恐ろしい回だった。Bを10分くらい考えて無理そうと思い,(その時点での正解者数を勘案して)Cに振ったのは正解だった。

ARC102-E Stop. Otherwise...

勉強になったのと,解説があまり丁寧でないのでまとめのため。
問題概要:1からKまでの目が出るサイコロをN個振る。このとき,2\leq i \leq 2Kをみたす各iについて,次の問題に答えよ。

・どの異なる2つの出目の和もiにならないような出目の組の場合の数はいくつか?ただし,サイコロ同士は区別しない。

問題リンクE - Stop. Otherwise...

解法が2つあるので,どちらも紹介する。解法2の方が簡潔である。

解法1(解説解)

iを固定したときの問題を考える。 a+b=iを満たす(a,b)(1\leqq a\leqq b \leqq K)のペアの個数をnとする(具体的なnの値はコード参照)。求める出目の総数は,m個のペアについてはaもしくはbの片方のみの数が出現し,n-m個のペアについてはどちらの数字も現れないような出目の総数をS(m)とすると,\sum_{m=0}^{m=n}S(m)である。
S(m)を求めよう。戦略は以下のようになる。まず,(1)m個のペアを使うと決めたときに,使用できる数の個数を求める。その次に,(2)それらの数を使った出目が何通りあるかを求める。最後に,(3)使用できる数の選び方が何通りあるか求める。これらをすべてかけ合わせた値がS(m)である。
注意する必要があるのは,iが奇数と偶数のときは少しだけ事情が変わってくるということである。iが偶数のとき,上のペアのうち,a=b=\frac{i}{2}となるものが混入するためである。まずは,iが奇数のときを考えよう。

(1) m個のペアの片方の数を必ず使うと決めたので,まずm個の数が手に入る(このとき,a,bどちらを使うかは問題にならない)。他のペアの数は使わないと決めたので,残りは,n個のペアに入らないK-2n個の数たちを使う。よって,使用できる数の個数はK-2n+m個である。

(2) K-2n+m個の数のうちからN個を重複して選ぶ組合せの数なのだが,m個のペアの片方の数を必ず使うと決めたので,N個のうちm個はもう埋まっていると考えよう。すると,残りのN-m個をK-2n+m個の数で埋めてやればよい。重複組合せの記号{}_n \mathrm{H} _r={}_{n+r-1} \mathrm{C} _rを用いれば,{}_{K-2n+m} \mathrm{H} _{N-m}個である。

(3) まず,n個のペアからm個のペアを求める組合せの数は{}_n \mathrm{C} _mである。さらにm個のペアにそれぞれついて,abどちらを選ぶかが2通りあるから,2^mが掛け算される。

以上より,iが奇数のとき,S(m)
S(m)={}_{K-2n+m} \mathrm{H} _{N-m}\times {}_n \mathrm{C} _m \times 2^m
とわかった。これを0\leqq m \leqq nについて足し合わせれば,過不足なく数えることができる。

iが偶数のときは,\frac{i}{2}を使うか使わないかで別々に数えるが,別々になるのは(2)の部分のみである。
・まず,奇数のときと同様に考えるため,ペアの数nn-1に置き換える。
・次に,(1)での使える数の個数はK-2(n-1)-1+mとしておく。-1というのは\frac{i}{2}を差し引いたものである。((1)で求めたのは,重複を許して使うのことのできる数だったという言い方がわかりやすいだろうか。)
・(2)について,\frac{i}{2}を使うとき,埋めるべき枠はN-m-1個,使わないときに埋めるべき枠はN-m個である。
・(3)はnn-1に変わるだけである。
以上より,iが偶数のときは
S(m)=\left({}_{K-2(n-1)+m-1} \mathrm{H} _{N-m-1}+{}_{K-2(n-1)+m-1} \mathrm{H} _{N-m}\right)\times {}_{n-1} \mathrm{C} _m \times 2^m
であり,これを0\leqq m \leqq n-1について足し合わせれば,過不足なく数えることができる。

提出
Submission #3125501 - AtCoder Regular Contest 102

解法2(包除原理)

包除原理がそもそもなにかということについては包除原理 - Wikipediaを参照。
解法1と同様に, a+b=iを満たす(a,b)(1\leqq a\leqq b \leqq K)のペアの個数をnとし,各ペアに1からnまでの番号をつけておく。集合A_k (1\leqq k \leqq n)を「出目の組み合わせのうち,k番目のペアが少なくとも1つあるようなものの集合」と定義する。すると,求める組合せの総数は,集合
\bigcap_{k=1}^{n}\overline{A_k}=\overline{\bigcup_{k=1}^{n}A_k}
の要素の数である(ド・モルガンの法則を用いていることに注意)。よって,包除原理を用いて\bigcup_{k=1}^{n}A_kの要素の個数を求め,全体の出目の組み合わせの数{}_K \mathrm{H} _Nから引けばよい。

m (1\leqq m \leqq n)個のA_kたちの共通部分の要素の大きさを求めよう。m個のペアの数は使うと決めたから,N個のサイコロのうち2m個の出目は決まっている。あとは,残りのN-2m個の枠を,K個の数で埋めると考えてよい。m個のA_kたちの選び方は{}_n \mathrm{C} _mであるから,結局
{}_n \mathrm{C} _m\times {}_K \mathrm{H} _{N-2m}
を,m (1\leqq m \leqq n)の偶奇に対応して足し引きすればよい。

なんと,この解法はiの偶奇に依存していない。包除原理最高である。

提出
Submission #3126896 - AtCoder Regular Contest 102

こういうのが時間内に解けるようになりたいですね。

参考
包除原理 - Wikipedia
E - Stop. Otherwise...
包除原理の解がもう少し丁寧に書いてあります。本記事と表現がちょっと違いますが、基本的な考え方は同じです。
ARC102 参加記録 - ARMERIA

codeforces #502 C ~The Phone Number~

背景が面白い問題だったのでつい投稿。嘘を書いていたら教えてください。
問題要約
長さnのpermutationのうち,最長増加部分列(LIS)の長さと最長減少部分列(LDS)の長さの和が最小になるものを1つ出力せよ。
https://codeforces.com/contest/1017/problem/C

本番はエスパーして解いたので,解説を見たところこう書いてあった。


You can use [Dilworth's theorem]https://en.wikipedia.org/wiki/Dilworth So assume we've already known that  LIS=L,then we can achieve  LDS=\lceil \frac{n}{L} \rceil.



なんでや。



ということで詳しく調べてみた。
まず,いくつか準備。
定義(最小被覆パス)
 G(V,E)を閉路をもたない有向グラフとする。Gの最小被覆パスとは,パスの集合の組P_1,\dots P_kであって,これらがVの分割になっているようなもの(すべての頂点v\in Vに対して,あるP_iがただ1つあって,v\in P_i)のうち,kが最小のものである。

定義(反鎖)
G(V,E)を閉路をもたない有向グラフとする。Gの反鎖(antichain)とは,Vの部分集合Pであって,Pの任意の2要素の間にパスがないもののことである。
本来この語は半順序集合に定義されるもののようだが,閉路をもたない有向グラフは半順序集合とみなせる(と思う)ので,ここではグラフで定義をしても差し支えない。

Dilworthの定理とは以下のようなものらしい。
定理(Dilworth)
閉路をもたない有向グラフG(V,E)における最小被覆パスの大きさ(上の定義でいうところのk)と,Gの最大の反鎖の大きさは等しい。
証明は(https://en.wikipedia.org/wiki/Dilworth%27s_theorem)を参照。こちらは半順序集合の言葉で話を進めているので注意。

LISとLDSに話を戻そう。長さnのpermutationをp_1,p_2,\dots,p_nとする。このとき,頂点集合を\{p_1,p_2,\dots,p_n\}として,グラフを作る。p_i,p_j (1\leq i.j\leq n)について,p_i\lt p_jかつi\lt jのときにp_iからp_jに辺を張る。このグラフをG(V,E)とすると,LISの長さLGの最長のパスの長さであり,LDSの長さKは最大の反鎖の大きさになる。これが肝である。
こんな感じ。
f:id:sigma1113:20180809202306j:plain

LISの長さがLのとき,K=\lceil \frac{n}{L} \rceilが最小であることを示そう。Dilworthの定理より,KG(V,E)の最小被覆パスの大きさに等しい。ここで,LISの長さがLであることから,最小被覆パスを構成するパスたちP_1,P_2,\dots,P_Kのそれぞれの大きさは高々Lである。すると,KL\geq n,つまりK\geq \lceil \frac{n}{L} \rceilが成り立つ。この下界は達成できる。実際,L(K-1)+1,L(K-1)+2,\dots,n,L(K-2)+1,L(K-2)+2,\dots,L(K-1),\dots\dots,L+1,L+2,\dots,2L,1,2,\dots,Lがそうなっている。

本番中に証明までして通した人どれくらいいるんだろう。

参考:
codeforces https://codeforces.com/contest/1017/problem/C
https://codeforces.com/blog/entry/61081

Dilworth's theorem https://en.wikipedia.org/wiki/Dilworth%27s_theorem

Erdős–Szekeres theorem https://en.wikipedia.org/wiki/Erd%C5%91s%E2%80%93Szekeres_theorem

Divisor https://www.slideshare.net/oupc/divisor

順序集合 https://ja.wikipedia.org/wiki/%E9%A0%86%E5%BA%8F%E9%9B%86%E5%90%88

人類に合理的思考は早すぎる(?)

皆さん今週もお疲れ様でした。周り(というかTwitterのffが)ブログを始めだしたので、僕も適当に更新します。

タイトルはなんか凄そうですが大したこと書いてません。(ありふれたネタ...)

 

本文

こんな状況を考えてみましょう。あなたは進級のかかった試験を受けています。受験者は100人で、その試験の最後の問題はこのようなものでした。

「0から100の好きな整数を1つ書け。全員の書いた整数を集計し、その平均値の2/3に最も近い整数を書いた者に10点を与える。」

知っている人は知っている問題ですね。皆さんなら何を書くでしょうか?

試験でこんな問題が出たら真面目な皆さんは憤慨し、怒り狂い、前にいる教員にシャーペンを投げつけてしまうかもしれません。しかし、数年前き実際にこのような問題を試験で出題し結果を公表していたツイートを見たことがあります。

 

さて、この問題をゲームとして、以下のように書き直してみます。

「ゲームのプレイヤーはn人。各プレイヤーは0から100までの数を1つ選ぶ。選ばれた数の平均値のp倍(0<p<1)の値に最も近い数を選んだプレイヤーが5000兆円を獲得する。」

それでは、ゲームのプレイヤーが全員「合理的」であるとして、このゲームがどういう結末を迎えるか考えてみます。

まず、選ばれた数の平均値の最大値は100です。つまり、平均値のp倍の最大値は100pです。となると、100pより大きい数を書くというのは合理的ではありません。100pより大きい数を選ぶくらいなら100pを選んだ方が良いのは明らかです。

さて、全員がこのように考えるとすれば、このゲームは0から100ではなく0から100pの間の数を選ぶゲームに変わります。それで、この更新されたゲームについて同様の考察を行えば、さらに0から100p^2の間の数を選ぶゲームになります。m回このような考察をすれば、ゲームは0から100p^mの間の数を選ぶゲームになります。皆さんは極限というものを知っているので、0<p<1よりm→∞とすれば100p^m→0となることがわかります。

つまり、このゲームでは各プレイヤーは0を選び、平均値は0、平均値のp倍も0なので、全員が5000兆円を獲得します。インフレ万歳。

 

では、人間にこのゲームをやらせるとこのようになるのでしょうか。答えはNoです。このゲームは実際に人間にやらせるという実験が行われていて、p=2/3だとだいたい20~40が平均値になるそうです。こうなると、0を選ぶ方が「非合理」ということになってしまいそうです。

人間にとって「合理的な」思考というものは難しいのです。自力でこのゲームの考察ができたとしても、直感的に「0だ!!!!」と思えた人はほとんどいないのではないでしょうか。

 

ここからはこの問題を一側面から見たてきとーなことを言いますが、ちゃんと考えて0を選んだのに周りがそこまで考えなかったために自分が損をして、周りからは「なんで0なんて選んでんのw」とバカにされる、といったことが実社会では往々にしてありそうに(Twitterを見ていたりすると)思えます。まあ理不尽な気もしますが、それが良いとか悪いとかいうわけではなく、どんなに自分はちゃんと考えて正しい結論を出したと思っても、「世の中いろんな人がいる」ということ、を頭に留めておきながら、選択・発信をしなければならないのだろうと思うわけです。それが人間社会で生きるということだという気がします。こんなシンプルな例でさえ、ちゃんと考えるのは人間には難しいのですから。この問題ではできたとしても、社会に存在するさまざまな問題を考えれば、僕も皆さんも例外ではないでしょう。

 

参考:「ゲーム理論と実験経済学」 (岡田章)

http://www.econ.hit-u.ac.jp/~aokada/essay_pdf/Experimental%20Economics.pdf

ベイズの定理とヒューリスティック

久々に書きたくなったので書きます。学問ネタは初めてなので間違ったこと書いてないか心配です(致命的なミスはないはず...)。ググれば無限に出てくるネタですが、まあ自分のアウトプットの練習として。

 

先日、TwitterのTL上でこんな問題が話題になりました(一部改めてあります)。

「Aは100人に1人の割合でかかる病気Xに自分がかかっているかを知りたくなった。病気Xに検査薬で検査したところ、陽性であった。この検査薬が正しい確率は99%であり、Xにかかっていないにもかかわらず陽性を示す確率は1%である。また、Xを患っている場合は必ず陽性を示す。このとき、AがXを患っている確率はいくつか。」

賢明な皆さんであれば、正確に答えることができるかもしれません。「検査薬が陽性を示した時に、実際にXにかかっている条件付き確率」を求めればいいのですから

 (検査薬が陽性を示す確率)=0.01*0.99+0.99*0.01=0.02*0.99

   (Xにかかっているときに検査薬が陽性を示す確率)=0.01*0.99

より、(0.01*0.99)/(0.02+0.99)=0.5 つまり50%となります。

 この計算結果を見て、不思議に思う人が多いことかと思います。検査薬は99%の確率で正しい結果を示してくれるはずなのに、実際にXにかかっている確率は50%まで落ちてしまうのです。

 次に、こんな問題を考えてみましょう。

「ある夜に、タクシーがひき逃げ事件を起こした。その町では、緑のタクシーと青のタクシーが営業している。タクシーの比率は85%がタクシー、15%が青タクシーである。ある目撃者が言うには、事故を起こしたタクシーは青だったという。そこで事故が起きた状況で目撃証言の信頼性をテストしたところ、80%は正しく色を判断できたが、20%は誤りであった。このとき、事故を起こしたのが本当に青タクシーである確率はいくつか。」

同様の計算で答えが導けます。「目撃者が青タクシーだと証言したときに実際に青タクシーであった確率」なので

   (0.15*0.8)/(0.15*0.8+0.85*0.2)≒0.41

と。41%となります。

 この問題は実験に使われていて、被験者の多くが青タクシーが犯人である確率を80%前後と推定したといいます。そんなの条件付き確率の知識がないだけやろと思うかもしれませんが、パッと出題されたらまあ80%ぐらいかなあと思うのではないでしょうか。

 

ベイズの定理

 上2つの問題の計算過程ではベイズの定理を使っています。ベイズの定理というのは簡単に言うと(詳細はぐぐってください)、事象Aと事象Bに対して、事象Aが起こった時に事象Bが起きている確率P(B|A)が

   P(B|A)=P(A∩B)/P(A)

で求まるというものです。以後、P(B|A)を事後確率と呼びます。

さて、タクシーの問題ではAが「目撃者が青タクシーだと証言する」Bが「青タクシーが犯人である」となります。また、緑タクシーが85%、青タクシーが15%という情報がありましたが、この確率のことを事前確率と言います。また、目撃者の証言の信頼度は尤度と呼ばれます。ベイズの定理は、事前確率と尤度から事後確率を導く定理というわけですしかし、実験被験者の多くは青タクシーが犯人である確率は80%だと答えました。つまり、本来事前確率と尤度を用いて事後確率を計算すべきところを、事前確率を無視して尤度に謎の微調整を事後確率を推定していると考えられます。これを事前確率の無視と呼ぶことにしましょう。そして正しい解答を導けたとしても「直感に反する」だとか「不思議だな」といった感想は、この事前確率の無視から来ていると考えられます。この事前確率の無視には、人間の判断や意思決定を支えるヒューリスティック(heuristic)というものが関わっています。

 

ヒューリスティックとは?

 ヒューリスティックというのは、必ずしも正確な解は得られないが、近似解が期待できる方法のことをいいます。特長は、回答に至るまでの時間が短縮できることです。対置される概念としてアルゴリズム(algorithm)があります。アルゴリズムは、必ず正しい解を返すことのできる一連の手順のことをいいます。

 人間は記憶や推論に使用できる認知資源に限りがあります。アルゴリズムというのは場合によっては複雑であったり、計算量が多かったりするので、代わりにヒューリスティックを用いることで処理の複雑さを軽減しているのです。

 繰り返しになりますが、ヒューリスティックは簡単に用いることができて、回答までの時間を短縮できます。一方で、必ずしも結果は正しくなく、結果には系統的な歪みが生じることが生じることがあります。そして、事前確率の無視は、このヒューリスティックによるものだという説明ができるのです。事前確率の無視を説明する2つのヒューリスティックを見ていきましょう。

 

代表性ヒューリスティック

代表性ヒューリスティック(representative heuristic)とは、ある事例の起こりやすさ(確率)を、典型例(いわゆるステレオタイプ)と類似している程度によって判定する方法のことをいいます。対象が典型例と類似しているほど、代表制ヒューリスティックが生じやすくなります。

有名な例としてこんなものがあります。

「リンダは、独身で31祭の率直な聡明な女性である。彼女は大学では哲学を専攻した。また、学生時代は人種差別や社会正義の問題に関心を持ち、反核デモに参加していた。

ここで、リンダについてどちらの可能性が高いだろうか?」

 A:「銀行員である」

B: 「フェミニストの銀行員である」

みなさんはどちらを選びますか?

集合論的に考えれば、当然Aの方が確率は高いはずです。ところが、この問題での実験参加者の約90%がBを選んだのです。ここでリード文を見てみると、たしかに「フェミニストっぽい」フレーズがちりばめられています。実験参加者は代表制ヒューリスティックによって、リンダについての説明文と銀行員やフェミニストの典型例との類似性から可能性を判断したのです。このような誤りは連言錯誤と呼ばれています。実験室の中でならよいですが、これが社会的ステレオタイプとなると面倒です。例えば「東大生だから○○だ」「理系/文系だから」という言説には困らされることがあるでしょう。

 さて、この代表制ヒューリスティックから事前確率の無視を捉えてみます。事故の犯人のタクシーを推定するとき、町のタクシーの比率で判断するより、目撃者の証言で判断する方が代表的なわけです。そのため判断材料として目撃者の証言の方に偏ってしまうことになります。最初に挙げた病気の例も、検査薬の結果で判断するのが代表的だとして、そちらに引っ張られるわけです。

 

 さて長くなってしまって僕も疲れてきたのであとは簡単に終わらせますが、事前確率の無視には係留と調整ヒューリスティック(anchoring and adjustment heuristic)を用いた説明も可能です。このヒューリスティックは始めの値を錨(anchor)のように基準値として設定して、そこからわずかな調整だけで最終的な結果が決まってしまうということです。事前確率の無視といっても完全に無視されているというわけではないとされているのですが、タクシー問題の例でいえば、一度目撃者証言の信頼度に基準を定めてしまうため、そこからわずかにしか推定値が変化しないのでしょう。

 

 事前確率の無視についての教科書的な説明をしてきましたが、実はこれはおかしいのではないかという議論もあります(問題文は妥当か、ここでいう「確率」とは数学的な確率なのか?%表記ではなく頻度表記にするとうまくいく...etc)が、それはここではやめおきましょう(笑)。

 

参考:教養としての認知科学 (鈴木宏明 著 東京大学出版会)

  認知心理学 (箱田裕司 編 有斐閣)

       ゲーム理論入門 (渡辺隆浩 著 日本経済新聞出版社)

振り返り

明日から大学3年生になるのでこの2年を軽く振り返ってみた。ゆるい話です。

 

講義

まあもっと真面目に出ておくべきだったと思う(笑)。聞かなくてもいないよりは教室にはいた方がまだ後々の勉強のモチベになるし理解度も意外と違った(笑)。特に数学はちゃんとやっておくべきだったし、取らずに後悔している総合科目もある(記号論理学とか記号論理学とか…)。自分は制度に甘える人間なのだなと気付かされた(最近これを思わされることが多い)。

 

進振り

最初は物理やりたいな~と思っていたけど結果的に心理学に近いものをやろうとしている(また変わるかもしれないけど)。いろいろな講義の影響を受けたなあと思う。必修の情報がなければ情報科学に目を向けようとも思わなかっただろう。ジェンダー論とか社会行動論とかでは文転まであるとまで思わされた。今の学科の存在を知ったのも計算の理論という講義だった。自分の興味にはどうやら認知科学という名前がついているらしいというのを知ったのは学科が決まった後の2Aだった(笑)。そういう意味では前期課程のシステムの恩恵に預かったと思う(振り回されたとも言える?)。進振り点も困るようなレベルではなかったのは幸運だった。

ちなみに最後は理情と教養学部学際科学科B群(長い)で悩んだが、後者に心がやや傾いているときに某氏の言う「伊達と酔狂」という言葉に後押しされて決断に至ったというのは印象に残ることだった。割と感謝している。

 

クラス

理一28組で本当に良かったと思う。クラコンは半分くらいしか人来ないし仲が良かったかというと微妙だが、これくらいの緩い結びつきは心地よかった。なんだかんだ似た波長を感じる人間もいたのでそれも良かったかもしれない。そして数強の多いこと(笑)。今でもお世話になっているし、結局自分が数学に再び興味をもてたのは彼らの影響が大きい。特に数学科の皆さんはこれからも駒場で一緒なので連絡が取りやすいしこの点においては教養学部最高(?)。

 

Twitter

一番よかったのはやはり多くの人と繋がれたことだと思う。割と仲良くなった(と思っている)人もいる。東大の中の強い人たちを見て良くも悪くも刺激を受けることができたし、やってて良かったと思っている。ただしTwitterに時間を使いすぎたのはそうなので少し反省はしている。

よくなかったのは人間の悪い面をたくさん目にしたところ(笑)。人間ダメだなあと思わされることがたくさんあった。そして自分もダメになっていった。優しい人間でありたかった。

まあ今後も細々と続けていくのでしょう。

 

音ゲー

1年の冬から本格的に始めた。比較的短期間で、目に見える形で成長があるので精神衛生上にとてもいい。ただしお金と時間は溶ける。5000兆円あっても時間がない。

 

ウマゴン

小学校の頃から遊んでいて、中学のときに1度屋根裏に押しやったのだが、夏の掃除のときに再び目にしたところまたハマってしまった。イライラしているときにいじると心が落ち着く。

 

1年の頃は色々なもの手を出してみたが、結果として悩み苦しみ、2年の頃から少しずつ捨て始めながらボロボロになり、今残っているのは勉強への多少のモチベと多少の友人(とTwitter(?))ぐらいだ。この2年で生きることには正直疲れたが、学びたいことはあるし仲良くしてくれる人もいるのでもう少し頑張ろうと思う。

クリスマスに寄せて

クリスマスですね。皆さんいかがお過ごしでしょうか。クリスマスというのはカップルがいちゃいちゃする日でもなくせいなる日でもなく、イエスキリストの誕生を祝う日です。誕生日と言わないのは、実際に生まれたのは春先ではないか?という説があるからです。まあそういう話は今回置いておいて、なぜイエスキリストの誕生日を祝うイベントがこんなに続いているのか、その意義を確認しながら見てみましょう。宗派によって微妙に解釈が違うところがあるかもしれませんが、大切なところはずれていないはずです。まあこんな話を信じるなんてと思うでしょうが、教養として知っておいてもいいと思いますよ。

 

 

話は世界の始まりまでに遡ります。キリスト教では、この世界は「神」によって創造されたとしています。我々人間も同様です。神は、神に似たものとして人間を創りました。まず最初に創られたたのはアダムという男性です。聖書から引用してみます。

「神は仰せられた。『さあ人をつくろう。われわれのかたちとして、われわれに似せて。彼らが、海の魚、空の鳥、家畜、地のすべてのもの、地をはうすべてのものを支配するように。』」(創世記1:26)

しかし神はこれで満足しません。「人が一人でいるのはよくない」として、エバ(イヴという呼び名をよく聞くかもしれませんが、僕の持っている聖書(新改訳 第三版)ではこのように訳されているので、それを採用します)という女性です。また聖書を見てみます。

「神である主は仰せられた。『人が、ひとりでいるのは良くない。わたしは彼のために、彼にふさわしい助け手を造ろう。』」(創世記2:18)

「神である主は、人(アダムのこと)から取ったあばら骨をひとりの女に造り上げ、その女を人のところに連れてこられた。人は言った。 『これこそ、今や、私の骨からの骨、私の肉からの肉。これを女(ヘブル語で『イシャ』)と名付けよう。これは男(ヘブル語で『イシュ』)から取られたのだから。』」(創世記2:22-23)

まあこの男のセリフは世界初のラブソングみたいなものです。神曰く人が一人でいるのはよくないそうです。そうですか。 さて、2人はエデンの園というところにぶち込まれ、ほかの生き物に名前をつけろなどという指示を神から受けます。そして、エデンの園にある「善悪の知識の木の実」以外は好きにとって食べて良いと言われます。

「神である主は仰せられた。『あなたは、園のどの木からでも思いのまま食べてよい。しかし、善悪の知識の木からはとって食べてはならない。それを取って食べるとき、あなたは必ず死ぬ。』」(創世記2:16-17)

しかし、あるとき蛇がエバをそそのかします。「あらゆる獣のうちで、蛇が一番狡猾であった。」(創世記3:1) 善悪の知識の木の実を食えば賢くなるから食べてみろというのです。その誘惑に負けたエバはアダムに一緒に善悪の知識の実を食べるようそそのかします。この頃から男は女に弱いようで、結局2人とも善悪の知識の実を食べてしまいました。

「このようにして、ふたりの目は開かれ、それで彼らは自分たちが裸であることを知った。そこで、彼らは、いちじくの葉をつづり合わせて、自分たちの腰のおおいを作った。」(創世記3:7)

これが、キリスト教での大切な概念である「罪」の始まりです。

「彼らは、日の涼しい風の吹くころ、園を歩き回られる神である主の声を聞いた。そこで、人とその妻とは神である主の御顔を避けて、園の木の間に身を隠した。 神である主は人に呼びかけ、彼に仰せられた。『あなたはどこにいるのか』。 彼は答えた、『私は園で、あなたの声を聞きました。それで私は裸なので、恐れて、隠れました。』 すると、仰せになった。『あなたが裸であるのを、だれが知らせたのか。あなたは、食べてはならない、と命じておいた木から食べたのか』。 人は言った。『あなたが私のそばに置かれたこの女が、あの木から取って私にくれたので、私は食べたのです』。 そこで神である主は女に言われた、『あなたは、いったいなんということをしたのか。』女は答えた。「蛇ががわたしを惑わしたのです。それで私は食べたのです。』」 (創世記 3:8-13 )

もちろん、神は食べるなと言ったものを食べたことを責めます。するとアダムはこれをエバのせいにするのです。なんという奴でしょう。そしてエバはこれを蛇のせいにします。彼らの姿に共通するのは、自分たちの犯した「罪」を認めず、他のもののせいにすることです。これも、善悪の知識の木の実を食べてしまったことによる「罪」です。

しかし、最も大切な「罪」は神から逃げ隠れしようとしていることです。神の「あなたはどこにいるのか。」という問いは、場所の意味だけでなく、神との関係においてどこにいるのか、という問いとも言えます。神と向き合い、神に従っていた人が、神から離れてしまったのです。

こうして彼らに罰が下ります。蛇は足を奪われ、地をはう生き物になってしまいました。女は苦しんで子を産まなければいけなくなりました。男は苦しんで食を手にいれなければいけなくなりました。そして、いつかは土に帰り、死んでしまうことを運命づけられました。もちろんエデンの園からは追い出されます。

さてここから人間はさまざまな「罪」を犯します。アダムとエバの間には、カインとアベルという二人の息子ができますが、なんとカインはアベルを殺してしまいます。また、時間が飛びますが、有名な「ノアの方舟」の話は人間が全然神のいうことを聞かず「罪」を犯してばっかりだからノアの家族と動物以外抹殺しようというものです(雑)。 さて、果たして人間はもう「罪」の奴隷となり滅び行く存在のままになってしまったのでしょうか。そうではありません。神は人を愛しておられました。だからこそ、なんとかして人間を「罪」から救おうとしたのです。そこで鍵を握るのがイエスキリストなのです。

 

まず、神は「三位一体」である。という話があります。神は「父なる神」「子なる神」「政令なる神」の三種類あります。これらは別々なのですが、深い「愛」のために一つとみなせる、というのが「三位一体」です。そして、イエスキリストはこの「子なる神」にあたります。上で出てきた神は「父なる神」です。

さて、神の人間を救う計画はざっくり言うとこうです。まず、「子なる神」をイエスキリストという一人の人間として地上に下ろします。このイエスキリストは人間であると同時に神であり、人間と決定的に違うところは「罪」がないということです。そしてご存知の通り、イエスキリストは十字架という最も重い刑に処せられ、死にます。これは本来「罪」にまみれた我々人間が受けるべき刑です。それを「罪」のないイエスキリストが肩代わりしてくれたのです。そして驚いたことにイエスキリストは死んで三日後に「復活」します。これをもって、「罪」からの勝利とするわけです。そして、これらのことを信じる人間は、「罪」が赦され、「永遠の命」を手に入れることができる、というわけです。

つまりは、このイエスキリストというのは、人間を罪から救う「救世主」なんですね。だから、イエスキリストの誕生はめでたいわけです。

 

「神は、実に、そのひとり子をお与えになったほどに、世を愛された。それは御子を信じる者が、ひとりとして滅びることなく、永遠のいのちを持つためである。神が御子を世に遣わされたのは、世をさばくためではなく、御子によって世が救われるためである。御子を信じる者はさばかれない。信じない者は神のひとり子の御名を信じなかったので、すでにさばかれている。そのさばきというのは、こうである。光が世に来ているのに、人々は光よりもやみを愛した。その行いが悪かったからである。悪いことをする者は光を憎み、その行いが明るみに出されることを恐れて、光のほうに来ない。しかし、真理を行う者は、光のほうに来る。その行いが神にあってなされたことが明らかにされるためである。」(ヨハネ福音書3:16-21)

 

「罪」の始まりに行を割いてしまったような気がしますが、まあいいでしょう。ざっくり言えば罪からの救い主の誕生だからこんなに祝われるということです。本当はイエスキリストの誕生がどんなものであったかも書いておくべきなのかもしれませんが、これくらいにしおきましょう(笑)。