hirax.net::Tech-logs::2011-08-07

2011-08-07[n年前へ]

「ゲーデル数化」と「お金が無い人のためのMathematica」 

 数式処理・演算アプリケーションであるMathematicaでは、作成した「ノートブック(数式・命令コマンド群)」を、誰もが使ってみることができるようなファイル形式に変換することができます。それはつまり、Mathematicaというプログラミング言語でアプリケーションを作成したら、(Mathematicaアプリケーションがなくとも)そのアプリケーションを再生することができるような配布形式に変換をすることができる、ということです。

 Mathematica 7までは、誰もが「動かすことができる」できるファイル形式に変換するには、専用サイトで作成したノートブックをアップロードしなければなりませんでしたが、Mathematica 8からはアプリケーション単体で「再生用ファイル形式」に変換することができるようになりました。Wolfram,CDF (Computable Document Format,計算可能ドキュメント形式)というのが、その形式です。

 つまるところ、それは名前を変えた"Mathematica Player"に過ぎません。「作成した数式・プログラム」を実行し、そのプログラムにありと数式数値を入力することはできるけれど、数式やプログラム(命令)コマンドを入力し・処理させることができない、という再生環境(機能制限されたMathematica アプリケーション)です。

 しかし、ありとあらゆる数式やプログラムは「自然数」に変換することができます(たとえば、ゲーデル数化)(プログラムをビルドするということの入力と出力などに例えて想像してみると、そんなことも至極当然の当前のことと思えてくるかもしれません)。ということは、「自然数」へと姿を変えられた(変換された)「数式やプログラム」を元の姿(数式やプログラム)へと変換し(対応させ)、その数式やプログラムを実行する処理をさせてやれば、「数値しか入力することができない”再生環境”でも、ありとあらゆる機能を実行させることができる」わけです。

 そんな、シンプルかつ美しいアイデアを実装してしまったのが"Universal Mathematica Manipulator—Poor Man’s Mathematica"です。任意のコマンド(数値)群を自然数に変換し・その自然数を逆変換させた上で(Wolfram CDF 実行環境に)動かさせるというUniversal Mathematica Manipulator—Poor Man's Mathematica です。(とりあえずの使用方法としては)左上の領域(ペイン)に数式(Mathematicaコマンド群)を入力し、右上の領域に生成・出力された(シリアライズされた)自然数値をコピーして(ブラウザのクリップボード動作〜何桁までペーストするかといった〜の仕様にもよるようです。少なくとも、ChromeやFirefox on Mac OSXでは動きました)、下のペインに(”+”ボタンを押した上で)貼り付ければ、あなたが入力した任意の数式が評価・出力される…という具合です。

 Mathematicaがパターンマッチングを延々と行うアプリケーションであることをかんがえれば、こうした「解」が登場するのは至極当前のことのようにも思われます。

 Mathematicaは結局のところ、パターンマッチングを延々と行うプログラムである。データベースに登録されているパターン・規則にもどづいて、与えられた数式を置換していくことにより、Mathematicaは解(や所望の結果)を得る。
 しかし、シンプルなアイデアを素早く実装する華麗さ、というのは眺めると本当に心地良いものですね。

「ゲーデル数化」と「お金が無い人のためのMathematica」