以下、図面を参照して本発明を実施するための形態(以下、実施形態という)に係る情報処理装置について説明する。以下の実施形態の構成は例示であり、本情報処理装置は実施形態の構成には限定されない。
《第1実施形態》
以下、第1実施形態に係る情報処理装置を説明する。本情報処理装置の記憶手段に記憶され、本情報処理装置で処理される情報を対象情報という。対象情報は、識別子、因子、項(要素)、集合情報、トポロジー空間情報等の情報を含む。対象情報をオブジェクト情報とも呼ぶ。ただし、本実施形態でのオブジェクト情報は、いわゆるオブジェクト指向データベース、オブジェクト指向言語、オブジェクト指向設計等でいうオブジェクトとは、概念が異なる。そこで、以下では、もっぱらオブジェクト情報という代わりに、対象情報と呼ぶことにする。
また、本実施形態では、項の組み合わせから因子を構成する集合因子構成演算子および順序構成演算子が使用される。集合因子構成演算子は、第一の括弧“()”により表現される。また、順序構成演算子は第二の括弧“{}”により表現される。
本情報処理装置によれば、対象情報を所定の表現形式のデータとして記憶手段に格納し、これに所定のプログラムに基づいて処理を実行することができる。その結果、異なる対象情報同士の情報の一貫性を図るとともに新たな様々な対象情報のデータベース化および処理が可能な情報処理装置を提供することが可能となる。また、従来のリレーショナルモデルやオブジェクト指向モデルでは、対応できないデータに対応することができるシステムを開発することができる。
記憶手段は、抽象度に応じた各レベルの所定の表現形式によって表現される対象情報を例えばテキストファイルとして格納する。記憶手段は、前記対象情報を十分に格納できる容量を有するものであればよく、ハードディスク等がこれに該当する。対象情報とは、システム開発におけるデータベースを構成するすべての情報を含むものである。例えば既存のデータモデルの正規化表構造を構成するレコードの構成要素や正規化表構造では入力不可能なデータ構造も含む。正規化表構造では入力不可能な情報とは、例えば正規化表構造で表現されるようなデータがある場合に、これに付箋のような前記正規化表構造とは全く関連性のない、すなわち属性の定義のない対象情報を意味する。また、この対象情報は、本情報処理装置の処理を実行することによりその抽象度が変化することを特徴とする。す
なわち、あるレベルで入力された対象情報は、本情報処理装置の処理が実行されることによりそのレベルが変化する。そして、そのレベルが変化しても対象情報は、変化前と同一の演算によって、取り扱うことができる。すなわち、対象情報は、抽象レベルが変化しても対象情報の性質には一貫性が保たれるので、同一の演算による操作が可能である。したがって、ある抽象度で格納された対象情報、すなわちデータは本情報処理装置の処理が実行されることにより様々なレベルに変化する。また、上述のように全く関連性のないデータも入力してこれを関連付けることが可能である。したがって、異なる抽象度のレベルにおいて、情報の性質の一貫性が保たれるとともに、新たな様々な事物を示す情報のデータベース化およびデータベース化された情報に対する演算処理が可能となる。
前記対象情報は、記号、識別子、第一の括弧および第二の括弧により表現される因子と、前記因子の積によって表現される項と、前記項の和によって表現される式と、により構成することができる。式を構成する項、および項を構成する因子は、前記対象情報を構成する最小単位である識別子と、前記処理手段において1として処理される単位元ε(”eps”とも記述する)と、前記処理手段において0として処理される零元Φとにより構成することができる。前記第一の括弧は、()により表現することができる。また、前記第二の括弧は{}により表現することができる。このように本情報処理装置によれば、対象情報が非常に簡単なデータ構造で表現されている。したがって、高度な技術を有さないユーザであっても容易に理解することが可能となる。
前記第一の括弧と前記第二の括弧は演算時の強さが異なる。演算時の強さが異なるとは、前記処理手段の処理を実行する際の展開順序が異なることを意味する。項は、前述した因子の積によって表現され、積は×により表現することができる。本実施形態では、積を構成する因子に、可換律は、成立しない。すなわち、a×bとb×aは、同一とは見なされない。また、式は前記項の和によって表現され、和は+により表現することができる。本実施形態では、和を構成する項に、可換律が、成立する。すなわち、a+bとb+aは、同一とは見なされる。以上より、例えばある対象情報は数1のように表現することができる。
(a+b)×{c+d+e}+f{g+h}×{i+j}・・・(数1)
上記数1で表現される対象情報は、第一の項の(a+b)×{c+d+e}と、第二の項のf{g+h}×{i+j}により構成されている。すなわち、数1は第一の項と第二の項との和により構成されている。次に、第一の項と第二の項のそれぞれについてみると、第一の項は、第一の因子の(a+b)と、第二の因子の{c+d+e}とにより構成されている。また、第二の項についてみると、第三の因子のfと、第四の因子の{g+h}と、第五の因子の{i+j}とにより構成されている。なお、上記数1において、“f”の後に、積演算子“×”を明示し、“f×”としてもよい。そして第一の因子から第五の因子のそれぞれについてみると、第一の因子は、第一の括弧と識別子aおよびbにより構成されている。また、第二の因子は第二の括弧と識別子c、dおよびeにより構成され、第三の因子は識別子fにより構成され、第四の因子は第二の括弧と識別子gおよびfにより構成され、第五の因子は第二の括弧と識別子iおよびjにより構成されている。なお、括弧の中は換言すると再帰的に式になっている。例えば、上記のうち(a+b)についてみると、括弧の中は再帰的に式a+bになっている。すなわち、上記式は項としての識別子aと項としての識別子bの和によってなっている。このように、式は、()または{}、およびその両方が複数回入れ子になった構造を含むことができる。
対象情報は、上記のように因子、項からなる式で表現される。そしてこのように表現された対象情報は、例えばテキストファイルとして前記記憶手段に格納される。なお、記憶手段への対象情報の格納、換言すると入力は、例えば、ユーザ操作に応答して実行される
。この入力時に、グラフィカルユーザインターフェースを用いたユーザインターフェース部を提供してもよい。簡易的には、テキストエディタで、識別子、項、あるいは、項の和を入力するようにしてもよい。情報処理手段は、記憶手段に格納されたその対象情報を処理する。これにより、前記対象情報の抽象度を変化させることが可能となる。
次に、図面に基づいて基本システムを説明する。
《基本システム》
(データ構造)
まず、情報処理装置のメモリに格納される対象情報の構造、すなわちデータ構造について説明する。なお、本実施形態の情報処理装置は、以下のデータ構造によって、処理対象のデータを記述し、記憶し、演算処理を行う。
(1)対象情報の構成要素
本情報処理装置は、対象情報を式の形式で表現する。式は、和演算子“+”、積演算子“×”、第1の括弧“(”“)”、および第2の括弧“{”“}”によって記述される。第1の括弧が集合因子構成演算子に相当する。また、第2の括弧が順序構成演算子に相当する。このような対象情報の表現形式を式表現とも呼ぶ。
式は、1以上の識別子を含む。識別子は、記号または記号列で表現される。本実施形態では、記号として、英数字、および特殊文字(ただし、和演算子“+”、積演算子“×”、第1の括弧“(”“)”、および第2の括弧“{”“}”を除外する)を用いることとする。ただし、記号は、一般的にアルファベットとも呼ばれ、必ずしも、これらの文字には限定されない。
本実施形態では、特殊な識別子として、Φおよびεを用いる。Φは、値ゼロ、和演算子において演算結果を変化させない値、または空集合を示す識別子である。本実施形態では、Φを零元と呼ぶ。また、εは、値1、あるいは、積演算子において演算結果を変化させない値である。本実施形態では、εを単位元と呼ぶ。なお、Φを和演算の単位元と呼ぶ場合もあるが、本実施形態では、Φを零元と呼ぶことにする。
また、本情報処理装置は、所定の識別子を、演算を表す予約語として使用する。例えば、F(式)は、式を展開する演算である。これらの予約語については、ユーザは、通常の識別子として使用することができない、という点で制限がある。
本実施形態では、以下の規則によって対象情報、すなわち、識別子、因子、項(要素ともいう)、集合情報、トポロジー空間情報等の情報を記述する式表現が生成される。
(a)識別子、単位元、および零元はいずれも式表現、すなわち、対象情報を記述する表現である。
(b)rとsとがともに、式表現である場合、r+sも式表現である。
(c)rとsとがともに、式表現である場合、r×sも式表現である。この場合、演算の結合の強さは、通常の代数と同様に、r×sの方が、r+sよりも強い。
(d)rが式表現である場合、(r)、{s}も式表現である。
(2)式表現の代数的構造
本実施形態において、式表現r、s、t、yは、次の代数の性質を有する。
(a)結合律
r+(s+t)=(r+s)+t
r×(s×t)=(r×s)×t
(b)可換律
r+s=s+r
なお、本実施形態の式表現では、積演算子の可換律は成立しない。したがって、積演算子で複数の因子が結合されている場合に、個々の因子位置が情報(あるいは意味)を持つ。すなわち、因子は、いわゆる位置を指定してされた位置パラメータとしての機能を有する。「積演算子の可換律は成立しない」ことは、積演算子が「順序を持つ因子の列として複数の識別子を結合する」ことに相当する。
(c)積演算の単位元
r×ε=ε×r=r
(d)積演算、和演算の零元
r×Φ=Φ×r=Φ
r+Φ=r
(e)分配率
r×(s+t)=r×s+r×t
(r+s)×t=r×t+s×t
(f)
{r+s}×{t+u}={r×t+s×u}
(3)集合情報
集合情報は、項の組み合わせ、あるいは、項の和として、定義される。ここで、それぞれの項は集合ID(第1の識別因子に相当)となる識別子と値となる識別子の積、すなわち、集合ID×値として定義される。ただし、値は、複数の識別子の積であってもよい。集合の情報の式表現は、典型的には、集合ID×値1+集合ID×値2+・・・である。集合情報の例として、以下のものを挙げることができる。
上述のように、本実施形態のデータ構造では、和演算子に可換律が成立することから、集合情報は、順序のない項の組み合わせということができる。一方、項を構成する因子間の位置関係は維持されることになる。
このような因子間の位置関係の維持機能は、コンピュータ上で事物、あるいは、概念を表現する場合に、極めて大きな効果を発揮する。すなわち、一般的に、事物、あるいは概念を記述する修飾関係には、可換律が成立しない。例えば、”児玉の机”は、”机の児玉”と意味が異なる。
本実施形態の因子と積演算子によれば、このような修飾関係を極めて単純化して、記述することができる。さらに、そのような修飾関係で記述された項を和演算子によって組み合わせることで事物の集合、あるいは、概念の集合を記述し、極めて単純な形式のデータベースを構築できる。
さらにまた、管理対象の事物あるいは概念を項の集合として管理する場合に、項における因子の位置関係に意味を付与することもできる。また、項を構成する因子は、それぞれ、いわゆる位置パラメータとしての意義を有するということもできる。
例えば、集合情報が、果物×任意形状×任意色×バナナ+果物×任意形状×任意色×リンゴ+果物×細長×黄色×バナナ+果物×丸×赤×リンゴという集合情報を考える。この場合、項の第1因子は、集合IDである果物であり、第2因子は形状示し、第3因子は色を示し、第4因子は名称を示す。このように、それぞれの因子の位置に意味上の制限を加えて使用することで、属性と属性値との関係を集合レベルでも処理できることを示している。本情報処理装置では、集合情報は、このような順序が維持された因子によって事物の属性を自在に定義することができ、そのような項の組み合わせによって、事物の集合をコンピュータ上に表現する。
(例)
A×a1+A×a2+A×a3、b1×B+b2×B×B、果物×リンゴ+果物×バナナ+果物×ミカン、野菜×キャベツ+野菜×キュウリ+野菜×ゴボウ、社員×A+社員×B+社員×C
すなわち、集合情報は、集合IDで識別される集合に所属する項の組み合わせを記述し、メモリ12に記憶される。この場合、社員Cが退職し、社員Dと社員Eが入社した場合には、社員×A+社員×B+社員×Cのようにメモリ12に格納される。
(4)トポロジー空間情報
トポロジー空間情報は、トポロジーID(第2の識別因子に相当)となる識別子と部分集合の和との積によって以下のように記述される。すなわち、トポロジーID×(部分集合の和)である。ここで、部分集合は、部分集合を識別する部分集合IDと、その部分集合に含まれる項の和との積で表現される。すなわち、部分集合ID×(項の和)である。ただし、項には、さらに項の和を第1の括弧“()”または第2の括弧”{}”で組み合わせたもの、およびそれらの積が含まれてもよい。
(例)トポロジー空間情報の例は、
T×(ABC×(ab1+ac2+bc3)+A×(ab1+ac2)+B×(ab1+bc3)+C(ac2+bc3))、
果物×(全種×(リンゴ+バナナ+ミカン)+赤×リンゴ+黄×(バナナ+ミカン))、果物×(全種×(リンゴ+バナナ+ミカン)+丸×(リンゴ+ミカン)+細長×バナナ)、
野菜×(全種×(大根+キュウリ+ゴボウ)+太×大根+細×(キュウリ+ゴボウ))、会社×(社員×(社員1+社員2+社員3+社員4)+営業×(社員1+社員2)+経理×(社員3+社員4))、等である(この例で、読点“、”は、式の構成要素ではなく、例の区切りである)。この場合に、最後の例について、例えば、総務が新設され、社員5が採用され、総務に配属された場合には、会社×(社員×(社員1+社員2+社員3+社員4+社員5)+営業×(社員1+社員2)+経理×(社員3+社員4)+総務×社員5)のように記述し、メモリ12に格納できる。
(記述例)
以下、従来のデータ構造である表およびツリー構造が、本実施形態のデータ構造でどのように記述できるかを示す。
図1は、第1実施形態に係る情報処理装置のメモリに格納されるセル空間情報の第一のデータ構造例を示す。同図に示すように、第1実施形態に係る情報処理装置では、従来正規化表構造として表形式で表現される対象情報は、表現形式1の状態でメモリ12に格納することができる。表現形式1で、Aは、キー属性(例えば社員番号等)、B,C,D,E等は、その他の属性(例えば、氏名、性別、入社年、所属部署等)である。
図2は、第1実施形態に係る情報処理装置のメモリに格納されるセル空間情報の第二のデータ構造例を示す。同図に示すように、第1実施形態に係る情報処理装置では、従来ツリー構造として表現される対象情報は、表現形式2又は3でメモリ12に格納することができる。そして、同図に示すように有向グラフの一部としてのツリー構造について対応可能である。表現形式2で、aは、例えば、動物、bはほ乳類、cは魚類、dは人、eは鯨、fはマグロ、gは鯉等である。この場合、b(ほ乳類)およびc(魚類)は、a(動物)の属性、例えば、食する、呼吸する等を継承する。b(ほ乳類)およびc(魚類)の共通の属性は、a(動物)に定義される。
したがって、本情報処理装置は、本実施形態の式表現によって、フレーム等の知識ベー
ス、あるいは、オブジェクト指向データベース等を記述し、メモリに格納できる。情報処理装置は、これらに対応する事物に関する情報の入力を入力部から受け付け、対応する情報を生成し、メモリに格納し、メモリから読み出し、出力部に出力できる。
また、逆ツリー構造で表現される対象情報についても、表現形式3のようにメモリに格納することができる。逆ツリー情報は、基本的な情報からより複雑な情報を構成する場合に適用できる。表現形式3では、例えば、aはCPUであり、bはインターフェースであり、cは外部記憶装置の駆動部であり、dはCPUボードであり、eは外部記憶装置であり、fはパーソナルコンピュータである。
このように逆ツリー構造は、製品の設計書、事業の工程管理図等、基本情報からより複雑な情報を組み上げて管理することができる。したがって、本実施形態の式表現によって、製品の設計情報、事業の工程等を記述し、メモリに格納できる。情報処理装置は、これらに対応する事物に関する情報の入力を入力部から受け付け、対応する情報を生成し、メモリに格納し、メモリから読み出し、出力部に出力できる。
図3は、第1実施形態に係る情報処理装置のメモリに格納される第三のデータ構造例を示す。同図に示すように、第1実施形態に係る情報処理装置では、非正規化表構造と属性のない対象情報についても図3の状態でメモリに格納することができる。ここで、非正規化表構造と属性のない対象情報とは、図3に示すように伝票を示す対象情報と、その対象情報に追加される付箋メモに相当する対象情報とが例示できる。接着処理を実行し、接着空間を作成することで、コンピュータ上で伝票に付箋メモの内容を添付することと同等の処理が実現される。
なお、伝票の種類ごとにテーブルに格納する場合には、リレーショナルモデルによって従来のデータベースで情報を管理できる。しかしながら、伝票の種類数が変動する場合、既存の伝票の構成が変更された場合には、リレーショナルモデルでは、対応できない。
ここで、所定の表現形式、すなわちデータ構造についてより詳細に上記図3の形式に基づいて説明する。IDまたはid(identification)は、格納される対象情報を識別するものである。そしてこの対象情報は、識別子A〜E2,a〜e2と、演算時の結合強さが異なる第一の括弧()および第二の括弧{}と、これらにより表現される因子{C1+C2},{E1+E2}等と、これら因子の積によって表現される項E{E1+E2}等と、前記項の和によって表現される式と、により構成される。なお、本実施形態では、項を要素ともいう。また、すでに述べたように、単位元εは、所定の処理を実行した場合に1として処理される記号である。上記以外の特別な記号として、所定の処理を実行した場合に0として処理される零元Φが存在する。このような状態でメモリに格納された対象情報は、情報処理装置のCPUが所定のプログラムを実行することによって、入力装置から入力された伝票データにしたがって、生成され、メモリに格納され、部分集合に分離され、他の部分集合と接着され、あるいは、検索されることになる。
図3の例では、インスタンスとして、伝票ID1で示される1枚目の伝票、伝票ID2で示される2枚目の伝票、およびMEMOで示されるメモが例示されている。また、この場合に、1枚目の伝票と2枚目以降の伝票で、項目の構成が異なっても構わない。本情報処理装置は、対象情報を構成する識別子、あるいは項に、個々に属性を付与できるので、異なる属性の並びを有する異なる識別子、あるいは項を自在に記憶し、検索し、変更できる。また、{}内に、+識別子の形式で追加するとともに、属性に対応する値を追加すれば、データベースとして運用中においても、自在に属性と属性値とを追加、変更、削除できる。したがって、本実施形態のデータ構造によれば、情報処理装置が取り扱うデータを柔軟に変更でき、厳密、正確なファイル設計の必要性が軽減される。
(基本演算手順)
図4に、本情報処理装置におけるプログラム構成を示す。本情報処理装置は、例えば、データを格納し、検索し、変更し、表示するデータベースシステム等、様々事物を管理するシステムに適用できる。以下、情報処理装置のハードウェア構成としては、図9を例示できる。その場合、個々の管理対象に応じた機能は、例えばメモリ12上のアプリケーションプログラムAPを実行するCPU13によって提供される。すなわち、情報処理装置のCPU13は、入力部11から入力されたデータをメモリ12あるいは外部記憶装置に格納し、これらに格納されたデータにアクセスし、検索し、出力部14に表示する。
一方、アプリケーションプログラムがメモリ12あるいは、外部記憶装置に格納するデータの生成、格納、検索等の機能は、上述の式表現を処理する共通関数ライブライリが提供する。共通関数ライブラリは、アプリケーションインターフェースを備えており、アプリケーションプログラムへのこれらの機能、あるいは、サービスを提供する。以下、本情報処理装置で典型的な共通関数の例を説明する。これらの共通関数は、プリミティブ関数、あるいは、基本演算とも呼ばれる。以下、式表現に対する基本演算、つまり共通関数の典型例として、商演算および部分集合取得処理を例示する。
(1)商演算処理
以下、商演算処理について説明する。商演算処理は、対象情報を記述する集合から、指定された因子(識別子を含む)を含む式表現(項、あるいは要素)と、そのような因子を含まない式表現とに分離する処理である。商演算処理のアプリケーションインターフェースは、例えば、戻り値=divide(商演算される式表現、商演算する因子、商の式表現、剰
余の式表現);のように定義できる。本実施形態で、商演算は、“商演算する因子”を含
む式表現を取り出す処理となる。そのため、商演算する因子のことを、同値関係を指定する因子ともいう。商演算する因子は、演算用因子に相当する。
図5Aは、商演算処理(サブルーチン1)を実行する処理のフローを示す。サブルーチン1を実行するCPU13が商演算部に相当する。なお、図6Aは、商演算のうち、剰余を求める処理(サブルーチン2)である。サブルーチン1は、商演算される式表現である式1、商演算する因子を入力され、商の式表現である式2を出力する。
まずステップS301では、商演算処理が実行される前の所定の表現形式によって表現される式1(“商演算される式表現”)、および商演算する因子(これを同値関係示す因子ともいう)pが入力される。以下、数2により表現される対象情報が入力された場合について説明する。また、1を商演算する因子(同値関係を示す因子p)と設定する。
cell(id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2}))・・・(数2)
次に、ステップS302では、CPU13は、演算後の商(商項ともいう、ここでは、項2で表す)を初期化する。このとき、項2の値は、Φ(空、または0)である。
次に、ステップS303では、CPU13は、式1の長さが0であるか否かを判定する。式1の長さが0である場合、CPU13は、サブルーチン1の処理を終了する。
一方、ステップS303の判定において、式1の長さが0でなかった場合、CPU13は、ステップ304に処理を進める。そして、CPU13は、式1から始めの項(以下、項1という)を取得する。ここで、項1は、数2の全体である。さらに、ステップS305において、CPU13は、式1から項1を削除する。
次に、ステップS306において、CPU13は、項1が因子p(ここでは、“1”)を含んでいるか否かを判定する。ここで、因子pを含んでいるとは、項1の因子としては、あるいは、項1の第1の括弧で括られた因子内の項のいずれかに、因子pを含むことをいう。すなわち、項1の式表現中に因子pが含まれるか否かを判定する。項1が因子pを含んでいない場合、CPU13は、項1を空とし(ステップS307)、処理をステップS303に戻す。
一方、ステップS306の判定において、項1が因子pを含んでいる場合、CPU13は、処理をステップS308に進める。そして、CPU13は、項3を初期化し、空とする。ここで、項3は、始めの項である項1の商演算結果を格納する変数(メモリ12の領域)である。ここでは、数2の構成から、項1に因子p(=1)が含まれていると判定される。
そして、ステップS309において、CPU13は、項1の長さが0であるか否かを判定する(ステップS309)。項1の長さが0でない場合、ステップS310において、CPU13は、項1から始めの因子(以下、因子1という)を取得する。数2の構成から、因子“cell”が取得される。そして、ステップS311において、CPU13は、項1から因子1を削除する。
次に、ステップS312において、CPU13は、因子1に商演算する因子pが含まれ、かつ、因子1が第1の括弧“(”と“)”とによって形成された因子であるとき、その括弧内の式を式1に設定し、サブルーチン1を再帰呼び出しする。そして、その再帰呼び出しによる処理結果を因子1とする。この処理によって、商演算される式中で、項に“()”による因子を含む場合は、その項は、()内の式が商演算されることになる。数2の構成の場合、“cell”が因子1の場合には、ステップS312は、実行されない。また、cellの次の因子(id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2}))が、因子1の場合には、ステップS312により、再起呼び出しが実行されることになる。その結果、式表現中に因子p(この例では、1)を含む因子が抽出されることになる。
さらに、ステップS313によって、CPU13は、項3に対し因子1を積演算し、結果を項3とする。この処理によって、因子1に商演算される因子pが含まれる場合、そのまま項3に積演算されることになる。また、因子1が()の形式の因子の場合に、()内から因子pを含む項が取り出されることになる。そして、CPU13は、処理をステップS309に戻す。
ステップS309の判定で、項1の長さが0となった場合、CPU13は、処理をステップS314に進める。そして、ステップS314において、CPU13は、項2(商項)に対して、得られている項3を和演算する。さらに、ステップS315の処理で、CPU13は、項2を商演算後の式である式2に設定する。その後、CPU13は、処理をステップS303に戻す。
そして、ステップS303の判定で、式1の長さが0になると、CPU13は、サブルーチン1の処理を終了する。このような処理により、式2に、以下の数3の式表現が出力され、アプリケーションプログラムに引き渡される。
cell×id{ε+A+B+C}×1{ε+a1+b1+c1}・・・(数3)
図5Bおよび図5Cに、数2の式表現に対して、サブルーチン1が実行された場合の式
1、項1、項2、項3、因子1、および式2の変化を示す。図5Bおよび図5Cの第1行目は、各列の要素、すなわち、図5A中の該当する処理を示す番号、式1、項1、項2、項3、因子1、および式2を示している。第2行以下の各行は、一連の処理ステップであり、図5B上から下へ、さらに、図5Cの上から下へ実行される。
そして、まず、ステップS301で、共通関数へのパラメータを介して、式1である数2が入力され、メモリ12に保持される。
項1、因子1および項3に着目すると、これらのうち、“cell”および、id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2})が順次サブルーチン1で処理されることが分かる。
さらに、id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2})が因子1としてステップS312で処理されるときに、再起呼び出しが発生する。そして、同様に、“id”、{ε+A+B+C}、および(1{ε+a1+b1+c1}+2{ε+a2+b2+c2})がサブルーチン1の再起呼び出し1で処理される。
さらに、(1{ε+a1+b1+c1}+2{ε+a2+b2+c2})が、ステップS312で処理されるときに、再起呼び出し2が発生する。そして、同様に、1{ε+a1+b1+c1}については、商演算する因子“1“が含まれているので、ステップS306で、YESの判定がなされる。そして、ステップS313によって、1と{ε+a1+b1+c1}とが項3に積演算される。
一方、2{ε+a2+b2+c2}については、商演算する因子“1”が含まれていないので、ステップS306で、NOの判定がなされる。その結果、これらの因子は、ステップS307において、Φに設定され、削除される。その結果、再起呼び出し2で商演算の結果、式2として出力されるのは、1{ε+a1+b1+c1}となる。
さらに、再起呼び出し1では、ステップS313の処理で、項3に積演算されていたid{ε+A+B+C}と再起呼び出し2での商演算の結果である1{ε+a1+b1+c1}とが、積演算され、id{ε+A+B+C}(1{ε+a1+b1+c1})が、式2として出力される。
さらに、そして、再起呼び出し1の前に、項3に積演算されていたcellと、再起呼び出し1による商演算の結果が積演算され、数3が式2として、最終的に出力されることになる。
次に、図6Aにより、剰余を求める処理(サブルーチン2)を説明する。サブルーチン2を実行するCPU13が剰余演算部に相当する。サブルーチン2は、商演算される式である式1、商演算する因子pを入力され、剰余の式3を出力する。
まずステップS321では、商演算処理が実行される前の所定の表現形式によって表現される式1(“商演算される式”)、および商演算する因子(同値関係示す因子p)が入力される。以下、図5Aの場合と同様、数2により表現される対象情報が入力された場合について説明する。また、1を商演算する因子(同値関係p)と設定する。
次に、ステップS322では、CPU13は、演算後の式(ここでは、式3と呼ぶ)を初期化する。このとき、式3の値は、Φ(空、または0)になる。
次に、ステップS323では、CPU13は、式1の長さが0であるか否かを判定する
。式1の長さが0である場合、CPU13は、サブルーチン2の処理を終了する。
一方、ステップS323の判定において、式1の長さが0でなかった場合、CPU13は、ステップS324に処理を進める。そして、CPU13は、ステップS324において、式1から始めの項(以下、項1という)を取得する。さらに、ステップS325において、CPU13は、式1から項1を削除する。
次に、ステップS326において、CPU13は、演算後の項(以下、項4と呼ぶ)を初期化する。このとき、項4の値は、Φ(空、または0)になる。
次に、ステップS327において、CPU13は、項1の長さが0であるか否かを判定する。そして、項1の長さが0でない場合、CPU13は、ステップS328に処理を進める。そして、ステップS328において、CPU1は、項1から始めの因子(因子1)を取得する。さらに、ステップS329において、CPU13は、項1から因子1を削除する。
次に、ステップS330において、CPU13は、因子1が因子pと等しいか否かを判定する。そして因子1が因子pと等しい場合、ステップS331において、CPU13は、因子1をΦ(空、または0)にする。
次に、ステップS332において、CPU13は、因子1が第1の括弧“(”と“)”とによって形成された因子であるとき、その括弧内の式を式1に設定し、サブルーチン2を再帰呼び出しする。そして、その再帰呼び出しによる処理結果を因子1とする。この処理によって、商演算される式中で、“()”による因子を含む場合は、その因子は、()が外され、内の式から剰余(すなわち、因子pを含まない項)が抽出されることになる。
さらに、ステップS333によって、CPU13は、項4に対し因子1を積演算し、結果を項4とする。この処理によって、因子1が商演算される因子pと異なる場合に、そのまま項3に積演算されることになる。また、因子1が()の形式の因子の場合に、()内から因子pを含まない項が取り出されることになる。そして、CPU13は、処理をステップS327に戻す。
ステップS327の判定で、項1の長さが0となった場合、CPU13は、処理をステップS334に進める。そして、CPU13は、ステップS334において、式3(剰余項)に対して、得られている項4を和演算する。その後、CPU13は、処理をステップS323に戻す。
そして、ステップS323の判定で、式1の長さが0になると、CPU13は、サブルーチン2の処理を終了する。このような処理により、式3に、以下の数4の式表現が剰余として出力され、アプリケーションプログラムに引き渡される。
cell(id{ε+A+B+C}(Φ+2{ε+a2+b2+c2}))・・(数4)
図6Bおよび図6Cに、数2の式表現に対して、サブルーチン2が実行された場合の式1、項1、項4、因子1、および式3の変化を示す。図6Bおよび図6Cの第1行目は、各列の要素、すなわち、図6A中の該当する処理を示す番号、式1、項1、項、項4、因子1、および式3を示している。第2行以下の各行は、一連の処理ステップであり、図6Bの表の上から下へ、さらに、図6Cの表の上から下へ実行される。
そして、まず、ステップS321で、共通関数へのパラメータを介して、式1である数2が入力され、メモリ12に保持される。
項1、因子1および項4に着目すると、これらのうち、“cell”および、id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2})が順次サブルーチン2で処理されることが分かる。
さらに、id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2})が因子1としてステップS332で処理されるときに、再起呼び出しが発生する。そして、同様に、“id”、{ε+A+B+C}、および(1{ε+a1+b1+c1}+2{ε+a2+b2+c2})がサブルーチン2の再起呼び出し1で処理される。
さらに、(1{ε+a1+b1+c1}+2{ε+a2+b2+c2})が、ステップS332で処理されるときに、再起呼び出し2が発生する。そして、1{ε+a1+b1+c1}については、商演算する因子“1”が含まれているので、ステップS330で、YESの判定がなされる。そして、ステップS331によって、因子1にΦに設定され、因子1を含む項1全体がΦとなり、削除される。
一方、2{ε+a2+b2+c2}については、商演算する因子“1”が含まれていないので、ステップS330で、それぞれの因子1について、NOの判定がなされる。その結果、これらの因子は、ステップS333において、項4に積演算される。その結果、再起呼び出し2の剰余演算の結果、式3として出力されるのは、2{Φ+a1+b1+c1}となる。
さらに、再起呼び出し1では、ステップS333の処理で、項4に積演算されていたid{ε+A+B+C}と再起呼び出し2での商演算の結果である2{Φ+a1+b1+c1}とが、積演算され、id{ε+A+B+C}(2{Φ+a1+b1+c1})が、式3として出力される。
さらに、そして、再起呼び出し1の前に、項4に積演算されていたcellと、再起呼び出し1による商演算の結果が積演算され、数4が式3として、最終的に出力されることになる。
(2)部分集合取得処理
部分集合取得処理は、集合から、指定された因子(以下、指定因子という)を有する項を含む式(部分集合)と、指定因子を有しない項の式(部分集合)に分離する処理である。この処理を実行するCPU13が、部分集合形成部に相当する。ただし、本実施形態では、指定因子(今pとする)を有する項が複数個存在する場合には、{左因子1+左因子2+・・・}p{左因子1が含まれていた項の右因子+左因子2が含まれていた項の右因子+・・・}+因子pを含まない部分集合の和のように、指定された因子pで括り出す。このように、部分集合取得処理の括り出しでは、括り出し前の各項において、指定因子pの左側に結合する因子(左因子と呼ぶ)と、指因子pの右側に結合する因子(右因子と呼ぶ)とをそれぞれ、第2の{}内に和演算する。そして、左因子の和は、第2の{}によって括られ、その順序を維持して、指定された因子の左側に結合される。
また、右因子の和は、第2の{}によって括られ、その順序を維持して、指定された因子の右側に結合される。さらに、同一の左因子に対して、異なる右因子を有する項が複数存在する場合、それらの右因子は、第1の括弧“()”で括り出される。この場合、左因子は、集合情報の識別情報として機能する。例えば、
a1×b×c1+a1×b×c2+a2×b×c1+a2×b×c2+a3×b×c3+
a×u×vという式表現に対して、因子bを指定因子として部分集合取得演算を実行すると、
{a1+a2+a3}b{(c1+c2)+(c1+c2)+c3}+a×u×v
となる。この場合、右因子の列は、それぞれ、集合IDがa1の集合の部分集合b(c1+c2)、集合IDがa2の集合の部分集合b(c1+c2)、集合IDがa3の集合の部分集合b×c3を表している。
さらに、部分集合取得処理の対象となる項に、第1の括弧“()”または第2の括弧“{}”が含まれている場合には、これらの括弧内の式表現に対して、再起的に部分集合取得処理が実行される。したがって、第1の括弧“()”または第2の括弧“{}”で括られた個々の括弧内で、部分集合取得処理が実行される。
部分集合取得処理のアプリケーションインターフェースは、例えば、部分集合取得後の式表現は、戻り値=separate(部分集合取得前の式表現、指定因子);のように定義できる。対象の式、因子を指定すると、括った後の式(戻り値)となる。
次に部分集合取得処理について説明する。図7は、部分集合取得処理を実行する処理のフローを示す。ステップS501では、演算前の所定の表現形式で表現される対象情報と、部分集合を指定するための指定因子pを入力する。以下、対象情報として数5に示すデータを用いて、指定因子“p”で部分集合を取得する場合について説明する。
s×p(p1+p2)+t×p(p3+p4)+id(s×p(p1+p2)+t×p(p3+p4))・・・(数5)
ステップS502では、部分集合を取得するための因子以外(ここでは、「その他の式」「左因子式」および「右因子式」)をΦと設定する。ステップS503では「処理後の項」をεに設定する。ステップS504では、対象情報を構成する式の長さが0であるかを判断する。すなわち、対象情報が存在するか否かを判断する。式の長さが0であると判断した場合には、ステップS517へ進む。一方、式の長さが0であると判断しなかった場合には、ステップS505へ進む。
ステップS505では、数5から第一項を取得し保存する。次にステップS506では、数5から第一項を削除する。次にステップS507では、取得した項に因子pが含まれるか判断する。取得した項に因子pが含まれると判断した場合にはステップS515へ進む。一方、取得した項に因子pが含まれると判断しなかった場合には、ステップS508へ進む。
ステップS508では、項の長さが0であるか否かを判断する。項の長さが0であると判断した場合にはステップS514へ進む。一方、項の長さが0であると判断しなかった場合には、項から第一因子を取得し、これを保存し(ステップS509)、次に項から第一因子を削除する(ステップS510)。
次にステップS511では、第一因子が第一の括弧または第二の括弧で括られているか判断する。因子が第一の括弧または第二の括弧で括られていると判断した場合には、第一の括弧または第二の括弧で括られている式に対して、本部分集合取得処理を実行する(ステップS512)。すなわち、再起呼び出しを実行する。一方、第一の括弧または第二の括弧で括られていると判断しなかった場合には、第一因子を取得した因子とし(S520)、ステップS513へ進む。ステップS513では、処理後の項に取得した因子によって積演算処理を実行し、その結果を処理後の項とし、ステップS508の処理を再度実行する。
ステップS508において、項の長さが0であると判断した場合には、その他の式に処理後の項を和演算処理し、その結果をその他の式とする(ステップS514)。ステップS514の処理を実行後、再度ステップS503の処理を実行する。次にステップS504において式の長さが0であると判断した場合には、部分集合の項として{左因子式}p{右因子式}を作成し(ステップS517)、その他の式に部分集合項を和演算し,演算後の式とし(ステップS518)、処理を終了する。以上の処理を実行することにより、数5により表現される対象情報は、数6により表現される対象情報となる。なお、部分集合取得処理を実行中の対象情報の状態の詳細は図8A、図8Bに示す。
id({s+t}p{(p1+p2)+(p3+p4)})+{s+t}p{(p1+p2)+(p3+p4)}・・・(数6)
図8Aおよび図8Bに、数5の式表現に対して、部分集合取得処理が実行された場合の「演算前の式」、「部分集合取得のための因子」、「左因子式」、「右因子式」、「左因子」、「右因子」「その他の式」、「取得した項」、「取得した因子」、「処理後の項」、「部分集合項」および「演算後の式」の変化を示す。図8Aの各行と、図8Bの各行は、図7の処理での同一の処理を示している。すなわち、図8Aおよび図8Bを横に接続して、部分集合取得処理の状態変化が表されることになる。
図8Aおよび図8Bの第1行目は、各列の要素、すなわち、図7中の該当する処理を示す番号、「その他の式」、「取得した項」、「取得した因子」、「処理後の項」、「部分集合項」および「演算後の式」を示している。第2行以下の各行は、一連の処理ステップであり、図8Aおよび図8Bの表の上から下へ実行される。以下、フローチャートの処理(ボックス)を処理(ボックス)に付された符号で、単に、S505のように呼称する。
ここでは、数5の式表現を処理対象とする。部分集合取得処理を実行する共通関数separateに対して、まず、部分集合取得前の式表現である数5が与えられる。この式表現はメモリ12に格納される。また、指定因子はpであるとする。
まず、S505、S505の処理で、式から第一項s×p(p1+p2)が取得される。s×p(p1+p2)に指定因子pが含まれているので、S515およびS516が実行され、左因子sおよび右因子(p1+p2)がそれぞれ左因子式および右因子式に和演算される。
次に、S505、S506の処理で、式から第二項t×p(p3+p4)が取得される。t×p(p3+p4)に指定因子pが含まれているので、S515およびS516が実行され、左因子tおよび右因子(p3+p4)がそれぞれ左因子式および右因子式に和演算される。
さらに、S505、S506の処理で、式から第三項id(s×p(p1+p2)+t×p(p3+p4))が取得される。そして、S509において、第一因子としてidが取得される。項idは、S513にて、処理後の項に積演算される。さらに、S509において、第一項として、次の項(s×p(p1+p2)+t×p(p3+p4))が取得される。これは、S511の判定で、第1の括弧を含むとされるので、S512が実行される。
そして、式表現s×p(p1+p2)+t×p(p3+p4)に対して、部分集合取得処理が再起呼び出しで実行される。図8Aおよび図8Bでは、再起呼び出し中の状態は、省略されているので、本文にて説明する。この場合も、s×p(p1+p2)から、左因
子s、右因子(p1+p2)が取得される。また、t×p(p3+p4)から、左因子t、右因子(p3+p4)が取得される。これらの左因子および右因子は、S516において、それぞれ左因子式、および右因子式に和演算される。そして、式表現s×p(p1+p2)+t×p(p3+p4)の末尾まで処理が進み、S504で、残りの式の長さが0であると判定される。すると、CPU13は、部分集合の項として、{s+t}p{(p1+p2)+(p3+4)}を作成する。そして、CPU13は、部分集合の項を演算後の式として、再起呼び出しを終了する。
再起呼び出しを終了すると、演算後の式を取得するので、これを取得した因子とする。この場合、取得した因子は、({s+t}p{(p1+p2)+(p3+4)})である。そして、CPU13は、S513にて、再起呼び出し前に計算しておいた処理後の項(“id”が積演算されている)に、取得した因子を積演算する。その結果、S513において、処理後の項は、id({s+t}p{(p1+p2)+(p3+4)})となる。CPU13は、S514にて、処理後の項をその他の式として和演算する。
そして、S504にて、残りの式の長さが0であると判定されると、CPU13は、再起呼び出し前に作成していた左因子式s+tおよび右因子式(p1+p2)+P3+p4)から、部分集合の項{s+t}p{(p1+p2)+P3+p4)}を作成する。そして、CPU13は、S518にて、その他の式に部分集合の項を和演算する。これによって、演算後の式id({s+t}p{(p1+p2)+(p3+4)})+{s+t}p{(p1+p2)+P3+p4)}が作成されることになる。
《第2実施形態》
以下、第2実施形態では、上記第1実施形態の情報処理装置を応用し、式表現を用いて事物に係る情報をメモリ12等の記憶装置に蓄積し、蓄積された式表現を基に、その事物に係る数値を計算する処理を実現する情報処理装置を例示する。
(明示的な数値表現)
今、nを数値とし、aを数値以外の記号あるいは記号列とする。例えば、nは、整数を示す記号または記号の列である。また、aは、文字等を示す記号または記号の列である。式表現で、数値nと数値以外の記号aとが、naと記述された場合、naは、整数などの数値を示す記号と数値以外の記号とを組み合わせた識別子ということができる。
本実施形態では、情報処理装置は、このような数値を示す記号(列)と数値以外の記号(列)とを含む識別子”na”について、識別子aがn個あるものとして取り扱う。ただし、このような記述に代えて、識別子”an”について、識別子aがn個あるものとして取り扱う、と定義してもよい。なお、nは、負の数値も含む。また、数値を示す記号は、小数等の実数を示すものでもよい。例えば、識別子”an.m”、例えば、a1.005、b12345678.9については、情報処理装置は、aの量が1.005、bの量が12345678.9であるとして取り扱う。
さらに、aがn個あることを明示的に示す式表現として、a×'n'と記述することにする。さらにまた、nが負数である場合、例えば、―m(mは正数)の場合は、aב―m’のように例示される。なお、×は積演算子である。ここで、nを挟む''は、数値nを明示的に示す演算子であり、数値演算子と呼ぶ。また、数値演算子によって数値であることが明示された識別子'n'を数値識別子と呼ぶ。積演算子が数値演算子によって数値として明示された識別子に適用された場合、積演算子は乗算を示す。
ただし、数値を明示的に示す数値演算子が、''に限定される訳ではない。情報処理装置上で使用可能な記号から、他の演算子等と重複のないものを数値演算子として定義すれば
よい。例えば、数値をn!のように明示してよい。また、数値を$nのように明示してもよい。
また、数値を示す記号等を含まない識別子aだけを含む式表現についは、aが1個あることを明示的に示す式表現として、a×'1'と記述することにする。同様に、式表現(a+a+a)は、数値を明示的に示す式表現として、(a×'1'+a×'1'+a×'1')と記
述する。同様に、式表現{a+a+a}は、数値を明示的に示す式表現として、{a×'1'+a×'1'+a×'1'}と記述する。
さらに、例えば、式表現2a(3b+c(2d+3e+4f+e))は、数値を明示的に示す式表現として、a×'2'×(b×'3'+c×'1'×(d×'2'+e×'3'+f×'
4'+e×'1'))のように記述される。ただし、×'1'は、省略してもよい。つまり、識別子aは、明示的にaが1個あるものとして0取り扱うことができる。
数値を明示的に示す式表現では、数値以外の識別子による因子と、数値識別子による因子の間は、式表現の代数的構造で示した可換律が適用される。例えば、a×'n'='n'×aである。
(数値計算処理)
数値を明示的に示す式表現において、四則演算、べき乗等の演算は、以下のように処理される。以下、数値を明示的に示す式表現を代数演算式と呼ぶ。
(1)乗算
積演算子で結合される複数の因子中の2以上の因子が数値演算子によって数値として明示されている式表現を考える。このような式表現については、本情報処理装置は、数値演算子によって数値として明示されている因子間の乗算を実行する。例えば、a×'1'×b×'m'=a×b×'1×m'となる。ここで、'1×m'は、数1と数mを乗算した積である。具体的には、a×'2'×b×'4'=a×b×'8'である。また、例えば、a×'0'=φである。
(2)べき乗と除算
以下にべき乗と除算を例示する。べき乗は、同一の数を複数回掛ける演算、あるいは、その演算結果をいう。本情報処理装置では、べき乗は、”底を示す識別子M×^指数を示す識別子n”という形式で記述する。例えば、a×a×a=a×^'3'である。識別子aのn乗は、a×^'n'で表す。つまり、この場合には、”×^”がべき乗を示す予約語となる。ただし、べき乗が、このような記述形式に限定されるわけではない。この例では、”×^”が指数演算子に相当する。なお、べき乗の底(上記識別子M)および指数部分(上記識別子n)の一方または両方が、小数等の実数であってもよい。
例えば、識別子aのn乗をa**'n'のように表してもよい。この場合には、”**”がべき乗を示す予約語となる。また、識別子aのn乗をa×E'n'のように表してもよい。この場合には、”×E”がべき乗を示す予約語となる。以下、べき乗の記述例、およびべき乗を含む除算を例示する。
a×^'0'='1'
(a×b)×^'0'='1'
/(a×a×a)=a×^'−3'
同様に、aのマイナスn乗は、a×^'−n'で表す。一方、/'0'はエラーである。さらに、除算記号で、分母分子として関係付けられる2つの式表現中で、互いに共通の因子(識別子)は削除可能である。この場合の共通の因子(識別子)については、いわゆる約分が実行される。識別子の削除は、例えば、a×c/a=cのように示される。
(3)加算
和演算子で構成される項の組み合わせ中に、数値演算子で数値として明示されている因子以外の因子が共通する複数の項については、本情報処理装置は、数値演算子で数値として明示されている因子を加算する。以下に、演算結果を例示する。
(a×'1'+a×'m')=a×'(1+m)'
(a×'2'+a×'4')=a×'6'
(a×'1'+b×'m')は、これ以上加算できない。
(a+a+c)=(a×'1'+a×'1'+c×'1')=(a×'2'+c×'1')
なお、第2の括弧”{}”内の複数の式表現同士は、加算できない。例えば、{a+a+c}の{}内のaとaの加算はできない。ただし、第2の括弧”{}”を和演算子で組み合わせた式表現において、{}内の位置が同一位置の式表現同士の加算は可能である。例えば、{a+a+c}+{a+b+c}={(a+a)+(a+b)+(c+c)}={(a×'1'+a×'1')+(a×'1'+b×'1')+(c×'1'+c×'1')}={a×'2'+(a×'1'+b×'1')+c×'2'}
さらに、減算は、数値に負数を用いることで、加算を用いて、実現できる。以下に負の数値の加算を例示する。
(a×'1'+a×'−m')=a×'(1−m)'
(a×'2'+a×'−4')=a×'−2'
(a+a×−1+c)=(a×'1'+a×'−1'+c×'1')=c×'1'
(ハードウェア構成)
次に、本実施形態に係る情報処理装置200の構成例について説明する。
図9は、情報処理装置200のハードウェア構成を例示する図である。情報処理装置200は、コンピュータプログラムを実行し、情報処理装置200の機能を提供するCPU13と、CPU13で実行されるプログラム、あるいは、CPU13が処理するデータを格納するメモリ12と、インターフェース15を介してCPU13に接続される入力部11と、インターフェース16を介してCPU13に接続される出力部14とを有する。さらに、情報処理装置200は、インターフェース31を介してCPU13に接続される通信部32と、インターフェース33を介してCPU13に接続される外部記憶装置34と、インターフェース35を介してCPU13に接続される着脱可能な記憶媒体アクセス装置36とを有する。
CPU13と、メモリ12および各インターフェース15、16、31、33、および35は、通常、CPU13の内部バスに接続される。インターフェース15は、一般的には、USB等のシリアルインターフェースである。入力部11は、キーボード、あるいは、マウス等のポインティングデバイスである。ポインティングデバイスは、機械的手段、光学的手段、または、静電容量でユーザの操作を検知するものでもよい。また、ポインティングデバイスとして、タッチパネルを用いてもよい。さらに、入力装置11としてスキャナを用いてもよい。
インターフェース16は、例えば、アナログのRGB(赤緑青)の指定を含むインターフェースである。ただし、インターフェース16は、シリアルまたはパラレルのデジタル信号インターフェースでもよい。例えば、IEEE1349、USB、DVI(Digital Visual Interface) 、HDM(High Definition Multimedia Interface) 等でもよい。出力部14は、例えば、液晶ディスプレイ、プリンタ等である。
インターフェース31、33、および35は、USB等のシリアルインターフェース、SCSI(Small Computer System Interface)、IDE(Integrated Drive Electronic
s)等のパラレルインターフェースである。通信部32は、Ethernet(登録商標)等のL
AN基板である。
このような情報処理装置の具体的な例としては、パーソナルコンピュータを例示できる。また、このような情報処理装置は、クライアント装置とサーバ装置を用いても構成できる。そして、サーバ装置としては、JSP1.4(登録商標)、ウェブサーバにはTomcat(登録商標)5.0を含むコンピュータを例示できる。クライアント装置とサーバ装置は同一種類
のパーソナルコンピュータで実現してもよい。情報処理装置200の機能は、CPU13がプログラムを実行することで実現される。このプログラムは、メモリ13あるいは外部記憶装置34にインストールされる。プログラムは、通信部32を通じてネットワークから、あるいは、着脱可能な記憶媒体からインストールされる。したがって、このプログラムは、ネットワークあるいは着脱可能な記憶媒体等を通じて流通される。
図10は、第2実施形態に係る情報処理装置200の機能ブロックを例示する図である。情報処理装置200のCPU13は、例えば、メモリ12に実行可能に記憶された命令列を含むコンピュータプログラムを実行し、各機能ブロックの処理を実現する。
図10は、情報処理装置200の機能が、例えば、入力部11と、出力部14と、処理部40と、通信部32と、外部記憶装置34等によって実現できることを示している。処理部40は、図10に示した、CPU13、メモリ12を含む。また、外部記憶装置34は、処理部40で処理されるデータ、あるいは、処理部40で実行されるコンピュータプログラムAP1等を格納する。なお、情報処理装置200は、図10の構成のうち、少なくとも処理部40に相当するCPU13およびメモリ12を有していればよく、他の構成は適宜設ければよい。
処理部40は、アプリケーションプログラムAP1、共通関数ライブラリ46、データ部45を含む。なお、ここでは、図9のメモリ12がデータ部45の例である。
情報処理装置200のCPU13は、アプリケーションプログラムAP1を実行し、情報処理装置200の機能を提供する。例えば、情報処理装置200は、入力部11、通信部32等からデータの入力を受け付け、加工し、データ部45に格納する。そして、情報処理装置200は、出力部14、あるいは通信部32に接続されるネットワーク上の他の装置にデータを出力する処理を実行する。以下、情報処理装置200のCPU13がアプリケーションプログラムAP1を実行し、処理を行う場合に、単に、アプリケーションプログラムAP1が処理を行うものとして説明する。
例えば、アプリケーションプログラムAP1は、出力部14に、ユーザインターフェース画面を表示する。そして、アプリケーションプログラムAP1は、入力部11からのユーザ操作を検出し、情報処理装置200にそのユーザ操作に対応した指令を処理部40のプログラムあるいはハードウェア等に送る。ここで、検出されるユーザ操作は、例えば、各種入力欄へのユーザ入力データの検出、各種ボタンの押下、メニューの選択、コマンドの入力等である。
さらに、アプリケーションプログラムAP1は、出力部14に表示されたユーザインターフェース画面を通じて、ユーザからの式表現の定義、代数演算式の定義等を受け取り、データ部45に格納する。ただし、式表現の定義、代数演算式の定義等は、テキストエディタ等から入力されることもある。また、例えば、情報処理装置200は、入力部11として、スキャナを接続し、紙面上の式表現の定義、代数演算式等を入力してもよい。また、情報処理装置200は、通信部32を通じて、ネットワーク上の他のコンピュータ等から、式表現の定義、代数演算式等を入力してもよい。また、情報処理装置200は、通信
部32を通じて、ネットワーク上の他のコンピュータ等に、ユーザインターフェース画面を表示してもよい。以上のように、情報処理装置200は、入力部11、出力部14を設けることなく、通信部32を入力部11、出力部14の代わりとして用いてもよい。
さらにまた、アプリケーションプログラムAP1は、出力部14に表示されたユーザインターフェース画面を通じて、ユーザから特定の識別子(例えば、集合ID、トポロジーID等)の指定を受け取る。そして、アプリケーションプログラムAP1は、は、その識別子によって、ユーザが指定した式表現中から、その指定された識別子を含む式表現を抽出する。この処理は、例えば、基本システムで説明した商演算、あるいは、部分集合取得処理により実行される。そして、アプリケーションプログラムAP1は、その指定された識別子を含む式表現に対して種々の演算、例えば、数値計算処理を実行する。数値計算処理は、例えば、通常の四則演算、べき乗の処理等である。
以上のように、本実施形態では、情報処理装置200の主要な機能はCPU13で実行されるコンピュータプログラム、あるいはCPU11と連携する専用ハードウェア回路として実現される。ただし、入力部11、出力部14、処理部40、アプリケーションプログラムAP1その他、図10に示した構成要素は、例えば、それぞれユニット(Unit)という用語で記述してもよい。ここでユニットとは、モジュールあるいはテーブル等を含み、以下のソフトウェアの構成要素(Component)、または、ハードウェアの構成要素(Component)によって実現される。ただし、ユニットが、以下の例に限定されるわけではない。
すなわち、ユニットは、例えば、フィールド・プログラマブル・ゲートウェイ(FPGA)、特定用途向け集積回路(ASIC)、ゲートアレイ、論理ゲートの組み合わせ、信号処理回路、アナログ回路、その他の回路網等であって、上記それぞれの構成要素の機能を実現するものを含む。
ソフトウェアのユニット、例えば、ソフトウェアモジュールは、例えば、ソフトウェア部品、手続き型言語による部品、オブジェクト指向ソフトウェア部品、クラス部品、タスクとして管理される部品、プロセスとして管理される部品、関数、属性、手続き(プロシジャともいう)、サブルーチン(ソフトウェアルーチンともいう)、プログラムコードの断片・部分、ドライバ、ファームウェア、マイクロコード、データ、データベース、データ構造、テーブル、配列、変数、パラメータ等の構成要素を含む。さらに、これらの構成要素は、1または複数のCPU(Central Processing Unit)、あるいはDSP(Digital Signal Processor)等の処理装置上で実現される。
ソフトウェアのユニットは、C言語、C++、Java(登録商標)、Visual
Basic(登録商標)または他の多くの言語で記述できる。これらのソフトウェアのユニットは、1または複数の機械(あるいはコンピュータ)読み取り可能な記憶装置、例えば、ダイナミック・ランダム・アクセス・メモリ(DRAM)、スタティック・ランダム・アクセス・メモリ(SRAM)、消去およびプログラム可能なリード・オンリー・メモリ(EEPROMs)、フラッシュメモリ、およびこれらいずれかのメモリを含むメモリカード、磁気ディスク、例えば、ハードディスク、フレキシブルディスク(フロッピー(登録商標)等)、および他の着脱可能なディスク媒体、他の磁気媒体、例えば、テープ、光媒体、例えば、コンパクトディスク(CD)、DVD(Digital Vide Disk,Digital Versatile Disk)、ブルーレイディスク等に格納できる。ただし、ソフトウェアのユニットに含まれる命令は、有線ネットワークカードと有線ネットワーク、あるいは無線カードと無線ネットワークを通じて情報処理装置200で例示される機械、あるいは装置に転送あるいはローディングし、実行できる。そのような転送処理、あるいは、ローディング処理において、データ信号は例えば搬送波に組み込ま
れ(embodied as carrier waves)、有線あるいは無線ネットワークを転送される。ただ
し、データ信号が搬送波によらず、いわゆるベースバンド信号のまま転送される場合もある。
以上のような機能を実現するプログラム、命令コード、コードセグメントは、本技術分野の通常のプログラマであれば構成できる。また、上記機能を実現する電気回路網は、本技術分野の通常の回路技術者であれば構成できる。
(数値処理フロー)
以下、本情報処理装置200が実行する数値処理フローを例示する。図11は、数値因子を明示的に表示しない式表現から数値因子を明示的に表示した式表現である代数演算式に変換する数値因子化処理を例示する図である。以下、例示するフローチャートは、例えば、情報処理装置200のCPU13が、メモリ12に格納されたコンピュータプログラムにより実行する。ただし、以下に述べる処理の少なくとも一部は、情報処理装置200のCPU13がコンピュータプログラムを実行する代わりに、FPGA等を用いた専用のハードウェア回路が実行してもよい。
この処理では、情報処理装置200は、数値因子を明示的に表示しない式表現(以下、対象の入力式e1)の入力を受け、数値因子を明示的に表示した式表現(以下、戻り式r)を出力する。ここで、情報処理装置200は、対象の入力式e1と、戻り式rを、例えば、コンピュータプログラムの引数として入出力してもよい。また、情報処理装置200は、図9、図10に示した入力部11および出力部14等を通じて、対象の入力式e1と、戻り式rを入出力してもよい。また、情報処理装置200は、通信部32を介してネットワーク上の他の装置との間で、対象の入力式e1と、戻り式rを入出力してもよい。さらにまた、情報処置装置200は、例えば、外部記憶装置34に格納された入力式e1を読み出し、戻り式rを外部記憶装置34に格納するようにしてもよい。
また、図12は、情報処理装置200が、入力式e1=3a(b+c)+d{4e+f}を処理するときの情報処理装置200の内部状態を例示する遷移テーブルである。以下の説明で例示される入力式e1、戻り式r等に含まれる式表現は例示である。例えば、図12では、識別子a、b、c、d、e、およびfを含む式表現が例示されるが、情報処理装置200の処理がこのような式表現に限定される訳ではない。
図11の処理では、情報処理装置200は、まず、対象の入力式e1を入力し、さらに、戻り式rを宣言する(F1)。情報処理装置200は、入力式e1を、例えば、入力コンピュータプログラムの引数として情報処理装置200が取得する。一方、戻り式rを宣言するとは、例えば、情報処理装置200が、メモリ12上に、戻り式rの格納先を確保することをいう。
次に、情報処理装置200は、入力式e1がφか否かを判定する(F2)。入力式e1がφでない場合、情報処理装置200は、入力式e1中の始めの項t1を取得し、入力式e1から始めの項t1を削除する。さらに、情報処理装置200は、戻り項t2を宣言する(F3)。
ここで、F1−F3の処理を図12の例によって説明する。ここでは、式の構成を示すため、等号(=)を用いて説明する。ただし、等号は、本実施形態における説明のために用いる記号である。したがって、情報処理装置200の処理は、等号を用いずに実行できる。例えば、以下の加算等の演算は、演算実行前の式を情報処理装置200の第1の引数に対応するメモリ12上の領域に設定し、演算の実行結果を第2の引数に対応するメモリ12上の領域に格納するようにすればよい。なお、宣言された戻り項t2の初期値は、1
(あるいは単位元ε)である。
入力式e1=3a(b+3c)+d{4e+f}
始めの項t1=3a(b+3c)
したがって、図12で、始めの項t1を削除した入力式e1は、次の通りである。
入力式e1=d{4e+f}
次に、図11に戻って説明を継続する。情報処理装置200は、始めの項t1の長さが0か否かを判定する(F4)。なお、始めの項t1の長さが0ということは、始め項t1がφであることと同義である。
そして、始めの項t1の長さが0でない場合、情報処理装置200は、始めの項t1から始めの因子f1を取得し、始めの因子f1を始めの項t1から削除する(F5)。図12の例では、例えば、以下のようになる。
始めの因子f1=3a
また、始めの因子f1削除後の始めの項t1は、以下の通りである。
始めの因子t1=(b+3c)
次に情報処理装置200は、始めの因子f1が括弧型か否かを判定する(F6)。因子が括弧型とは、因子である式表現が第1の括弧”()”または第2の括弧”{}”で括られた形式であることをいう。始めの因子が括弧型のとき、情報処理装置200は、括弧内の式表現を再帰処理し、再帰処理した結果を始めの因子f1とする(F8)。ここで、再帰処理とは、コンピュータプログラムの処理では、再帰呼び出しともいい、括弧(”()”または”{}”)内の式表現を入力式e1として、図11の処理を再度実行することをいう。
F6の判定で、始めの因子f1が括弧型でない場合、情報処理装置200は、因子f1が数字を含むか識別子か否かを判定する(F7)。始めの因子f1が数字を含む識別子でない場合、情報処理装置200は、処理をF10に進める。一方、始めの因子f1が数字を含む識別子である場合、情報処理装置200は、始めの因子f1を数値化し、その結果を始めの因子f1とする(F9)。ここで、因子を数値化するとは、因子である識別子中の数字を数値化することをいう。例えば、始めの因子f1が3aの場合に、数値すると、a×'3'と表される。また、例えば、始めの因子f1が500円の場合には、円×’500
’に変換される。すなわち、数字の部分が数値演算子によって数値であることを明示され、数値識別子に変換される。一方、数字部分以外の部分は、通常の識別子(非数値識別子ともいう)となる。さらにまた、始めの因子f1が1以上の数字の場合には、’0’、’1’、’0123456789’のように変換される。また、始めの因子f1が複数の数字部分を複数含む場合、例えば、012ab345cdf89の場合には、各数字部分をそれぞれ数値識別子に変換
し、非数字識別子と積演算子で結合すればよい。例えば、012ab345cdf89は、ab×’012’×cdf×’345’×’89’のように変換すればよい。また、始めの因子f1が3.1234567890aの場合に、は、a×’3.1234567890’のように数値化すればよい。すなわち、数字部分が整数以外の場合、例えば、小数等の実数の場合には、小数等の実数として数値演算子により数値化すればよい。なお、数字部分と非数字部分を含む識別子の数字部分を数値識別子に変換した場合に、変換された数値識別子と、非数字部分による非数値識別子の順序は、情報処理装置200内の規則、あるいは、処理部40の規則として、例えば、メモリ12、外部記憶装置34に格納しておけばよい。したがって、例えば、f1が3aの場合に、'3'×aのように数値化してもよい。なお、因子が数字を含まない識別子である場合には、数値化したものは、数値化前のものと同一の式表現である。
次に、情報処理装置200は、数値化した始めの因子f1と戻り項t2との積を取得し、その結果を戻り項t2とする(F10)。そして、情報処理装置10は、制御をF4に戻す。
例えば、図12の例では、2回目のF4、F5の処理において、始めの項f1=(b+3c)となる。その結果、F7の処理において、再帰処理が実行される。そして、()が数値化され、f1=b+c×'3'が得られる。
同様に、入力式e1の第2項の第2因子{4e+f}の処理において、再帰処理が実行され、e×'4'+fが得られる。
F4の判定で、始めの項t1の長さが0である場合、始めの項t1についての処理が完了したので、情報処理装置200は、制御をF11に進める。そして、情報処理装置200は、戻り式rと、現在までに処理された戻り項t2との和を取得し、その結果を戻り式rとする(F11)。そして、情報処理装置200は、制御をF2に戻す。
F2の判定で、入力式eがφの場合には、処理対象の入力式が存在しないので、情報処理装置200は、制御をF12に進める。そして、情報処理装置200は、戻り式rを出力し(F12)、処理を終了する。以上の結果、以下の戻り式rが得られる。
r=a×'3'(b+c×'3')+d{e×'4'+f}
図13、図14は、数値計算処理を例示する図である。この処理では、情報処理装置200は、数値計算処理前の入力式e1の入力を受け、数値計算処理後の戻り式rを出力する。
また、図15A、図15Bは、情報処理装置200が、入力式e1=(a×b×'20
0'×/×c×c'3'+a×b×'300'×/×c×c×'4')/×e×e×'3'+(a
×b×'180'×/×c×c×'4')/×d×d×'2'を処理するときの情報処理装置200の内部状態を例示する遷移テーブルである。
図13、図14の処理では、情報処理装置200は、処理対象の入力式e1を入力し、式r1、および戻り式r2を宣言する(F20)。ここで、式r1は、作業用の記憶領域を示すパラメータである。
そして、情報処理装置200は、入力式e1がφか否かを判定する(F21)。入力式e1がφでない場合、情報処理装置200は、始めの項t1を取得し、入力式e1から始めの項t1を削除する。さらに、情報処理装置200は、戻り項t2を宣言する(F22)。なお、戻り項t2は、1(単位元ε)に、初期化する。
そして、情報処理装置200は、始めの項t1の積演算を実行し、積演算の結果をt1とする(F23)。ここで、始めの項t1の積演算とは、始めの項t1に含まれる因子間において、数値が明示されている因子間で乗算を実行することをいう。ただし、F23の処理では、始めの項t1に括弧が含まれている場合には、括弧を1つの因子として取り扱う。また、因子中に、除算を示す記号"/"が含まれる場合には、記号"/"の前後の数値('N')については除算を実行する。記号"/"は、除算演算子の一例である。
また、記号"/"の前後に、数値以外の共通の識別子がある場合には、記号"/"の前後の共通の識別子を削除する。つまり、情報処理装置200は、いわゆる約分を実行する。
また、始めの項t1に含まれる2つの因子に共通する識別子がべき乗で記述されている
場合には、情報処理装置200は、指数部分の加算を実行する。また、記号"/"の前後の2つの因子に共通する識別子がべき乗で記述されている場合には、情報処理装置200は、指数部分の減算を実行する。
例えば、図15Aの例では、以下の通りである。
始めの項t1=(a×b×'200'×/×c×c'3'+a×b×'300'×/×c×c×'4')/×e×e×'3'
始めの項t1の因子は、()、/×e×e、×'3'に区分される。このうち、/×eと×eとが約分される。その結果は、以下の通りである。
始めの項t1=(a×b×'200'×/×c×c'3'+a×b×'300'×/×c×c×'4')×'3'
次に、情報処理装置200は、始めの項t1に括弧因子があり、かつ、始めの項t1の長さが0でない、という条件が満たされるか否かを判定する(F24)。F24の条件が満たされる場合、情報処理装置200は、始めの項t1から始めの因子f1を取得する。そして、情報処理装置200は、始めの項t1から、始めの因子f1を削除する(F25)。F25−F28の処理は、始めの項t1中の括弧を処理する処理である。
図15Aの例では、以下の通りである。
f1=(a×b×'200'×/×c×c'3'+a×b×'300'×/×c×c×'4')
t1='3'
そして、情報処理装置200は、始めの因子f1が括弧型か否かを判定する(F26)。始めの因子f1が括弧型の場合、情報処理装置200は、括弧内の式表現に再帰処理を実行し、その結果をf1とする(F27)。図15A、図15Bの例では、f1=a×b×'600'+a×b×'1200'=a×b×'1800'が得られる(図15BのL1参照)。
一方、F26の判定で、始めの因子f1が括弧型でない場合、情報処理装置200は、制御をF28に進める。そして、情報処理装置200は、式t2と始めの因子f1との積演算を実行し、その結果を式t2とする(F28)。そして、情報処理装置200は、制御をF24に戻す。
積演算は、F23の場合と同様、数値と数値の乗算である。F28の処理でも、F23の処理と同様、乗算される戻りの項t2に対して、始めの因子f1の先頭に除算を示す記号/が指定されている場合には、数値間の除算が実行される。また、F28の処理で、乗算される戻りの項t2および始めの因子f1の少なくとも一方にべき乗の表現が含まれている場合には、べき乗の底が共通である指数間で指数部分の数値の加算が実行される。
「乗算される戻りの項t2および始めの因子f1の少なくとも一方」としたのは、べき乗表現ではない因子f1については、底がf1であり指数が1であるべき乗とみなすことで、必ずしも戻りの項t2および始めの因子f1の両方がべき乗でなくても、べき乗の演算が実行できるからである。
また、F28の処理で、乗算される戻りの項t2および始めの因子f1の少なくとも一方にべき乗の表現が含まれ、始めの因子f1の先頭に除算を示す記号/が指定されている場合には、べき乗の底が共通である指数間で指数部分の数値の減算が実行される。
さらにまた、F28の処理で、始めの因子f1の先頭に除算を示す記号/が指定され乗算され、戻りの項t2および始めの因子f1の双方に共通する識別子が含まれている場合には、共通の識別子が削除される。すなわち、いわゆる約分が実行される。情報処理装置
200のCPU13は、代数演算部の一例として、FF23−28の処理を実行する。
一方、F24の判定で、始めの項t1に括弧因子がない場合、あるいは、始めの項t1の長さが0である場合には、情報処理装置200は、制御をF29に進める。そして、情報処理装置200は、式r1と戻り項t2の和を取得し、その結果を式r1とする(F29)。
図15A、図15Bの処理例では、以上のF22−F29の処理を再帰的に事項した結果、戻りの項t2=a×b×’1800’、始めの項f1=’3’となり、戻りの項t2=a
×b×’5400’、r1=a×b×’5400’となる(図15BのL2参照)。
また、F21の判定で、入力式e1の長さが0である場合に、情報処理装置200は、制御を図14のF30に進める。そして、情報処理装置200は、式r1がφであるか否かを判定する(F30)。
そして、式r1がφでない場合、式r1から始めの項t1を取得し、項t1を式r1から削除する(F31)。次に、情報処理装置200は、式r1中に、数値部分以外の部分について、始めの項t1と等しい他の項があるか否かを判定する(F32)。
例えば、図15Bの例では、2回の再帰処理が終了した後の式の状態(図15BのL3)においては、式r1は以下の通りである。
r1=a×b×'5400'+a×b×'1440'
そして、式r1中に、数値部分以外の部分について、始めの項t1と等しい他の項がある場合、情報処理装置200は、数値以外の部分が始めの項t1と等しい他の項を式r1から削除する。さらに、数値以外の部分が始めの項t1と等しい他の項と、始めの項t1との間で、数値部分の和演算(加算)を実行する。そして、和演算の結果をt1とする(F33)。そして、情報処理装置200は、戻り式r2と始めの項t1との和を取得し、その結果を戻り式r2とする(F34)。そして、情報処理装置200は、制御をF30に戻す。このとき、戻りの式r2は、以下の通りである(図15BのL4参照)。
r2=a×b×'6840'
F30の判定で、式r1がφになると、情報処理装置200は、制御をF35に進める。そして、情報処理装置200は、戻り式r2を出力する(F35)。
図16は、識別子の置換処理を例示する図である。この処理では、情報処理装置200は、数値計算処理前の入力式e1と、置換情報e2の入力を受け、識別子置換後の戻り式rを出力する。また、図17は、情報処理装置200が、入力式e1=A×/(B×C)を処理するときの情報処理装置200の内部状態を例示する遷移テーブルである。
置換情報は、置換前の式表現と置換後の式表現の組みを定義する。例えば、A=aという置換情報は、式表現Aを式表現aに置換することを指定する。置換情報として複数の置換の指定を定義してよい。例えば、図17に示す置換情報e2として、A=a+B=b+C=cのように、3つの置換の指定がなされている。この指定では、Aはaに置換され、Bはbに置換され、Cはcに置換される。
置換処理の用途は、例えば、式表現で数量を表現する場合の単位の変換を例示できる。例えば、ミリメートルで記述された式表現をセンチメートル、メートルのように長さを換算する場合である。その他、面積、体積、重量、角度、時間、速度、力、エネルギー、熱量等の様々な物理量、あるいは情報量等の単位の置換が可能である。
図16の処理では、情報処理装置200は、入力式e1、置換情報e2を入力する(F40)。そして、情報処理装置200は、入力式e1が0であるか、否かを判定する(F41)。
入力式e1が0でない場合、情報処理装置200は、始めの項t1を取得し、入力式e1から始めの項t1を削除する。さらに、情報処理装置200は、戻り項t2を宣言する(F42)。戻り項t2の初期値は1(単位元ε)とする。
次に、情報処理装置200は、始めの項t1の長さが0であるか否かを判定する(F43)。始めの項t1の長さが0でない場合、情報処理装置200は、始めの項t1から始めの因子f1を取得し、始めの項t1から始めの因子f1を削除する(F44)。
次に、情報処理装置200は、始めの因子f1が括弧であるか否かを判定する(F45)。始めの因子f1が括弧型である場合に、情報処理装置200は、括弧内の式表現について、置換処理を再帰処理として実行し、再帰処理の結果を括弧内に入れて始めの項f1とする(F47)。そして、情報処理装置200は、制御をF48に進める。
一方、F45の判定で、因子が括弧型でない場合、情報処理装置200は、始めの因子f1が識別子であって、置換情報で指定されている識別子か否かを判定する(F46)。始めの因子f1が識別子であって、置換情報で指定されている識別子である場合、情報処理装置200は、置換情報に基づき、置換前の識別子を置換後の識別子に置換する。そして、情報処理装置200は、戻りの項t2と置換した結果との積を取得し、取得した積を戻りの項t2とする(F48)。そして、情報処理装置200は、制御をF43に戻す。なお、F46の判定で、始めの因子f1が置換情報で指定された識別子でない場合も、情報処理装置200は、制御をF43に戻す。
また、F43の判定で、始めの項t1の長さが0である場合、情報処理装置200は、制御をF49に進める。そして、情報処理装置200は、戻り式rと戻りの項t2との積を取得し、取得した積を戻り式rとする(F49)。そして、情報処理装置200は、制御をF41に戻す。
さらに、F41の判定で、入力式e1がφである場合に、情報処理装置200は、制御をF50に進める。そして、情報処理装置200は、戻り式rを出力する(F50)。
例えば、図17の例では、e1=A×/(B×C)について、置換情報A=a+B=b+C=cが指定されている。この場合、入力式e1には、項が1つだけ含まれている。したがって、始めの項t1=A×/(B×C)を取得すると、入力式は、e1=φとなる。
さらに、始めの項t1中で、始めの因子f1=Aを所得すると、t1=/(B×C)となる。そして、始めの因子f1は、置換情報A=aによって、f1=aに置換される。さらに、戻りの項t2=aとなる。
次に、/が始めの因子として取得され、置換されることなく戻りの項t2と積演算され、t2=a×/となる。
同様に、順次、始めの項f1として、(B×C)が取得される。(B×C)のうち、括弧内の式表現に置換処理が再帰処理として実行される。その結果、B、およびCがそれぞれ取得され、順次置換されて戻りの項t2と積演算される。その結果、t2=a×/(b×c)となる。
図18は、フィルタ処理を例示する図である。この処理では、情報処理装置200は、数値計算処理前の入力式e1と、フィルタ識別子e2の入力を受け、識別子置換後の戻り式rを出力する。また、図19A、図19Bは、情報処理装置200が、入力式e1をフィルタ指定b+c+d+/+'[0...9]'で処理するときの情報処理装置200の内部状態を例示する遷移テーブルである。ここで、入力式e1=a×(b×c×'200'×/×d×d×'3')/×e×e×'3'+f×(b×c×'180'×/×d×d×'4')/×g×g×'2'である。
ここで、フィルタ識別子e2には、入力式から削除されない識別子が指定される。複数種類の識別子を削除する場合には、削除する複数の識別子を和演算で組み合わせて指定する。また、[0...9]は、数字0から9までを要素する集合を説明するため便宜的に導入した形式である。したがって、数字の指定は、[0...9]に限られず、フィルタ指定する数字を個々に列挙してもよい。また、集合の指定が[]に限定される訳でもない。
フィルタ処理の用途は、式表現中で複数の項がそれぞれ異なる因子を含む場合に、例えば、項と項との間の因子の違い無視して式表現を処理したいときに、因子の除去に用いられる。項と項との間の因子の違い無視して式表現を処理したいときとは、例えば、式表現が商品ごとの売り上げの加算値を表す場合に、商品の違いを無視して、売り上げの総計を算出したいときである。この場合に、例えば、商品の種類を示す識別子×商品ごとの売り上げという形式で項が記述され、各商品を加算して形式で式表現が作成される。この場合に、商品の種類を示す識別子を除外して、フィルタ処理で削除することで総計を求めることができる。
図18の処理では、情報処理装置200は、入力式e1とフィルタ識別子e2を入力する(F60)。そして、情報処理装置200は、入力式e1が0であるか、否かを判定する(F61)。
入力式e1が0でない場合、情報処理装置200は、始めの項t1を取得し、入力式e1から始めの項t1を削除する。さらに、情報処理装置200は、戻り項t2を宣言する(F62)。戻り項t2の初期値は1(単位元ε)とする。
次に、情報処理装置200は、始めの項t1の長さが0であるか否かを判定する(F63)。始めの項t1の長さが0でない場合、情報処理装置200は、始めの項t1から始めの因子f1を取得し、始めの項t1から始めの因子f1を削除する(F64)。
次に、情報処理装置200は、始めの因子f1が括弧であるか否かを判定する(F65)。始めの因子f1が括弧型である場合に、情報処理装置200は、括弧内の式表現について、置換処理を再帰処理として実行し、再帰処理の結果を括弧内に入れて始めの項f1とする(F67)。そして、情報処理装置200は、制御をF68に進める。
一方、F65の判定で、因子が括弧型でない場合、情報処理装置200は、始めの因子f1が識別子であって、フィルタ識別子e2で指定されている識別子か否かを判定する(F66)。始めの因子f1が識別子であって、フィルタ識別子e2で指定されている識別子である場合、情報処理装置200は、始めの項t1と始めの因子f1との積を取得し、取得した積を戻りの項t2とする(F68)。そして、情報処理装置200は、制御をF63に戻す。
また、F66の判定で、始めの因子f1が置換情報で指定された識別子でないには、情報処理装置200は、そのまま制御をF63に戻す。その結果、戻り項2に始めの因子f
1の積を追加されないことになる。
また、F63の判定で、始めの項t1の長さが0である場合、情報処理装置200は、制御をF69に進める。そして、情報処理装置200は、戻り式rと戻りの項t2との積を取得し、取得した積を戻り式rとする(F69)。そして、情報処理装置200は、制御をF61に戻す。
さらに、F61の判定で、入力式e1がφである場合に、情報処理装置200は、制御をF70に進める。そして、情報処理装置200は、戻り式rを出力する(F70)。
例えば、図19A、図19Bでは、以下のように処理されている。
入力式e1=a×(b×c×'200'×/×d×d×'3')/×e×e×'3'+f×(b×c×'180'×/×d×d×'4')/×g×g×'2'に対して、
t1=a×(b×c×'200'×/×d×d×'3')/×e×e×'3'
f1=aとなる。
しかし、識別子aは、フィルタ識別子に指定されていないので、戻り項t2に和演算されない。
次に、t1=(b×c×'200'×/×d×d'×3')/×e×e×'3'
f1=(b×c×'200'×/×d×d×'3')となる。f1は、再帰処理される。そして、括弧内の識別子のうち、識別子eは、フィルタ識別子で指定されていない。その結果、e以外の因子が維持される。したがって、戻りの項t2=b×c×'200'×/×d×d×'3'となる。始めの項t1が
t1=f×(b×c×'180'×/×d×d×'4')/×g×g×'2'についても同様である。この場合には、識別子f、g以外の識別子が維持される。以上の結果、戻りの式r2は、以下の通りとなる。
r2=b×c×'200'×/×d×d×'3'+b×c×'180'×/×d×d×'4'×'2'
以上述べたように、本実施形態の情報処理装置200によれば、式表現中の数値の記号を明示的な数値に変換する。そして、式表現中で、数値と数値以外の部分を区別して、加算、積、乗算、べき乗等の演算を実行できる。その結果、例えば、事物の識別子と、その事物に関連するする量を積演算し、複数種類の事物に関連する数量を事物の種類ごとに数式で加算できるようになる。また、減算は、負数の加算で実現できる。例えば、商品の売り上げ、商品サービスの見積もり額、作業の工数等、様々な事物と事物に関連する量を管理できる。例えば、売り上げ=商品1×売り上げ額+商品2×売り上げ額+・・・のように、記述し、同一商品ごとに、売り上げをまとめることができる。
また、例えば、除算を表す識別子"/"を導入することにより、除算を表す識別子"/"の前後で、共通の識別子を削除し、いわゆる約分を実行できる。例えば、売り上げ=商品1×'50'×YEN/個×個×'10'+・・・のように、単価と個数で示される売り上げは、売り上げ=商品1×'50'×YEN×'10'+・・・=商品1×'500'×YEN+・・・のよう
に、簡略化した売り上げの式表現に変更できる。
また、例えば、べき乗を示す式表現を導入することで、共通の識別子をそれぞれ底とするべき乗同士の乗算または除算を指数同士の加算、減算として処理できる。
さらに、本情報処理装置200は、図16のような置換関数の処理によって、式表現中
の項、因子等を置換し、例えば、物理量等の単位換算を実行できる。さらに、本情報処理装置200は、図18のようなフィルタ関数の処理によって、事物の数量を記述した式表現中で、不要な因子を削除することで、複数種類の事物の相違を無視した合計値の算出を実行できる。
情報処理装置200は、以上のような処理を従来のようなデータ構造が固定されたデータベースによることなく、柔軟な式表現の記述の対して実行できる。その結果、情報処理装置200は、例えば、管理対象の事物に関する情報を極めて柔軟な形式でメモリ12、外部記憶装置34等に保持する一方、管理対象に要求される様々な情報処理機能を実現できる。
上記第2実施形態では、減算は、負数の加算として実現した。しかし、このような処理に代えて、減算を示す演算子を用いてもよい。例えば、an−am=a×’n’−a×’
m’=aבn−m’のように演算を実現してもよい。ただし、式表現自体は、和演算子と積演算子で記述されるため、別途減算を示す演算子を導入することにより、減算を示す演算子を実行する処理が必要となる。したがって、式表現との整合性を考慮する場合には、上記第2実施形態のように負数の加算によって減算を実現することが望ましい。
《第3実施形態》
図20、図21を参照して、第3実施形態に係る情報処理装置200について説明する。上記第1実施形態、および第2実施形態では、情報処理装置200が有するハードウェア構成および数値因子化処理、数値計算処理、置換処理、および、フィルタ処理について説明した。本実施形態では、第1実施形態、および第2実施形態で説明した情報処理装置200を適用した応用装置の例を説明する。したがって、基本的には、第1実施形態、および第2実施形態の構成要素は、そのまま第3実施形態でも用いられる。
図20は、第3実施形態に係る情報処理装置200の処理を例示するフローチャートである。図20の処理では、情報処理装置200は、種々の事物に関する情報の入力を例えば入力部11から受け、式表現の形式でメモリ12、または外部記憶装置34に格納する。この場合の事物は、例えば、集合と、集合に含まれる事物を特定する識別子と、その事物の属性値と、その事物の数量と、集合の数量を含む。
説明のための簡単な例として、商店で販売されている商品について考える。この商店では、野菜かごと、野菜セットが販売されている。野菜かごの内容は、人参が2本と、リンゴ(A種)が3個であるとする。また、人参は1本100円であり、リンゴは1個200円であるとする。
また、野菜セットの内容は、卵が60個、ハム3パック、リンゴ(B種)4個である。また、卵は、12個300円であり、ハムは1パック300円であり、リンゴ(B種)は、1個180円である。
今、野菜かごを3かごと、野菜セットを2セット購入する場合の費用を考える。式表現では、以上の状況は、以下の式AP1で表すことができる。
野菜かご×(人参×100円×/×本×2本+リンゴ×200円×/×1個×3個)/×かご×3かご+
野菜セット×(たまご×300円×/×12個×60個+ハム×300円×/×1パック×3パック+リンゴ×180円×/×1個×4個)/×セット×2セット・・・(数AP1)
ここで、野菜かご、野菜セット等は、集合を識別する情報ということができる。また、”野菜かご×”に続く第1の括弧内の情報は、集合”野菜かご”の構成要素ということができる。したがって、人参、リンゴ等の物品名は集合”野菜かご”の構成要素を識別する情報ということができる。また、“人参×100円×/×本”で指定される“100円”は、構成要素の属性値ということができる。
図20のように、情報処理装置200は、まず、数AP1のような式表現の入力を受け付ける(F101)。このような式表現は、例えば、テキストエディタで情報処理装置200に入力してもよい。また、出力部14、例えば、表示装置上のグラフィカルユーザインターフェースを用いて、専用の入力画面を作成し、入力部11を通じて式表現を情報処理装置200に入力できるようにしてもよい。また、例えば、紙面に記述された情報をスキャナから読み取り、OCR(Optical Character Reader)による文字列に変換して情報処理装置200に入力するようにしてもよい。また、情報処理装置200は、通信部32を介して、ネットワーク上の他の情報処理装置から入力を受け付けるようにしてもよい。
図20の処理では、情報処理装置200は、このような式表現から、ユーザが着目する事物、あるいは、集合に関する情報を切り出し、数値因子化し、その事物に関する属性値を処理する。例えば、購入する複数の商品中の特定の商品の属性値(例えば、商品の単価)に基づく特徴量(合計の購入額等)を算出する。そこで、情報処理装置200は、次に、注目する事物あるいは物品の指定を受け付ける(F102)。注目する事物あるいは物品の指定は、入力部11、例えば、キーボード等から入力を受け付けるようにすればよい。ただし、通信部32を介して、ネットワーク上の他の情報処理装置から入力を受け付けるようにしてもよい。情報処理装置200のCPU13は、指定対象情報の入力を受け付ける手段の一例として、F102の処理を実行する。
例えば、情報処理装置200は、上記数AP1の例では、”リンゴ”の指定を受け付ける。すなわち、リンゴのような商品の指定が事物の指定の一例である。なお、事物の指定としては、例えば、提供されるサービスの種類等も例示できる。
次に、情報処理装置200は、注目する事物に関する式表現を切り出す(F103)。例えば、F102の処理で、”リンゴ”の指定を受け付けた場合、数AP1からリンゴに関する式表現を取得する。このように、数AP1のような式表現から特定の識別子(例えば、”リンゴ”)に関連する式表現を取得する演算を分割写像という。分割写像として、図5A、図5Bに示した商演算処理を例示できる。ここでは、数AP1を商演算される式表現、例えば、"リンゴ"を商演算する因子として、図5Aに示した商演算を実行する。すると、情報処理装置200は、分割写像の結果として、リンゴに関連する以下の数AP2を得る。
野菜かご×(リンゴ×200円×/×1個×3個)/×かご×3かご+野菜セット×(リンゴ×180
円×/×1個×4個)/×セット×2セット・・・(数AP2)
次に、情報処理装置200は、F103の処理で求めた式表現を数値因子化する(F104)。数値因子化処理に関しては、第2実施形態の図11と同様である。すると、情報処理装置200は、式表現数AP3を得る。情報処理装置200のCPU13は、属性値に変換する手段の一例として、F102の処理を実行する。
野菜かご×(リンゴ×円×'200'×/×個×個×'3')/×かご×かご×'3'+野菜セット×(
リンゴ×円×'180'×/×個×個×'4')/×セット×セット×'2'・・・(数AP3)
次に、情報処理装置200は、集合の区別をなくし、集合によらず、注目する事物の情報を取得する。例えば、数AP3の例では、野菜かご、および野菜セットの区別をなくす。そのため、数AP3を入力式とし、リンゴ+/+円+個+かご+セット+'[0...9]'をフィルタ識別子として、フィルタ処理を実行する(F105)。
次に、情報処理装置200は、数値因子化した式表現を基に数値計算を実行する(F106)。数値計算処理に関しては、第2実施形態の図13、図14と同様である。情報処理装置200のCPU13は、特徴量を算出する手段の一例として、F106の処理を実行する。
そして、情報処理装置200は、得られた数値計算結果を出力部14に出力する(F107)。ただし、出力先は、図20の処理を実行する関数の戻り値として定義されるメモリ12上の領域でもよい。また、出力先は、例えば、外部記憶装置34上のファイルであってもよい。また、出力先は、例えば、通信部32を介して接続されるネットワーク上の他の情報処理装置でもよい。
以上の処理の結果、例えば、以下の数AP3のような結果が得られる。その結果、上記の数AP1で定義される式表現中でリンゴの購入分は、3240円であることが分かる。
なお、以上の説明では、数AP3の式表現によって、リンゴに関する価格を算出する例を示したが、情報処理装置200の処理が数AP1に限定される訳ではない。例えば、商品の見積もり、サービスの見積もり、請負作業の見積もり、原材料の見積もり等、式表現を用いて記述される様々な事物あるいは物品、事物の集合、あるいは物品の集合、事物の属性値、あるいは物品の属性値等、様々な対象に関して、図20のような処理を実行できる。
したがって、ユーザは、入力部11、通信部32その他、様々な装置を介して入力される事物、例えば物品等に関する情報を式表現で記述し、メモリ12、外部記憶装置34に格納し、管理することができる。例えば、管理している複数の集合に含まれる特定の事物に関する属性値の合計を算出できる。
図21に、式表現で記述される集合に属する事物の属性値の合計値を求める処理を例示する。図21で、F112A、F113A、F113B以外の処理は、図20と同様である。そこで、図20と同一の処理については、説明を省略する。
図21では、情報処理装置200は、例えば、注目する集合の指定を受け付ける(F112A)。そして、そして、情報処理装置200は注目する集合に関する式表現を切り出す(F113A)。さらに、情報処理装置200は、F113Aで得られた式表現(集合)中で、事物の区別を削除するため、フィルタ処理を実行する(F113B)。
例えば、数AP1の例では、情報処理装置200は、F112Aにおいて、集合として、野菜かごの指定を受ける。そして、情報処理装置200は、F113Aにおいて、例えば、数AP1を商演算される式表現、"野菜かご"を商演算する因子として、図5Aに示した商演算を実行する。すると、情報処理装置200は、以下の数AP4を得る。
野菜かご×(人参×100円×/×本×2本+リンゴ×200円×/×1個×3個)/×かご×3かご・・・(数AP4)
さらに、情報処理装置200は、数AP4に対して、フィルタ後に残す識別子として、'野菜かご+/+円+個+かご+かご+[0...9]'を指定して、フィルタ処理を実行する。その結果、数AP4の事物の区別、例えば、にんじん、リンゴが削除される。さらに、情報処理装置200は、数値因子化処理、数値計算処理、および出力を実行し、以下の処理結果を得る。すなわち、野菜かごの合計が2400円であることが分かる。
野菜かご×円×'2400'・・・(数AP5)
以上述べたように、図21によれば、注目する集合に含まれる事物の属性値の合計値を算出できる。図21では、数AP1で示される式表現中の"野菜かご"の合計を求めたが、情報処理装置200の処理が、数AP1に限定される訳ではない。
すなわち、情報処理装置200は、式表現のように、項の和、あるいは項の集合と、項に含まれる因子とによって、従来のデータベースシステムのようにデータ構造したデータとデータへの情報処理を行う代わりに、柔軟な構造で様々な事物、例えば物品に関する情報のコンピュータ上の処理を可能とする。第3実施形態では、さらに、そのような情報のうち、数値因子の部分を明示的な記述とすることで、様々な事物あるいは物品に関連する数値上の処理を可能とする。例えば、情報処理装置200は、物品の個数、価格、あるいはそれらの集計値に関する取り扱いを可能とする。したがって、情報処理装置200によれば、従来、人がメモを取り、あるいはコンピュータ上の固定のデータ構造を用いて行っていた管理処理が、式表現による柔軟な形態で実行可能となる。
したがって、情報処理装置200が提供する情報処理機能は、従来のデータ構造が固定されたデータベースを用いる場合と比較して、飛躍的な設計自由度と、情報処理の改造容易化を実現する。例えば、数AP1のような式表現で記述された情報から、簡易に管理対象の特徴量、例えば、特定商品の合計金額、特定の商品集合の合計金額等を算出できる。
《第4実施形態》
図22を参照して、第4実施形態に係る情報処理装置200について説明する。上記第3実施形態では、第1実施形態の情報処理装置、および第2実施形態で説明した情報処理装置200を適用した応用装置の例として、式表現で表現される事物の特徴量の1つとして、特定商品の価格、特定の商品集合の価格を算出する処理を例示した。第4実施形態では、式表現を事物の設計データに適用した情報処理装置200を例示する。したがって、基本的には、第1実施形態から第3実施形態の構成要素は、そのまま第4実施形態でも用いられる。
図22は、第4実施形態に係る情報処理装置200の処理、例えば、設計対象の特徴量の算出処理を例示する図である。図22の処理では、情報処理装置200は、種々の設計対象に関する情報の入力を例えば入力部11から受け、式表現の形式でメモリ12、または外部記憶装置34に格納する。この場合の設計対象は、例えば、建築物、機械、機器、容器等の構造物、電気回路、電子回路、半導体の構造、化学物質の構造、薬品の構造、分子の構造、コンピュータ上でシミュレーションされるシミュレーション対象のモデル構造等、特に限定はない。ただし、実施例1、2と同様、設計対象である事物、物品等は、例えば、集合と、集合に含まれる事物を特定する識別子と、その事物の属性値と、その事物の数量と、集合の数量を含む。実施例3では、構造物の特徴量の算出を例示する。すなわち、以下では、一例として、設計対象の3次元オブジェクトを処理する処理例を説明する。ここで、3次元オブジェクトは、体積1200立方ミリメートル、直方体の側面が縦5センチメートル、横12ミリメートルであると想定する。以下、このような直方体について、側面からの奥行きを求める。また、以下では、設計対象の特徴量を特性ともいう。特性は、例えば、事物の属性値、物品の属性値等を含み、例えば、設計上の主要な管理項目となる情報等として例示できる。
図22のように、情報処理装置200は、設計対象の構造、設計対象に含まれる要素の識別子、要素の属性値、要素と構造との関係、設計対象の特性等、特徴量示す式表現を入力し、式表現をメモリに格納する(F121)。
さらに、奥行きを記述する式表現中の項および因子の式を設定する。ここでは、例えば、設計対象を示す3次元オブジェクトについて、設計対象に含まれる要素の識別子、要素の属性値を例示すると以下式数AP6の通りである。
体積=100mm^3+縦=5cm+横=12mm+cm=10mm(数AP6)
ここで、例えば、体積=1200mm^3+縦=5cm+横=12mm等は要素の属性値ということができる。さらに、cm=10mmは、単位の換算の定義を示す式表現である。このような設計対象に含まれる要素の識別子、要素の属性値等については、特徴量を求める処理実行時に、情報処理装置200が入力部11から入力を受け付けるようにしてもよい。また、情報処理装置200は、事前に設計対象を記述した式表現をデータベース(例えば、図10のデータ部45、外部記憶装置34等)に格納しておき、特徴量を求める処理実行時に、データベースから設計対象に含まれる要素の識別子、要素の属性値、要素と構造との関係等を読み出すようにしてもよい。なお、データベースには、式表現で設計対象を記述して置けばよい。
次に、情報処理装置200は、特徴量を求める式表現の入力を受け付ける(F122)。例えば、体積、側面の縦と横の寸法が既知の直方体について、奥行きは、以下の式数AP7で記述できる。この奥行きの式表現は、要素と構造との関係と呼ぶこともできる。情報処理装置200のCPU13は、指定対象情報の入力を受け付ける手段として、F122の処理を実行する。
体積×/(縦×横)・・・(数AP7)
次に、情報処理装置200は、注目する式表現中の項、因子の式表現を取得し、置換処理で特徴量の式表現に設定する(F123)。式数AP7の例では、項が1つの式表現であるので、式数AP7に含まれるそれぞれの因子に対して、具体的な式表現を設定することになる。数AP7の各因子に設定すべき式表現は、式数AP6で与えられている。そこで、式数AP6で与えられる各要素の式表現で、式数AP7の各因子を置換すればよい。置換としては、情報処理装置200は、第2実施形態で説明した置換処理(図16)を実行すればよい。情報処理装置200は、置換処理によって、式数AP8を得る。
1200mm^3/(5cm×12mm)・・・(数AP8)
次に、情報処理装置200は、式表現中の単位を換算するための置換処理を実行する(F124)。置換処理のパラメータは、式数AP6中のcm=10mmで指定される。単位換算の結果、情報処理装置200は、式数AP9を得る。
1200mm^3/(50mm×12mm)・・・(数AP9)
さらに、情報処理装置200は、式表現に対して、数値因子化処理を実行する(F125)。数値因子化処理は、第2実施形態で説明した数値因子化処理(図11)を実行すればよい。数値因子化処理の結果、情報処理装置200は、式数AP10を得る。情報処理装置200のCPU13は、構成要素の属性値に変換する手段の一例として、F122およびF124の処理を実行する。
mm×^3×'1200'×/(mm×'50'×mm×'12')・・・(数AP10)
さらに、情報処理装置200は、数値因子化された式表現に対して、数値計算処理を実
行する(F126)。情報処理装置200のCPU13は、特徴量を算出する手段の一例として、F122およびF126の処理を実行する。
そして、情報処理装置200は、求めた特徴量を出力する(F117)。すなわち、式数AP10の演算結果として、奥行き2mmが出力される。なお、このとき因子mm×^3と因子/(mm×'50'×mm×'12')との間で識別子であるmmの約分が実行される。
以上述べたように、第4実施形態に係る情報処理装置200は設計対象の構造、設計対象に含まれる要素の識別子、要素の属性値、要素と構造との関係、設計対象の特性を示す式表現の入力を受け付ける。また、情報処理装置200は、図10のデータ部45等で例示されるデータベースに、設計対象の設計対象の構造、設計対象に含まれる要素の識別子、要素の属性値、要素と構造との関係、設計対象の特性、属性値等示す式表現を格納しておく。また、要素は識別子で特定される。ただし、情報処理装置200は、ネットワーク上の他の情報処理装置から、設計対象の設計対象の構造、設計対象に含まれる要素の識別子、要素の属性値、要素と構造との関係、設計対象の特性、属性値等示す式表現を取得してもよい。
そして、情報処理装置200は、構造物の特徴量を記述した式表現を受け付ける。この場合に受け付ける式表現は、項、因子等の要素に自然言語等を含む識別子を用いて記述してよい。そして、情報処理装置200は、自然言語等を項、因子等の要素に含む構造物の特徴量の式表現を、構造物の要素の属性値を用いた式表現に置換する。さらに、情報処理装置200は、単位換算、数値因子化処理、および数値計算処理を実行することにより、構造物の特徴量を算出することができる。
すなわち、第4実施形態の情報処理装置200は、自然言語等によって記述される設計対象の構造、設計対象に含まれる要素の識別子、要素の属性値、要素と構造との関係、設計対象の特性等示す式表現をメモリ12、外部記憶装置34等に格納しておき、データベースを構築することができる。そして、構築された設計対象を記述するデータベースから構造物の式表現に含まれる要素の属性値を取得し、構造物の特徴量を出力できる。
以上のような処理は、構造物に限定される訳ではなく、電気回路、電子回路、半導体の構造、化学物質の構造、薬品の構造、分子の構造、コンピュータ上でシミュレーションされるシミュレーション対象のモデル構造等、様々な対象に適用できる。
《第5実施形態》
図23を参照して、第5実施形態に係る情報処理装置200について説明する。図23のように、第5実施形態に係る情報処理装置200は、処理部40とデータ部45を有する。ただし、基本的には、第1実施形態から第4実施形態で説明した構成要素は、そのまま第5実施形態でも用いることができる。
また、図23では省略しているが、第2実施形態の図9と同様に、情報処理装置200は、入力部11、出力部14、通信32、外部記憶装置34、着脱可能記憶媒体アクセス装置36等を接続してもよい。ただし、入力部11、出力部14、通信32、外部記憶装置34、着脱可能記憶媒体アクセス装置36等は、必須の構成ではなく、情報処理装置200に要求される仕様にしたがって、適宜設ければよい。
処理部40の構成は、第1実施形態から第4実施形態と同様である。処理部40の機能は、例えば、CPU13がメモリ12上のコンピュータプログラムを実行することで実現される。処理部40は、データ部45内の式表現に対して、第1実施形態から第4実施形態で説明した処理と同様の処理を実行する。
また、例えば、処理部40は、代数演算部40Aを有する。代数演算部40Aは、因子の列として積演算子で結合される数値識別子間で乗算を実行し、前記項の組み合わせに対して数値識別子間で加算を実行する。代数演算部40Aの処理は、例えば、第2実施形態の図13、図14で例示される。
データ部45は、記憶部の一例であり、式表現で記述される対象情報を格納する。データ部45の構成は、第1実施形態から第4実施形態と同様である。
例えば、データ部45は、メモリ12、外部記憶装置34等に構築される。ただし、データ部45としては、外部記憶装置45を用いなくてもよい。また、外部記憶装置45に代えて、通信部32を介して接続されるネットワーク上の他の情報処理装置の外部記憶装置を用いてもよい。
ここで、例えば、データ部45に格納される対象情報は、識別子と、因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される。また、識別子は、数値を表す数値識別子を含む。
以上述べたように、情報処理装置200は、処理部40とデータ部45とによって、第1実施形態から第3実施形態と同様の処理を実行する。
情報処理装置200が、他の情報処理装置と式表現等の情報を授受するには、例えば、情報処理装置200に、通信部32を接続し、通信部32を介して、他の情報処理装置と通信すればよい。情報処理装置200は、通信部32から受信した式表現等の情報をデータ部45に格納すればよい。また、情報処理装置200は、代数演算等の加工を実行した式表現等の情報を通信部32を介して、他の情報処理装置と出力すればよい。
情報処理装置200に、着脱可能記憶媒体アクセス装置36が接続されている場合には、着脱媒体との間で式表現等の情報を授受すればよい。また、情報処理装置200に、入力部11、出力部14が接続されている場合には、情報処理装置200は、入力部11から式表現等の情報を入力し、出力部14に加工した式表現等の情報を出力すればよい。
したがって、少なくとも、代数演算部40Aを含む処理部40と、データ部45とよって、情報処理装置200は機能し、第1実施形態から第4実施形態で説明したものと同様、式表現に対する代数演算処理を実行する。したがって、本実施形態の情報処理装置200は、従来のようにデータモデルを固定することなく、様々な事物を式表現で記述し、データ部45に格納し、代数演算部40Aの処理の含む、式表現に対する処理を実行することができる。
以下、情報処理装置200が式表現を代数演算式に変換して実行する処理を例示する。ここでは、単価・数量を基に、処理対象(以下、オブジェクトともいう)を再帰的構造によって記述する。ここで、再帰的構造とは、例えば、式表現の第1の括弧“()”による項の集合を階層的に記述した構造、第2の括弧“{}”による項の並びを複数階層に渡って記述した構造をいう。なお、第1の括弧“()”による項の集合中の項の順序の入れ替えは可能であるが、第2の括弧“{}”による項の並びにおいて、項の順序の入れ替えはできない。再帰的構造は、階層的構造ということもできる。
以下の処理では、情報処理装置200は、再帰的構造によって記述されたオブジェクトを、階層別、オブジェクト別等で計算する。ここでは、以下のような商品、すなわち、買
い物セット1と買い物セット2を販売、あるいは購入する場合と想定する。
買い物セット1は2セットある。買い物セット1には、たまごと、ハムと、リンゴが含まれている。買い物セット1のたまご(300円/12個)は、60個ある。買い物セット1のハムは、ロースハム(300円/1パック)が3パックと、生ハム(500円/1パック)が1パックある。買い物セット1のリンゴは、青森産(180円/個)が1個、
宮城産(150円/個)が1個である。
一方、買い物セット2は、3セットある。買い物セット2には、梨とリンゴが含まれる。買い物セット2のなしは、山梨産(120円/個)が2個、山形産(100円/個)が3個である。買い物セット2のリンゴは、青森産(180円/個)が4個、福島産(200円/個)が5個である。
以上の商品を式表現で記述すると、以下の数FML1で表すことができる。
買い物セット1×(たまご×300円×/×12個×60個+ハム×(ロース×300円×/×1本×2
本+生×500円×/×1パック×1パック)+リンゴ×(青森産×180円×/×個×1個+宮城産
×150円×/×個×1個))/×セット×2セット+買い物セット2×(梨×(山梨産×120円×/×1個×2個+山形産×100円×/×1個×3個)+リンゴ×(青森産×180円×/×個×4個+福島産×200円×/×個×5個))/×セット×3セット・・・(数FML1)
このような商品を記述する式は、例えば、入力部11を含むユーザインターフェースから、ユーザが入力するようにしてもよい。ここでは、情報処理装置200が処理する情報は、数FML1のように式表現で記述され、メモリ12等に格納されているとする。
(A)リンゴの合計金額を求める処理
ここで、情報処理装置200が、メモリ12に格納された数AP21の式表現からリンゴの合計金額を求める処理は、以下の通りである。
(A1)情報処理装置200は、分割写像により、数FML1から”リンゴ”で式表現を切り出す。分割写像は、第3実施形態と同様に、商演算を用いて実現される。切り出された式表現は、数FML2のようになる。
買い物セット1×(リンゴ×(青森産×180円×/×個×1個+宮城産×150円×/×個×1個))/×セット×2セット+買い物セット2×(リンゴ×(青森産×180円×/×個×4個+
福島産×200円×/×個×5個))/×セット×3セット・・・(数FML2)
(A2)情報処理装置200は、数値化処理を実行する。数値化処理は、図11に例示したものと同様である。数値化された式表現(代数演算式)は以下の通りである。
買い物セット1×(リンゴ(青森産×'180'×円×/×個×'1'×個+宮城産×'180'×円×/×個×'1'×個))/×セット×'2'×セット+買い物セット2×(リンゴ(青森産×'180'×円
×/×個×'4'×個+福島産×'200'×円×/×個×'5'×個))/×セット×'3'×セット・・・(数FML3)
(A3)情報処理装置200は、フィルタ処理により、リンゴの金額の判定に用いない識別子を除去する。すなわち、情報処理装置200は、フィルタ後に残す識別子として、'リンゴ+/+円+個+かご+セット+[0...9]'を指定して、数FML3の代数演算式にフィルタ処理を実行する。なお、フィルタ処理で指定さされる、フィルタ後に残す識別子は、ユーザが指定するようにしてもよい。また、例えば、「リンゴの合計金額を求める処理」を実行する場合に、リンゴの識別子を自動選択するとともに、セットのように集合を示す識別子、円、個のように単位を示す識別子、および数字を示す識別子[0...9]を初期値として
情報処理装置200がメモリ12等に保持するようにしてもよい。フィルタ処理は、図18に示したものと同様である。フィルタ処理の結果は、以下の通りである。
(リンゴ×('180'×円×/×個×'1'×個+'150'×円×/×個×'1'×個))/×セット×'2'
×セット+(リンゴ×('180'×円×/×個×'4'×個+'200'×円×/×個×'5'×個))/×セッ
ト×'3'×セット・・・(数FML4)
(A4)情報処理装置200は、数FML4に対して、数値計算処理を行う。数値計算処理は、図13、図14に示したものと同様である。数値計算書の結果は、(リンゴ×円
×'330')×'2'+(リンゴ×円×'1720')×'3'=リンゴ×円×'5490'となる。すなわち、数FML1で記述される式表現中のリンゴの合計額は5490円となる。
(B)リンゴの産地別の合計金額を求める処理
福島産、青森産、宮城産のリンゴのそれぞれのトータル金額を求める処理は以下の通りである。
(B1)情報処理装置200は、分割写像により”リンゴ×福島産”(リンゴかつ福島産を含んだ部分集合を取得の意味)で、数FML1から式表現を切り出す。分割写像によって切り出された式表現は、以下の通りである。
買い物セット2×リンゴ×(福島産×200円×/×個×5個)/×セット×3セット・・・(
FML12)
(B2)情報処理装置200は、数値化処理を実行する。数値化された式表現(代数演算式)は以下の通りである。
買い物セット2×リンゴ×(福島産×'200'×円×/×個×'5'×個)/×セット×'3'×セ
ット・・・(FML13)
(B3)情報処理装置200は、フィルタ処理により、福島産のリンゴの金額の判定に用いない識別子を除去する。すなわち、情報処理装置200は、フィルタ後に残す識別子として、'リンゴ+福島産+/+円+個+セット+[0...9]'を指定して、数FML13の代数演算式にフィルタ処理を実行する。フィルタ処理の結果は、以下の通りである。
リンゴ×(福島産×'200'×円×/×個×'5'×個)/×セット×'3'×セット・・・(FM
L14)
(B4)情報処理装置200は、数FML14に対して、数値計算処理を行う。数値計算書の結果は、リンゴ×福島産×'3000'×円となる。すなわち、福島産のリンゴの合計額は3000円となる。
(C)同様に、青森産のリンゴについて、情報処理装置200は、リンゴ×青森産×'2340'×円を求めることができる。
(D)同様に、宮城産のリンゴについて、情報処理装置200は、リンゴ×宮城産×'150'×円を求めることができる。
(E)さらに、(B4)、(C)、(D)の処理が終わった後に、リンゴの合計金額、あるいは、福島産、青森産、宮城産のリンゴの合計金額は、次のように、求めることができる。
(E1)情報処理装置200は、(B4)、(C)、(D)で得られた式表現(代数演
算式)を和演算子で結合する。
リンゴ×福島産×'3000'×円+リンゴ×青森産×'2340'×円+リンゴ×宮城産×'150'×
円・・・(数FML15)
(E2)情報処理装置200は、数FML15に対して、数値計算処理を行う。その結果、リンゴ×'5490'×円が得られ、リンゴの合計金額は、5490円と計算される。
以上述べたように、本実施形態の情報処理装置200によれば、数FML1のような事物、例えば、複数の買い物セットに含まれる商品構成、単価、および個数を階層的に記述した式表現に対して、(A)のように、リンゴを特定して合計金額を求めることができる。一方、(B4)(C)(D)のように、一旦、福島産、青森産、宮城産のように種別が分類されて商品の金額を示す式表現(代数演算式)が得られている場合に、これらの式表現を和演算子で結合することで、種類別の合計を商品の複数種別の小計、全体の合計等の演算に流用できる。すなわち、このような小計、あるいは合計は、式表現で集合を取り扱う演算子である和演算子をそのまま使用すればよい。すなわち、情報処理装置200によれば、数値nを明示的に示す演算子であり、数値演算子(例えば、コーテーションマーク’’)により、数値を示す数値識別子(’n’)を明示的に記述するので、数値以外の識別子と数値識別子とを含む式表現において、和演算子を用いて、式表現を作成することにより、数値演算を実行できる。
また、情報処理装置200によれば、数値以外の識別子と数値識別子とを含む式表現が得られている場合、例えば、1個200円のリンゴの単価がデータベースに記述され、リンゴ10個の購入が決まった場合に、情報処理装置200は、以下の式表現を作成できる。すなわち、情報処理装置200は、データベースから読み出したリンゴ×'200'×円×/×個と、購入個数を示す’10’個について、積演算子で結合し、リンゴ×'200'×円×/×個×’10’個から、リンゴ×'2000'×円を計算することができる。
すなわち、情報処理装置200によれば、事物を記述する識別子と、事物の数量を示す識別子を混在させて、集合を示す和演算子と積演算子の組み合わせによって、集合の概念と数値の加算(負の数による減算を含む)の概念とを区別なく記述し、数値の演算を実行できる。また、情報処理装置200によれば、積演算子が構成する因子について、事物の修飾の概念、例えば、リンゴ、リンゴ×青森、ハム、ハム×ロース等と、数量の概念、例えば、リンゴについての'200'×円、’10’個等とを混在させて取り扱うことができる。
《第6実施形態》
図24および図25を参照して、第6実施形態に係る情報処理装置200について説明する。上記第2実施形態から第5実施形態では、式表現を用いて事物に係る情報をメモリ12等の記憶装置に蓄積し、蓄積された式表現を基に、その事物に係る数値を計算する処理を実現する情報処理装置200を例示した。これらの実施形態では、図11の数値処理フローに例示したように、情報処理装置200は、まず、数値識別子を明示的に表示しない式表現から数値識別子を明示的に表示した式表現である代数演算式に変換した。そして、図13、図14のように、数値計算処理を実行した。
第6実施形態では、代数演算式への変換処理として、例えば、図11で例示される数値処理フローとは異なる処理が例示される。例えば、図11の処理では、変換対象の入力式に含まれる識別子が数字を含むか否かが判定され、識別子中の数字部分、あるいは数字で定義された識別子自体が数値化された。また、識別子が複数の数値部分を含む場合、すべての数値部分が数値化された。すなわち、図11の数値化処理で処理される式表現中の数字は、区別なく、そのまま数値された。
第6実施形態では、式表現中の識別子が数字を含み、予め定義された識別子(以下、単位指定識別子と呼ぶ)と関連付けされているときに、式表現中の識別子が数値化される。ここで、単位指定識別子とは、数値が示す量あるいは数の単位を示す識別子である。したがって、第6実施形態の処理では、単位指定識別子と関連付けされていない識別子は、数字を含んでいても数値化されない。ここで、識別子が関連づけされている例としては、以下を例示できる。
(1)識別子が単位識別子と積演算子で結合されている場合である。
(2)識別子中に、単位指定識別子として定義された記号列と、数字部分とが混在する場合である。
第6実施形態における数値処理以外の構成は、第1実施形態から第5実施形態と同様である。そこで、第6実施形態の情報処理装置200は、数値処理以外の構成については、第1実施形態から第5実施形態の構成をそのまま有するものとする。
図24に第6実施形態に係る情報処理装置200の構成を例示する。図24のように、第6実施形態に係る情報処理装置200は、処理部40とデータ部45と単位識別子記憶部45Bを有する。処理部40のうち、代数演算部40Aについては、第5実施形態の図23と同様であるので、その説明を省略する。
なお、図24では省略しているが、第2実施形態の図9と同様に、情報処理装置200は、入力部11、出力部14、通信32、外部記憶装置34、着脱可能記憶媒体アクセス装置36等を接続してもよい。ただし、入力部11、出力部14、通信32、外部記憶装置34、着脱可能記憶媒体アクセス装置36等は、必須の構成ではなく、情報処理装置200に要求される仕様にしたがって、適宜設ければよい。
処理部40のうち、変換部40Bは、単位指定識別子記憶部45Bを参照し、単位指定識別子を取得する。そして、変換部40Bは、単位指定識別子記憶部45Bに登録されている単位指定識別子と関連づけられた識別子、あるいは識別子中の数字部分を数値化する。
単位指定識別子記憶部45Bは、例えば、メモリ12、外部記憶装置34等に構築される。また、情報処理装置200は、外部記憶装置34に代えて、通信部32を介して接続されるネットワーク上の他の情報処理装置の外部記憶装置を用いてもよい。単位指定識別子記憶部45Bには、例えば、入力部11、通信32等を介して、情報処理装置200から、単位指定識別子を登録できるようにすればよい。単位指定識別子としては、例えば、そのまま単位を示す記号列を登録すればよい。
例えば、通貨の単位として、円、¥(円の通貨記号)、doller(ドル)、$(ドルの通貨記号)、EUR(ユーロ)、ユーロの通貨記号等を例示できる。また、重さを示すグラム、g(グラムの記号)、キログラム、kg(キログラムの記号)を例示できる。長さの単
位として、メートル、meter(メートル)、m(メートルの記号)等を例示できる。単位
指定識別子は、任意にユーザが単位指定識別子記憶部45Bに定義できるようにしてもよい。例えば、ユーザは、特定の業界で用いられる所望の単位を単位指定識別子記憶部45Bに定義すればよい。また、ユーザは、単位を示す記号列として、任意に定義すればよい。例えば、ユーザは、円の代わりに、yen,あるいはYEN等を定義してもよい。
なお、図24では、式表現を格納するデータ部45とは別に、単位指定識別子記憶部45Bが設けられている。しかし、式表現を格納するデータ部45と単位指定識別子記憶部45Bが一体のものでもよい。例えば、情報処理装置200は、データ部45に、式表現とともに、単位指定識別子を登録しておいてもよい。
図25に、第6実施形態に係る数値化処理フローを例示する。図25の数値化処理は、単位指定数値化処理と呼ばれる。この処理では、情報処理装置200は、まず、式表現を入力する(F201)。式表現の入力とは、例えば、図9に例示した入力部11等のユーザインターフェースからの入力、通信部32からの入力、外部記憶装置34からの入力等である。ただし、例えば、図25に示した処理がコンピュータプログラムのモジュールとして記述される場合には、式表現の入力は、モジュールの引数、共有メモリ等を通じた入力であってもよい。
次に、情報処理装置200は、入力された式表現から次の識別子を取得する(F202)。「次の」と記述されるのは、F202の処理が繰り返し実行されるからである。そして、情報処理装置200は、取得した識別子が単位指定識別子か否かを判定する(F203)。F203の判定では、情報処理装置200は、F202で取得した識別子と、単位指定識別子記憶部45Bで定義された単位指定識別子を照合する。そして、F202で取得した識別子が、単位指定識別子記憶部45Bに定義されている場合には、情報処理装置200は、その識別子が単位指定識別子であると判定すればよい。
そして、F202で取得した識別子が単位指定識別子である場合、情報処理装置200は、単位指摘識別子と積演算子で結合された識別子を取得する。そして、情報処理装置200は、単位指摘識別子と積演算子で結合された識別子が数字を含むか否かを判定する(F204)。そして、単位指摘識別子と積演算子で結合された識別子が数字を含む場合に、情報処理装置200は、単位指摘識別子と積演算子で結合された識別子の数値を数値化する(F205)。数値化の手順、表記法は、図11の場合と同様である。
なお、F203の判定において、単位指定識別子と積演算子で結合する識別子が、単位指定識別子の右側に結合するか、左側に結合するかは、情報処理装置20内の規則、あるいは、変換部40Bの規則として、メモリ12、あるいは、外部記憶装置43等に格納しておけばよい。例えば、F203の処理を実行する変換部40Bの設計時に規則を確定し、変換部の処理に組み込めばよい。
F203、F204で、判定が偽(NO)の場合には、情報処理装置200は、処理をF206に進める。そして、情報処理装置は、次の識別子がF201で入力した識別子中に残っているか否かを判定する。次の識別子が残っている場合には、情報処理装置200は、処理をF202に戻す。一方、次の識別子が残っていない場合には、情報処理装置200は、変換後の式表現を出力する(F207)。ここで、出力先は、F201で式表現の入力先と同一とすればよい。ただし、図25に示した処理がコンピュータプログラムのモジュールとして記述される場合には、式表現の出力先は、モジュールの引数、関数の戻り値、共有メモリ等を通じた出力であってもよい。
以下、F203−F205の処理による変換結果を例示する。今、単位指定識別子記憶部45Bには、例えば、YEN、グラム、個が定義されていると仮定する。この場合に、式
表現として、豚肉×200×YEN×/×100×グラム×300×グラムは、豚肉ד200” ×YEN×/×’100’×グラム×’300’×グラムのように数値化される。そして、図13、図14の数値計算処理を実行すると、豚肉×”600”×YENが算出される。すなわち、100グラムあたり200円の豚肉を300グラム購入すると、600円となることが算出される。
図25の処理は、単位指定識別子と積演算子で結合する識別子中の一部の記号が数字で
あればよいので、次のような記述も可能である。例えば、式表現として、豚肉200×YEN
×/×100×グラム×300×グラム+リンゴ100×YEN×/×1×個×4×個は、F20
3−205の処理によって、豚肉ד200” ×YEN×/×グラム×’100’×グラム×’300’+リンゴ×’100’×YEN×/×’1’×個×’4’×個のように数値化される。
さらに、数値計算処理を実行すると、豚肉×”600”×YEN+リンゴ×’400’×YENのように、豚肉の購入費用が600円、リンゴの購入費用が400円であることが算出される。
また、例えば、部品×パーツ番号×1010×500×YEN/1×個×10×個は、部
品×パーツ番号×1010×’500’×YEN/’1’×個×’10’×個のように、数値化さ
れる。この場合、部品×パーツ番号×1010については、単位指定識別子と積演算子で結合していないので、数値化されない。そして、数値計算処理を実行すると、部品×パーツ番号×1010×’5000’×YENが得られる。すなわち、パーツ番号1010の部品の
購入費用が5000円であることが算出される。
なお、以上の例示では、数字を含む識別子と、単位指定識別子の関係が、積演算子に対して左側に数字を含む識別子、右側に単位指定識別子が記述される例を説明した。しかし、逆に、積演算子に対して右側に数字を含む識別子、左側に単位指定識別子が記述されるようにしてもよい。要するに、情報処理装置200の変換部40Bにおいて、順序を決めておけばよい。また、単位指定識別子に積演算子で結合される数字を数値識別子に変換する場合に、変換後の数値識別子と単位指定識別子との順序も、情報処理装置200の変換部40Bにおいて決めておけばよい。したがって、情報処理装置200は、例えば、500×YENがYEN×’500’に変換するようにしてもよい。
図26に、数値化処理の他の処理例を例示する。図25では、単位指定識別子と積演算子で結合される識別子中の数字を数値化した。図26では、識別子中の記号列として、単位指定識別子と数字部分を含む識別子を数値化する処理例を説明する。図26の処理を識別子の分割処理と呼ぶ。
単位指定識別子と数字部分を含む識別子とは、例えば、500円、500YEN、YEN500、$1000等である。この場合も、単位指定識別子と数字部分の記述順は、情報処理装置200の数値化処理および数値計算処理において、順序を決めておけばよい。
図26の処理で、F211およびF212の処理は、図25のF201、F202と同様である。そして、情報処理装置200は、F212で取得した識別子が、数字部分と数字以外の記号部分を含み、数字以外の記号部分が単位指定識別子であるか、否かを判定する。すなわち、情報処理装置200は、F212で取得した識別子が数字を含む場合に、数字以外の記号部分を取得する。そして、数字以外の記号部分と、単位指定識別子記憶部45bとを照合し、数字以外の記号部分が、単位指定識別子記憶部45bに登録されているか否かを判定する(F213)。
F213の判定が真(YES)の場合、情報処理装置200は、識別子の数字部分を数値化し、数字以外の記号部分と積演算子で結合する(F214)。F215、F216の処理は、図25のF206、F207の処理と同様であるので、その説明を省略する。
以下、F213、F214の処理による変換結果を例示する。今、単位指定識別子記憶部45Bには、例えば、YEN、グラム、個が定義されていると仮定する。この場合に、式
表現として、部品×パーツ番号1010×500YEN/1個×10個は、部品×パーツ番
号1010×’500’×YEN/’1’×個×’10’個のように、数値化される。そして、数
値計算処理によって、部品×パーツ番号1010×’5000’×YENが算出される。すなわ
ち、バーツ番号1010の部品の購入額が5000円であることが算出される。
この場合にも、F213の判定において、数字部分と非数字部分の識別子内の並びの順序関係は、情報処理装置200において規定し、メモリ12あるいは外部記憶装置34等に格納しておけばよい。あるいは、F213の判定において、数字部分と記号部分の識別子内の並びの順序関係は、変換部40Bの設計段階で規定し、変換部40Bの処理に反映しておけばよい。例えば、識別子中で、数字部分と非数字部分とが、左右に隣接する場合に、F213の判定を真(YES)としてもよい。また、逆に、例えば、識別子中で、非数字部分と数字部分とが、左右に隣接する場合に、F213の判定を真(YES)としてもよい。
同様に、F214において、数字部分が数値化されたときに、数値化された数値識別子と、非数字の記号を含む非数値識別子を積演算子で結合する順序も、情報処理装置200において規定し、メモリ12あるいは外部記憶装置34等に格納しておけばよい。また、数値化された数値識別子と、非数字の記号を含む非数値識別子を積演算子で結合する順序は、変換部40Bの設計段階で規定し、変換部40Bの処理に反映しておけばよい。したがって、500YENを数値化する場合に、’500’×YENとしてもよいし、YEN×’500’としてもよい。
以上述べたように、第6実施形態の情報処理装置200によれば、単位指定識別子記憶部45bに登録された単位指定識別子と積演算子で結合される識別子中の数字部分が数値化され、図13、図14で述べた数値演算処理によって、数値演算される。また、1つの識別子中に、数字部分と数字以外の記号部分が含まれる場合で、数字以外の記号部分が単位指定識別子記憶部45bに登録された単位指定識別子である場合も、数字部分が数値化される。
一方、単位指定識別子と関連づけられていない数字は、数値化されない。例えば、数字の識別子nnnが、単位指定識別子と積演算子で結合されていない場合には、変換部40Bによって数値化されない。また、1つの識別子中に、数字部分と非数字部分を含む識別子で、非数字部分が単位指定識別子でない識別子も、数値化されない。したがって、部品×パーツ番号×1010のような式表現、あるいは、部品×パーツ番号1010のような式表現を維持した上で、500×YEN/1×個×10×個あるいは500YEN/1個×10個のような数字の部分だけを数値化し、数値計算することができる。すなわち、第6実施形態の情報処理装置200によれば、数値計算の対象としたい数字には、単位指定識別子を関連づけておけばよい。そして、パーツ番号のように、数値計算対象としたくない識別を維持した上で、量を示す識別子の数字部分を数値計算の対象とすることができる。
以上の情報処理装置200の処理によれば、事物の識別情報としての数字と、事物の量を示す識別情報としての数字を混在して、式表現中に記述できる。そして、事物の量を示す識別情報としての数字に、単位指定識別子を付与し、その単位指定識別子を単位指定識別子記憶部45Bに登録しておくことで、事物の量を示す識別子、つまり数字の数値計算処理を実行できる。このような処理は、例えば、商品の販売額、人事部門での社員の給与、調達部門の調達額、設計部門での設計上の見積もり、研究部門での研究記録、実験記録等を式表現で記述し、記憶し、集計処理等を実行する上で、極めて有用である。すなわち、情報処理装置200では、式表現によって、種々の事物を示すデータを柔軟に記述し、データ部45に登録しておくことができる。そして、単位指定識別子記憶部45Bに登録された単位指定識別子を基に、式表現中の数字を数値化し、様々なデータの集計、商演算よる検索、部分集合の取得等を実行し、事物の記録と代数演算処理を実行できる。
なお、上記では、数値が整数の場合を例示したが、数値が整数以外の実数であっても上記と同様である。情報処理装置200は、例えば、豚肉200×YEN×/×100×グラム×300.28×グラムを豚肉’200’×YEN×/×’100’×グラム×’300.28’の数値化する。また、情報処理装置200は、例えば、式表現である部品×パーツ番号1010×5.12kg/1個×10個を、部品×パーツ番号1010×’5.12’×kg/’1’×個×’10’×個のように数値化する。
《第7実施形態》
第2実施形態では、情報処理装置200は、式表現中の数字を数値化し、数値計算を実行した。また、第6実施形態では、情報処理装置200は、単位指定識別子と関連づけされた数値を含む識別子を数値化し、数値計算を実行した。第7実施形態では、数値計算処理に数値を表す文字変数を導入する。例えば、第2実施形態から第6実施形態では、数値(n)を示す数値識別子(’n’)は、数値演算子(’’)によって、明示的に記述され
た。本実施形態では、数値演算子(’’)によって、数値を示す変数識別子(例えば、’X’,’Y’,’Z’等)を記述し、変数識別子の値を求める処理を例示する。ここで、変数識別子(’X’等)の値を求めるための条件として、第1の式表現と、第1の式表現に対して等価な第2の式表現とを関係づけるための等価演算子を導入する。変数識別子と等価演算子よる等価因子が導入される点以外の情報処理装置200の構成および処理は、第1実施形態から第6実施形態と同様である。すなわち、第7実施形態における情報処理装置200の構成および処理は、第1実施形態から第6実施形態の構成および処理と組み合わせて実行される。
本実施形態では、等価演算子は、例えば、等号(=)で示される。ただし、等価演算子として、他の記号を用いてもよい。また、等価演算子によって、関係づけられた第1の式表現と第2の式表現とを等価因子と呼ぶ。
ここでは、等価因子に対して、以下の等価因子処理hを定義する。等価因子となる第1の式表現と第2の式表現は、以下のように表される。
第1の式表現=第2の式表現
等価因子処理hは、等価因子となっている式表現に、以下の3つの処理を実行する。
(1)等価因子間で共通の因子を削除する処理
h:a×b×=×a×c =>b×=×c・・・(数AP21)
すなわち、等価因子処理hは、等価識別子で関係付けられた2つの等価因子間(a×b×と×a×cとの間)の関係に対して、共通の因子を削除し、共通でない因子を含む第1の式表現b×と、第2の式表現との関係に変換する。
(2)等価因子間の数値識別子の乗算および除算処理
h:'p'×a×=×'q'×c => a×=×'q/p'×c・・・(数AP22)
すなわち、等価因子処理hは、等価識別子で関係付けられた2つの等価因子間('p'×a×と×'q'×cとの間)の関係に対して、同一の数値識別子(’p’)の乗算または除算を実行する。ただし、除算処理は、べき乗の指数として、(―1)を用いることによって、乗算として記述できる。
(3)等価因子間の数値識別子の加算(および減算)処理
h:'p'+a×=×'q'+c => 'a×=×'(q-p)'+c・・・(数AP23)
すなわち、等価因子処理hは、等価識別子で関係付けられた2つの等価因子間('p'+a
×と×'q'+cとの間)の関係に対して、同一の数値識別子(’p’)の加算または減算を実行する。ただし、減算処理は、負の数を用いることによって、加算として記述できる。
以下に処理例を示す。ここでは、青森県産のリンゴ(1個180円)、宮城県産のリンゴ(1個150円)、福島県産のリンゴ(1個200)とする。さらに、次のような買い物セット1と買い物セット2を設定する。例えば、買い物セット1は、青森県産のリンゴ1個と、宮城県産のリンゴを1個含む。また、買い物セット1は、青森県産のリンゴ4個と、福島県産のリンゴ5個を含む。ここでは、買い物セット1を2セット、買い物セット2を3セット購入する場合を検討する。この場合の購入した商品と金額を示す式表現は以下の通りである。
買い物セット1×(リンゴ×(青森産×180円×/×個×1個+宮城産×150円×/×個×1個))/×セット×2セット+買い物セット2×(リンゴ×(青森産×180円×/×個×4個+
福島産×200円×/×個×5個))/×セット×3セット・・・(数AP24)
この式表現に対して、第2実施形態の数値化処理を実行すると、以下の代数演算式が得られる。
買い物セット1×(リンゴ×(青森産×'180'×円×/×個×'1'×個+宮城産×'180'×円
×/×個×'1'×個))/×セット×'2'×セット+買い物セット2×(リンゴ×(青森産×'180'×円×/×個×'4'×個+福島産×'200'×円×/×個×'x'×個))/×セット×'3'×セット=リンゴ×'5000'×円・・・(数AP25)
さらに、情報処理装置は、リンゴ+/+円+個+セット+=+[0...9]によってフィルタ処理を
実行する。すなわち、ここでは、情報処理装置は、代数演算式の識別子として、リンゴ、/、円、個、セット、=および数字の0から9以外の因子を除去する処理を実行する。フィルタ処理の結果、得られる代数演算式は、以下の通りである。
(リンゴ×('180'×円×/×個×'1'×個+'150'×円×/×個×'1'×個))/×セット×'2'
×セット+(リンゴ×('180'×円×/×個×'4'×個+'200'×円×/×個×'5'×個))/×セッ
ト×'3'×セット・・・(数AP26)
この代数演算式に対して、図13、図14に示した数値計算処理を実行すると、(リン
ゴ×円×'330')×'2'+(リンゴ×円×'1720')×'3'となり、さらに、リンゴ×円×'5490'
が得られる。
ここで、数AP24で定義される商品と金額の買い物おいて、合計金額が5000円以下になるように、例えば、福島県産のリンゴの数を調整する場合を考える。つまり、ここでは、買い物セット2における福島県産のリンゴの数を調整し、購入額の合計が例えば、予算5000円に収まるように、買い物セットの構成を変更する。そこで、数AP24の式表現において、買い物セット2の福島県産のリンゴの数をx個に置き換えて、等価因子として、リンゴ×5000円を設定する。
買い物セット1×(リンゴ×(青森産×180円×/×個×1個+宮城産×150円×/×個×1個))/×セット×2セット+買い物セット2×(リンゴ×(青森産×180円×/×個×4個+
福島産×200円×/×個×x個))/×セット×3セット=リンゴ×5000円・・・(数AP27)
数AP27を数値化すると以下の通りである。
買い物セット1×(リンゴ×(青森産×'180'×円×/×個×'1'×個+宮城産×'180'×円
×/×個×'1'×個))/×セット×'2'×セット+買い物セット2×(リンゴ×(青森産×'180'
×円×/×個×'4'×個+福島産×'200'×円×/×個×'x'×個))/×セット×'3'×セット=
リンゴ×'5000'×円・・・(数AP28)
さらに、リンゴ+/+円+個+セット+=+[0...9]でフィルタ処理を実行すると、以下の通り
である。
(リンゴ×('180'×円×/×個×'1'×個+'150'×円×/×個×'1'×個))/×セット×'2'
×セット+(リンゴ×('180'×円×/×個×'4'×個+'200'×円×/×個×'x'×個))/×セッ
ト×'3'×セット=リンゴ×'5000'×円・・・(数AP29)
さらに、数値計算処理を実行すると、以下の通りである。
(リンゴ×円×'330')×'2'+(リンゴ×円×('720'+'200'×'x')×'3'=リンゴ×'5000'×円
リンゴ×円×('2820'+'600'×'x')=リンゴ×'5000'×円・・・(数AP30)
数AP30において、等価因子間の数値識別子の加算処理および等価因子間の数値識別子の乗算処理を実行すると、('2820'+'600'×'x')='5000'が得られ、'x'='3.63'が得られる。よって、買い物セット1の福島県産のリンゴを3個以下にすれば、数AP24での買い物の合計金額を5000円以下にすることができる。
図27に、数値変数と、等価因子による数値計算処理を実行する処理フローを例示する。この処理では、情報処理装置200は、数値変数を含む第1の式表現を設定する(F221)。数値変数は、例えば、変数X、Y、Z等を予約語としておいてもよい。あるいは、数値識別子(例えば、‘’)で数値として定義された数字以外の記号の識別子(例えば、’X’,’Y’,’Z’等)を、数値変数を表す識別子として処理してもよい。数値識別子によって数値変数を表す識別子を定義する場合には、予約語は不要となる。第1の式表現の例は、例えば、数AP27の等価識別子(=)の左側の式表現である。
次に、情報処理装置200は、第1の式表現と等価な関係にある式表現を等価因子に設定する(F222)。第1の式表現と等価な関係にある式表現の例は、例えば、数AP27の等価識別子(=)の右側の式表現(リンゴ×5000円)である。F221、およびF222の処理は、例えば、式表現を設定するユーザインターフェースへのユーザの入力にしたがった実行すればよい。また、例えば、テキストエディタ等を用いて、ユーザが第1の式表現および等価な式表現(以下、第2の式表現という)を設定してもよい。ただし、例えば、図27に示した処理がコンピュータプログラムのモジュールとして記述される場合には、F221、F222の処理は、モジュールの引数、共有メモリ等を通じた設定であってもよい。
次に、情報処理装置200は、第1の式表現および等価因子として定義された第2の式表現に数値化処理を実行する(F223)。数値化処理は、等価識別子(=)の左右に設定されたそれぞれの式表現に対して実行すればよい。この場合、数値変数が予約語(X等)の場合には、単に予約語に数値識別子を設定し、数値変数(’X’等)とすればよい。また、数値変数としてすでに、数値識別子が設定されている場合、すなわち、F221の処理で、数値変数として、’X’等の記述されている場合には、そのまま数値変数(’X’等)を代数演算式に設定すればよい。
さらに、情報処理装置200は、数値化された第1の式表現および、数値化された第2の式表現に、フィルタ処理を実行する(F224)。フィルタ処理は、図18の処理と同様である。そして、情報処理装置200は、数値変数を含む項と項の加算、および、数値
変数を含む項以外の項の減算(負の符号を項に付した加算)を実行する(F225)。このような処理によって、等価演算子の一方側に、数値変数(例えば、’X’)を含む項だ
けが残される。
次に、情報処理装置200は、数値変数を含む項の数値変数以外の因子を除算(―1のべき乗を付した因子の乗算)を実行する(F226)。その結果、等価演算子の一方側に、数値変数(例えば、’X’)だけが残され、’X’=代数演算式の形式で、数値変数’X’の値が得られる。代数演算式に、数値計算を実行することで数値変数の’X’の値が得られる。そして、情報処理装置は、数値変数’X’の値を出力する(F227)。ここで、出力先は、F221、F22での入力先と同一(ユーザインターフェース等)とすればよい。ただし、図27に示した処理がコンピュータプログラムのモジュールとして記述される場合には、式表現の出力先は、モジュールの引数、関数の戻り値、共有メモリ等を通じた出力であってもよい。
以上述べたように、数値演算子(’’)と変数(X,Y,Z等)とによって、数値であることを明示する数値変数(’X’,’Y’,’Z’等)を定義し、等価因子によって、2つの等価な式表現(あるいは、代数演算式)を結合することで、情報処理装置200のメモリ12、あるいは外部記憶装置34上に、方程式を記述できる。
等価因子によって結合される式表現、あるいは、代数演算式は、第1実施形態から第6実施形態で情報処理装置200が処理したものと同様のものである。すなわち、本実施形態の情報処理装置200は、様々な事物を式表現で記述し、ユーザ所望の式表現の部分を商演算等の分割演算で取得し、代数演算式に変換する。その場合に、特定の事物の数量を数値変数(’ ’X’,’Y’,’Z’等)に設定し、等価因子によって、数値変数(’
X’,’Y’,’Z’等)を含む2つの式表現(あるいは代数演算式)を結合することで、方程式を記述できる。そして、等価因子で結合された2つの式表現を代数演算式に変換し、数値演算処理を実行することで、変数(’X’等)の値を求めることができる。
上記第7実施形態では、簡単な処理例として、リンゴの個数を求める問題の解析例を示したが、数値変数(’X’等)と等価因子による処理は、このような簡単なものに限定される訳ではない。例えば、情報処理装置200は、物品の単価と、販売量、購入量、消費量等を管理するデータベースを式表現で構築しておき、予算額から、物品の販売量、購入量、消費量等を決定する処理、物品の販売量、購入量、消費量等の増加量を求める処理などを実行できる。また、情報処理装置200は、例えば、材料毎の単位体積当たりの要求数量等を式表現で記述しておき、設計上の寸法から構造物の体積を記述する式表現を作成し、それぞれの材料の必要量を求める処理などを実行してもよい。すなわち、等価因子と数値変数(’x’,’y’,’z’等)を式表現あるいは代数演算式に導入することによっ
て、様々な事物の量を求める方程式をコンピュータ上で記述し、解を求めることができる。