院生と物理学と+α

大学院生(専攻は相対論と量子情報)が学んだこととかつらつら書いていきます

ABCのちょっと昔の問題を解く (ABC 040 C 柱柱柱柱柱)

ABC040 C 柱柱柱柱柱

最近○柱というのが巷で流行っている。
水柱さん、風柱さん、岩柱さん、炎柱さん、嘘柱誇張しのぶさんだのいろんな柱の方がいてポケモンみたい。
ちなみに私は炎柱さんが好きです。(今回の話に○殺隊は一切関係ありません)
なので(?)今回はちょっと古い2016年の問題
ABC040 C 柱柱柱柱柱
C++で解いてみた。
(2016年はちょっと前だよね?まだ古いって程ではないよね??)

問題文

N本の木の柱が左から右へ一列に並んだアスレチックがあります。左からi本目の柱の高さa _ iセンチメートルです。高橋君は左から1本目の柱からスタートし、右へ柱を渡っていきN本目の柱まで行こうとしています。高橋君がある柱にいるとき、次には現在の柱から1個もしくは2個右にある柱のどちらかへ移動することができます。移動するときには、現在いる柱の高さと、移動後の柱の高さの差の絶対値のぶんだけコストがかかります。N本目の柱まで行くとき、コストの合計の最小値はいくらになるでしょうか。

制約
2≦N≦100,000
0≦a _ i≦10,000
a _ iはすべて整数である。

解法(壱ノ型)

パッと見典型的な動的計画法の問題だなあという印象。
{\rm dp}[i]:=i本目の柱に着いた時のコストの合計の最小値
とすれば漸化式がたてられます。
状態の遷移を考えて漸化式を立てるというのは大学受験でも割とよくある問題(だと思う)。
具体的には


{\rm dp}[i] = min({\rm dp}[i-1]+ \left|a_{i}-a_{i-1}\right|,\ {\rm dp}[i-2]+ \left|a_{i}-a_{i-2}\right|)

のようにi-1番目から来る場合とi-2番目から来る場合の2通りのうち最小な方を選べば良い。
実装する時には配列{\rm dp}[]に予め巨大な数を入れておいて、それを順番に更新していく。
注意としてはi=1ではi-2番目が存在しないので取り除かないといけないことぐらいだろうか。
ちなみに巨大な数ってなんぼやねんというと

INF = 1ll <<60 

とするといいらしい。が、なんでかはよくわかってないので勉強しないといけない。

以上を踏まえて実装したものがこちら

#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;

const long long INF = 1ll<<60;
 

long long N;
long long a[100010];
long long dp[100010];

int main(){
    cin >> N;
    for(int i = 0; i < N; i++){
        cin >> a[i];
    }
    /*初期化*/
    for(int i = 0; i < 100010; i++){
        dp[i] = INF;
    }
    dp[0] = 0;
    for(int i = 1; i < 100010; i++){
        dp[i] = min(dp[i], dp[i-1] + abs(a[i] - a[i-1]));  
        if(i > 1){
            dp[i] = min(dp[i], dp[i-2] + abs(a[i] - a[i-2]));
        }
    }
    cout << dp[N-1] << endl;
}

入力例

9
314 159 265 358 979 323 846 264 338

出力

310

とりあえずこれでACになったのでヨシ!
そういえば配列を定義する時、今まで上限を格納するのに必要な最低限数だけ確保してたが、いろんな人のコードを見ると[上限+ちょっと]としてる人が多い(なので今回はa[100010]{\rm dp}[100010]にしてみた)
なんとなくぴったりにしてた方が何か間違いがあった時エラーでわかるんちゃうかという適当な認識だが、ここら辺もちゃんと勉強しないといけない。

※追記 そもそもvectorで書いたらあかんのか?と思って下のように書いたら普通に通った、しかもこっちのがわずかに速い。が、通ったというだけでもしかしたらいけないことをしている可能性もあるので勉強しよう…

#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
using namespace std;

const long long INF = 1ll<<60;
 

long long N;

int main(){
    cin >> N;
    vector<long long> a(N);
    vector<long long> dp(N);
    for(int i = 0; i < N; i++){
        cin >> a[i];
    }
    /*初期化*/
    for(int i = 0; i < N; i++){
        dp[i] = INF;
    }
    dp[0] = 0;
    for(int i = 1; i < N; i++){
        dp[i] = min(dp[i], dp[i-1] + abs(a[i] - a[i-1]));  
        if(i > 1){
            dp[i] = min(dp[i], dp[i-2] + abs(a[i] - a[i-2]));
        }
    }
    cout << dp[N-1] << endl;
}

解法(弐ノ型)

もしなんか思いついたら書く

感想

鬼滅の刃面白いよね

ABCの昔の問題を解いてみる(ABC 005 D おいしいたこ焼きの焼き方)

AtCoder ABC 005 D おいしいたこ焼きの焼き方

(※Qiitaにも全く同じものを投稿しています(そのうち完全にこちらに乗り換え予定))

これまで研究が忙しいとか何とか理由をつけて競プロを長いことサボりまくっていたが、この前のARCで少し熱を取り戻したのでABCの古い問題を解いてみることにした。
加えてこれまで基本Pythonを使い続けてきたが、最近C++にちょっと慣れてきたのでこの際全部C++で書いてみる事にした。慣れてる人からみると、「へっ、汚ねえコードだ(某王子)」って思うかもしれないが所詮自分用のメモだしOKや

ABC005D たこ焼きに関する問題です。(語弊)

問題

高橋君のたこ焼き屋で使っているたこ焼き器は焼く場所によって美味しさの変わるクセの強いたこ焼き器です。 また、店員の力量によって一度に焼けるたこ焼きの数が違います。 高橋君はそれぞれの店員ができるだけ美味しくたこ焼きを焼けるようにしようと思いました。 たこ焼き器はN×Nの正方形をしています。 それぞれの場所ごとにたこ焼きの美味しさD_{ij}が決まっています。 それぞれの店員は一度に焼けるたこ焼きの上限P _ k が決まっています。 また、一度に焼くたこ焼きは必ずたこ焼き器の長方形の部分になっていて、その中の全てを使わなければなりません。 それぞれの店員について一度に焼けるたこ焼きの美味しさの合計の最大値を求めて下さい。 ただし、店員が焼き始める時はたこ焼き器が完全に空いていてどの場所でも使えるとします。

関西出身でたこ焼きとともに成長してきた(?)身としてこれは是非とも解きたい。

解法

これは2次元の累積和ですね間違いない(脊髄反射)。

とりあえずまずは入力部と累積和の部分を書いてみよう(見切り発車)。

#include <iostream>
#include <vector>
using namespace std;
typedef long long ll;

int main(){
    int N;
    cin >> N;
    vector<vector<ll> > D(N+1, vector<ll>(N));
    
    for(int i = 0; i < N; i++){
        for(int j = 0; j < N; j++){
            cin >> D[i][j] ;
        }
    }
    vector<vector<ll> > CS(N+1, vector<ll>(N+1)); /*CSはCumulative Sum(累積和)のつもり */
    
    for(int x = 0; x < N; x++){
        for(int y = 0; y < N; y++){
            CS[x+1][y+1] = CS[x][y+1] + CS[x+1][y] -CS[x][y] + D[x][y];
        }
    }
}

CS[x][y]は長方形[0,x), [0,y)内のDの総和。

今欲しいのは長方形の面積が「P以下」という縛りの元での最大値だから、面積「P」の長方形のそれを全部あげてみる。 (※さも簡単にわかったふりをしてるがここまででかなりの思考時間を費やしている)

    vector<ll> maxval(N*N); /*配列のi番目に面積iの長方形で総和が最大のものを収納*/
/*xlはxlow, xhはxhighのつもり、なんでもいいが*/
    for(int xl = 0; xl < N; xl++){
        for(int xh = xl + 1; xh <= N; xh++){
            for(int yl = 0; yl < N; yl++){
                for(int yh = yl + 1; yh <= N; yh++){
                    ll P = (xh-xl)*(yh-yl);
                    ll sum = CS[xh][yh] -CS[xl][yh] -CS[xh][yl] + CS[xl][yl];
                    maxval[P] = max(maxval[P],sum);
                }
            }
        }
    }

正直に告白すると最大値を更新するところを忘れててなんで上手くいかないんだ!?と長い時間苦しんでた。

ここまでくればあとは面積「P以下」での最大値に各maxval[i]を更新する。これは次のようにすれば良い。

    for(int i=0; i<N*N; i++){
         maxval[i+1] = max(maxval[i+1],maxval[i]);
    }

あとは各店員さんのPについてmaxvalを表示すればOK

    ll Q;
    cin >> Q;
    vector<ll> P(Q);
    for(int i=0; i<Q; i++){
        cin >> P[i];
    }
    for(int j=0; j<Q; j++){
        cout << maxval[P[j]] << endl;
    }

これで元の問題の入力例2

3
3 2 1
2 2 1
1 1 1
3
1
4
9

を入れると

3
9
14

と正しい解が得られた。

他にもパッと解がわかる例を入れてみると

5
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
4
1
4
3
2

9
32
24
17

になったので大丈夫そうだ。

感想

この店はたこ焼き器を買い直すべきである。

代表的な4次元ブラックホールについて

遂に4月になってしまいましたね・・・雪の舞う季節に入院して気づいたら桜が咲き始めてました。

前回からだいぶ時間があいてしまいましたが、せっかく新学期になったので更新しようと思います。

ブラックホールを用いたタイムマシンの話でしたが、やはりブラックホールの簡単な数理はどうしても説明上必要となるので代表的な4次元ブラックホール解についてまとめました。
ここに書いたもの以外でも知られているブラックホール解はたくさんあるんですが、どの教科書でも必ず出てくるのはこの3つだと思います。
特にKerr解についてはタイムマシンの話で重要になります。
Kerr解自体の導出は全く触れてませんが、よく本に載っているのは対称性からEinstein方程式をErnst方程式という簡単な方程式にリダクションし、Kerr解の族を系統的に導く方法でしょうか(この方法自体も非線形σ模型という大きな括りに入ります)
時空の最大拡張や、エネルギーの引き抜き機構であるPenrose過程については長くなるのであまり詳しくは触れていません。
Penrose過程やボゾン場の超放射の話はKerr解の特徴として面白いのでどこかで触れられればなぁとは思っています。
またブラックホール時空上での運動も、可積分系が関わってくる大事なトピックですが、いずれどこかで紹介できればと思います。


(今回はTEXで書いてPDFを埋め込んでみました)

あまりちゃんと校正したものではないので、間違い等あればご指摘ください。
例によって図はまだ書いてないのでそのうち載せると思います。

ブラックホールを用いたタイムマシンについて(その1)

古今東西SFものの定番であるタイムマシンについて数回にわけて少し真面目に解説?します。

今回はとりあえず紹介で、次回以降数式でちゃんと追っていこうと思います。

学部生でも十分追えるというか擬リーマン幾何をある程度知っていれば読めると思います。

全然関係ないですが僕はBack To The Futureが今まで観たSF映画の中で一番好きです。


まず最初にどの枠組みでタイムマシンを考えるかをはっきり述べておくと、一般相対論の範疇です。量子力学は考えないことにします。

一般相対論の範囲では、光速を超えることなくタイムトラベル可能な領域が存在します。

(いずれ述べますが実際にするには色々と困難があります)

その代表例が、ブラックホールの一つであるKerrブラックホールです。

このブラックホールは質量と角運動量で特徴づけられるブラックホールで、4次元ではこのKerrブラックホールがそのようなパラメーターで表される唯一の解であることが数学的に証明されています。(唯一性定理)

結論を先に述べておきます。

時空のある領域${\rm I\hspace{-.1em}I\hspace{-.1em}I}$にタイムマシンが存在するとは、次の命題が成り立つことである。

[命題]
\begin{equation}
^{\forall}p,q\in {\rm I\hspace{-.1em}I\hspace{-.1em}I},\;\;^{\exists}\alpha\subset{\rm I\hspace{-.1em}I\hspace{-.1em}I}:p{\rm から}q{\rm に向かう未来向きtimelike\ curve}
\end{equation}


(なぜ記号が${\rm I\hspace{-.1em}I\hspace{-.1em}I}$なのかは後で分かります。)

これは直感的には、未来に進んでたはずなのに過去に戻っているという現象が起こせるということです。

この命題は本質的に、Kerrブラックホールのある領域でCTC(closed timelike curve)が存在することが全てです。

"閉じた時間的曲線"の存在は明らかに因果律を破ります。

このKerrブラックホールのある領域で、CTCが存在することを指摘したのはCarterの1968年の論文で、Carter Time Machineと呼ばれます。

このような曲線が存在することは数学的に示されるのですが、実際にできるかは、

①まず、そのような曲線が存在する領域に到達することが可能か?

②そのような領域は安定に存在するか?

等考えなければいけません。

ちなみに映画John TitorはこのKerrブラックホールのCarter Time Machineを使っているらしいです。(すいません観たことないので…)
ゲームSteins Gateでもタイターと同じ理論と語られていました。

Kerrブラックホールでも、パラメータの大小によって振舞いが変わるので、その辺りも次回以降紹介したいと思います。

(ちなみにさらに電荷をもたせたKerr-Newmanブラックホールでも(少し種類は違いますが)CTCが存在します。)

相対論を学ぶ為の教科書参考書

相対論を学ぶのにどんな本を読んだらいいか?

と訊かれたので、それについてちょっとまとめようと思います。


結論から言いますが、そんなの知りません。

何故なら僕は相対論を完全にマスターしたわけでもその道の一流の研究者でもないからです。


ですので、僕が辿った道のりを紹介しようと思います。

まずは相対論入門としてド定番なシュッツです。

確か学部3年の時に読み始めたと思います。

第2版 シュッツ 相対論入門 ? 特殊相対論

第2版 シュッツ 相対論入門 ? 特殊相対論

第2版 シュッツ 相対論入門 ? 一般相対論

第2版 シュッツ 相対論入門 ? 一般相対論

特殊相対論から丁寧に解説してくれるので、初学者にはうってつけだと思います。一般相対論に最低限必要な数学もちゃんと直観的に解りやすく導入されています。

そのあとはこれもまた有名な内山さんの一般相対論を読み始めました。

一般相対性理論 (物理学選書 15)

一般相対性理論 (物理学選書 15)

・・・正直に言いますが僕はこの本読みにくくてあまり真剣に取り組みませんでした。

内容は素晴らしいと思います。(変分原理、Kerr解の導出、Spinor等がしっかり載ってる)

ただ単純に文字が小さい(笑)、古い本なのでローテーションも違ったりする・・・とかなんとか自分なりのいちゃもんをつけて、自分の知りたいところだけを必死に読みました。

次によく相対論の研究者なら必読と言われるほどの名著WaldのGeneral Relativityを読み始めました。

General Relativity

General Relativity

これは本当にすごい本だと思います。特殊相対論はある程度知っていること前提ですが、必要な数学が最初の方と巻末にまとめてあり、前半は一般相対論の基礎、後半はかなり深い内容までしっかり書いてあります。

Causal Structure関連の話はこの本で初めて目にしました。

他にも漸近的平坦性、スピノル、量子重力(の入り)等が書いてあって、宝の山みたいに感じました。

あと他にも小玉佐藤の一般相対論

一般相対性理論【現代物理学叢書】 (岩波オンデマンドブックス)

一般相対性理論【現代物理学叢書】 (岩波オンデマンドブックス)

は数学的に完璧にやりたい!って人向けです。

初学者が読むと詰みます。それぐらい数学的にしっかり相対論を説明している日本語ではかなり珍しい?本だと思います。

困ったことがあるとたいていWaldかこの本を参考にしています。ビアンキモデルがちゃんと説明されている和書はこれぐらいなんではないでしょうか(もちろん憶測です)

そして、このブログの最初の方でも出てきたHawking&Ellisです。

The Large Scale Structure of Space-Time (Cambridge Monographs on Mathematical Physics)

The Large Scale Structure of Space-Time (Cambridge Monographs on Mathematical Physics)

これは相対論やってみようかな~ぐらいの気持ちで読むと間違いなく死ぬマニア向けの本です。(と指導教員や先輩にも言われた)

読むなら相当覚悟をもって挑むか、WaldのCausal Structureの参考にするといいと思います。(僕は完全に後者です)

あと数学は何で勉強しましたか?とも訊かれますが、僕はほとんどこれ一冊です。

Geometry, Topology and Physics, Second Edition (Graduate Student Series in Physics)

Geometry, Topology and Physics, Second Edition (Graduate Student Series in Physics)

これで足りないことが出てくればその都度他の数学書を漁ってみるって感じでした。

この本は相対論に限らず物理に応用する数学全般を扱っているので、物理系の誰にでもオススメできます。



と、これがだいたい僕の軌跡ですが、最初に言うのを忘れてました。

僕は一冊の本を最初から最後まで読み切る!!!

みたいなことをほとんどしたことがありません。

お行儀が悪いので、面白そうなトピックをつまみ食いしたり、つまらなそうなとこは飛ばしたりします。

勿論教科書というのは往々にして最初から順番に読んで理解していくように作られているものなので、よくあれここわからん、前に戻らなきゃ・・・てのを何回も繰り返したりします。

不真面目な僕には1から順番にコツコツやっていくという方法はゼミで輪読でもしない限りできません。つまり、行き当たりばったりです笑。

多分勉強法としては愚策なのでできる人はコツコツやった方がいいと思います。


あと教科書というより論文を結構読んでいました。

最新の研究のものではなく、当時のものです。

古いものになるとarXivにないことが多いので、そこは大学の研究室に感謝です。

上で紹介した本に詳しく載っていない内容としてPetrov分類やNewman Penrose技法等があり、この辺りが詳しく載っている本としては

The Mathematical Theory of Black Holes (Oxford Classic Texts in the Physical Sciences)

The Mathematical Theory of Black Holes (Oxford Classic Texts in the Physical Sciences)

があります。

あのチャンドラセカールの書いた本で、タイトル通りブラックホールに関しての内容のほとんどをカバーしています。

そしてめまいがするほど計算が詳しい!こんなに計算が詳しい本は世界でもこの本だけじゃないでしょうか。

あとは今だとSGCシリーズという日本語の院生向けの参考書シリーズも出ているので、それを結構読んでいることも多いです。



あ、ちなみにこの道の人が必ず通ると言われるランダウの場古典ですが、参考程度にしか読んだことがありません笑

極限点、極限曲線

前回大域的双曲性についての定理をひとつ証明しようかと思いますと言いましたが、その前に特異点定理の証明で後々必要となる極限点と極限曲線について書こうと思います。

今までもそうですが、今回は証明がかなり数学チックなので辛いです(僕自身が)

[定義:極限点、極限曲線]

因果的曲線からなる無限列$\{\lambda_{n}\}$を考える。

ある時空点$p$の任意の近傍が無限個の$\{\lambda_{n}\}$と交わるとき、点$p$を$\{\lambda_{n}\}$の極限点(limit point)という。

ある因果曲線$\lambda$が$\{\lambda_{n}\}$の極限曲線(limit curve)であるとは、$\{\lambda_{n}\}$の部分列$\{\lambda'_{n}\}$で$\lambda$に収束するようなものが存在することをいう。


極限曲線について、次の補題が成り立ちます。

[補題]

$ U \subset M $を開集合、$\{\lambda_{n}\}$を$U$内の未来向き延長不可能な因果的曲線の無限列とする。

このとき$p \in U$が$\{\lambda_{n}\}$の極限点ならば、$U$内に点$p$を通る未来向きに延長不可能な因果的曲線$\lambda$が存在し、それは$\{\lambda_{n}\}$の極限曲線である。

ここでの証明はHawking&Ellisに従います。(図も)

[証明]

${\mathcal u}_{1}$を$p$の凸正規座標近傍とし、$b > 0$に対し、${\mathcal B}(p,b)$を$p$を中心とする半径$b$の開球、$\lambda(1,0)_{n}$を$\{\lambda_{n}\} \cap {\mathcal u_{1}}$の部分列で$p$に収束するものとする。 $\partial {\mathcal B}(p,b)$はコンパクトであるから、$\lambda(1,0)_{n}$の極限点を含む。

そのような極限点$y$は$J^{-}(p,{\mathcal u_{1}})$か$J^{+}(p,{\mathcal u_{1}})$のどちらかにある。そうでなければ${\mathcal u_{1}}$内に、$y$の近傍${\mathcal V_{1}}$と$p$の近傍${\mathcal V_{2}}$間の因果的曲線が存在しないので矛盾する。

そこでこのような極限点のひとつとして$x_{11}\in J^{+}(p,{\mathcal u_{1}})\cap \partial{\mathcal B}(p,b)$を選び、$\lambda(1,1)_{n}$を$\lambda(1,0)_{n}$の部分列で$x_{11}$を極限点としてもつものとする。$x_{11}$は極限曲線$\lambda$の点になっている

$x_{ij}\in J^{+}(p,{\mathcal u_{1}})\cap \partial {\mathcal B}(p,i^{-1}jb)$を\begin{cases} \lambda(i-1,i-1)_{n} & (j=0), \\ \lambda(i,j-1)_{n} & (i\geq j \geq 1)\end{cases}の極限点として定義し、$\lambda(i,j)_{n}$を上の部分列の部分列(ややこしい)で$x_{ij}$を極限点にもつものとして定義する。

(これは区間$[0,b]$をより小さい部分に分けていって、対応する$p$の球上での極限曲線上の点を得ている)

$x_{ij}$のどの2点も因果的に分けられるので、全ての$x_{ij}\ (j \geq i)$の和集合の閉包は$p=x_{i0}$から$x_{11}=x_{ii}$までの因果的曲線$\lambda$を与える。

後は$\{\lambda_{n}\}$の部分列$\{\lambda'_{n}\}$で各$q \in \{\lambda_{n}\}, \{\lambda'_{n}\}$に対し$q$に収束するものを構成すればよい。

$\{\lambda'_{n}\}$として、${\mathcal B(x_{mj},m^{-1}b)}\ \ (0 \leq j \leq m)$それぞれと交わる部分列$\lambda(m,m)_{n}$のメンバーをひとつ選ぶと、$\lambda$は$p$から$x_{11}$への$\{\lambda_{n}\}$の極限曲線となる。

${\mathcal u_{2}}$を$x_{11}$の凸正規座標近傍として同様に$\{\lambda'_{n}\}$を構築でき、続けて$\lambda$を無限まで拡張できる。

f:id:anilineblack19930812:20180303181605j:plain

[証明終了]


実際に題意を満たすものを具体的に構成するというのは数学の証明でよくやると思いますが、これを自分で思いつける気は全くしません・・・

次回はちょっと脱線してKerr解における因果律について書きたいかと思います。(なんかこの手の内容ばっかりだと疲れるので)

大域的双曲性(global hyperbolicity)

前回の続きで今回は相対論の概念の中でも特に重要な大域的双曲性について書きたいと思います。
ただその為に新たに導入しなければならない言葉が滅茶苦茶多いので、今回も定義ばかりでつまらないかもしれません。

まず依存領域(domain of dependence)を定義します。

[定義:未来の依存領域(domain of dependence)]
$S$を非時間的な閉集合とする。点$ p \in M $を通る全ての過去向きの延長不可能な因果的曲線が$S$と交わるような点$p$全体の集合を、$S$に対する未来の依存領域と呼び、$D^{+}(S)$で表す。(未来のCauchy発展(future Cauchy development)とも言われる)
過去の依存領域も同様に定義する。

ここでさらに延長不可能という概念が新しく出てくるので、それを定義するために曲線に対し端点または終点(endpoint)を定義します。

[定義:因果的曲線の端点(endpoint)]
点$ p \in M $が未来向きの連続な因果的曲線$\gamma : \mathbb{R} \ni \lambda \mapsto M $の端点であるとは、$p$の任意の開近傍$O$に対し、適当な$ \lambda_{0} $を選べば全ての$\lambda >\lambda_{0}$に対して$\gamma(\lambda)$が$O$に含まれることをいう。

端点を持たない未来向きの連続な因果的曲線を、未来向きに延長不可能な因果的曲線(future-directed inextendible curve)といい、延長不可能な因果的曲線は完備でないことが特異点に向かう因果的曲線の特徴です。
過去向きに対しても同様に定義します。
延長不可能の言葉からは少し解りにくいですが、曲線が時空内に端点を持つならば、その点から新しく曲線を繋いでいけるので延長可能と言われます。

※依存領域について
・定義から$S \subset D^{+}(S) \subset J^{+}(S)$. $D^{+}(S) \cap I^{-}(S) = \emptyset$ 
全依存領域を、$D(S) := D^{+}(S)\cup D^{-}(S)$で定義する。

依存領域を用いてさらにCauchy地平面(Cauchy horizon)というものを定義します。(そろそろ定義ばっかりで飽きてきますよね)

[定義:未来のCauchy地平面(future Cauchy horizon)]
$H^{+}(S) := \overline{D^{+}(S)} \backslash I^{-}(D^{+}(S))$
過去のCauchy地平面も同様。

非時間的超曲面$S$の端点edge$(S)$を次で定義します。
$ q\in \overline{S}$の任意の近傍$U$に対して、$ p \in I^{-}(q,U), r \in I^{+}(r,U) $であるような2点を結びつけることができ、かつ$S$とは交点を持たないような時間的曲線が$U$に含まれているとき、そのような点$q$全体の集合を$S$の端点といい、edge$(S)$で表す。

ここで特異点定理の証明に必要な重要な命題を紹介しておきます。

[命題]
$S$を非時間的閉集合とし、$S$に対するCauchy地平面$H^{+}(S)$が存在するとする。
このとき$H^{+}(S)$上の任意の点を通る光的測地線は$H^{+}(S)$から外れることなく過去向きに延長不可能であるか、終点を持つとすればedge$(S)$に持つ。

この命題の証明はまあまあ長い上に、またまた新たな概念を導入しないといけない為、今後機会があればそのときに証明したいと思います。

さあここまで行ってようやっと大域的双曲性の話です。

大域的双曲性の定義自体は前回にしましたが、これから紹介する同値な定義の方がよく見る気がします。

まず端点を持たない空間的かつ非因果的(要はその上の異なる2点を結ぶ因果的曲線が存在しない)超曲面$ Σ \subset M $を$ M $の準Cauchy面(partial Cauchy Surface)といいます。
このとき、

[定義:大域的双曲性(global hyperbolicity)]
$ M $が大域的双曲的である
: $\iff$ $ M $が強い因果律条件を満たし、
$\forall p,q \in M, J^{+}(p) \cap J^{-}(q) \subset M $がコンパクト
$\iff$ $ M $の準Cauhcy面$Σ$で、$ D(Σ)=M $となるものが存在する。
このとき$Σ$を$ M $のCauchy面という。

1段目のが前回の定義で、2段目が準Cauchy面による定義です。
定義から全依存領域$ D(Σ) $は大域的双曲です。

ここまで数学の話ばっかりでしたが物理的な意味も解説しておきます。
*依存領域とは、ある初期面$ S $をとったとき、その面で与えられた情報から時間発展を決定できる領域を表します。
*Cauchy地平面はそのような領域の境界にあたるので、その領域を超えた部分に関しては初期面の情報からだけから決定できません。
*大域的双曲性は、考えてる時空の時間発展がある初期面の情報だけから完全に決定できるという条件、すなわち初期値問題(Cauchy問題)を良設定とする条件になっています。
ニュートン力学だと当たり前かのように思うかもしれませんが、一般相対論では大域的双曲性をもたない解は普通に存在していて(例えばAdS時空)、そのような時空では初期条件から運動を決定することが必ずしもできるわけではなく、奇妙なことが起こります。

大域的双曲性に関する次の定理

[定理]
$ M $が大域的双曲であれば、$ \forall p,q \in M $に対し
$C(p,q) := ${p,qを結ぶ未来向き因果的曲線全体の集合}
はコンパクト集合

と、
・因果的曲線の弧長が$C(p,q)$上で上半連続な関数となる。
・コンパクト空間の上半連続関数には最大値が存在する。
ということを使うと次のことが言えます。

[定理]
$ M $を大域的双曲な時空とすると、任意の2点$ p,q \in M , q \in J^{+}(p)$に対し、$p,q$を結ぶ弧長が最長となる因果的曲線$\gamma$が必ず存在し、それは因果的測地線である。

AdS時空は大域的双曲性が破れた時空の例で、因果的関係にある2点間の距離の最大値を与える測地線が存在しない、あるいは最大値そのものが存在しないということが起こり得ます。

次回はCauchy地平面に関する定理をひとつ証明できればいいかなと思ってます。(この辺りの内容は言葉だけだと感覚が掴みにくいのでほんとは図とか載せたいので気が向いたら書きます)