カントール集合と実数体の濃度が等しいことのベルンシュタインの定理による証明
ベルンシュタインの定理を使ってみたかったので.
カントール集合が実数体濃度と等しいことの証明
初めに$[0,1]$からカントール集合への単射を構成する.これは前エントリの内容と同じ.まず任意の$[0,1]$の元を2進展開する.ただし$0.0111..._{(2)}$のように桁に1が無限に続く元は$0.1_{(2)}$と処理する.これは構成する写像のwell-defined性のために重要である.2進展開された$[0,1]$の元の各桁を\(1\rightarrow2\),\(0\rightarrow0\)に移す.なお,$0.0111..._{(2)}=0.1_{(2)}$であるが$0.0222..._{(3)}=0.2_{(3)}$ではないので先ほど$0.0111..._{(2)}$のように桁に1が無限に続く元は$0.1_{(2)}$となるように処理したのであった.この写像は自明に[0,1]からカントール集合への単射となる.$|[0,1]|=|\mathbb{R}|$なので$\mathbb{R}$からカントール集合への単射も存在する.
次にカントール集合から$\mathbb{R}$への単射を作る.まずカントール集合の任意の元を三進展開する.その各桁を$\mathbb{R}$の$2_{(3)}\rightarrow1_{(2)}$,$0_{(3)}\rightarrow0_{(2)}$へと移すが,カントール集合の桁で2が無限に続く元はたとえば$0.0222..._{(3)}=0.1{(3)}$と処理し,例外処理としてその各桁を$\mathbb{R}$の$1_{(3)}\rightarrow1_{(2)}$,$0_{(3)}\rightarrow0_{(2)}$へと移したあとで元を1bit左シフトする.これはカントール集合から実数体への単射となる.
このような写像操作をする理由は,カントール集合で前述のように例えば$0.0222..._{(3)}=0.1{(3)}$と処理した場合,左シフトしない場合$\mathbb{R}$の$1_{(3)}\rightarrow1_{(2)}$,$0_{(3)}\rightarrow0_{(2)}$の写像操作により例えば$0.1_{(3)}$と$0.2_{(3)}$が同じ$\mathbb{R}$の元に飛ばされるため単射と出来ないためである.
実数体からカントール集合への単射,カントール集合から実数体への単射が構成できたためベルンシュタインの定理よりカントール集合と実数体の間には全単射写像がありよってカントール集合と実数体の濃度は等しく$ℵ$である.
カントール集合の濃度が実数体と等しいことの証明
カントール集合とはとある測度論的に特異な性質をもつ集合のことである.その性質については後述する.
まずはカントール集合をいかに構成するかということについて述べるべきであるが,それに関しては幸いなことにとうの昔から優秀な記事がネットにいくつも存在するのでまずはそちらをご一読いただきたい*1.なお,カントール集合の構成法により,例えば$0.1_{(3)}$を$0.0222..._{(3)}$と処理するとカントール集合とは任意の元を3進展開するとどの桁にも1が現れない集合と解釈できる.
カントール集合が実数体濃度と等しいことの証明
初めに$[0,1]$からカントール集合への単射を構成する.まず任意の$[0,1]$の元を2進展開する.ただし$0.0111..._{(2)}$のように桁に1が無限に続く元は$0.1_{(2)}$と処理する.これは構成する写像のwell-defined性のために重要である.2進展開された$[0,1]$の元の各桁を\(1\rightarrow2\),\(0\rightarrow0\)に移す.なお,$0.0111..._{(2)}=0.1_{(2)}$であるが$0.0222..._{(3)}=0.2_{(3)}$ではないので先ほど$0.0111..._{(2)}$のように桁に1が無限に続く元は$0.1_{(2)}$となるように処理したのであった.この写像は自明に[0,1]からカントール集合への単射となる.つまりカントール集合を$\mathcal{C}$とすると$|[0,1]|≤|\mathcal{C}|$となる.
ここで$\mathcal{C}⊂[0,1]$なので,$|\mathcal{C}|≤|[0,1]|$.よって、$|[0,1]|≤|\mathcal{C}|≤|[0,1]|$.$|[0,1]|=ℵ$であることから$|\mathcal{C}|=ℵ$であり,カントール集合の濃度は実数体と等しい。
カントール集合の性質
測度論において可算集合はルベーグ測度0であることはこのブログでも触れたが,逆は成り立たない.その代表的な例がこのカントール集合である.実際カントール集合はルベーグ測度0である*2.連続体濃度でありながらルベーグ測度0,そのような面白い集合がカントール集合なのであった.ほんとはベルンシュタインの定理を使って証明したかったがうまくカントール集合から$[0,1]$への単射を構成できなかった.
ルベーグ外測度がσ加法性を満たさないことの証明 feat. ヴィタリ集合
ルベーグ外測度がσ加法性を満たさないこと,ルベーグ外測度をΓ可測な集合の集合族に対してのみ適応したルベーグ測度はσ加法性を満たすことは測度論において重要な事実である.
本エントリではルベーグ外測度がσ加法性を満たさないことをヴィタリ集合という選択公理の仮定から構成される集合を用い証明する.証明は二段に分ける.一段はヴィタリ集合の構成,二段ではそのヴィタリ集合のルベーグ外測度を測り,σ加法性を満たさないことを示す.
ヴィタリ集合の構成
加法商群$\mathbb{R}/\mathbb{Q}$を考える.このとき,この商群は$\mathbb{Q}$分の差を持つ同値類を集めたものとなる.具体的には,
$\mathbb{R}/\mathbb{Q}=\{[0],...,[\sqrt{2}],...,[\sqrt{3}],...,[e],...,[π],...\}$のような形を取る.なおここで$\mathbb{R}/\mathbb{Q}$は非可算無限の濃度を持つことはカントールの対角線論法などから示せる.この商群は,合同を$mod\; \mathbb{Q}$で定めるとき,$x\in \mathbb{R}, y \in \mathbb{Q}, [x]_{mod\; \mathbb{Q}}=\{x \;|\; x〜y\}$の同値類があり,その集合の$\mathbb{R}/\mathbb{Q}$であるともいえる.
この$\mathbb{R}/\mathbb{Q}$から,選択公理を仮定し集合を作る.まず,$\mathbb{R}/\mathbb{Q}$からすべての値が$(0,1]$に収まるように代表系を作る.これをヴィタリ集合$V$とする.
ルベーグ外測度がσ加法性を満たさないことの証明
このヴィタリ集合から,ルベーグ外測度$\mu^*$がσ加法性を満たすと仮定すると矛盾になることを導く.まず,$q_1, q_2,...,q_k,... \in (-1, 1]\;in\;\mathbb{Q}, k=1,2,...\in\mathbb{N}$としたとき,$V$の定義により
$V_k=V+q_k$は非交差.また,定義より
$(0,1]\subset \underset{k}{\sqcup}V_k\subset (-1,2]$
ここで,ルベーグ外測度$\mu^*$のσ加法性の仮定より,
$μ^*((0,1])\leq\mu^*( \underset{k}{\sqcup}V_k)\leq\mu^*((-1,2])$
$1\leq\underset{k}{\sum}\mu^*(V_k)\leq3$
ここで,$1\leq\mu^*(V_k)$なら$\underset{k}{\sum}\mu^*(V_k)=\infty$になってしまうので不等式を満たせない.一方$\underset{k}{\sum}\mu^*(V_k)\leq3$を満たす為には
$\mu^*(V_k)=0, \therefore \underset{k}{\sum}\mu^*(V_k)=0$でなければならないが,これも$1\leq\underset{k}{\sum}\mu^*(V_k)$を満たせないので矛盾.よって,ルベーグ外測度はσ加法性を満たさないことが示された.
余題
これまでの議論で気づいた方もいるかもしれないが,実はヴィタリ集合のような測度論的に異常な集合はZFC公理系の中でしか作れなく,ZF+従属選択公理(DC)の元においてはあらゆる集合がσ加法族である,乱暴に言うとそのZF+DC下では全ての集合がルベーグ可測であることが示唆されている.興味のある方は調べてみてもいいかもしれない.
E∈R^Nの可算集合のルベーグ外測度が0なことの証明(伊藤ルベーグ積分§6問2の解答)
測度論の基礎となる考えである.ルベーグ測度はこれを$Γ$可測な集合のみに制限したものだが,ルベーグ測度でも同様の議論が成立するはず.
Q. $E⊂R^N$が可算ならそのルベーグ外測度$μ^*(E)$は0.
A. ここで$E=(a_1, b_1]×...×(a_ν, b_ν]×...×(a_N, b_N]$.
このときルベーグ外測度$μ^*(E)=\prod^N_{ν=1}(b_ν-a_ν)$.ここで,定義からこの
$μ^*(E)$は完全加法的.これから,$E=e_1+...+e_i+...$となるような${e_i}$というEの可算無限の分割を考えると,$e_i$が一点集合となるような分割が可能なことを示す.ここで,$\mathbb{N}$を考えたとき,$\mathbb{N}$は離散集合なので自明に一点集合への可算無限分割が可能.ここで$E$の定義から$\mathbb{N}\sim E$なので$\mathbb{N}$と$E$との間に全単射写像が構成できる.ゆえに,$E$も一点集合への可算無限分割が可能.よって,ルベーグ外測度の定義から,$μ^*(e_i)=\prod^N_{ν=1}(b_{νi}-a_{νi})=0$ (∵一点集合なので$b_{νi}-a_{νi}$が0).これがすべての$i$に対して言える.$μ^*$の劣モジュラ性より,$μ^*(\cup^\infty_{i=1}e_i)=μ^*(E)\leq \sum^\infty_{i=1}μ^*(e_i)=0$(∵$μ^*$が完全加法的なこと).
可算集合の可算総合併と非可算総合併の濃度
可算集合の可算合併とその濃度
$A_1, A_2, …, A_m,…$を可算な集合だとして、
$a_{m, n}∈A_{m}$を、添字の和のm+nで順序付ける、m+nが同じ場合の要素はmが大きい順序で並べる、同じ要素はまとめる、を任意のmで繰り返すと、たかだか可算な無限集合のたかだか可算な無限合併の要素を、可算で順序付けることが可能。ゆえに可算集合の高々可算な合併の濃度は離散濃度である。
可算集合の非加算合併の例
高々どんな濃度になるかは示せていない(示せるかそうでないかが分かったら追記する)。ただ濃度が$\aleph_0$と$\aleph_1$になる構成例は考えられたので例として出してみる。
可算集合の非加算合併の濃度が$\aleph_0$になる例
自然数の冪集合$P(\mathbb{N})$を考える。
この場合$|P(\mathbb{N})|=ℵ_1$だが、$A_m∈P(\mathbb{N})$について総合併を取る(非可算無限回の総和となることは$|P(\mathbb{N})|=\aleph_1$より明らか)と、$∪A_m=\mathbb{N}$となる。何故なら$\mathbb{N}∈P(\mathbb{N})$が$\mathbb{N}$の冪集合の中で最大の集合であるため。もちろんここで$|∪A_m|=ℵ_0$である。
ゆえに、高々可算無限な集合の非可算回の総合併の濃度が、$ℵ_0$になりうるという若干直観に反する結果を導くことができる。
可算集合の非加算合併の濃度が$\aleph_1$になる例
可算集合Aの、非可算な総合併の濃度が$ℵ_1$となる場合も構成可能である。$\mathbb{N}/r$、ただし$r∈\mathbb{R}, r>0$として、$\{\mathbb{N}/r\}$の集合族を考えると、"ほとんど"*1の$r_1≠r_2,$
$r_1, r_2∈\mathbb{R}$において$\mathbb{N}/r_1∩\mathbb{N}/r_2=\phi$と取れる。ここで、
$|∪\mathbb{N}/r|=ℵ_1$であることは自明。
何故なら、$\{1/r\}$と$\mathbb{R}$の間に全単射写像が構成可能なゆえに
(これも任意の$[a, b]$もしくは$(a, b)$ただし$a, b∈\mathbb{R}$、と$\mathbb{R}$との間に全単射写像が構成できる、という命題から自明)、
${∪\mathbb{N}/r}$と$\mathbb{R}$の間にも全単射写像が構成できるからである。これで可算集合の非加算合併の濃度が$\aleph_1$になる例を挙げた。
*1:$r_1'≠r_2'$、但し$r_1', r_2'∈\mathbb{Q}⊂\mathbb{R}$の場合$∃\mathbb{N}/r_1'∩\mathbb{N}/r_2'≠\phi$となり、$r_1''≠r_2''$、$r_1'', r_2''∈\mathbb{R}\backslash\mathbb{Q}⊂\mathbb{R}$の場合$\mathbb{N}/r_1''∩\mathbb{N}/r_2''=\phi$になるのだが、後者の場合を満たす$r''_1, r''_2$の組み合わせの確率が前者の場合を満たす$r'_1, r'_2$の組み合わせの確率と比べると自明にoverwhelmingなので(そもそも$∣\mathbb{Q}∣≪∣\mathbb{R}\backslash\mathbb{Q}∣$である)この表現とした。合ってるか自信はない。
DXMで神とアセンションした気になって戻れなくなりそうになった話
Android開発:内部ストレージにおいて画像を保存・読み込みする,また画像のUriをbitmapに変換する(Kotlinで)
内部ストレージを使う場合特にパーミッションはいらない(はず).ただしcontext(アクティビティなど)が必要.なお必要なimportはこんな感じ:
import android.content.Context
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.net.Uri
import android.os.ParcelFileDescriptor
import java.io.*
保存の場合以下のようになる.
fun saveImgsFromBmp(bmp:Bitmap, outputFileName:String, context: Context) {
try {
val byteArrOutputStream = ByteArrayOutputStream()
val fileOutputStream: FileOutputStream = context.openFileOutput(outputFileName,Context.MODE_PRIVATE)
bmp!!.compress(Bitmap.CompressFormat.JPEG, 100, byteArrOutputStream)
fileOutputStream.write(byteArrOutputStream.toByteArray())
fileOutputStream.close()
}
catch (e:Exception){
e.printStackTrace()
}
}
画像の読み込みの場合以下のようになる.
fun readImgsFromFileName(fileName:String, context: Context): Bitmap? {
try {
val bufferedInputStream = BufferedInputStream(context.openFileInput(fileName))
return BitmapFactory.decodeStream(bufferedInputStream)
}
catch (e:IOException){
e.printStackTrace()
return null
}
}
画像のUriからbitmapを生成する場合以下のようになる.これに関してはUriが内部ストレージのものじゃなくても動くんじゃないかと思う.
fun convertImgsUri2Bmp(activity:Context, uri: Uri): Bitmap? {
val bmp:Bitmap
val parcelFileDesc: ParcelFileDescriptor = activity.getContentResolver().openFileDescriptor(uri, "r")
val fDesc: FileDescriptor
fDesc = parcelFileDesc.getFileDescriptor()
bmp = BitmapFactory.decodeFileDescriptor(fDesc)
parcelFileDesc.close()
return bmp
}