集合の基数(濃度)について

直前のエントリで「写像と単射と全射と全単射について - IIJIMASの日記写像と特別な写像について説明しました。
特に、全単射(1対1対応)の存在は強力な性質で、AとBの間に1つでも全単射が存在すると有限集合の場合要素数が同じということがわかってしまいます。
無限集合で要素数を考えると「無限大」しかなさそうですが、自然数は無限でも順番に数えてゆくことができますが、有理数や実数はどんな2数の間にも数があり順番に数えることができなそうです、実は無限にも大小関係がありそうです。
全単射を利用して基数(濃度)という個数を拡張した概念を定義します。
ある集合Aとある集合Bの間に全単射が存在するときに、Aの基数とBの基数(濃度)は等しいと定義します。有限集合の場合は個数とします。集合Aに対する基数を#Aで表します。
特に、自然数全体の集合の基数を\aleph_0アレフ・ゼロ)という記号で表します。自然数全体の集合 {1, 2, 3, ・・・} は 記号\mathbb{N}で表しますので#\mathbb{N}=\aleph_0です。
無限集合では面白いことに、部分集合が全体と同じ濃度を持っていても不思議ではありません。
事実、自然数全体と正の偶数全体には全単射(n → 2n)があります。明らかに正の偶数全体は自然数の部分集合です。しかし、基数は同じなのです。
さらに驚いたことに整数全体\mathbb{Z}={・・・, -2, -1, 0, 1, 2, ・・・}も自然数\mathbb{N}={1, 2, 3, ・・・}と同じ基数なのです。たとえば、写像fを\mathbb{Z}の要素zについて、z<=0の時は f(z) = 2|z| ∈\mathbb{N} 、z>0の時はf(z) = 2z - 1 ∈\mathbb{N}と定義すれば、全単射になります。
面白いことに、自然数の2つ組(n, m)の全体\mathbb{N}^2を考えても、\mathbb{N}と基数は変わりません。たとえば、写像f: \mathbb{N}^2 \large\right \mathbb{N}f(n,m) = \frac{(n + m - 1)(n + m - 2)}{2}+mと定めます。逆写像g: \mathbb{N} \large\right \mathbb{N}^2は少々複雑ですが p = \lfloor \frac{1+\sqrt{1+8(t-1)}}{2} \rfloor(ただし、 \lfloor x \rfloorxを超えない最大の整数を表す)とおいて、g(t) = (\frac{p (p+1)}{2}+1-t, t - \frac{p (p-1)}{2})と定義できて、f, gは全単射(1対1対応)となることがわかります。
\mathbb{N}^2\mathbb{N}の基数が等しいことがわかりましたので、\mathbb{N}^3\mathbb{N}^2と基数が等しい(たとえば、\mathbb{N}^3の最初の2成分を、\mathbb{N}^2最初の成分に対応させる)、結局\mathbb{N}の基数\aleph_0と等しいことがわかります。一般に\mathbb{N}^m(mは任意の自然数)も基数は\aleph_0であることがわかります。
またすべての有理数は分数つまり整数の比で表せるのですから、有理数全体は整数の2つ組(n, m)の全体と対応させることができます。単純に(n,m)とn/mを対応させてしまうと、同じ分数を表す、(n,m)が複数あることになってしまいますが、一度出てきたもの(既約分数でないもの)は飛ばして、対応させれば、自然数と1対1対応であることがわかります。

写像と単射と全射と全単射について

以前にも「集合と基数の説明 - IIJIMASの日記」 に書いたのですが、再び説明を考えてみました。
数学の集合論写像というのは、ある集合Aの要素aに対して、集合Bの要素bを1つ定める対応とのことです。特に写像をfで表して、bのことをfによるaのといいf(a)と書きます。また、「aはfでbに写される」などといいます。とくにAが有限集合の場合、fを表で表せます。逆に表があるとfが定義できます。
たとえば、好きな果物を答えてもらうアンケートした結果の表を考えます。

アンケート回答者 好きな果物
xさん バナナ
yさん リンゴ
zさん みかん

と定めると、「好きな果物」は「アンケート回答者」から「果物集合B」への写像です。
Aのすべての要素をfで写した、Bの要素をすべて集めてできた集合をfによるAの像といいf(A)であらわします。
写像のうちで特殊な性質をもつものに名前がついています。

単射

写像fが単射であるとは、どんな異なる要素x,yのfによる像も同一( f(x) = f(y) )にならないということです。
以下の表で定義される写像単射ではありません

アンケート回答者 好きな果物
xさん バナナ
yさん リンゴ
zさん リンゴ

異なる要素yさん、zさんの「好きな果物」の像は同一の「リンゴ」になってしまうからです。このようなことが起こらない写像単射と呼びます。この例で写像単射になるのは異なる回答者が同じ果物を好きだと回答しない場合です。1つでもAからBへの単射がある時、Aの各要素に対応するBの重複しない要素があるのだから、Aの要素数はBの要素数以下です。

全射

写像fが全射であるとは、どんなBの要素bに対しても、Aの要素aが存在してf(a)=bとなることです。果物の選択肢の集合Bにじつはブドウもあった場合は、以下の表で定義される写像全射ではありません

アンケート回答者 好きな果物
xさん バナナ
yさん リンゴ
zさん みかん

ブドウを好きと答えてくれる回答者がいないからです。このようなことが起こらない写像全射と呼びます。この例で写像全射になるのは、すべての選択肢にある果物を好きだという、回答者が少なくとも一人いる場合です。1つでもAからBへの全射がある時、Bの要素に対して、Aの要素が1つ以上存在するので、Aの要素数はBの要素数以上になります。

全単射

さらに、写像単射かつ全射のとき、全単射または1対1対応といいます。
回答者A={w, x, y, z}
選択肢の果物の集合B={ブドウ, バナナ, リンゴ, みかん}

アンケート回答者 好きな果物
wさん ブドウ
xさん バナナ
yさん リンゴ
zさん みかん

AからBの写像fが全単射の時は表の左右を入れ替えることによってBからAの写像gが定義できます。gはfの逆写像といいます。この写像全単射になります。

選択肢にある果物 好きと答えた回答者
ブドウ wさん
バナナ xさん
リンゴ yさん
みかん zさん

1つでもAからBへの全単射がある時、AとBの要素数は同数となります。

ツイッターで、3年連続して、11月11日11時11分11秒にポストできた!

3年連続して、11月11日11時11分11秒にポストできました!今年は、モバツイだったので秒までは自信なかったんですが・・・帰宅して確認したら11時11分11秒にポストできてました!(だから何?

3年連続して、11月11日11時11分11秒にポストできたぞ!!!> 2008年: http://bit.ly/IIJIMAS081111 2009年: http://bit.ly/IIJIMAS091111 2010年: http://bit.ly/IIJIMAS101111less than a minute ago via IIJIMAS Twit

2008年

¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁¹¹₁₁ ...less than a minute ago via web

2009年

2010年

Windows版のiTunesで現在聴いてる曲の情報を取得する(BAT編)

Windows版のiTunesで現在聴いてる曲の情報を取得する(C#編)」、「同(Javascript編)」、「同(VBS編)
の続き。
BATファイルでもできないかなと、検索してたら・・・面白いページが!
[Link]「Studio ODIN - blog風小ネタ集 > MS-DOSのバッチファイルに、WSH(JScript)のコードを記述する
こういう小ネタ大好きです。ブログの著者さんありがとうございます。
さっそく、この方法を勝手に使用させてもらいます。BATファイルで・・・
新規テキストファイルに以下のコードを記述してGetiTunesCurrentMusic.batという名前で保存。

@if (1==1) /*
@ECHO OFF
CScript //Nologo //E:JScript "%~f0" %*
goto :EOF
rem */
@end
var iTunesApp = new ActiveXObject("iTunes.Application");
var track  = iTunesApp.CurrentTrack;
var name = track.Name;
var album = track.Album;
var artist = track.Artist;
var text = "[聴いてる♪]「"+name+" - "+album+"by "+artist;
WScript.Echo(text);

で、実行します。

C:\>GetiTunesCurrentMusic.bat
[聴いてる♪]「下水道 - Romancing Sa・Ga ORIGINAL SOUND VERSIONby 伊藤賢治

おお、BATファイル(?)でもできた♪

昨日(2010-11-07)の風景

近所の多摩川の風景です。iPod touchを買って出番があまりなくなっていた携帯電話P905iで撮影しました。3年前の携帯にしてはよく撮れたと思います。

電車の橋

電車と川

日没

Windows版のiTunesで現在聴いてる曲の情報を取得する(VBS編)

Windows版のiTunesで現在聴いてる曲の情報を取得する(Javascript編)」、「Windows版のiTunesで現在聴いてる曲の情報を取得する(C#編) - IIJIMASの日記」の続きエントリ…(思いつき)

これは、VBSのInputBox関数の間違った使い方だが・・・
以下を新規テキストに貼り付けて、保存名前をCurrentiTunesMusic.vbsとして、ダブルクリックすれば・・・
CurrentiTunesMusic.vbs

Set iTunesApp = CreateObject("iTunes.Application")
Set track  = iTunesApp.CurrentTrack
text = "[聴いてる♪]" & "「" & track.Name & " - " & track.Album+"」 by " & track.Artist
r = InputBox("","iTunesで現在聴いてる曲",text)
Set iTunesApp = Nothing

[Ctrl]+[C]でコピーすれば、同じだ…(笑)