凪瀬 Blog
Programming SHOT BAR

目次

Blog 利用状況
  • 投稿数 - 260
  • 記事 - 0
  • コメント - 46946
  • トラックバック - 192
ニュース
広告
  • Java開発者募集中
  • 経歴不問
  • 腕に自信のある方
  • 富山市内
  • (株)凪瀬アーキテクツ
アクセサリ
  • あわせて読みたい
凪瀬悠輝(なぎせ ゆうき)
  • Java技術者
  • お茶好き。カクテル好き。
  • 所属は(株)凪瀬アーキテクツ
  • Twitter:@nagise

書庫

日記カテゴリ

 

さて、先の稿 プログラムは圧縮だ ではメソッドのinに対しoutを返す組み合わせを全て記録して、それを圧縮したものとプログラムは ブラックボックステストでは同一のものになるというお話でした。

この稿は数学分野への分岐となります。

メソッドは写像だ

先の稿ではinがbyteでoutがbooleanのメソッドを例にしていました。

入力に対し、出力が一意に決まるということは、byteという集合をbooleanという集合に対応づけているということです。 これは、数学で言う写像にあたります。

そして、プログラムは入力のバリエーションよりも出力のバリエーションを増やすことができません。 先のメソッドでは入力256通りが出力2通りになってしまいます。

このことから、メソッドを通れば通るほど情報量は減っていくのです。

状態もまた入力/出力

さて、先のメソッドは状態を持たないものでした。オブジェクト指向でのオブジェクトの状態、 もしくは単にグローバル変数を思い浮かべてもらえばよいのですが、 これらをメソッド内から参照することで、一見して入力より出力のバリエーションが多くできるように思えます。

しかし、これらの情報はまた、入力値なのです。
状態の参照はinであり、状態の変更はoutなのです。

こうして考えた場合に、システムは、そのシステムに流入する情報量のとりうるパターン数よりも 多くの出力パターンをとることができない!

システムは通せば通すほど、入力の集合は写像の写像というように繰り返すに従い、 その集合の大きさを縮めていくのです。

しかし、それでもこれほど多様な出力がされるプログラムを創れるのは、 入力の集合というものが、次元の悪魔によって恐ろしい大きさにされているからなのです。

投稿日時 : 2007年10月22日 14:08
コメント
  • # re: メソッドは写像だ
    シャノン
    Posted @ 2007/10/22 14:21
    thisを含む入力情報の総量がNbitであるとき、出力はNbit以上には決してなり得ない。

    # 以前どこかで、「どんなデータでも1/100に圧縮できます」っていうツールを見たような。
    # おや、面白い検索結果が出たな。
    http://www.google.co.jp/search?hl=ja&q=1%2F100+%E5%9C%A7%E7%B8%AE&lr=
  • # re: メソッドは写像だ
    凪瀬
    Posted @ 2007/10/22 14:30
    あらゆるデータに対して、必ず1bit以上の圧縮をできる関数を作ることは不可能である。
    なぜなら、そのようなものがあったら、繰返し圧縮することで、全てのデータを1bitにすることができるからだ―

    そのニュース、なんとなく記憶にありますよ。
    まっとうなIT屋ならそんな馬鹿な、と思うのが正しいところ。
    APOPの脆弱性でMD5化されたパスワードを解読する話があったときも、
    すわMD5が可逆か?みたいなニュース文面に、技術者であれば「いやいや、一方向ハッシュ関数でそれはありえない」と
    思えないといけなかったわけで。
  • # re: メソッドは写像だ
    シャノン
    Posted @ 2007/10/22 14:41
    # 圧縮の話をぐぐると、あちこちに「シャノン」が出てきて、なんかイヤンな感じ。
  • # 現実的なテスト
    凪瀬 Blog
    Posted @ 2007/10/24 22:22
    現実的なテスト
タイトル
名前
Url
コメント