fc2ブログ

情報集合論(仮名) 無限の構造を考える

 この記事は自分用のメモです。情報集合論(仮名) 無限の正体と新しい濃度から引き続き考察します。前の覚書をもとに無限の構造を考えると、F#で以下のように表現できます。

//無限
type Infinity( name, seed, next ) =
  member this.Name with get() = name
  member this.Seed with get() = seed
  member this.Next with get() = next
  override this.ToString() =
    this.Name + "の" +
    "開始値は" + this.Seed.ToString() + 
    "、次の数は" + this.Next( this.Seed ).ToString()  

[<EntryPoint>]
let main argv = 
    //数
    let seed = 0
    let next x = x + 1
    let number = Infinity( "数", seed, next )
    printfn "%s" <| number.ToString()
    //自然数
    let seedN = next 0
    let n = Infinity( "自然数", seedN, next )
    printfn "%s" <| n.ToString()
    //終了
    0

無限構造には無限に要素を生成するための根源(種)と、要素を生成する関数が必要となります。無限構造はこの2つを分析すればその性質がわかります。
 さて、既存の濃度の定義「1対1で対応」は何がいけなかったのでしょうか?この点について考察しておかないと同じ罠にはまるおそれがあります。その結果に違和感がありますが、定義そのものは至極まっとうです。私が思うに、自然数目線だけで対応を考えていた点が不便さの元だと思います。自然数から整数を見ると1対1対応にできます。しかしながら、整数から自然数を見た場合、全射ですが単車ではありません。すなわち、負数と正数の2つが自然数の1つの要素に対応付けられてしまいます。これにより、情報の喪失が発生します。数学では問題がないのかもしれませんが、情報技術的には大問題です。
 次に偶数と自然数の関係について考察します。数学の濃度の定義によると、これもまた同じ濃度となりますが、同種の問題が生じます。自然数から見た場合、半分の要素に対応がありません。無理やり対応付けすることができますが、そうすると全単射でなくなります。この件もまた情報の喪失が生じるのです。この件に関する教訓は、親集合からの対応も考えようだと思います。
 これらの問題で厄介なのは、有限区間内では変換関数で誤魔化せることです。誤魔化せるならば同じ濃度で問題がないと考える人も居るでしょうが、変換関数を定義できるのと、その情報の性質そのものを同一視すると問題です。何故ならば、変換関数を通すという1プロセスが余分に付加されているからです。1プロセス余分に必要な情報と、余分なプロセスがない情報を同一視するのは危険です。また、変換された時点でその情報の変質が変わってしまいます。性質が変わってしまった情報を分析すると間違いが生じます。
 変換関数はそれ単独で分析するのに値するものです。決して無限構造内に埋もれさせてはなりません。何故ならば、変換関数はいくらでも考えられるからです。その中から1つを、無限構造の一部として特別視するのは無理があります。変換関数を独立して考える方が有意義な理論体系となります。
スポンサーサイト



テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

インドリ

Author:インドリ
みなさん、はじめまして、
コンニチハ。

ボクは、無限の夢(infinity dream)を持つネタ好きな虹色の鳥インドリ(in dre)です。
色々な情報処理技術を啄ばむから楽しみにしてね。

http://twitter.com/indori
は別人による嫌がらせ行為です。
私とは関係ないので注意して下さい。
次はなりすましブログなどをするかもしれませんが、ここ以外でブログをするつもりがないので、ここ以外にインドリのブログがあったとしても無視してください。


何度言っても分からない人がいるので、ここにコメント欄へ書き込むときの注意事項を書きます。


一、社会人としてのマナーをわきまえましょう。
一、妄想に基づく書き込みを止めてください。
一、暴言の類は書かないで下さい。
一、某誹謗中傷サイトの書き込みは彼らの妄想に基づく書き込みですから無視して、ここへ書き込まないで下さい。
一、コメント書く前に他のコメントよく読んでから行って下さい。
一、言いがかかり等の行為を禁止します。
一、その他常識的に考えて迷惑なコメントはしないで下さい。


以上のルールを守れない人のコメントは削除します。



利用上の注意
ここに紹介してある文章およびプログラムコードは正確であるように心がけておりますが、内容を保証するものではありません。当サイトの内容によって生じた損害については、一切の責任を負いませんので御了承ください。


執筆したCodeZineの記事


【VB.NETで仮想CPUを作ろう】

  1. VB.NETで仮想CPUを作ろう
  2. レジスタの実装
  3. 仮想CPUのGUI化
  4. テストドライバの改良
  5. CPUの基礎動作の実装
  6. MOV命令の実装
  7. ADD命令実装
  8. SUB命令実装
  9. INC命令&DEC命令の実装と命令長
  10. MLU命令の実装とModR/Mについて
  11. DIV命令の実装とイベント設計について
  12. 機械語駆動式 関数電卓を作ろう!
  13. 機械語駆動式 関数電卓を作ろう! 解答編(前半)
  14. 機械語駆動式 関数電卓を作ろう! 解答編(後半)


【仮想ネットワーク実装でTCP/IPを学ぼう】
  1. TCP/IPの基礎と勘所
  2. ネットワークアクセス層の勘所
  3. インターネット層の勘所
  4. トランスポート層の勘所
  5. アプリケーション層の勘所
  6. セキュリティの基礎と仮想ネットワークの仕様
  7. GDI+と独自プロトコルの定義



【並列化】
インテル Parallel Studioを使って並列化プログラミングを試してみた
並列プログラミングの効率的なデバッグを実現する「Parallel Inspector」


【TBBシリーズ】
  1. インテル スレッディング・ビルディング・ブロックの概要
  2. インテルTBBから学ぶループの並列化
  3. スレッドセーフとインテルTBBのコンテナ
  4. インテルTBBのスレッドクラス


【OpenMPシリーズ】
  1. OpenMPの基礎構文
  2. OpenMPの実行時ライブラリと並列ループ
  3. OpenMPのメモリモデルとfork- joinモデル

最近の記事
最近のコメント
月別アーカイブ
カテゴリ
Ada (9)
COBOL (5)
C (9)
C++ (11)
C# (370)
D (25)
Java (8)
Perl (1)
Ruby (14)
PHP (2)
Boo (2)
Cobra (2)
LISP (6)
F# (33)
HTML (0)
XHTML (0)
CSS (0)
XML (0)
XSLT (0)
Scala (4)
WPF (0)
WF (2)
WCF (0)
LINQ (4)
MONO (5)
Linux (0)
MySQL (0)
ブログ内検索
リンク
最近のトラックバック
RSSフィード
ブロとも申請フォーム

この人とブロともになる

QRコード
FC2カウンター