数学的な「区間」の話を分かりやすく書いてみる

数学用語に「区間」ってのがある。wikipediaによる解説はこちら

ちなみに、wikipediaって数学系の事しらべると、もう意味わかんないよね、正直w 自分も数学の下地がある人種ではないので、正直数学系の話第だけはwikipediaをアテにできない。まぁ、誰でも分かるように書いてみよう。

わかりやすい「区間

まぁ、簡単に言えば「5〜8まで」とか、そういう範囲をあらわす概念。で、6はこの区間に含まれるよね。7.5とかもこの区間に含まれる。10は含まれないし、-2も含まれない。じゃあ、5は? 8は?

となった時に出てくるのが「開区間」とか「閉区間」ってやつ。境界値を含むのが閉区間で、含まないのが開区間。半開区間ってのもあって、片側だけ開いてて、もう片側は閉じてる奴。

さて、そろそろ言葉で表しづらくなってきたら記号の出番だ。記号は(自分を含め)数学アレルギーには苦手なものだけど、今回ばかりは簡単。5〜8までの開区間(境界含まない奴)は「(5, 8)」って書く。で、5〜8までの閉区間(境界含む奴)は「[5, 8]」って書く。丸括弧より角括弧の方が、広い範囲を括り取っているように感じるだろうから、直感的でもあると思う。

んじゃ半開区間はどうやって書くのか。まぁ大方の予想通り「[5, 8)」とか「(5, 8]」とか書く。括弧が一致してなくて一般的には気持ち悪いところだけど、そういうモンだと割り切り重要。

ちなみに、開いてるとか閉じてるとか、言葉が覚えにくい。含む方はどっちだっけ? なんていつも混乱する。そんな時は図を頭に浮かべよう(下図)。数直線上にこんな感じで範囲を明示すると考える。塗りつぶしたのは境界を含むって意味。白抜きは境界を含まないって意味。塗りつぶした方は閉じてて、白抜きは開いてる。穴がね。覚えられただろうか。

で、この境界値のことを「限界」って言うっぽいのだけど。限界は両方とも必要なのかっていうと、そうでもない。片方しか限界がないってのもあり得る。つまり「5未満」という区間。こいつは「(-∞, 5)」って書くことにしよう。で、「8以上」は「[8, +∞)」ですね。

あと特殊な区間として「空区間」と「単一要素区間」と「全区間*1ってのを考えておこう。

  • 区間とは「どんな要素も含まない区間」つまり例えば (0, 0) みたいな区間。数学的には「{}」とか「φ」と書くらしい。
  • 単一要素区間とは「含む要素が1つだけの区間」つまり例えば [10, 10) とか。まぁ [10, 10] でもよいけど。数学的には「{10}」と書くらしい。
  • 区間は「何でもかんでも含む区間」つまり「(-∞, +∞)」だ。

区間って数値だけ?

今までは区間の要素には数値だけを考えてきた。だけど、文字列の daisuke から miyamoto まで、とかそういった要素にも使えるんじゃないか。文字列をascii順にソートした状態で考える。 (daisuke, miyamoto] という区間だったら、katoは含まれるけどyamamotoは含まれない。下限は開いてるからdaisukeは含まれず、上限は閉じてるからmiyamotoは含まれる。だけどmiyashiroは含まれなかったり。

ほら、数値以外にも適用できた。区間ってのは、数値・文字列以外、どんなものに適用できるんだろう? と一般化して考えてみると、どうやらJavaにおける Comparable なものに適用できるように思える。Comparableってのは要素をソートできるってことだから、順番に並べてその範囲を決められる。

wikipediaに書いてある「任意の全順序集合に対しても区間を考えることができる」って奴ですね。

区間って何に使うの?

とりあえず自分が今向かい合ってるのは「2010/09/20〜2010/11/20」みたいな区間。日付を要素とする区間だ。一般的にこのように表記したら、9/20と11/20はそれぞれこの区間に含むだろうか? つまり開いているか閉じているか。

もっと具体例を考える。「XXX祭り開催期間 8/3〜8/5」。3日にも5日にも祭りは開催されていそうだから、どうやら日付の区間ってのは閉区間のようです。

次に「12:00〜13:00」みたいな区間は、開いているか閉じているか? これも具体例で「会議の予定は14:00〜15:00です」。これについて、「15:00〜15:30のデスクワークの予定」はこの会議とバッティングしているとは見なされない。そして「15:00ちょうどには何をしているか?」と考えると、デスクワークの方である気がする。どうやら時間精度になると、開始時間は閉じていて終了時間が開いている半開区間と解釈するのが一般的感覚らしい。

まぁ、こんなのも「区間」なんですね。同じ「時間に対する区間」であってもデフォルトの開閉が違うってのが、また面白いところ。人間の感覚が醸成してきた文化なのでしょう。

じゃーさ、区間ってソートできるの?

まぁ、出来るのか出来ないのかっつったら出来るでしょう。但し、ソートのルールが色々あるっぽい。何しろ区間ってのは「下側限界」と「上側限界」の2つの値で成立するものだ。さらに開閉とか無限とか単一要素とか全とか空とか、特殊な奴らがいっぱい居てさ。それぞれどういう順番に現れるように仕様を決めたらよいのだろう? と盛大に混乱している。(いまココ)

で、人間にとって一番自然に感じられる区間のソートルールってどんなモンなんだろうね? っていうのが本題。うほー、本題にたどり着くまでが長かったよ。脳ミソ疲れたから本題はまた明日。

*1:こいつらは適当な命名。数学的には違うと思う。