可付番集合
[0~1)の間の数値が可付番集合だとすると
と番号を付けることができる。
ここで、下のような実数yを考える
すると、yは[0~1)の間にある実数なので、y = xi になるようなiが存在するはずだが、yn ≠ xnn なので一致するxが存在することはなく、矛盾する。
よって非可付番集合である
カントールの対角線論法を用いた非可付番集合であることの簡単な証明。
よーく考えればわかることでした
誰かTwitter
やってないかな。
あれ、面白そうなんだよね。
Twitter(トゥイッター)って言うのは、自分の呟きを書くようなSNSです。
他の人を登録したりすると、その人の呟きも聞けます
その呟きに答えるもよし、つぶやき続けるのもよし、ゆる~いサービスなのですよ
大学の友達はやってないだろうからなぁ~
以下Twitterについてのリンク
冗長
入力されたアルファベット(a-z, A-Z)の個数を数えるプログラムを作りなさい
【解答】
#include <iostream> using namespace std; int main() { char c; int upp[26] = {}; int low[26] = {}; while (cin.get(c)) { switch (c) { case 'A': upp[0]++; break; case 'a': low[0]++; break; case 'B': upp[1]++; break; case 'b': low[1]++; break; case 'C': upp[2]++; break; case 'c': low[2]++; break; //以下同じ様な記述がずっと続く } } cout << "A : " << upp[0] << " a : " << low[0] << '\n'; cout << "B : " << upp[1] << " b : " << low[1] << '\n'; cout << "C : " << upp[2] << " c : " << low[2] << '\n'; //以下同じような記述がずっと続く return 0; }
from朝の図書館
C++第3版を読みこなすのは骨が折れるので、もっと簡単な本からやってみようと思ったんですが・・・・
上のような解答で面食らった
確かにAの次がBになってる保証はないですが、ほとんどAに1足せばBなんだから別にそう書いちゃえばいいじゃないの。
アルファベットの頻度を入れるテーブルとか作っちゃってさ、ちょっとメモリはいるけど違いは300バイトくらいでしょ?
#include <iostream> using namespace std; int main() { char ch; int table[128] ={}; while (cin.get(ch)) table[ch]++; char upp, low; for (upp='A',low='a';upp<='Z';upp++, low++) { cout << upp << " : " << table[upp] << " "; cout << low << " : " << table[low] << endl; } return 0; }
元々60行程ありましたが、20行弱になってスッキリしました。
10時になったら波の本取りに行かなくちゃ
オートマトン
自分用オートマトンメモ
決定性有限オートマトン
↓ 拡張
非決定性有限オートマトン
↓ 拡張
ε遷移付非決定性有限オートマトン
拡張しても、識別能力(受理する言語)は一緒←ポイント
L(dfa) = L(nfa) = L(ε-nfa)
有限オートマトンは
M = < Q , Σ , δ , q0 , F >
の5字組みであらわす事ができる
Q: 状態の有限集合
Σ: 入力記号の有限集合
δ: 動作関数( δ : Q × Σ → Q )
q0: 初期状態
F: 受理状態の有限集合
有限オートマトンは正規表現を受理する
(ε-)nfa Mn から dfa Mn を構成するアルゴリズムがちゃんとある
最簡形→同じ言語を受理する決定性有限オートマトンで一番簡単なやつ
次の授業は、スタックをもつプッシュダウンオートマトンについて
理系文系
