JP2009110440A - 情報処理装置、情報処理方法、プログラム、および媒体 - Google Patents

情報処理装置、情報処理方法、プログラム、および媒体 Download PDF

Info

Publication number
JP2009110440A
JP2009110440A JP2007284219A JP2007284219A JP2009110440A JP 2009110440 A JP2009110440 A JP 2009110440A JP 2007284219 A JP2007284219 A JP 2007284219A JP 2007284219 A JP2007284219 A JP 2007284219A JP 2009110440 A JP2009110440 A JP 2009110440A
Authority
JP
Japan
Prior art keywords
information
unit
expression
factor
term
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007284219A
Other languages
English (en)
Inventor
Toshio Kodama
敏男 児玉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Maeda Corp
Original Assignee
Maeda Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Maeda Corp filed Critical Maeda Corp
Priority to JP2007284219A priority Critical patent/JP2009110440A/ja
Publication of JP2009110440A publication Critical patent/JP2009110440A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】格納されるべきデータについて、データの格納とともに、データの構造に対する変更を許容し、かつ、格納されたデータ自体の有する演算式にしたがった演算機能を提供する。
【解決手段】識別子と、因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶する記憶部と、対象情報を操作する処理部と、を備える情報処理装置である。そして、処理部は、積演算子を乗算演算子とし、和演算子を加算演算子とし、識別子間の演算を実行する代数演算部を有する。
【選択図】図22

Description

本発明は、事物をコンピュータで処理可能な所定の表現形式を用いて表現し、コンピュータの記憶装置に記憶し、コンピュータで処理することで、その事物を管理する情報処理技術に関する。
ソフトウェアの開発プロセスは、要求分析、システム設計、実装、テスト、運用、およびメンテナンスの各段階により構成される。そして、ソフトウェア開発の最初のプロセスである、要求分析は特に重要である。なぜなら、最初の要求分析が不十分であると、それ以降のシステム設計、実装段階において、顧客の要求が正しく反映されていないなどの支障をきたすからである。例えばシステムのテスト段階で不具合が発見された場合においても、再度プログラムを修正する必要が生じる。また、大規模な修正が必要な場合には、システム設計を初めからやり直すなどの必要も生じる。しかし、プログラムの修正やシステム設計を最初からやり直しには、時間と労力がかる。その結果、コストが増大するといった問題も生ずる。また、たとえ最初の要求分析が十分であった場合においても、事業活動等様々な変化に対応させるためにはその後のメンテナンスが不可欠であるが、メンテナンスにも時間と労力がかかり、結果としてコストの増大を招くといった問題を生じている。
ソフトウェアの開発の一例として、例えばデータベースシステムの開発が例示される。データベースシステムの開発とは、顧客の業務内容をヒアリングして、管理すべきデータ項目を洗い出し、それらの項目を関連付け、利用者が検索しやすいようなビューを設計し、顧客ニーズに合ったデータベースを構築することである。優れたデータベースを構築するためには、概念設計の段階からデータ構造を解析しておく必要がある。データとして管理すべき実体および属性、実体間の関連を洗い出し、正確に分析することが重要になる。
このような観点から開発された既存のデータベースのデータモデルとして、正規化表構造によるリレーショナルモデルや、ノードに属性を持つツリー構造で表現されるオブジェクト指向モデルが知られている。しかし、例えばリレーショナルモデルでは、関係をどのように定義するかは設計者の自由であるため、実装ごとに異なるシステムが生成されることになる。したがって、リレーショナルモデルに基づいて実装された複数のシステムを統合するためには、統合すべき構成要素の組み合わせ数に応じた作業工程が必要となり、システム統合に相当な時間と労力を費やす場合あるといった問題を生じていた。
特開2005−92855号公報 国際公開公報WO2007/088982
ところで、従来の情報処理技術では、格納されるべきデータの構造が事前に設計されている必要あった。したがって、データの格納された後にデータの構造を変更することは極めて困難であった。また、従来の情報処理技術では、例えば、格納される個々のデータに対して、未処理状態で個別の演算式を組み込んでおくことはできなかった。例えば、リレーショナルモデルにおいて、第1のレコードについて、適用されるべき未処理の第1の演算と第1のデータを格納し、第2のレコードについて、適用されるべき未処理の第2の演算と第2のデータを格納しておくことはできなかった。
ここでは、格納されるべきデータについて、データの格納とともに、データの構造に対する変更を許容し、かつ、格納された個々のデータ自体の有する演算式にしたがった演算
機能を提供する。
本発明は前記課題を解決するために、以下の手段を採用した。すなわち、本発明は、識別子と、因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶する記憶部と、対象情報を操作する処理部と、を備える情報処理装置である。そして、処理部は、積演算子を代数の乗算演算子とし、和演算子を代数の加算演算子とし、識別子間の演算を実行する代数演算部を有する。このような構成によって、本情報処理装置は、積演算子と和演算子とによる情報の記憶と、記憶された情報の代数演算による演算処理とを実現する。
対象情報は、見積処理の対象となる対象商品または対象サービスに含まれる、要素を識別する要素識別情報と要素の単価を示す数値と要素の提供量を示す数値とを有する要素情報を含み、代数演算部は、複数の要素情報に含まれる数値に対して代数演算を実行する。このような構成により本情報処理装置は、要素を識別する要素識別情報と要素の単価と前記要素の提供量とによって対象商品または対象サービスに係る情報を記憶するとともに、その代数演算による価格の見積を実現する。
本発明によれば、格納されるべきデータについて、データの格納とともに、データの構造に対する変更を許容し、かつ、格納された個々のデータ自体の有する演算式にしたがった演算を実行できる。
以下、図面を参照して本発明を実施するための最良の形態(以下、実施形態という)に係る設計支援装置について説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
《データ構造の概要》
本情報処理装置は、情報を集合レベル、トポロジー空間レベル、接着空間レベル、およびセル空間レベルというデータ構造の複雑さの異なるレベルで表現する。データ構造が複雑になればなるほど、表現される情報と情報との間の関連付け、あるいは、情報と情報との拘束が増加する。
例えば、集合レベルは、情報が項(以下、要素ともいう)を組み合わせた集合情報として記述される。それぞれの集合情報は、集合IDで識別される。また、トポロジー空間レベルでは、項または集合を組み合わせたトポロジー空間情報として情報が記述される。それぞれのトポロジー空間情報は、トポロジーIDで識別される。
すなわち、集合レベルは、単なる項の組み合わせであるのに対し、トポロジー空間レベルは、集合情報の組み合わせを含む点で、より複雑となっている。本実施形態では、この場合に、集合レベルは、トポロジー空間レベルよりも抽象度が高い、ともいう。ただし、トポロジー空間情報は、単一の集合情報をも含む。すなわち、トポロジー空間レベルは、集合レベルの性質をそのまま有している。本実施形態では、この意味で、トポロジー空間レベルは、集合レベルの特性を継承している、という。
接着空間レベルは、集合情報またはトポロジー空間情報のいずれか2つ以上(以下、被接着情報)を接着した情報を含む。接着とは、本実施形態にて提案する概念であり、2つの被接着情報のそれぞれのデータ構造を維持した上で、被接着情報を互いに結合する機能
である。接着においては、2つの被接着情報のそれぞれに含まれる情報で、互い関係付けられる情報が指定される。そして、その関係付けられた情報同士を介して、2つの被接着情報が結合される。接着は、例えば、人の行為である伝票にメモを張り付ける行為をコンピュータ上で実現したものとなる。すなわち、伝票ID、伝票に含まれる項目、および伝票内の位置情報からなるデータ構造と、メモIDおよびメモ内容である文字列情報からなるデータ構造があったときに、伝票上の位置情報と、メモIDとを関連づけ、接着演算を実行することにより、伝票上の指定された位置にメモが添付された状態をコンピュータ上で表現できる。接着された2つの被接着情報は、また、分離することもできる。ただし、接着空間の情報は、それぞれの被接着情報の特性、すなわち、集合レベル、あるいは、トポロジー空間レベルの特性をそのまま有している。そのため、接着空間の情報は、これらのレベルを継承しているという。
セル空間レベルとは、属性と値とを含むデータ構造が定義された情報であり、集合情報、トポロジー空間情報、および接着された情報をさらに複雑にしたものといえる。この点で、逆に、集合情報、トポロジー空間情報、および、これらが接着された情報は、セル空間の情報よりも抽象度が高いともいう。ただし、セル空間レベルの集合は、集合レベル、トポロジー空間レベル、および接着空間レベルの特性を有することができ、その意味で、これらのレベルを継承しているという。
よってセル空間が定義される(つまり空間に属性,値の意味が付加される)セル空間レベルならば,一般的なトポロジー空間のレベルよりも抽象度が低いと見なされる.
本情報処理装置は、抽象度に応じた各レベルの所定の表現形式によって表現される情報が格納される記憶手段と、前記情報を処理する処理手段と、を備える。そして、前記記憶手段には、識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および前記因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報が記憶される。さらに、対象情報は、前記組み合わせ中の項の順序を維持して前記項の組み合わせを関係付けることによって因子または新たな項を構成する順序構成演算子と、前記組み合わせ中の項の順序を維持しないで前記項の組み合わせを関係付けることによって因子または新たな項を構成する集合因子構成演算子と、を含んでもよい。
以下、本情報処理装置の記憶手段に記憶され、本情報処理装置で処理される情報を対象情報という。対象情報は、識別子、因子、項(要素)、集合情報、トポロジー空間情報、接着された情報、セル空間の情報を含む。対象情報をオブジェクト情報とも呼ぶ。ただし、本実施形態でのオブジェクト情報は、いわゆるオブジェクト指向データベース、オブジェクト指向言語、オブジェクト指向設計等でいうオブジェクトとは、概念が異なる。そこで、以下では、もっぱらオブジェクト情報という代わりに、対象情報と呼ぶことにする。
また、本実施形態では、項の組み合わせから因子を構成する集合因子構成演算子および順序構成演算子が使用される。集合因子構成演算子は、第一の括弧“()”により表現される。また、順序構成演算子は第二の括弧“{}”により表現される。
本発明によれば、対象情報を所定の表現形式のデータとして記憶手段に格納し、これに所定のプログラムに基づいて処理を実行することができる。その結果、異なる対象情報同士の情報の一貫性を図るとともに新たな様々な対象情報のデータベース化および処理が可能な情報処理装置を提供することが可能となる。また、従来のリレーショナルモデルやオブジェクト指向モデルでは、対応できないデータに対応することができるシステムを開発することができる。
記憶手段は、抽象度に応じた各レベルの所定の表現形式によって表現される対象情報を
例えばテキストファイルとして格納する。記憶手段は、前記対象情報を十分に格納できる容量を有するものであればよく、ハードディスク等がこれに該当する。対象情報とは、システム開発におけるデータベースを構成するすべての情報を含むものである。例えば既存のデータモデルの正規化表構造を構成するレコードの構成要素や正規化表構造では入力不可能なデータ構造も含む。正規化表構造では入力不可能な情報とは、例えば正規化表構造で表現されるようなデータがある場合に、これに付箋のような前記正規化表構造とは全く関連性のない、すなわち属性の定義のない対象情報を意味する。また、この対象情報は、本情報処理装置の処理を実行することによりその抽象度が変化することを特徴とする。すなわち、あるレベルで入力された対象情報は、本情報処理装置の処理が実行されることによりそのレベルが変化する。そして、そのレベルが変化しても対象情報は、変化前と同一の演算によって、取り扱うことができる。すなわち、対象情報は、抽象レベルが変化しても対象情報の性質には一貫性が保たれるので、同一の演算による操作が可能である。したがって、ある抽象度で格納された対象情報、すなわちデータは本情報処理装置の処理が実行されることにより様々なレベルに変化する。また、上述のように全く関連性のないデータも入力してこれを関連付けることが可能である。したがって、異なる抽象度のレベルにおいて、情報の性質の一貫性が保たれるとともに、新たな様々な事物を示す情報のデータベース化およびデータベース化された情報に対する演算処理が可能となる。
前記対象情報は、記号、識別子、第一の括弧および第二の括弧により表現される因子と、前記因子の積によって表現される項と、前記項の和によって表現される式と、により構成することができる。式を構成する項、および項を構成する因子は、前記対象情報を構成する最小単位である識別子と、前記処理手段において1として処理される単位元εと、前記処理手段において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で表現される対象情報を展開処理すると数2のようになる。
(a+b)×{c+d+e}+f{g+h}×{i+j}
→(a{c+d+e}+b{c+d+e})+{f×g+f×h}×{i+j}
→({a×c+a×d+a×e}+{b×c+b×d+b×e})+{f×g×i+f×h×j}
→a×c+a×d+a×e+b×c+b×d+b×e+f×g×i+f×h×j・・・(数2)
すなわち、まず、第一の項を構成する第一の因子と第二の因子が展開する。次に、第一の因子の一番左の識別子であるaと第二の因子を構成する一番左の識別子cが掛け合わせる。次に、d、eの順に掛け合わせて展開する。そして、第一の因子の左から2番目の識別子、換言すると右側の識別子であるbと第二の因子を構成する一番左の識別子cが掛け合わせる。その後、d、eの順に掛け合わせて展開する。一方、第二の項については、まず第二の括弧で括られている第四の因子と同じく第二の括弧で括られている第五の因子を掛け合わせる。なお、第二の括弧は、第一の括弧とは異なり因子の順序ごとに積を作成しその和を出力する展開が行われる。すなわち、まず第四の因子を構成する一番左の識別子gと第五の因子を構成する一番左の識別子iの積を作成する。次に、第四の因子を構成する左から2番目の識別子であるhと第五の因子を構成する左から2番目の識別子であるjの積を作成し、これらの和として出力する。更に第三の因子を構成する識別子fと掛け合わせて展開する。
このような展開処理を行うことにより、数1で表現される前記対象情報は、対象情報の最小単位である識別子の積とこれらの和によって表現されることになる。すなわち、展開手段による展開を実行することにより集合で表現することが可能となる。つまりは、展開処理手段を備えることで前記対象情報の抽象度を高くすることが可能となる。
部分集合取得手段は、部分集合を取得する。これにより、前記対象情報の中から部分集合を取得することが可能となる。例えば、数3で表現される対象情報について、aについての部分集合を取得すると数4で表現される対象情報となる。
a×c+a×d+a×e+b×c+b×d+b×e+f×g×i+f×h×j・・・(数3)
a(c+d+e)+b×c+b×d+b×e+f×g×i+f×h×j・・・(数4)
接着空間作成手段は、異なる対象情報を構成する前記因子間における同値関係の対応に基づき該因子同士を接着する。その結果、新たな空間である接着空間を作成することができる。接着空間作成手段を備えることで、前記対象情報が異なる空間を表現するものであっても、同値関係にある因子を介して関連付け新たな空間を設計することが可能となる。
ホモトピー保存処理手段は、前記対象情報についてホモトピー保存処理を実行する。ホモトピー保存処理は、対象情報に対する演算結果とともに、演算前の対象情報、適用された演算、および、演算時に使用されたパラメータを記憶する機能である。これにより、前記処理手段の処理実行前の前記対象情報の状態を取得することが可能となる。そして、例えばホモトピー保存処理手段による処理の実行は数5のように表すことができる。
a(b+c)
↓H
(a×b+a×c)=F(a(b+c)+ε)・・・(数5)
数5におけるFは、本情報処理装置100で規定した「展開」という演算をを表す識別子である。また、εは、値“1”を表す記号であり、Fの演算において、値“1”が使用されたことを示している。すなわち、展開処理を実行した後の状態を表す、対象情報(a×b+a×c)は、a(b+c)を展開処理したものであることを意味する。このように、ホモトピー保存処理を実行することによって、前記格納処理手段に格納される対象情報は処理前の状態についても保存されているため、対象情報の過去の状態を取得することが可能となる。
本発明に係る情報記憶装置において、前記各レベルは、前記対象情報が最も抽象度が高く表現される集合レベルと、前記集合レベルよりも前記対象情報の抽象度が低く表現され、該対象情報が部分集合によって表現されるトポロジー空間レベルと、前記トポロジー空間レベルよりも前記対象情報の抽象度が低く表現され、該トポロジー空間レベルにおける前記対象情報同士が接着される接着空間レベルと、前記接着空間レベルよりも前記対象情報の抽象度が低く表現され、前記トポロジー空間における前記対象情報が所定の属性をもって表現されるセル空間レベルと、を有するものとしてもよい。
ここで、抽象度が高いとは、対象情報同士の関係、あるいは、関連を示す情報が少ないことをいう。
例えば、集合レベルは、前記対象情報の抽象度が最も高く表現されるものである。集合レベルにおける対象情報(以下、集合の対象情報ともいう)は対象情報の最小単位である識別子の積を項としてこれらの和からなる式によって表現される。なお、集合レベルには、他の抽象度の低いレベルから展開処理手段の展開処理を実行することにより移行することができる。また、前記記憶手段に格納する際に集合レベルで入力することとしてもよい。
トポロジー空間レベルは、前記集合レベルよりも前記対象情報の抽象度が低く表現される。また、対象情報の部分集合を要素として扱うことによって表現される。ただし、部分集合が1つの場合も、トポロジー空間レベルである。例えば前記対象情報が集合レベルで表現されている場合に、前述した部分集合取得手段の部分集合取得処理を実行する。すると集合レベルで表現されている対象情報は、トポロジー空間レベルに移行されることになる。
接着空間レベルは、前記トポロジー空間レベルよりも前記対象情報の抽象度が低く表現
される。すなわち、接着空間レベルは、該トポロジー空間レベルにおける前記対象情報同士が同値関係を基準に結合されることで表現されるものである。前記トポロジー空間レベルで表現されている異なる2以上の対象情報に前述した接着手段の接着処理手段を実行することで新たな空間レベル、すなわち接着空間レベルへ移行することが可能となる。
セル空間レベルは、トポロジー空間レベルの情報の式表現のうち、特定の式表現に限定して、属性と属性値の関係を定義できるようにしたものである。したがって、当然、セル空間レベルはトポロジー空間レベルの性質、および、機能を有している。この点で、セル空間レベルはトポロジーレベルの1ケースである。
このように、セル空間レベルの情報と、トポロジー空間レベルの情報とは、式表現の形式上は、差異がない。すなわち、セル空間レベルの情報は、セル空間IDと属性の定義を示す因子とで括り出された部分集合の式表現と見なせるからである。セル空間レベルの情報は、セル空間IDと属性の定義を示す因子に、セル空間IDという意味、および属性の定義という意味を付加することで、形成される。この意味で、セル空間レベルの情報は、トポロジー空間レベルの情報の特殊ケースである。また、特殊ケースという意味で、セル空間レベルは、トポロジー空間レベルよりも、抽象度が低いともいえる。一方、そのような意味づけを解消すれば、セル空間レベルの情報は、同一の式表現のまま、トポロジー空間レベルの情報となる。
さらに、セル空間レベルの情報は、前述した展開手段の展開処理を実行することにより、集合レベルに移行されることもできる。すなわち、すべての括弧を展開すればよい。
なお、このセル空間レベルの属性は、通常は、アプリケーションプログラムによって定義されるものである。したがって、本情報処理装置では、セル空間レベルの情報は、アプリケーションプログラムのユーザインターフェースを通じて入力されることを想定している。
また、本実施形態では、セル空間レベルは、接着空間レベルの性質、および、機能も有していることとした。したがって、セル空間レベルの複数の対象情報を接着することができる。これは、逆に、セル空間レベルの情報を接着した接着空間レベルの情報は、セル空間レベルの性質、機能を有しているといえる。
本発明に係る情報記憶装置において、前記各レベルは、前記情報処理手段による処理の実行前の状態を所定の形式によって表現することにより処理前の状態に戻すことが可能なホモトピーレベルをさらに有するものとしてもよい。
ホモトピーレベルは、前記情報処理手段による処理の実行後の状態が実行前の状態を含んだ状態で所定の表現形式で表現されることで処理前の状態に戻すことが可能な空間である。ホモトピーレベルでは、例えば、式1で示される対象情報が、演算Pによって、式2に変換されたときに、「式2=式1に演算Pを実行」のように記述される。したがって、演算前のレベルには、前述したホモトピー保存処理を実行することにより移行することができる。なお、ホモトピーレベルは、前述した他の空間レベルとは本質的に異なる。すなわち、他の空間レベルは、上述したように対象情報の抽象度によって段階的に表現される空間である。しかし、ホモトピーレベルは他の空間レベルのそれぞれと常に行き来が可能な空間である。換言すると、ホモトピーレベルは、前述した各空間レベル間の移動を補助する空間であるといえる。ホモトピーレベルを前述した各空間レベルと併用することにより、前記対象情報に対する処理前の状態を取得することが可能となるからである。
次に、図面に基づいて基本システムを説明する。
《基本システム》
(装置構成)
図1は、基本システムである情報処理装置100の構成を示すブロック図である。同図に示すように、情報処理装置100は、対象情報を入力するキーボード、ポインティングデバイス等の入力部11(本発明の入力部に相当)と、入力された対象情報を格納するメモリ12(本発明の記憶部に相当)と、対象情報を所定のプログラムに基づいて処理するCPU13(本発明の処理部に相当)と、入力された対象情報や処理後の対象情報を出力するディスプレイ等の出力部14(本発明の出力部に相当)と、CPU13と入力部11との間を接続するインターフェース15と、CPU13と出力部14との間を接続するインターフェース16とを備える構成である。
インターフェース15は、例えば、USB(Universal Serial Bus)等のシリアルインターフェースである。また、インターフェース16は、例えば、RGB(赤、緑、青)の画像信号および同期クロックの出力インターフェースである。
ただし、図1では、省略されているが、情報処理装置100は、大容量のデータを保存する外部記憶装置であるハードディスク、着脱可能な記憶媒体(例えば、CD(Compact disc)、DVD(Digital Versatile Disk)、フラッシュメモリカード等)の駆動装置、ネットワークにアクセスし他の情報処理装置と通信する通信インターフェース等を含んでよい。
情報処理装置100は、典型的には、パーソナルコンピュータ、サーバ等のコンピュータである。ただし、情報処理装置100は、そのようなコンピュータに限定されるものではなく、例えば、携帯情報端末、携帯電話、PHS(Personal Handyphone System)、デジタルテレビ、デジタルテレビのチューナあるいはセットトップボックス、ハードディスクを含むテレビジョンの録画装置、車載用の端末等として実現できる。また、メモリ12は、揮発性のDRAM(Dynamic Random Access Memory)、不揮発性のEPROM(Erasable Programmable Read Only Memory)、EEPROM(Electronically Erasable and Programmable Read Only Memory)、フラッシュメモリ等を含む。
本情報処理装置の機能は、CPU13がプログラムを実行することで実現される。このプログラムは、メモリ13あるいは不図示の外部記憶装置にインストールされる。プログラムは、通信インターフェースを通じてネットワークから、あるいは、着脱可能な記憶媒体からインストールされる。したがって、このプログラムは、ネットワークあるいは着脱可能な記憶媒体等を通じて流通される。
また、メモリ12あるいは不図示の外部記憶装置に格納された対象情報は、CPU13が所定のプログラムを実行することによって各レベルを移行する。なお、各レベルとは、前記対象情報の抽象度が最も高く表現される集合レベル22と、前記集合レベル22よりも前記対象情報の抽象度が低く表現され、該対象情報が部分集合を要素として表現されるトポロジー空間レベル23と、前記トポロジー空間レベルよりも前記対象情報の抽象度が低く表現され、該トポロジー空間レベルにおける前記対象情報同士が接着される接着空間レベル24と、前記トポロジー空間における前記対象情報が所定の属性をもって表現されるセル空間レベル25と、前記情報処理手段による処理の実行前の状態を所定の形式によって表現することにより処理前の状態に戻すことが可能なホモトピーレベル21と、を有する。また、本実施形態では、セル空間レベル25は、前記接着空間レベルよりも前記対象情報の抽象度が低いものとして定義する。すなわち、セル空間レベルは、接着空間レベルの情報に、属性と属性値の意味づけを加えたものである、と解することにする。
(データ構造)
次に、第1の実施形態に係る情報処理装置100のメモリ12に格納される対象情報の構造、すなわちデータ構造について説明する。なお、本実施形態の情報処理装置100は、以下のデータ構造によって、処理対象のデータを記述し、記憶し、演算処理を行う。
(1)対象情報の構成要素
本情報処理装置は、対象情報を式の形式で表現する。式は、和演算子“+”、積演算子“×”、第1の括弧“(”“)”、および第2の括弧“{”“}”によって記述される。第1の括弧が本発明の集合因子構成演算子に相当する。また、第2の括弧が本発明の順序構成演算子に相当する。このような対象情報の表現形式を式表現とも呼ぶ。
式は、1以上の識別子を含む。識別子は、記号または記号列で表現される。本実施形態では、記号として、英数字、および特殊文字(ただし、和演算子“+”、積演算子“×”、第1の括弧“(”“)”、および第2の括弧“{”“}”を除外する)を用いることとする。ただし、記号は、一般的にアルファベットとも呼ばれ、必ずしも、これらの文字には限定されない。
本実施形態では、特殊な識別子として、Φおよびεを用いる。Φは、値ゼロ、和演算子において演算結果を変化させない値、または空集合を示す識別子である。本実施形態では、Φを零元と呼ぶ。また、εは、値1、あるいは、積演算子において演算結果を変化させない値である。本実施形態では、εを単位元と呼ぶ。なお、Φを和演算の単位元と呼ぶ場合もあるが、本実施形態では、Φを零元と呼ぶことにする。
また、本情報処理装置は、所定の識別子を、演算を表す予約語として使用する。例えば、F(式)は、式を展開する演算であり、G(式+attach(因子1+因子2))は、接着演算を示す予約語(attachは、そのときのパラメータを示す予約語)であり、Hは、ホモトピー保存処理を示す予約語である。これらの予約語については、ユーザは、通常の識別子として使用することができない、という点で制限がある。
本実施形態では、以下の規則によって対象情報、すなわち、識別子、因子、項(要素ともいう)、集合情報、ホモトピー情報、接着空間の情報、およびセル空間の情報が定義を記述する式表現が生成される。
(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に格納できる。
(5)接着空間情報
接着空間情報は、トポロジー空間情報に含まれる2つの部分集合X(本発明の第1の被接着情報に相当)と部分集合Y(本発明の第2の被接着情報に相当)に対して、それぞれの部分に含まれる部分集合を関係付けることで構成される。本実施形態では、この関係付けによって発生する関係を同値関係という。
今、トポロジー空間情報T(トポロジーIDは、Tid)およびトポロジー空間情報U(トポロジーIDは、Yid)が、トポロジー空間情報Tid×(Tに属する部分集合の和)+トポロジー空間情報Uid×(Uに属する部分集合の和)としてメモリ12に記憶されているとする。
さらに、Tに属する部分集合の和=部分集合T0+部分集合T−T0と2つの部分集合に分離できるとする。その場合、本情報処理装置では、トポロジー空間情報Tとトポロジー空間情報Uとを関連づけるトポロジー空間情報Tの因子p(本発明の第1の同値因子に相当)と、トポロジー空間情報Uの因子q(本発明の第2の同値因子に相当)が指定される。そして、トポロジー空間情報Tが、因子pを含む部分集合T0(本発明の第1の関連項に相当)と、因子pを含まない部分集合T−T0に分離される。ここで、T−T0は、集合Tから集合T0を削除した差集合である。また、トポロジー空間情報Uが、因子qを含む部分集合U0(本発明の第2の関連項に相当)と、因子qを含まない部分集合U−U0に分離される。ここで、U−U0は、集合Uから集合U0を削除した差集合である。
この場合に、上記2つのトポロジー空間情報TとUの和は、トポロジー空間情報Tid×(部分集合T0)+トポロジー空間情報Tid×(部分集合T−T0)+トポロジー空間情報Uid×(部分集合U0)+トポロジー空間情報Uid×(部分集合U−U0)と表現される。このように、集合から特定の因子pを含む部分集合を取り出した場合に、これを商と呼ぶ。また、その商を除く部分集合を剰余という。
さらに、部分集合T0=T0id×(T0の項の和)、部分集合U0=U0id×(U0の項の和)と記述されているとする。この場合に、部分集合T0と部分集合U0とを関係付けることによって、以下の接着空間情報を構成できる。すなわち、この場合の接着空間情報は、{部分集合T0におけるpの左因子+部分集合U0におけるqの左因子}{p+q}{部分集合T0におけるpの右因子+部分集合U0におけるqの右因子}+トポロジー
空間情報Tid×(部分集合T−T0)+トポロジー空間情報Uid×(部分集合U−U0)、である。ここで、部分集合T0におけるpの左因子および部分集合T0におけるpの右因子が、ともに、本発明の第1の被接着因子に相当する。また、部分集合U0におけるqの左因子および部分集合U0におけるqの右因子が、ともに、本発明の第2の被接着因子に相当する。
なお、ここでは、トポロジー空間レベルの情報を接着する場合を説明したが、トポロジー空間レベルの情報に、属性と属性値が定義されて構成されるセル空間レベルの情報、および、項の組み合わせである集合レベルの集合情報に対しても、接着空間情報が定義できる。また、トポロジー空間、セル空間、集合空間のうち、一のレベルの情報と、他のレベルの情報とについて接着空間情報を定義できる。
(例)
今、以下のような果物のトポロジー空間情報と、野菜のトポロジー空間情報の和、すなわち、果物×(全種×(リンゴ+バナナ+ミカン)+丸×(リンゴ+ミカン)+細長×バナナ)+野菜×(全種×(大根+キュウリ+ゴボウ)+太×大根+細×(キュウリ+ゴボウ))がメモリ12に記憶されているとする。
ここで、果物のトポロジー空間情報の因子である細長と、野菜のトポロジー空間情報の部分集合である因子細との関連づけが指定され、同値関係にあるとする。この場合に、2つのトポロジー空間情報は、それぞれ次のように商と剰余とに分離される。すなわち、それぞれの集合情報が商と剰余に分離されたトポロジー空間情報は、
果物×細長×バナナ
+果物×(全種×(リンゴ+バナナ+ミカン)+丸×(リンゴ+ミカン))
+野菜×細×(キュウリ+ゴボウ)
+野菜×(全種×(大根+キュウリ+ゴボウ)+太×大根)
となる。
そして、同値関係が指定された細長と、野菜のトポロジー空間情報の部分集合である細とによって、接着空間情報が
{果物+野菜}×{細長+細}{バナナ+(キュウリ+ゴボウ)}
+果物×(全種×(リンゴ+バナナ+ミカン)+丸×(リンゴ+ミカン))
+野菜×(全種×(大根+キュウリ+ゴボウ)+太×大根)、のように構成される。
このようにして、接着空間情報は、2つのトポロジー空間情報の構造を維持した状態で、関係付けが指定された同値関係にある因子を基に結合されている。接着空間情報より、”細”と”細長”に同値関係が認められれば,右の因子”バナナ”と”(キュウリ+ゴボウ)”を{バナナ+(キュウリ+ゴボウ)}として関連づけて出力できる。
また、 伝票ID1枚目(A{ε+B+C{C1+C2}+D+E{E1+E2}}(a{ε+b+c{c1+c2}+d+e{e1+e2}}+位置(右上+右下)))
+伝票ID2枚目(A{ε+B+C{C1+C2}+D+E{E1+E2}}(a{ε+b+c{c1+c2}+d+e{e1+e2}}))
+MEMO(1(あいう)+2(ABC))
+・・・という伝票の束、およびメモMEMOを記述する情報がメモリ12に格納されていた場合を考える。ここで、MEMOを1枚目の伝票の右上に、位置を指定して張り付ける例を示す。
この例で,MEMOの1を1枚目の伝票の右上に張り付けるには,まず、MEMO情報の因子”1”,伝票1枚目の情報の因子”右上”でそれぞれ商空間が作成される。
伝票ID1枚目(A{ε+B+C{C1+C2}+D+E{E1+E2}}(a{ε+b
+c{c1+c2}+d+e{e1+e2}}+位置(右下)))+伝票ID1枚目×位置(右上)
+伝票ID2枚目(A{ε+B+C{C1+C2}+D+E{E1+E2}}(a{ε+b+c{c1+c2}+d+e{e1+e2}}))
+MEMO(2(ABC))+MEMO(1(あいう))
+・・・
ここで,”1”と”右上”の関係付けを指定し接着すると、接着情報は、
{伝票ID1枚目×位置+MEMO}{右上+1}{ε+(あいう)}+剰余の部分集合を含む情報、として構成される。このように、接着情報は、相互に構造上の共通性がない2つの対象情報について、それぞれの接着前の構造を維持した状態で、2つの対象情報結合し、メモリ12に格納することができる。
(6)セル空間情報
セル空間情報は、事物の属性とその属性に対応する属性値とを有する情報である。属性は、キー属性とその他の属性とに分かれる。キー属性は属性値によって情報が識別できる属性である。セル空間情報で、属性値(またはその並び)は、インスタンスと呼ばれ、従来のデータベースのレコードに相当する。それぞれのインスタンスは、インスタンスIDと呼ぶ識別情報を有する。また、キー属性、あるいは、その他の属性が複数個ある場合には、キー属性、あるいは、その他の属性は、第2の括弧“{”と“}”とによって順序が維持された因子の形式で記述される。すなわち、いわゆるベクトル形式にて属性とその対応する属性値が記述される。
セル空間情報は、セル空間ID(本発明のセル空間識別子に相当)と、キー属性の因子と、単位元およびキー属性以外の属性を含む属性を有する因子と、インスタンスの集合を有する因子とを含む。セル空間情報は、
セル空間ID×(キー属性×{ε+(その他の属性の和)}
×((インスタンスID×{ε+(値の和)})の和))
で構成される。
このキー属性の因子と単位元およびキー属性以外の属性を含む属性を有する因子とが、本発明の属性因子に相当する。また、{ε+(その他の属性の和)}の中のいずれかの属性が複数の識別子の積からなる場合に、そのような識別子の積からなる属性が、本発明の属性の順序列に相当する。また、そのような属性が、第2の括弧“{}”で括られた因子である場合に、その第2の括弧で括られた属性が、本発明の属性の順序因子に相当する。
また、そのような属性に対応して、インスタンスの{ε+(値の和)}中の値が、識別子の積からなるときに、その値が、本発明の値列に相当する。また、値が、第2の括弧“{}”で括られた因子である場合に、その第2の括弧で括られた値が、本発明の値の順序因子に相当する。
(例)
セル空間情報の例は、
果物id×(名前{ε+形+色}(リンゴ{ε+丸+赤}+ミカン{ε+丸+黄}+バナナ{ε+細長+黄}))
+野菜id×(名前{ε+形状+色}(大根{ε+太+白}+キュウリ{ε+細+緑}+ゴボウ{ε+細+茶}))
で示すことができる。この例では、従来のリレーショナルモデルで、果物テーブル、野菜テーブルとして記述されていた情報が、式表現で記述される。なお、この例は、2つのセル空間情報(果物と野菜)を含むことから、統合セル空間情報とも呼ばれる。
この統合セル空間情報の処理例を示す。まず、果物のインスタンスのうち、属性“形”が“細長”の値を持つインスタンスとの部分集合(商という)と、その他のインスタンス
の部分集合(剰余という)とを作成する。また、まず、野菜のインスタンスのうち、属性“形状”が“細”の値を持つインスタンス(商という)と、その他のインスタンス(剰余という)とに分離する。この場合、結合セル空間情報は、
果物id×バナナ×形×細長
+野菜id×形状×(キュウリ+ゴボウ)細
+果物id×(名前{ε+形+色}(リンゴ{ε+丸+赤}+ミカン{ε+丸+黄}+バナナ{ε+黄}))
+野菜id×(名前{ε+形状+色}(大根{ε+太+白}+キュウリ{ε+緑}+ゴボウ{ε+茶}))
となる。次に、果物のうちの属性“形”が値“細長”を有する部分集合と、野菜のうちの属性“形状”が値“細”を有する部分集合との関係付けを指定し、同値関係を設定する。そして、この同値関係によって接着空間情報を作成すると、
{果物id×形×バナナ+野菜id×形状×(キュウリ+ゴボウ)}{細長+細}{ε+ε}
+果物id×(名前{ε+形+色}(リンゴ{ε+丸+赤}+ミカン{ε+丸+黄}+バナナ{ε+黄}))
+野菜id×(名前{ε+形状+色}(大根{ε+太+白}+キュウリ{ε+緑}+ゴボウ{ε+茶}))
となる。
(記述例)
以下、従来のデータ構造である表およびツリー構造が、本実施形態のデータ構造でどのように記述できるかを示す。
図3は、第1の実施形態に係る情報処理装置100のメモリ12に格納されるセル空間情報の第一のデータ構造例を示す。同図に示すように、第1の実施形態に係る情報処理装置100では、従来正規化表構造として表形式で表現される対象情報は、表現形式1の状態でメモリ12に格納することができる。表現形式1で、Aは、キー属性(例えば社員番号等)、B,C,D,E等は、その他の属性(例えば、氏名、性別、入社年、所属部署等)である。
図2は、第1の実施形態に係る情報処理装置100のメモリ12に格納されるセル空間情報の第二のデータ構造例を示す。同図に示すように、第1の実施形態に係る情報処理装置100では、従来ツリー構造として表現される対象情報は、表現形式2又は3でメモリ12に格納することができる。そして、同図に示すように有向グラフの一部としてのツリー構造について対応可能である。表現形式2で、aは、例えば、動物、bはほ乳類、cは魚類、dは人、eは鯨、fはマグロ、gは鯉等である。この場合、b(ほ乳類)およびc(魚類)は、a(動物)の属性、例えば、食する、呼吸する等を継承する。b(ほ乳類)およびc(魚類)の共通の属性は、a(動物)に定義される。
したがって、本実施形態の式表現によって、フレーム等の知識ベース、あるいは、オブジェクト指向データベース等を記述し、メモリ12に格納できる。情報処理装置100は、これらに対応する事物に関する情報の入力を入力部11から受け付け、対応する情報を生成し、メモリ12に格納し、メモリから読み出し、出力部14に出力できる。
また、逆ツリー構造で表現される対象情報についても、表現形式3のようにメモリ12に格納することができる。逆ツリー情報は、基本的な情報からより複雑な情報を構成する場合に適用できる。表現形式3では、例えば、aはCPUであり、bはインターフェースであり、cは外部記憶装置の駆動部であり、dはCPUボードであり、eは外部記憶装置であり、fはパーソナルコンピュータである。
このように逆ツリー構造は、製品の設計書、事業の工程管理図等、基本情報からより複雑な情報を組み上げて管理することができる。したがって、本実施形態の式表現によって、製品の設計情報、事業の工程等を記述し、メモリ12に格納できる。情報処理装置100は、これらに対応する事物に関する情報の入力を入力部11から受け付け、対応する情報を生成し、メモリ12に格納し、メモリから読み出し、出力部14に出力できる。
図4は、第1の実施形態に係る情報処理装置100のメモリ12に格納される第三のデータ構造例を示す。同図に示すように、第1の実施形態に係る情報処理装置100では、非正規化表構造と属性のない対象情報についても図4の状態でメモリ12に格納することができる。ここで、非正規化表構造と属性のない対象情報とは、図4に示すように伝票を示す対象情報と、その対象情報に追加される付箋メモに相当する対象情報とが例示できる。接着処理を実行し、接着空間を作成することで、コンピュータ上で伝票に付箋メモの内容を添付することと同等の処理が実現される。
なお、伝票の種類ごとにテーブルに格納する場合には、リレーショナルモデルによって従来のデータベースで情報を管理できる。しかしながら、伝票の種類数が変動する場合、既存の伝票の構成が変更された場合には、リレーショナルモデルでは、対応できない。
ここで、本発明に係る所定の表現形式、すなわちデータ構造についてより詳細に上記図4の形式に基づいて説明する。IDまたはid(identification)は、格納される対象情報を識別するものである。そしてこの対象情報は、識別子A〜E2,a〜e2と、演算時の結合強さが異なる第一の括弧()および第二の括弧{}と、これらにより表現される因子{C1+C2},{E1+E2}等と、これら因子の積によって表現される項E{E1+E2}等と、前記項の和によって表現される式と、により構成される。なお、本実施形態では、項を要素ともいう。また、すでに述べたように、単位元εは、所定の処理を実行した場合に1として処理される記号である。上記以外の特別な記号として、所定の処理を実行した場合に0として処理される零元Φが存在する。このような状態でメモリ12に格納された対象情報は、CPU13が所定のプログラムを実行することによって、入力装置11から入力された伝票データにしたがって、生成され、メモリ12に格納され、部分集合に分離され、他の部分集合と接着され、あるいは、検索されることになる。
図4の例では、インスタンスとして、伝票ID1で示される1枚目の伝票、伝票ID2で示される2枚目の伝票、およびMEMOで示されるメモが例示されている。また、この場合に、1枚目の伝票と2枚目以降の伝票で、項目の構成が異なっても構わない。本情報処理装置100は、対象情報を構成する識別子、あるいは項に、個々に属性を付与できるので、異なる属性の並びを有する異なる識別子、あるいは項を自在に記憶し、検索し、変更できる。また、{}内に、+識別子の形式で追加するとともに、属性に対応する値を追加すれば、データベースとして運用中においても、自在に属性と属性値とを追加、変更、削除できる。したがって、本実施形態のデータ構造によれば、情報処理装置100が取り扱うデータを柔軟に変更でき、厳密、正確なファイル設計の必要性が軽減される。
(基本演算手順)
図5に、本情報処理装置におけるプログラム構成を示す。本情報処理装置100は、例えば、データを格納し、検索し、変更し、表示するデータベースシステム等、様々事物を管理するシステムに適用できる。その場合、個々の管理対象に応じた機能は、アプリケーションプログラムAPとして提供される。すなわち、アプリケーションプログラムは、入力部11から入力されたデータをメモリ12あるいは外部記憶装置に格納し、これらに格納されたデータにアクセスし、検索し、出力部14に表示する。
一方、アプリケーションプログラムがメモリ12あるいは、外部記憶装置に格納するデ
ータの生成、格納、検索等の機能は、上述の式表現を処理する共通関数ライブライリが提供する。共通関数ライブラリは、アプリケーションインターフェースを備えており、アプリケーションプログラムへのこれらの機能、あるいは、サービスを提供する。以下、本情報処理装置100で典型的な共通関数の例を説明する。これらの共通関数は、プリミティブ関数、あるいは、基本演算とも呼ばれる。
アプリケーションプログラムからそれぞれの共通関数が呼び出されたときに、本発明の処理手段に相当するCPU13が以下の処理を実行する。
(1)積結合演算
積結合演算では、CPU13は、識別子と識別子とを積演算子によって接続する。積結合演算を実行するCPU13が本発明の積演算部に相当する。この場合、識別子自体が式表現であり、識別子が接続された結果も式表現となる。積結合演算のアプリケーションインターフェースは、例えば、戻り値=connect(因子1、因子2、演算結果);のように定
義できる。本実施形態では、式表現が文字列で記述されるので、“因子1”、“因子2”、および“演算結果”は、いずれも文字列である。因子1、および因子2として、識別子、複数の識別子を積結合演算で結合した式表現、第1の括弧“()”で囲まれた式表現、第2の括弧“{}”で囲まれた式表現、ε、およびΦを指定できる。積結合演算では、演算結果には、因子1×因子2が返される。すなわち、因子1と因子2との結合は、記号“×”(以下、積記号)で記述される。すなわち、積結合演算は、因子1と因子2との積演算による演算式を形成する。
一方、図9で説明する積演算では、因子1と因子2との積を実行する。因子1と因子2に、第1の括弧“()”および第2の括弧“{}”のいずれもが含まれていない場合には、積結合演算と積演算の結果は、同一である。因子1と因子2に、第1の括弧“()”および第2の括弧“{}”のいずれかが含まれている場合には、積演算の結果は、それの括弧内の項と、括弧外の因子との演算となる。
また、戻り値は、処理が正常終了したか否かを示す情報である。ただし、本実施形態では、戻り値の設定処理についての説明は、省略する。
(2)和演算
和演算では、CPU13は、識別子および因子の列として接続された複数の識別子のいずれかまたは両方から項の組み合わせを構成する。和演算を実行するCPU13が本発明の和演算部に相当する。この場合、識別子あるいは因子が式表現であるので、項の組み合わせも式表現となる。和演算のアプリケーションインターフェースは、例えば、戻り値=add(項1、項2、演算結果);のように定義できる。演算結果には、項1+項2が返され
る。すなわち、項1と項2との和は、記号“+”(以下、和記号)で記述される。
(3)項抽出処理、因子抽出処理
項抽出演算では、CPU13は、和記号“+”で組み合わせられた複数の項から、いずれかの項を取り出す。本実施形態では、複数の項のうち、先頭の項を取り出す。項抽出処理のアプリケーションインターフェースは、例えば、戻り値=getterm(式表現、演算結果);のように定義できる。項抽出処理を実行するCPU13が本発明の項抽出部に相当す
る。
同様に、因子抽出演算では、CPU13は、積記号“×”で組み合わせられた複数の因子の並びから、いずれかの因子を取り出す。本実施形態では、複数の因子のうち、先頭の因子を取り出す。因子抽出処理のアプリケーションインターフェースは、戻り値=getfactor(式表現、演算結果);のように定義できる。因子抽出処理を実行するCPU13が本
発明の因子抽出部に相当する。
(4)集合構成処理
集合構成処理では、CPU13は、和記号“+”で組み合わせられた複数の項を第1の括弧“()”で括る処理を実行する。集合構成処理のアプリケーションインターフェースは、例えば、戻り値=putin1(式表現、演算結果);のように定義できる。演算結果には、(式表現)が返される。集合構成処理を実行するCPU13が本発明の集合因子構成部に相当する。
(5)集合展開処理
集合展開処理では、CPU13は、第1の括弧“()”で括られた式表現から、第1の括弧“()”を取り除く処理を実行する。集合展開処理のアプリケーションインターフェースは、例えば、戻り値=putoff1(式表現、演算結果);のように定義できる。集合展開
処理を実行するCPU13が本発明の集合因子展開部に相当する。
(6)順序構成処理
順序構成処理では、CPU13は、和記号“+”で組み合わせられた複数の項を第2の括弧“{}”で括る処理を実行する。集合構成処理のアプリケーションインターフェースは、例えば、戻り値=putin2(式表現、演算結果);のように定義できる。順序構成処理を実行するCPU13が本発明の順序生成部に相当する。
(7)順序展開
順序展開処理では、CPU13は、第2の括弧“{}”で括られた式表現から、第2の括弧“{}”を取り除く処理を実行する。集合展開処理のアプリケーションインターフェースは、例えば、戻り値=putoff2(式表現、演算結果);のように定義できる。順序展開
処理を実行するCPU13が本発明の順序展開部に相当する。
(8)共通因子括りだし処理
共通因子括りだし処理では、CPU13は、第1の括弧“{}”または第2の括弧“()”が付加された項の組み合わせに含まれる項から共通の因子を抽出する。共通因子括りだし処理のアプリケーションインターフェースは、例えば、戻り値=and(式表現、演算結果);のように定義できる。ここで、式表現には、複数の項が和記号で組み合わせられた
式である。共通因子括りだし処理を実行するCPU13が本発明の括り出し部に相当する。
(9)横方向展開処理
横方向展開処理は、横方向展開処理とは第一または第二の括弧を一回外す、すなわち展開する処理である。横方向展開処理のアプリケーションインターフェースは、例えば、戻り値=expand1(展開前の式表現、展開後の式表現);のように定義できる。
図6Aは、横方向展開処理を実行する処理のフローを示す。具体的には、ステップS101では、対象情報(“展開前の式表現”)が入力される。すなわち、メモリ12に対象情報が例えばユーザにより入力される。そして、CPU13は、入力された式表現を展開前の式表現に指定して、共通関数expand1が実行される。
以下、対象情報として数6に示すデータを用いた場合について説明する。なお、項の数および因子の数は、左から順に第一、第二のように割り当てられるものとし、2重、3重の括弧で括られている場合には、最も外側の括弧を第一として扱うものとする。
cell(id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2}))+s(p(p1+p2)+q(q1+q2))・・・(数6)
ステップS102では、入力された対象情報を横方向展開処理した項をΦに設定、すなわち初期化する。なお、各展開処理の詳細については後述する。ステップS103では、対象情報を構成する式の長さが0であるかを判断する。すなわち、対象情報が存在するか否かを判断する。式の長さが0であると判断した場合には、ステップS114へ進み横方向展開処理を終了する。一方、式の長さが0であると判断しなかった場合には、次のステップへ進む。
ステップS104では、数6で表現される対象情報から第一項を取得する。すなわち、数7に示すデータを取得する。ステップS105では、取得した数7で表現される対象情報をメモリ12に保存する。なお、ここでいう保存とは変数に保存すること、すなわちメモリ12に所定の領域を確保して記録することを意味する。また、以下の処理において取得するステップと削除するステップの間に行われる処理でいう保存は、上記同様メモリ12に所定の領域を確保して記録することを意味することとする。
cell(id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2}))・・・(数7)
ステップS106では、数6の式表現から数7を削除する。これにより、数8により表現されるデータがメモリ12に存在することになる。
s(p(p1+p2)+q(q1+q2))・・・(数8)
ステップS107では、横方向展開処理後の因子をεに設定する。次にステップS108では、項の長さが0であるかを判断する。すなわち、対象情報を構成する項が存在するか否かを判断する。項の長さが0であると判断した場合には、ステップS113へ進み横方向展開処理を終了する。一方、式の長さが0であると判断しなかった場合には、次のステップへ進む。
ステップS109では、第一項から第一因子であるcellを取得する。ステップ110では、取得した第一因子cellをメモリ12に保存する。次にステップ111では、第一因子cellを第一項より削除する。
ステップS112では、展開後の因子に対し取得した因子を積演算し、その結果を展開後の因子とする。すなわち、ステップS107で設定した展開後の因子εにステップS109で取得した第一因子cellを積演算する。積演算の展開処理については後述する。その後、第一項の項の長さが0であると判断されるまでステップS108からステップS112の処理を繰り返す。
ステップS113では、ステップS108で項の長さが0であると判断した場合に、展開後の項に対し展開後の因子の和演算を行い、その結果を展開後の項と設定する。その後、式の長さが0であると判断されるまでステップS103からステップS113の処理を繰り返す。以上のステップを実行することにより、展開後の対象情報は数9により表現される。この式表現が“展開後の式表現”として、アプリケーションプログラムに返されることになる。なお、横方向展開処理を実行中の対象情報の状態の詳細は図6B、図6Cに示す。
cell×id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2})+s×p(p1+p2)+s×q(q1+q2)・・・(数9)
このように、数6の最も外側の“(”と“)”とが外された式表現となっている。他の例としては、例えば、a(b+c(d+e))+f(g+h)という式表現を横方向展開した場合には、a×b+ a×c(d+e)+f×g+f×h になる。
(10)縦方向展開処理
次に、縦方向展開処理について説明する。縦方向展開処理は、各項をそれぞれ全展開していく処理である。例えば、上記a(b+c(d+e))+f(g+h)について,縦方向展開するとa×b+a
×c×d+a×c×e+f×g+f×h になる。一方、横方向展開で式を全展開するには,各項に括
弧が無くなるまで各項を展開するという指定が必要となる。縦方向展開処理のアプリケーションインターフェースは、例えば、戻り値=expand2(展開前の式表現、展開後の式表現);のように定義できる。
図7は、縦方向展開処理を実行する処理のフローを示す。図7では、図6と同一の処理を実行するステップは、同一の符号で示している。ステップS101では、対象情報(“展開前の式表現”)を入力する。例えば、ユーザインターフェース等を通じて、展開前の式表現が入力される。そして、メモリ12に格納される対象情報がアプリケーションプログラムから共通関数expand2に入力される。以下、対象情報として数10に示すデータを
用いた場合について説明する。
cell(id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2}))+s(p(p1+p2)+q(q1+q2))・・・(数10)
ステップS102では、入力された対象情報を展開処理したときに得られる対象情報(項)をΦに設定する。ステップS103では、対象情報を構成する式の長さが0であるかを判断する。すなわち、対象情報が存在するか否かを判断する。式の長さが0であると判断した場合には、ステップS114へ進み縦方向展開処理を終了する。一方、式の長さが0であると判断しなかった場合には、次のステップへ進む。ステップS104では、数10から第一項を取得する。すなわち、数11に示すデータを取得する。ステップS105では、取得した数11で表現される対象情報をメモリ12に保存する。
cell(id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2}))・・・(数11)
ステップS106では、数10から数11を削除する。これにより、メモリ12には、数12により表現されるデータが存在することになる。
s(p(p1+p2)+q(q1+q2))・・・(数12)
ステップS107では、第一項を展開したときに得られる、展開後の因子をεに設定する。次にステップS108では、項の長さが0であるかを判断する。すなわち、対象情報を構成する項が存在するか否かを判断する。項の長さが0であると判断した場合には、ステップS113へ進み縦方向展開処理を終了する。一方、式の長さが0であると判断しなかった場合には、次のステップへ進む。
ステップS109では、第一項から第一因子であるcellを取得する。ステップ110では、取得した第一因子cellをメモリ12に所定の領域を確保して保存する。次にステップ111では、第一因子cellを第一項より削除する。
ステップS112aでは、因子が第一の括弧または第二の括弧で括られているとき、括弧内の式について縦方向展開処理を実行し(すなわち、再帰呼び出しを実行する)、結果を取得した因子とする。次にステップS112bでは、展開後の因子に対し取得した因子を積演算し、その結果を展開後の因子とする。積演算の展開処理については後述する。その後、第一項の項の長さが0であると判断されるまでステップS108からステップS112の処理を繰り返す。
ステップS113では、ステップS108で項の長さが0であると判断した場合に、展開後の項に対し展開後の因子の和演算を行い、その結果を展開後の項と設定する。その後、式の長さが0であると判断されるまで再帰的にステップS103からステップS113の処理を繰り返す。以上のステップを実行することにより、展開後の対象情報は数13により表現される。そして、この式表現が“展開後の式表現”として、アプリケーションプログラムに引き渡される。なお、上記ステップを実行中の対象情報の状態の詳細は図8Aから図8Dに示す。
cell×id×1+cell×id×A×1×a1+cell×id×B×1×b1+
cell×id×C×1×c1+cell×id×2+cell×id×A×2×a2+cell×id×B×2×b2+cell×id×C×2×c2+s×p×p1+s×p×p2+s×q×q1+s×q×q2・・・(数13)
(11)積演算処理
次に積演算処理について説明する。積演算処理は、2つの式表現を入力し、それぞれの式表現を因子とする新たな式表現を生成する処理である。積演算処理のアプリケーションインターフェースは、例えば、戻り値=product(因子1、因子2、積演算後の式);のよ
うに定義できる。積演算処理を実行するCPU13が本発明の共通因子展開部に相当する。
図9は、積演算処理を実行する処理のフローを示す。まずステップS201では、第一の因子(“因子1”)および第二の因子(“因子2“)がアプリケーションプログラムから関数productに入力される。その結果、それぞれの因子がメモリ12の対応する領域に
新たに記憶される。
ステップS202では、どちらかの因子がεであるかを判断する。どちらかの因子がεであると判断された場合には他方の因子がデータを構成することになり(ステップS203)、積演算処理を終了する。一方、どちらかの因子がεであると判断されなかった場合には次のステップへ進む。
ステップS204では、どちらかの因子がΦであるかを判断する。どちらかの因子がΦであると判断された場合には演算後のデータはΦとなり(ステップS205)、積演算処理を終了する。一方、どちらかの因子がΦであると判断されなかった場合には次のステップへ進む。
ステップS206では、両方の因子が第一の括弧により括られているかを判断する。両方の因子が第一の括弧により括られていると判断した場合には、互いの全項の全組み合わせでそれぞれ掛けた項の和として処理し(ステップS207)、次のステップへ進む。一方、両方の因子が第一の括弧により括られていると判断しなかった場合には、次のステップへ進む。
ステップS208では、一方の因子が第一の括弧により括られているかを判断する。一方の因子が第一の括弧により括られていると判断し場合には、第一の括弧で括られている項に他方の因子をそれぞれ掛けた項の和として処理し(ステップS209)、次のステップへ進む。一方、一方の因子が第一の括弧により括られていると判断しなかった場合には、次のステップへ進む。
ステップS210では、両方の因子が第二の括弧により括られているかを判断する。両方の因子が第二の括弧により括られていると判断した場合には、それぞれの第二の括弧内の同じ順序の項をそれぞれ掛けた項の和として処理し(ステップS211)、次のステップへ進む。このとき、第二の括弧は、そのまま維持されるので、演算の前後で第二の括弧内の項の順序はそのまま維持されている。一方、両方の因子が第二の括弧により括られていると判断しなかった場合には、次のステップへ進む。
ステップS212では、一方の因子が第二の括弧により括られているかを判断する。一方の因子が第二の括弧により括られていると判断し場合には、第二の括弧で括られているすべての項に他方の因子をそれぞれ掛けた項の和として処理し(ステップS213)、その後積演算処理を終了する。一方、他方の因子が第二の括弧により括られていると判断しなかった場合には、互いの因子を掛けた項を作成し(ステップS214)、その後積演算処理を終了する。その結果、“積演算後の式表現“がアプリケーションプログラムに引き
渡される。なお、図10に上記積演算処理の例とともに実際の処理を示す。
(12)商演算処理
次に商演算処理について説明する。商演算処理は、対象情報を記述する集合から、指定された因子(識別子を含む)を含む式表現(項、あるいは要素)と、そのような因子を含まない式表現とに分離する処理である。商演算処理のアプリケーションインターフェースは、例えば、戻り値=divide(商演算される式表現、商演算する因子、商の式表現、剰余
の式表現);のように定義できる。本実施形態で、商演算は、“商演算する因子”を含む
式表現を取り出す処理となる。そのため、商演算する因子のことを、同値関係を指定する因子ともいう。商演算する因子は、本発明の演算用因子に相当する。
図11Aは、商演算処理(サブルーチン1)を実行する処理のフローを示す。サブルーチン1を実行するCPU13が本発明の商演算部に相当する。なお、図12Aは、商演算のうち、剰余を求める処理(サブルーチン2)である。サブルーチン1は、商演算される式表現である式1、商演算する因子を入力され、商の式表現である式2を出力する。
まずステップ301では、商演算処理が実行される前の所定の表現形式によって表現される式1(“商演算される式表現”)、および商演算する因子(これを同値関係示す因子ともいう)pが入力される。以下、数14により表現される対象情報が入力された場合について説明する。また、1を商演算する因子(同値関係を示す因子p)と設定する。
cell(id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2}))・・・(数14)
次に、ステップS302では、CPU13は、演算後の商(商項ともいう、ここでは、項2で表す)を初期化する。このとき、項2の値は、Φ(空、または0)である。
次に、ステップS303では、CPU13は、式1の長さが0であるか否かを判定する。式1の長さが0である場合、CPU13は、サブルーチン1の処理を終了する。
一方、ステップS303の判定において、式1の長さが0でなかった場合、CPU13は、ステップ304に処理を進める。そして、CPU13は、式1から始めの項(以下、項1という)を取得する。ここで、項1は、数14の全体である。さらに、ステップS305において、CPU13は、式1から項1を削除する。
次に、ステップS306において、CPU13は、項1が因子p(ここでは、“1”)を含んでいるか否かを判定する。ここで、因子pを含んでいるとは、項1の因子としては、あるいは、項1の第1の括弧で括られた因子内の項のいずれかに、因子pを含むことをいう。すなわち、項1の式表現中に因子pが含まれるか否かを判定する。項1が因子pを含んでいない場合、CPU13は、項1を空とし、処理をS303に戻す。
一方、ステップS306の判定において、項1が因子pを含んでいる場合、CPU13は、処理をS308に進める。そして、CPU13は、項3を初期化し、空とする。ここで、項3は、始めの項である項1の商演算結果を格納する変数(メモリ12の領域)である。ここでは、数14の構成から、項1に因子p(=1)が含まれていると判定される。
そして、ステップS309において、CPU13は、項1の長さが0であるか否かを判定する(S309)。項1の長さが0でない場合、ステップS310において、CPU13は、項1から始めの因子(以下、因子1という)を取得する。数14の構成から、因子“cell”が取得される。そして、ステップS311において、CPU13は、項1から因子1を削除する。
次に、ステップS312において、CPU13は、因子1に商演算する因子pが含まれ
、かつ、因子1が第1の括弧“(”と“)”とによって形成された因子であるとき、その括弧内の式を式1に設定し、サブルーチン1を再帰呼び出しする。そして、その再帰呼び出しによる処理結果を因子1とする。この処理によって、商演算される式中で、項に“()”による因子を含む場合は、その項は、()内の式が商演算されることになる。数14の構成の場合、“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に進める。そして、CPU13は、項2(商項)に対して、得られている項3を和演算する。さらに、ステップS315の処理で、CPU13は、項2を商演算後の式である式2に設定する。その後、CPU13は、処理をS302に戻す。
そして、S302の判定で、式1の長さが0になると、CPU13は、サブルーチン1の処理を終了する。このような処理により、式2に、以下の数15Aの式表現が出力され、アプリケーションプログラムに引き渡される。
cell×id{ε+A+B+C}×1{ε+a1+b1+c1}・・・(数15A)
図11Bおよび図11Cに、数14の式表現に対して、サブルーチン1が実行された場合の式1、項1、項2、項3、因子1、および式2の変化を示す。図11Bおよび図11Cの第1行目は、各列の要素、すなわち、図11A中の該当する処理を示す番号、式1、項1、項、項3、因子1、および式2を示している。第2行以下の各行は、一連の処理ステップであり、図11B上から下へ、さらに、図11Cの上から下へ実行される。
そして、まず、ステップS301で、共通関数へのパラメータを介して、式1である数14が入力され、メモリ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による商演算の結果が積演算され、数15Aが式2として、最終的に出力されることになる。
次に、図12Aにより、剰余を求める処理(サブルーチン2)を説明する。サブルーチン1を実行するCPU13が本発明の剰余演算部に相当する。サブルーチン2は、商演算される式である式1、商演算する因子pを入力され、剰余の式3を出力する。
まずステップ321では、商演算処理が実行される前の所定の表現形式によって表現される式1(“商演算される式”)、および商演算する因子(同値関係示す因子p)が入力される。以下、図11Aの場合と同様、数14により表現される対象情報が入力された場合について説明する。また、1を商演算する因子(同値関係p)と設定する。
次に、ステップS322では、CPU13は、演算後の式(ここでは、式3と呼ぶ)を初期化する。このとき、式3の値は、Φ(空、または0)になる。
次に、ステップS323では、CPU13は、式1の長さが0であるか否かを判定する。式1の長さが0である場合、CPU13は、サブルーチン1の処理を終了する。
一方、ステップS323の判定において、式1の長さが0でなかった場合、CPU13は、ステップ324に処理を進める。そして、CPU13は、式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を削除する。
次に、ステップS329において、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は、式3(剰余項)に対して、得られている項4を和演算する。その後、CPU13は、処理をS323に戻す。
そして、S323の判定で、式1の長さが0になると、CPU13は、サブルーチン2の処理を終了する。このような処理により、式3に、以下の数15Bの式表現が剰余として出力され、アプリケーションプログラムに引き渡される。
cell(id{ε+A+B+C}(Φ+2{ε+a2+b2+c2}))・・(数15B)
図12Bおよび図12Cに、数14の式表現に対して、サブルーチン2が実行された場合の式1、項1、項4、因子1、および式3の変化を示す。図12Bおよび図12Cの第1行目は、各列の要素、すなわち、図12A中の該当する処理を示す番号、式1、項1、項、項4、因子1、および式3を示している。第2行以下の各行は、一連の処理ステップであり、図12Bの表の上から下へ、さらに、図12Cの表の上から下へ実行される。
そして、まず、ステップS321で、共通関数へのパラメータを介して、式1である数14が入力され、メモリ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})がサブルーチン1の再起呼び出し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による商演算の結果が積演算され、数15Bが式3として、最終的に出力されることになる。
(13)接着演算処理
接着とは、本実施形態にて提案する概念であり、2つの被接着情報のそれぞれのデータ構造を維持した上で、それぞれ被接着情報を結合する機能である。接着においては、2つの被接着情報のそれぞれに含まれる情報で、互い関係付けられる情報(これを同値関係を指定された因子という)が指定される。そして、その関係付けられた因子(同値関係を有する因子)同士を介して、2つの被接着情報が結合される。
接着演算処理のアプリケーションインターフェースは、例えば、戻り値=attach(接着
する式1、因子1、接着する式2,因子2、接着演算後の式);のように定義できる。こ
こで、因子1と、因子2とは、接着演算する式1の項と、式2の項とを関係付ける指定である。この指定によって、式1で因子1を含む項と、式2で因子2を含む項とが以下のような手順で結びつけられる。
図13は、接着演算処理を実行する処理のフローを示す。ステップS401では、接着する所定の表現形式によって表現される対象情報を入力する。以下の説明では、数16および数17によって表現される対象情報を接着処理する場合について説明する。すなわち、数16が被接着式1であり、数17が被接着式2である。また、ここでは、数16の因子“2”と、数17の因子“q”との同値関係が指定されているとする。
cell(id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2}))・・・(数16)
s(p(p1+p2)+q(q1+q2))・・・(数17)
ステップS402では、数16および17の因子1、因子2による上述した商演算処理(サブルーチン1およびサブルーチン2)を実行して、得られた商と剰余とを和演算処理する。このサブルーチン1を実行し、商を取得するCPU13が、本発明の関連項抽出部に相当する。また、このサブルーチン2を実行し、剰余を取得するCPU13が、本発明の非関連項抽出部に相当する。その結果、“式1から得られた剰余+式1から得られた商+式2から得られた剰余+式2から得られた商”という形式の式が形成される。これを商演算後の式という。このうち、式1からの商を項1とし、式2から得られた商を項2とする。項1は、因子“2”を含む項である。また、項2は、因子“q”を含む項である。このように、同値関係を指定された因子1、因子2を含む項を、同値要素を表す項という。すなわち、式1に対して、因子“2”で商演算した商が項1であり、同値要素を表す項である。また、式2に対して、因子“q”で商演算した商が項2であり、これも同値要素を表す項である。
次にステップS403では、因子1および因子2を含む項1、2を取得し商演算後の式から削除する。さらに、因子1を含む項1、および因子2を含む項2をそれぞれ左因子と右因子とに分ける。ここで、左因子とは、ある項の因子pに着目した場合に、pの左に位置する因または因子の積をpの左因子という。また、右因子とは、ある項の因子pに着目した場合に、pの右に位置する因子または因子の積をpの右因子という。例えば、項(a×b+c)×p×d×eについてみると、pの左因子は(a×b+c)であり、pの右因子はd×eとなる。
次に、ステップS404では、項1における因子1の左因子をl1,右因子をr1,項2における因子2の左因子をl2,右因子をr2とし,接着空間の式として{l1+l2}{因子1+因子2}{r1+r2}を作成する。次に、ステップS405では、商演算
処理後の剰余を示す対象情報、接着演算処理後の対象情報を和演算処理し,接着演算処理後の対象情報とし、処理を終了する。その結果、“接着演算後の式”に演算結果が設定され、アプリケーションプログラムに引き渡される。なお、接着演算処理を実行中の対象情報の状態の詳細は図14に示す。
図14に、接着演算処理を実行中の対象情報の状態の詳細を示す。この例では、まず、S401にて接着する式1、式2が入力される。また、因子1として“2”、因子2として、“q”が指定されている。
次に、S402にて商演算が実行される。その結果、式1は、cell(id{ε+A+B+C}(1{ε+a1+b1+c1}+Φ))という剰余と、cell(id{ε+A+B+C}(Φ+2{ε+a2+b2+c2}))という商に分離される。また、式2は、s(p(p1+p2)+Φ)という剰余と、s×q(q1+q2)という商に分離されている。図14のS402の行では、これらの剰余と商が和演算された形式で示されている。
そして、ここで、式1の同値因子、すなわち、因子“2”を含む項は、cell×id{ε+A+B+C}(Φ+2{ε+a2+b2+c2})であり、同値要素を表す項1という。また、式2の同値因子、すなわち、因子“q”を含む項は、s×q(q1+q2)であり、同値要素を表す項2という。これらから、左因子l1は、cell×id{ε+A+B+C}、左因子l2は、s、右因子r1は、{ε+a2+b2+c2}、右因子r2は、(q1+q2)である。したがって、接着された結果である接着空間の式は、
{cell×id{ε+A+B+C}+s}{2+q}{(ε+a2+b2+c2)+(q1+q2)}
となる。
さらに、これらの剰余の式cell(id{ε+A+B+C}(1{ε+a2+b2+c2}+Φ))とs(p(p1+p2)+Φ)とを和演算することで、接着演算後の式となる。
(14)部分集合取得処理
部分集合取得処理は、集合から、指定された因子(以下、指定因子という)を有する項を含む式(部分集合)と、指定因子を有しない項の式(部分集合)に分離する処理である。この処理を実行する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(部分集合取得前の式表現、指定因子);のように定義できる。対象の式,因子を指定すると,括った後の式(戻り値)になります.
次に部分集合取得処理について説明する。図15は、部分集合取得処理を実行する処理のフローを示す。ステップS501では、演算前の所定の表現形式で表現される対象情報と、部分集合を指定するための指定因子pを入力する。以下、対象情報として数18に示すデータを用いて、指定因子“p”で部分集合を取得する場合について説明する。
s×p(p1+p2)+t×p(p3+p4)+id(s×p(p1+p2)+t×p(p3+p4))・・・(数18)
ステップS502では、部分集合を取得するための因子以外(ここでは、「その他の式」「左因子式」および「右因子式」)をΦと設定する。ステップS503では「処理後の項」をεに設定する。ステップS504では、対象情報を構成する式の長さが0であるかを判断する。すなわち、対象情報が存在するか否かを判断する。式の長さが0であると判断した場合には、ステップS517へ進む。一方、式の長さが0であると判断しなかった場合には、ステップS505へ進む。
ステップS505では、数18から第一項を取得し保存する。次にステップS506では、数18から第一項を削除する。次にステップ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)、処理を終了する。以上の処理を実行することにより、数18により表現される対象情報は、数19により表現される対象情報となる。なお、部分集合取得処理を実行中の対象情報の状態の詳細は図16A、図16Bに示す。
id({s+t}p{(p1+p2)+(p3+p4)})+{s+t}p{(p1+p2)+(p3+p4)}・・・(数19)
図16Aおよび図16Bに、数18の式表現に対して、部分集合取得処理が実行された場合の「演算前の式」、「部分集合取得のための因子」、「左因子式」、「右因子式」、「左因子」、「右因子」「その他の式」、「取得した項」、「取得した因子」、「処理後の項」、「部分集合項」および「演算後の式」の変化を示す。図16Aの各行と、図16Bの各行は、図15の処理での同一の処理を示している。すなわち、図16Aおよび図16Bを横に接続して、部分集合取得処理の状態変化が表されることになる。
図16Aおよび図16Bの第1行目は、各列の要素、すなわち、図15中の該当する処理を示す番号、「その他の式」、「取得した項」、「取得した因子」、「処理後の項」、「部分集合項」および「演算後の式」を示している。第2行以下の各行は、一連の処理ステップであり、図16Aおよび図16Bの表の上から下へ実行される。
ここでは、数18の式表現を処理対象とする。部分集合取得処理を実行する共通関数separateに対して、まず、部分集合取得前の式表現である数18が与えられる。この式表現はメモリ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)に対して、部分集合取得処理が再起呼び出しで実行される。図16Aおよび図16Bでは、再起呼び出し中の状態は、省略されているので、本文にて説明する。この場合も、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)}が作成されることになる。
(15)ホモトピー保存処理
次にホモトピー保存処理について説明する。ホモトピー保存処理は、式1に対して、パラメータを表す項pを用いて演算Gを実行し、式2が得られたとき、
(演算後の式2)=G(演算前の式1+演算時のパラメータを表す項p)
のように、演算実行前後の関係を保持する機能である。この場合、演算実行前の式1、すなわち、初期状態は、式ΦにパラメータΦ項を適用して、式1が得られたと仮定し、演算前の式を
式1=F(Φ+Φ)
のようにおく。ここで、演算実行前の式をホモトピー保存式1と呼ぶことにする。
図17は、ホモトピー保存処理を実行する処理のフローを示す。ここで、式1は、数20の左辺の式である。また、attachによって接着演算が指定され、因子2と因子qとの同値関係が指定されている場合を説明する。
まず、ステップS601では、演算実行前の式、すなわち、ホモトピー保存式1と、演算Gと、パラメータ因子pが入力される(S601)。
ここでは、例として、以下の数20によって、式1を仮定する。また、演算Gとして、接着演算を実行する例を示す。また、そのときの、パラメータ因子として、attach(2+q)を指定する。すなわち、因子2と因子qとの同値関係が指定されて、接着演算が実行された場合を例に、ホモトピー保存処理を説明する。
(cell(id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2}))+s(p(p1+p2)+q(q1+q2)))=F(Φ+Φ)・・・(数20)
ステップS602では、数20により表現される式から演算G前の式、すなわち数20の左辺を取得する。これを数21とする。
cell(id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2}))+s(p(p1+p2)+q(q1+q2))・・・(数21)
ステップS603では、演算Gによる演算処理を行い演算G後の式とする。この場合、数22により表現される式が得られる。ここでは、演算Gの例として、接着演算を実行する。また、接着演算の同値関係を指定するパラメータを“2”および“q”とする。すなわち、因子“2”で商演算された商と、因子“q”で商演算された商とを接着する。そのときのホモトピー保存式の例を説明する。
cell(id{ε+A+B+C}(1{ε+a2+b2+c2}+Φ))+s(p(p1+p2)+Φ)+{cell×id{ε+A+B+C}+ε}{2+q}{{ε+a2+b2+c2}+(q1+q2)}・・・(数22)
ステップS604では、演算G後のホモトピー保存式2として、(演算G後の式)=G(ホモトピー保存式1+演算時のパラメータp)を作成する。ここで、パラメータpは、“attach(2+q)”である。以上の処理を実行することにより数21により表現
された式は、数23により表現される式となる。
(cell(id{ε+A+B+C}(1{ε+a1+b1+c1}+Φ))+s(p(p1+p2)+Φ)+{cell×id{ε+A+B+C}+ε}{2+q}{{ε+a2+b2+c2}+(q1+q2)})
=G((cell(id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2}))+s(p(p1+p2)+q(q1+q2)))
=G(F(Φ+Φ)+attach(2+q)))・・・(数23)
この式は、F(Φ+Φ)で示される式(すなわち、数21)に、attach(2+q)というパラメータで演算G、すなわち、接着演算が実行されて、数23の左辺(最上段の式)が得られたことを示している。
(16)UNDO演算処理
次にホモトピー保存式におけるUNDO演算処理について説明する。図18は、ホモトピー保存式におけるUNDO演算処理のフローを示す。ステップS701では、ホモトピー保存式(演算G後の式)=F(演算G前の式+演算時のパラメータを表す式p)の入力をする。以下、対象情報として数24に示すデータを用いた場合について説明する。
(cell(id{ε+A+B+C}(1{ε+a2+b2+c2}+Φ))+s(p(p1+p2)+Φ)+{cell×id{ε+A+B+C}+ε}{2+q}{{ε+a2+b2+c2}+(q1+q2)})
=G((cell(id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2}))+s(p(p1+p2)+q(q1+q2)))
=F(Φ+Φ)+attach(2+q))・・・(数24)
上述のように、ホモトピー保存式は、演算G前の式F(Φ+Φ)に演算(この例では、接着演算G、演算時のパラメータはattach(2+q))を実行することで、数24の最上段(最初の“=”の左辺)の式表現が得られたことを記録している。なお、数24において、中段の式(最初の“=”の右辺)と、最下段の式(2つ目の“=”の右辺)とは、表現形式が異なるだけで実質的に同一の式である。最下段の式は、F(Φ+Φ)を用いて表現を簡略化している。そして、それら中段の式と簡略された式を“=”で結んだ式が、G()という演算の中に挿入されている。
UNDO演算処理では、この記録を基に、演算前の式を得る。すなわち、CPU13は、演算の種類と、演算時のパラメータとを基にして、演算前の状態に式を戻す。
次にステップS702では、UNDO後の式(演算G前の式)=G-1((演算G後の式)=G(演算G前の式+p))の作成を実行する。この場合、すでに、数24の中段の式と下段の式で、演算の種類G、演算実行前の式、演算時のパラメータattach(2+q)が記録されている。したがって、演算前の式は、直ちに、取り出すことができる。以上の処理を実行することにより数24により表現された対象情報は、数25により表現される対象情報となる。
((cell(id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2}))+s(p(p1+p2)+q(q1+q2)))=F(Φ+Φ))
=G-1
(cell(id{ε+A+B+C}(1{ε+a1+b1+c1}+Φ))+s(p(p1+p2)+Φ)+{cell×id{ε+A+B+C}+ε}{2+q}{{ε+a2+b2+c2}+(q1+q2)})
=G((cell(id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2}))+s(p(p1+p2)+q(q1+q2)))
=F(Φ+Φ)+attach(2+q))
)・・・(数25)
この式は、数24で与えられホモトピー保存式の両辺に、演算G前に戻す演算G-1を実
行することによって、演算G前の式(初期状態F(Φ+Φ)が得られたことを示している。これによって、演算G前の式である(cell(id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2}))+s(p(p1+p2)+q(q1+q2)))=F(ε+ε)が、演算G後の式であるcell(id{ε+A+B+C}(1{ε+a1+b1+c1}+Φ))+s(p(p1+p2)+Φ)+{cell×id{ε+A+B+C}+ε}{2+q}{{ε+a2+b2+c2}+(q1+q2)}から得られることが示される。
さらに、この演算G後の式であるcell(id{ε+A+B+C}(1{ε+a1+b1+c1}+Φ))+s(p(p1+p2)+Φ)+{cell×id{ε+A+B+C}+ε}{2+q}{{ε+a2+b2+c2}+(q1+q2)})は、演算G前の式であるcell(id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2}))+s(p(p1+p2)+q(q1+q2))から得られたことが記録されている。
すなわち、演算G前の式(F(Φ+Φ))に演算G、パラメータattach(2+q)を適用することで、演算G後の式が得られ、かつ、その演算G後の式に演算G-1を適用することで、演算G前の式に戻されたことが記録される。
このように、UNDO演算処理は、演算後の式から、演算前の式が得られたことを記録するので、次に示すREDO演算処理を実行することで、直ちに、演算後の式を得ることができる。
(17)REDO演算処理
次にホモトピー保存式におけるREDO演算処理について説明する。図19は、ホモトピー保存式におけるREDO演算処理のフローを示す。ステップS801では、ホモトピー保存式におけるUNDO後の式(演算G前の式)=G-1((演算G後の式)=G(演算G前の式+p))の入力をする。以下、対象情報として数26に示すデータを用いた場合について説明する。
((cell(id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2}))+s(p(p1+p2)+q(q1+q2)))=F(ε+ε))
=G-1(
(cell(id{ε+A+B+C}(1{ε+a2+b2+c2}+Φ))+s(p(p1+p2)+Φ)+{cell×id{ε+A+B+C}+ε}{2+q}{{ε+a2+b2+c2}+(q1+q2)})=G((cell(id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2}))+s(p(p1+p2)+q(q1+q2)))=F(Φ+Φ)+attach(2+q))
)・・・(数26)
上述のように、数26は、演算G前の式(F(Φ+Φ))に接着演算Gおよびパラメータattach(2+q)が適用され、演算G後の結果が得られ、さらに、演算G後の式から演算G前の式に戻されたことが記録されている。
次にステップS802では、UNDO後の式から,UNDO演算前の式、すなわち(演算G後の式)=G(演算G前の式+演算時のパラメータp)を取得し、REDO演算後の式とする。以上の処理を実行することにより数26により表現された対象情報は、数27により表現される対象情報となる。
(cell(id{ε+A+B+C}(1{ε+a2+b2+c2}+Φ))+s(p(p1+p2)+Φ)+{cell×id{ε+A+B+C}+ε}{2+q}{{ε+a2+b2+c2}+(q1+q2)})=G((cell(id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2}))+s(p(p1+p2)+
q(q1+q2)))=F(ε+ε)+attach(2+q))・・・(数27)
このように、ホモトピー保存処理によって、演算後の結果とともに、演算G前の式(F(Φ+Φ))と、適用される演算の種類Gと、使用されるパラメータattach(2+q)を記録する。これによって、UBDO演算処理で演算前の結果を得ることができる。さらに、UNDO演算処理で、演算後の式から、演算前の式が得られたことを記録することで、REDO演算処理を実行し、直ちに、演算G後の式を得ることができる。このように、ホモトピー保存処理、UNDO演算処理、およびREDO演算処理は、メモリ12の容量を犠牲にして、演算前後の関係を保持する一方、演算を戻す処理と再実行する処理とを簡易に実現する。
《第1実施形態》
以下、図20−図26の図面により、本発明の第1実施形態に係る情報処理装置200を説明する。上記基本システムの説明では、情報処理装置100において提供される基本演算手順の処理例を説明した。本実施形態では、基本システムでの基本演算手順に加えて、式表現の少なくとも一部を代数演算式に変換し、変換された代数演算式にしたがって代数演算を実行する情報処理装置200を説明する。本実施形態の他の構成および作用は、基本システムと同様である。そこで、基本システムと同一の構成要素については、同一の符号を付してその説明を省略する。また、図4−図19に示した基本システムのデータ構造および処理手順は、そのまま本実施形態においても適用される。
(代数演算)
本実施形態では、対象情報のうち、式表現を代数式として処理する。式表現での演算子と、代数式での演算子を区別するため、以下の記号を導入する。
(+):代数演算での加算を示す。なお、図面中では、丸印の中に+を組み込んだ記号で示す。
(−):代数演算での減算を示す。なお、図面中では、丸印の中に−を組み込んだ記号で示す。
* :代数演算での乗算を示す。
/ :代数演算での除算を示す。
本実施形態では、式表現において、和演算子”+”を代数加算記号(+)に変換する。すなわち、識別子または項の並びを加算の代数式に置き換える。また、積演算子“×”を代数乗算記号”*”に変換する。すなわち、因子の並びを乗算の代数式に置き換える。このような置き換えによって、本情報システムは、式表現を代数演算式に変換する。この変換により、代数乗算記号”*”で結合された因子と因子の交換が可能となる。本実施形態では、このような式表現を表現レベルの式表現という。そして、本情報システムは、表現レベルの式表現に含まれる代数演算式に対する代数演算を実行する。
本実施形態では、表現レベルとは各対象情報が型の概念をもつレベルである。型の概念をもつとは、例えば、円、ドル、ユーロ等の貨幣の単位を表す型、長さ、かさ、重さ等の量の単位を表す数値型をもつ情報であることをいう。型の概念は一般のプログラム、データベースに共通であり、数値型、文字型、日付等の情報である。
ここで、表現レベルでの代数を定義する。これを単位計算代数と呼ぶことにする。単位計算代数を生成する文法を以下の数28に定義する。以下、Rを実数の集合とし、その元をpとする。ただし、pとしては、単位元εも含む。また、Lを表意文字の集合とし、その元をuとする。ただし、uとしては、単位元εも含む。なお、ここで表意文字とは、実
数を表す文字列以外の文字あるいは文字列であって、他の表意文字との区切り可能なものをいう。例えば、$、¥等の記号、m、m2、m3等の単位、アルファベット、欧米語の単語、漢字、日本語の単語、ハングル語の単語等、各国語の単語等を含む。
さらに、ここでは、代数演算記号として、減算”(−)”および除算”/”が追加されている。
Figure 2009110440
@0050
ここで、Gは、グラマであり、文法を意味する。また、Pは、文法の生成規則である。ここでは、Eを単位式、Tを単位項、Fを単位因子、pを数値因子、uを文字因子と呼ぶことにする。その場合、E→T|E(+)T|E(−)Tは、「単位式は、単位項または単位式に単位項を加算したものまたは単位式から単位項を減算したもののいずれかである」ことを表している。
また、T→F|T*F|T/Fは、「単位項は、単位因子または単位項に単位因子を乗算したものまたは単位項から単位因子を除算したもののいずれかである」ということを表している。さらに、F→puは、「単位因子は数値因子と文字因子とを結合したもの(通常の代数の乗算と同じ)である」ということを表している。
一方、Gにおいて、{E, T, F}は、文法を構成する要素を表している。また、ΣLUΣRU{(+),(−) , *, /}は、最終的に表記される記号を表している。すなわち、この文法は、表意文字L、実数R、および代数演算記号”(+)”、”(−)” 、” *”、
”/”によって記述されることになる。さらに、文法Gの最後のP,Eは、生成規則P
によって、単位式Eが導出されることを意味している。なお、単位式の構成要素である項、因子、εも単位式であるので、単位式は、単位式から開始する。そして、生成規則Pにしたがって、新たな単位式が定義される。
混乱のない範囲で各演算記号は省略可能とする。例えば、単位因子と単位因子を列記した場合には単位因子*単位因子を表す。(+)はΣで表現する場合もある。単位式表現の識別子の記述にルールを加えたものであり、式表現の識別子が単位計算代数の単位式Eに相当する。
図20に、単位式の例を示す。図20は、数29に示した単位項と単位因子とからなる単位式を木構造で示したものである。
Figure 2009110440
@0051
すなわち、数29の単位式(E)は、単位項(T)と単位項(T)の代数加算で記述され
る。図20の木構造は、生成規則を示している。例えば、最上部のEとその下のEおよびTとは、生成規則E→E(+)Tを示している。さらに、左下のEとTおよびその下層のTFとの関係は、生成規則E→>T→T/Fを示している。この場合、T/Fは、$5/pieceである。
すなわち、数29の第1項は、単位因子$5と単位因子PIECEを代数除算記号”/”で
結合し、さらに、単位因子10PIECEを代数乗算記号”*”で結合して構成される。
さらに、数29の単位因子$5は、文字因子$と数値因子5の組み合わせで構成される。また、単位因子10PIECEは、数値因子10と文字因子PIECEとの組み合わせで構成される。
数30に、単位計算代数の性質を示す。
Figure 2009110440
@0052
ここで、(1)は、文字因子uの0乗が単位元εになることを示している。また、(3)は乗算の単位元を示す。したがって、単位代数式を構成する数値因子と数値因子の列記、文字因子と文字因子の列記、数値因子と文字因子の列記、および文字因子と数値因子の列記はいずれも乗算を記述する。例えば、5$とは、1ドルが数量5だけあることを意味し、10PIECEは、1PIECEが10個あることを表現する。
(5)−(7)は、代数における指数の法則と同様である。(8)(9)は、代数加算と同様の演算順序の入れ替えを示している。また、(10)は、代数加算における因子の交換が可能であることを示し、(11)は乗算における因子の交換が可能であることを示している。ただし、(11)では、数値因子と文字因子とを1つの因子と見なして、そのような因子(pu)と因子(qv)との間の交換が可能であることを示している。
(12)−(19)は、因子の乗算での分配法則である。また、(20)および(21)は、文字因子の分配法則を示している。すなわち、数値因子pqに対して、文字因子uを組み合わせた因子puおよびquについて、文字因子uを括りだして、数値因子pとqとの間の加減算が可能であることを示している。同様に、(22)および(23)は、数値因子pqに対して、文字因子uvを組み合わせた因子puおよびqvについて、文字因子uvを括りだして、数値因子pとqとの間の乗除が可能であることを示している。また、本単位計算代数では、除算は、−1乗(指数を−1とするべき乗)で記述することができる。
数31に、上記単位代数式の性質に基づく、単位計算関数fの定義式を示す。
Figure 2009110440
@0053
また、関数fによる元とその像が等しくなるまでfを繰り返し適用する写像をfwとする。fwの簡単な例は以下の通りである。
fw((100euro/(1person*1day)*15persons+120euro/(1person*1day)*10persons)/1room*10rooms*3days)
= 81,000euro
関数fwは、”/文字因子”で指定される単位数量を示す文字因子と、”*数値因子文字因子”で示される数値因子(数量)の単位を示す文字因子との間を約分する処理によって、単位を示す文字因子を消去する処理を含む。そして、fwは、単位が一致する項と項とを加算する。ただし、この関数の例では、dayとdays等、文字因子の単数形と複数形は
等しいとしている。一方、式において、+を(+)に、×を*に変換し、式を表現レベルに移行する簡単な関数をgとし、表現レベル移行関数と呼ぶ。
和演算“(+)”また差演算“(−)”において、文字因子が等しくなければ処理は継続されない。簡単な例として、50yen (+) 5$ におけるyenと$は異なるので処理はこれ以上なされない。
(システムの概要)
次に、基本システムで説明した式表現に対して代数演算を実行する情報処理装置200
の例について説明する。
図21は、情報処理装置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 Electronics)等のパラレルインターフェースである。通信部32は、Ethernet(登録商標)等のL
AN基板である。
このような情報処理装置の具体的な例としては、パーソナルコンピュータを例示できる。また、このような情報処理装置は、クライアント装置とサーバ装置を用いても構成できる。そして、サーバ装置としては、JSP1.4(商標)、ウェブサーバにはTomcat(商標)5.0を含むコンピュータを例示できる。クライアント装置とサーバ装置は同一種類のパーソ
ナルコンピュータで実現してもよい。そのようなパーソナルコンピュータは、例えば、OS:Windows(登録商標)XP、CPU:Intel Pentium(登録商標)III1.10GHz、メモリ:1.23GB等、ハードディスク:20Gbyte等)としてもよい。
図22は、本実施例に係る情報処理装置200の機能ブロックを例示する図である。各機能ブロックは、例えば、図21の情報処理装置200上で、コンピュータプログラムにより実現される。
図22は、情報処理装置200が、例えば、入力部11、出力部14と、処理部40によって構成できることを示している。処理部40は、図21に示した、CPU13、メモリ12、外部記憶装置34、着脱可能記録媒体アクセス装置36等を含む。
処理部40は、図5と同様に、アプリケーションプログラムAP1、AP2、共通関数ライブラリ46、メモリ・外部記憶装置45を含む。なお、ここでは、図21のメモリ12および外部記憶装置24を総称して、メモリ・外部記憶装置45という。また、図22
では、情報処理装置200専用のアプリケーションプログラムAP1の他、一般的なテキストエディタAP2を明示した。ユーザは、テキストエディタAP2を通じて、基本システムで説明した式表現、あるいは、代数演算式をメモリ・外部記憶装置45に格納してもよい。
アプリケーションプログラムAP1は、ユーザインターフェース画面制御部41、要素情報編集・格納部42、要素情報抽出・演算部43、および代数演算部44を含む。
ユーザインターフェース画面制御部41は、出力部14に、ユーザインターフェース画面を表示する。そして、ユーザインターフェース画面制御部41は、入力部11からのユーザ操作を検出し、情報処理装置200にそのユーザ操作に対応した指令を送る。例えば、各種入力欄へのユーザ入力データの検出、各種ボタンの押下、メニューの選択、コマンドの入力等である。
要素情報編集・格納部42は、出力部14に表示されたユーザインターフェース画面を通じて、ユーザからの式表現の定義、代数演算式の定義等を受け取り、メモリ・外部記憶装置45に格納する。ただし、式表現の定義、代数演算式の定義等は、テキストエディタAP2から入力されることもある。また、例えば、入力部11として、スキャナを接続し、紙面上の式表現の定義、代数演算式を入力してもよい。また、図21の通信部32を通じて、ネットワーク上の他のコンピュータ等から、式表現の定義、代数演算式を入力してもよい。
要素情報抽出・演算部43は、出力部14に表示されたユーザインターフェース画面を通じて、ユーザから特定の識別子(例えば、集合ID、トポロジーID等)の指定を受け取る。そして、要素情報抽出・演算部43は、その識別子によって、ユーザが指定した式表現中から、その指定された識別子を含む式表現を抽出する。この処理は、例えば、基本システムで説明した商演算、あるいは、部分集合取得処理により実行される。そして、要素情報抽出・演算部43は、その指定された識別子を含む式表現を代数演算部44に引き渡し、代数演算を実行させる。
代数演算部44は、式表現中から、積演算子”×”を代数乗算記号”*”に変換する。また、代数演算部44は、和演算子”+”を代数加算記号”(+)”に変換する。なお、この代数演算部44の変換機能を式表現=>単位式への変換であり、表現レベル移行関数gである。また、本実施形態では、元々、式表現中の文字として、積演算子”×”、および和演算子”+”以外に、文字列の一部として代数減算記号”(−)”、および代数除算記号”/”を含んでいる。
そして、代数演算部44は、変換された式に対して、代数演算を実行する。これは、通常の四則演算である。
以上のように、本実施形態では、情報処理装置200の主要な機能はCPU13で実行されるコンピュータプログラムとして実現される。ただし、入力部11、出力部14、処理部40、要素情報編集・格納部42、要素情報抽出・演算部43、代数演算部44(式表現=>単位式への変換機能、および単位式の代数演算を部品として含む)その他、図22に示した構成要素は、例えば、それぞれユニット(Unit)という用語で記述してもよい。ここでユニットとは、モジュールあるいはテーブル等を含み、以下のソフトウェアの構成要素(Component)、または、ハードウェアの構成要素(Component)によって実現される。ただし、ユニットが、以下の例に限定されるわけではない。
すなわち、ユニットは、例えば、フィールド・プログラマブル・ゲートウェイ(FPG
A)、特定用途向け集積回路(ASIC)、ゲートアレイ、論理ゲートの組み合わせ、信号処理回路、アナログ回路、その他の回路網等であって、上記それぞれの構成要素の機能を実現するものを含む。
ソフトウェアのユニット、例えば、ソフトウェアモジュールは、例えば、ソフトウェア部品、手続き型言語による部品、オブジェクト指向ソフトウェア部品、クラス部品、タスクとして管理される部品、プロセスとして管理される部品、関数、属性、手続き(プロシジャともいう)、サブルーチン(ソフトウェアルーチンともいう)、プログラムコードの断片・部分、ドライバ、ファームウェア、マイクロコード、データ、データベース、データ構造、テーブル、配列、変数、パラメータ等の構成要素を含む。さらに、これらの構成要素は、1または複数のCPU(Central Processing Unit)、あるいはDSP(Digital Signal Processor)等の処理装置上で実現される。
ソフトウェアモジュールは、C言語、C++、Java(登録商標)、Visual Basic(登録商標)または他の多くの言語で記述できる。これらのソフトウェアモジュールは、1または複数の機械(あるいはコンピュータ)読み取り可能な記憶装置、例えば、ダイナミック・ランダム・アクセス・メモリ(DRAM)、スタティック・ランダム・アクセス・メモリ(SRAM)、消去およびプログラム可能なリード・オンリー・メモリ(EEPROMs)、フラッシュメモリ、およびこれらいずれかのメモリを含むメモリカード;磁気ディスク、例えば、ハードディスク、フレキシブルディスク(フロッピー(登録商標)等)、および他の着脱可能なディスク媒体;他の磁気媒体、例えば、テープ;光媒体、例えば、コンパクトディスク(CDs)、DVD(Digital Vide Disk,Digital Versatile Disk)に格納できる。ただし、ソフトウェアのユニットあるは、ソフトウェアモジュール等に含まれる命令は、有線ネットワークカードと有線ネットワーク、あるいは無線カードと無線ネットワークを通じてコンピュータ等の機械、あるいは装置に転送あるいはローディングし、実行できる。そのような転送処理、あるいは、ローディング処理において、データ信号は例えば搬送波に組み込まれ(embodied as carrier waves)、有線あるいは無線ネットワークを転送される。た
だし、データ信号が搬送波によらず、いわゆるベースバンド信号のまま転送される場合もある。
以上のような機能を実現するプログラム、命令コード、コードセグメントは、本技術分野の通常のプログラマであれば構成できる。また、上記機能を実現する電気回路網は、本技術分野の通常の回路技術者であれば構成できる。
(表現レベル移行アルゴリズム)
図23に、情報処理装置200が式表現を表現レベルの単位式に変換する手順を例示する。この処理は、例えば、情報処理装置200中のサブルーチン等のコンピュータプログラムの部分として、実現される。この処理では、まず、変換対象の式表現が入力される(PS30)。入力されるとは、例えば、引数によって式表現がサブルーチンに引き渡されることをいう。ただし、ハードディスク等の外部記憶装置34、通信部32、あるいは、入力部11を通じて情報処理装置200に式表現が引き渡される場合も含む。
次に、情報処理装置200は、式表現中のすべての演算子(積演算子×、および和演算子+)を処理したか否かを判定する(PS31)。すべての演算子を処理していない場合、情報処理装置200は、次の演算子を取り出す(PS32)。そして、情報処理装置200は、式表現の演算子(積演算子×、および和演算子+)を表現レベルの処理記号(代数乗算記号*、代数加算記号(+))に変換する(PS33)。
その後、情報処理装置200は、制御をPS31に戻す。そして、式表現中のすべての
演算子を処理すると、情報処理装置200は、処理を終了する。
(単位式を計算するアルゴリズム)
図24、25は単位式を計算するアルゴリズムの概要を例示するフローチャートである。このアルゴリズムは、本実施形態の情報処理装置200のCPUで実行されるコンピュータプログラムとして情報処理装置200に実装される。また、図26は、このアルゴリズムによって、単位式(100円/1本*10本+200円/1冊*5冊)/1セット*20セットを計算する
例である。
この処理の特徴は、()型の単位因子に対してなされる再帰処理にある。これは()型の単位因子の中身がトポロジー空間を継承し、再帰的に単位式になることによる。単位項の計算において、項における単位因子はそれぞれ数値因子と文字因子に分離され、それらは別々に計算される。そして、それらは結合され再び単位因子となり次の処理に進む。以下、図24−図26により説明する。
情報処理装置200は、処理を開始すると(PS1)、処理前の単位式E1を入力する(PS2)。ここで、単位式E1を入力するとは、例えば、図24および図25のアルゴリズムを実現するコンピュータプログラムのサブルーチンが引数を通じて、単位式E1を引き渡されることをいう。また、例えば、インターフェース15を通じて、入力部11から単位式E1を入力する場合をも含む。また、例えば、入力部11からハードディスク等の外部記憶装置34上のファイル名を指定され、指定されたファイルから単位式E1を読み出すことも含む。以下、図26に示したように、次の数32に示す単位式を処理する例を示す。
(100円/1本*10本+200円/1冊*5冊)/1セット*20セット・・・(数32)
ここでは、処理前(および処理中)の単位式E1を処理して得られる処理中(および処理後)の単位式をE2としている。また、処理前(および処理中)の単位式の最初の(およびそれに続く)単位項をT1とし、T1に含まれる最初の(およびそれに続く)単位因子をF1としている。さらに、単位式E2の最初の(およびそれに続く)単位項をT2としている。
「処理前(および処理中)」としたのは、処理前の単位式中の単位因子あるいは単位項が処理の進行とともに削除され、残りの単位式について、最初の単位式と同様に、処理されるためである。すなわち、「最初の(およびそれに続く)」とは、「未処理部分のうちの先頭の」という意味である。「最初の(およびそれに続く)」、「処理中(および処理後)」についても同様のことを意味している。
本情報処理装置200は、まず、処理後の単位式E2を初期値εに設定する(PS3)。そして、本情報処理装置200は、単位式E1の長さが0か否かを判定する(PS3A)。単位式E1の長さが0でない場合、単位式E1から先頭の単位項T1および処理記号S1を取得する(PS4)。ここで、処理記号S1は、単位項T1と、T1の次の項との演算を示す代数演算記号である。図26に示すように、数32の例では、T1として、E1そのものである数32が得られる。なぜなら、S32の例では、単位式は、単一の単位項で構成され、後続する単位項がないからである。また、この時点では、現在処理中のT1は、E1の先頭の単位項であるので、処理記号S1として、”1”を示すεが設定される。また、図24の処理では省略されているが、E1から単位項T1が取得されると、取得された単位項T1がE1から削除される。この例では、E1は、NULLになる。
次に、本情報処理装置200は、処理後の単位項T2を初期値εに設定する(PS5)。次に、本情報処理装置200は、単位項T1の長さが0か否かを判定する(PS5A)
。単位項T1の長さが0でない場合、単位項T1から先頭の単位因子F1および処理記号S2を取得する(PS6)。ここで、処理記号S2は、単位因子F1と、F1の次の因子との演算を示す代数演算記号である。図26の第7行に示すように、数32の例では、F1として、括弧”()”で括られた数33が得られる。
(100円/1本*10本+200円/1冊*5冊)・・・(数33)
また、現在処理中の単位因子F1は、E1の先頭の単位因子であるので、処理記号S2として、”1”を示すεが設定される。また、図25の処理では省略されているが、単位項T1から単位因子F1が取得されると、取得された単位因子F1がT1から削除される。この例では、T1は、”/1セット*20セット”になる。
次に、本情報処理装置200は、現在処理中の単位因子F1が括弧”()”で括られた因子か否かを判定する(PS6A)。なお、ここでは、括弧”()”で括られた因子を括弧”()”型の因子という。
そして、現在処理中の単位因子F1が括弧”()”型である場合、本情報処理装置200は、F1中の()の中を再帰的に処理し、その結果を再びF1とする(PS7)。この再帰的処理により、F1として2000円が設定される。
一方、現在処理中の単位因子F1が括弧”()”型でない場合、あるいは、PS7の再帰的処理が終了した場合、本情報処理装置200は、処理後の単位項T2を処理中の単位因子F1と処理記号S2にしたがって計算し、その結果を再びT2とする(PS8)。この時点では、処理後の単位項T2および処理記号S2は、ともにεであるので、処理中の単位因子F1がそのまま処理後の単位項T2に設定される。したがって、T2は、2000円になる(図26の第39行目)。なお、図26の備考欄に行番号を付する。ここで、第1行目は、カラムの表題を表示する説明行である。
次に、本情報処理装置200は、制御を5Aに戻す。その結果、図26の”再帰終了
”の次の行(37行目)以降に示すように、本情報処理装置200は、処置中の単位項T1として、”/1セット*20セット”を処理する。この場合に、F1として、”1セット”が取り出される。また、処理記号S2として、”/”が取り出される。さらに、処理前の単位項T1は、”/1セット”が除外され、”*20セット”となる(PS7)。
そして、処理後の単位項T2とF1とが処理記号S2(すなわち、”/”)によって計算され、その結果がT2となる。この場合に、T2は、2000円(セット)-1ということになる(PS8)。1セットは、単にセットとして記述され、代数除算記号が−1乗に変換されるためのである。
同様の処理を繰り返して、処理中の単位因子F1として、20セット、処理記号S2として、代数乗算記号*が取り出される(PS7)。そして、処理後の単位項T2とF1(すなわち、”20セット”)とが処理記号S2(すなわち、”*”)によって計算され、その結果がT2となる。この場合に、T2は、40000円ということになる(PS8)。
さらに、本情報処理装置200は、処理後の単位式E2と単位項T2とを処理記号S1にしたがって、計算し、その結果を再びE2とする(PS9)。この場合、処理後の単位式E2および処理記号S1は、ともにεであるので、処理後の単位項T2がそのまま処理後の単位式E2に設定される。したがって、T2は、40000円になる(図26の最終行(第47行))。
そして、本情報処理装置200は、制御をPS3に戻す。このような処理によって、処理中の単位式E1の長さが0になると、処理後の単位式E2を出力部14に出力する。そして、本情報処理装置200は、処理を終了する。
以下、図26にしたがって、PS7の再帰的処理を詳述する。PS7の処理で、数32に示した単位式の括弧”()”の中の式により、図24のPS2での単位式E1として、数33の括弧内が引き渡される。その結果、処理前の単位式E1として”100円/1本*10本+200円/1冊*5冊”が設定される。
すると、情報処理装置200は、先頭の単位項T1として、”100円/1本*10本”を取り出す(PS4)。このとき、処理記号S1は、εである。また、単位式E1からT1が除外されるので、E1は、”+200円/1冊*5冊”となる。
さらに、T1の長さが0でないので、本情報処理装置200は、先頭の単位因子F1として、”100円”を取り出す。その結果、T1は、”/1本*10本”となる(PS6)。このとき、処理記号S2は、εである。そのため、処理後の単位項T2としてF1がそのまま設定される(PS8)。その結果、T2は、100円となる。その後、情報処理装置200は、制御をPS3に戻す。
すると、T1の長さがやはり0でないので、本情報処理装置200は、先頭の単位因子F1として、”1本”を取り出す。その結果、T1は、”*10本”となる(PS6)。こ
のとき、処理記号S2は、”/”である。そして、情報処理装置200は、T2とF1(すなわち、”1本”)とを処理記号S2(すなわち、”/”)によって計算する(PS8)。その結果、T2は、100円(本)-1となる(図26では、見やすさを考慮し、“100円(本)−1“のように、指数を大きく記載している)。さらに、PS5AからPS8までの処理を繰り返すことによって、T2には、100円(本)-1*10本の結果である
1000円が格納される。このとき、T1は、長さが0になるので、制御はS5AからPS9に移動する。そして、処理後の単位式E2には、T2すなわち、1000円が設定される。
次に、本情報処理装置200は、制御をPS3Aに戻す。このとき、処理中の単位式E1には、”+200円/1冊*5冊”が残っているので、同様の処理が繰り返される。その結果、T2には、200円(1冊)-1*5冊の結果である1000円が格納される。また、処理記号S1は、”(+)”である(図26では、○中に+が組み込まれた記号である)。そして、E2(このとき、”1000円”)と、T2(このとき、”1000円”)とが、処理記号S1(このとき、”(+)”)によって計算され、2000円がE2に設定される。その結果、再帰呼び出し後のE2は、2000円となる。
以上述べたように、図24および図25にしたがって、数値因子p、qと文字因子u,vとからなる因子pu、因子qvと、代数の加減乗除を示す(+)、−、*、/とで記述された表現レベルの単位式を代数演算したがって計算する。このとき、商品の単位数量あたりの価格を、例えば、”NNN円/単位”で記述し、供給量を”QQQ単位”で記述することによって、”/単位”と”単位”とを約分し、供給量全体の価格を求めることができる。この場合、貨幣単位の一致した項と項とが加算される。すなわち、情報処理装置200は、単価に含まれる数値と提供量に含まれる数値について乗算を適用し、除算した形式で記述された単位量を示す文字または文字列と前記乗算した形式で記述された単位量を示す文字または文字列とを約分し、同一の貨幣単位を示す文字または文字列を有する2以上の要素に含まれる数値に加算を適用する。
さらに、例えば、そのような商品が商品A1、単価P1、単位1、数量N1、商品A2
、単価P2、単位2、数量N2、・・・のように組み合わせたものを出荷物X1とする。また、商品B1、単価Q1、単位3、数量M1、商品B2、単価Q2、単位4、数量M2、・・・のように組み合わせたものを出荷物X2とする。
そして、製品X1をY1セット、製品X2をY2セット組み合わせた出荷物の合計を(P1/単位1*N1単位1+P2/単位2*N2単位2)*Y1+(Q1/単位3*M1単位3+Q2/単位4*M2単位4)*Y2のように階層的に記述された単位式を図24、図25のアルゴリズムにしたがって、処理できる。
一方、本情報処理装置200は、基本システムで述べた情報処理装置100と同様の手順で式表現を入力し、記憶し、処理する。例えば、情報処理装置200は、部品A×単価/単位×提供量×単位+部品B×単価/単位×提供量×単位・・・というような式表現を記憶する。本情報処理装置200は、このような式表現を表現レベルの式表現に変換し、図24および図25の手順にしたがって代数演算を実行することが可能である。
《第2実施形態》
以下、顧客情報を管理する業務アプリケーションに、情報処理装置200を適用した例を説明する。したがって、情報処理装置200の構成そのものは基本システムあるいは第1実施形態と同様である。すなわち、情報処理装置200は、式表現および表現レベルの単位式が処理可能である。そこで、本実施形態において、基本システムあるいは第1実施形態と同一の構成要素については、同一の符号を付してその説明を省略する。
今、顧客データのセル空間の式(数34)を入力する。
顧客情報×顧客コード{ε+氏名+会社+年齢+大学+趣味}(T1{ε+小嶋+T社×営業部+30+W大+{ゴルフ+将棋}})+顧客情報×顧客コード{ε+氏名+会社+年齢+大学+趣味+性格}(F1{ε+能見+F社+45+{K大+T大}+盆栽+お人好し})+顧客情報×顧客コード{ε+氏名+会社+年齢+大学+趣味+家族}(P1{ε+赤星+P社+36+F大+ゴルフ+{妻+子供×2人}})・・・(数34)
図27は、ユーザインターフェースからの入力例である。図27のように、本情報処理装置のユーザインターフェースは、ファイル名入力欄100、属性入力欄101、属性値入力欄102、”項目の追加”ボタン103、”項目の削除ボタン”104および登録ボタン105を含む。
このユーザインターフェースは、初期状態では、例えば、1つの属性入力欄101と、対応する属性値入力欄102を有する。ユーザが、入力部11を通じて”項目の追加”ボタン103を操作すると、その操作に応じて属性入力欄101および属性値入力欄102の組が追加される。一方、ユーザが、入力部11を通じて”例えば、項目を選択し、さらに、項目の削除”ボタン104を操作すると、その操作に応じて属性入力欄101および属性値入力欄102の組が削除される。
ユーザは、入力部11を通じて属性入力欄101に属性値、あるいは、項目名を入力する。また、ユーザは、入力部11を通じて属性値入力欄102に、それぞれの属性に対する属性値を入力する。例えば、図27の左下の画面G1では、顧客コード:T1、氏名:小嶋、会社:T社×営業部、年齢:30歳、大学:W大、趣味:ゴルフ、将棋が入力されている。本情報処理装置200は、式表現を処理できるので、会社として、会社名である”T社”と所属部門である”営業部”を積演算子で結合して入力できる。また、一時的に、会社名だけを入力しておき、配属が決定する等、後の段階で、所属部署を入力できる。すなわち、情報処理装置200は、属性値を詳細化して追加入力できる。
図27の右下の画面G2では、G1と比較して、さらに属性”性格”が追加されている
。そして、G1と同様に、顧客コード:F1、氏名:能見、会社:F社、年齢:40歳、大学:K大+T大、趣味:盆栽、性格:お人好しが入力されている。本情報処理装置200は、式表現を処理できるので、1つの入力欄に、K大学+T大学のように、2つの値の組み合わせを入力できる。その場合、最初に値(K大)を入力しておき、後になって、追加の情報(T大)を入力できる。さらに、顧客コードで識別されるデータの固まり(基本システムでの部分集合に相当)ごとに、異なる種類の属性(例えば、”性格”)を追加できる。
このように、ファイルをユーザ自ら設計し、詳細化された値、複数の値が入力可能であることが分かる。また、次のような顧客についてメモのデータを入力し、メモリ・外部記憶装置45に記憶する。入力は、例えば、テキストエディタAP2あるいは図27のようなユーザインターフェースを利用すればよい。ただし、専用のユーザインターフェース画面を設けてもよい。このとき、トポロジー空間の式を作成して前式に追加する。
「2007年4月2日と5月3日に、M社の児玉がT社の小嶋さん(事業部部長)さんと会いセルDS事業化のための打ち合わせをした。小嶋さんの娘さんはJ大卒の女医である。小嶋さんはH大の國井研究室出身でS社の山田氏と高校時代、同窓であることが分かった。」
…+メモ1(2007年×(4月×2日+5月×3日))(セルDS事業化×打ち合わせ
{児玉+小嶋×事業部長}{M社+T社} +小嶋(娘×J大×女医)+H大学×國井研究室+高校の同窓(小嶋+山田×S社))・・・(数35)
ここで、数35の先頭の”・・・”は、数34に追加されるので、数34の式表現が省略されていることを示している。以下、同様である。
このように、メモのような形式のないデータもトポロジー空間の式として、文章のようにして入力し、メモリ・外部記憶装置45への記憶が可能である。メモは、通常は、テキストエディタで入力すればよい。ただし、図27の画面で、ファイル名をメモ1(2007年×(4月×2日+5月×3日))とし、属性を”セルDS事業化×打ち合わせ{児玉+小嶋×事業部
長}とし、属性値を{M社+T社}としてもよい。この場合、属性{児玉+小嶋×事業部
長}および対応する属性値は、図27の同一欄で設定してもよいし、異なる欄で設定してよい。例えば、また、セルDS事業化×打ち合わせ×児玉を1の属性とし、M社をその属性値とすればよい。セルDS事業化×打ち合わせ×小嶋×事業部長を1の属性とし、T社をその属性値とすればよい。数35の”小嶋(娘×J大×女医)”以降についても、同様のユーザインターフェース画面で入力できる。ただし、本発明の実施においてユーザインターフェース画面の構成に限定あるわけではない。
次に、他のデータとして、商品データのセル空間の式(数36)を作成し、前式に追加する。この場合のユーザのインターフェースとしては、図27と同様のインターフェース画面を通じて入力してもよい。ただし、テキストエディタAP2を用いてもよい。
すなわち、図27の顧客コードに代えて、商品コードを設定する。また、氏名、会社、年齢、大学、趣味、性格等に代えて、商品名、色、価格、在庫数を設定すればよい。そして、例えば、最初の商品コード:S1、商品名:ゴルフ*クラブ1、色:黒、価格:20000円/本、在庫数:10本等を設定すればよい。このように、図27のユーザインターフェースは、セル空間IDに相当する商品情報、顧客情報等の入力欄が省略されているが、キー属性、属性、属性値からセル空間情報を簡易に入力できる。
…+商品情報×商品コード{ε+商品名+色+価格+在庫数}(S1{ε+ゴルフ*クラ
ブ1+黒+20000円/本+10本}+S2{ε+ゴルフ*クラブ2+灰+30000円/本+20本})+商品情報×商品コード{ε+商品名+価格+在庫数}(S3{ε+ゴルフ*ボール1+100円/個+1000個})+商品情報×商品コード{ε+商品+色+価格+サイズ×在庫数}(S4{ε+ゴルフ*シューズ1+白+18000円/足+
{L+M+S}{100足+50足+30足}}+S5{ε+サッカー*シューズ1+白+12000円/足+{L+M}{100足+50足}})・・・(数36)
ユーザが指定した単語に関連するデータを出力したいとき、情報処理装置200は、ユーザの指示を受け付け、まず入力された式の縦方向展開処理(展開写像ともいう)による像を求め、次に指定の単語を括り因子として、部分集合取得処理(括り写像ともいう)により括り項を求める。例えば、上述の式から”ゴルフ”に関するデータが欲しいとき、因子”ゴルフ”を括り因子にして括ると、それぞれ顧客データ、商品データの中から括り項として次の式が取得される(数37)。この処理は、図15に示した通りである。
{顧客情報×顧客コード×趣味{T1+P1}+商品情報×商品コード×商品名×{S1+S2+S3}}ゴルフ{{ε+ε}+{クラブ1+クラブ2+ボール1+シューズ1}}・・・(数37)
数37は、「ゴルフを趣味にしているのは、顧客コードT1、P1の顧客であり、またゴルフ関連商品はクラブ1、クラブ2、シューズ2である」ことを示している。図28は数37のユーザインターフェースへの出力例である。図28のように、異なる部分集合である顧客情報T1、顧客情報P1、商品情報S1等で、”ゴルフ”という文字列を属性値の一部に持つ部分集合の要素が抽出される。
さらに、商品としては、ゴルフ×クラブ、ゴルフ×シューズ、ゴルフ×ボール等で記述されていたものが、文字列である識別子”ゴルフ”によって括り出されて表示される。
また、以下の売上が立ったとき、ユーザは入力インターフェースを通じて売上データのセル空間の式(数38)を作成し、前式に加える。すなわち、図27の画面で、ファイル名を4月×2日×T1×購入、属性をそれぞれS1,S3,S4、値をそれぞれ20000円/本×2本,100
円/本×100個,18000円/足×1足として入力する。
「小嶋氏(顧客コード:T1)が、4月2日にゴルフクラブ(商品コード:S1、価格:20000円/本)、ゴルフボール(商品コード:S3、価格:100円/本)、ゴルフシューズ(商品コード:S4、価格:18000円/足)を、それぞれ2本、100個、1足、購入した。同じく小嶋氏が5月3日にサッカーシューズ(商品コード:S5、価格:12000円)を1足購入した。

…+4月×2日×T1×購入{S1+S3+S4}{20000円/本×2本+100円/本×100個+18000円/足×1足}+5月×3日×T1×購入{S5}{12000円/足×1足}・・・(数38)
ここで、”小嶋氏(顧客コード:T1)が購入した商品の金額合計を知りたい”、という要求がユーザからあったとき、情報処理装置200は、入力された式を”T1”、”購入”を括り因子にして括り、括り項の第3因子の{}の中の項を第一因子で揃えると次の式(数39)が得られる。この処理は、数38の式に対し、まず、識別子”T1”による商演算を実行し、その商項にさらに識別子”購入”による商演算を実行すればよい。また、同様処理を部分集合取得処理によって実行してもよい(基本システムの説明参照)。
{4月×2日+5月×3日}T1×購入{{S1+S3+S4}+{S5}}{{20000円/本×2本+100円/本×100個+18000円/足×1足}+{12000円/足×1足}}・・・(数39)
情報処理装置200は、数39の第4因子をgで表現レベルに移行し、fwによる像を
求めると、数40のように求められる。fwの処理は、図24および図25に示した通りである。
fw(g({{20000円/本×2本+100円/本×100個+18000円/足×1足}+{12000円/足×1足}}))
= fw({{20000円/本*2本 (+) 100円/本*100個 (+) 18000円/足*1足} (+) {12000円/足*1足}})
= 80,000円・・・(数40)
図29に、購入金額合計処理のフローチャートを例示する。この処理では、情報処理装置200は、ユーザインターフェース画面を通じて、ユーザから購入商品を識別する情報(商品S1)、単価(単価の金額額(N円)/単位量(個)を示す文字列)、購入量(M個)の入力を受け付ける(S910)。入力結果は、例えば、購入商品を識別する情報(商品S1)×単価の金額額(N円)/単位量(個)を示す文字列)×購入量(M個)の形式でメモリ12に格納される。
そして、情報処理装置200は、合計処理を実行するか否かをユーザインターフェース画面への操作から判断する(S912)。合計処理を実行しない場合、情報処理装置200は、制御をS910へ戻す。これによって、ユーザは、購入した商品と金額を自在に入力できる。また、合計処理を実行する場合、情報処理装置200は、メモリ12に格納済みの購入商品に関する式表現を単位式に変換する(S914)。
ここで、S914の処理の対象となる式表現は、通常は、現在処理中の式表現である。ただし、例えば、数39のように、ユーザから顧客コードT1、属性”購入”のように、合計処理の対象の指定を受け付けて、処理の対象を抽出してもよい。また、{4月×2日+5月×3日}のように、日付を特定する属性値の指定を受け付けて、処理の対象を抽出してもよい。
次に、情報処理装置200は、単位式の算術演算fw()により合計金額を算出する(S916)。そして、情報処理装置200は、合計金額を出力する(S918)。その結果、合計金額が、ディスプレイ等に表示される。
なお、図29の処理では、購入金額の入力(S910の処理)と合計金額の算出処理(S914−S918)を一連の処理として、説明している。しかし、図29の処理は、一例である。例えば、情報処理装置200が格納する式表現は、メモリ12に保存され、後日さらなる追加が可能である。そして、追加した購入金額を含む合計処理を後日実行してもよい。
(同義語データの取り扱い)
データ入力に自由度を持たせると、同義語データの扱いは常に発生する問題である。同義語集合とは、表記は異なるが、意味が等しい単語の集合であり、近さを表すトポロジー空間の一ケースと言うことができる。この対応にはアプリケーション開発が必要になる。本情報システムにはトポロジーレベルで近さの概念が導入されているので、単語の近さを表現可能でき、同義語データを扱うアプリケーションには適している。同義語のトポロジー空間の式の例を上げる。
synonyms((arise+ascend+(climb up+climb on)+(go up+go on)+increase+grow+(move up+move upwards)+raise+mount+...)+(go down+come down+decay+decline+drop+(fall+fall down)+sink+tamble)+...)・・・(数41)
この同義語の例では、arise、ascend、(climb up+climb on)、(go up+go on)、increase、grow、(move up+move upwards)、raise、mount等が同一範囲の近さの同義語として、
定義され、さらに、climb upとclimb onとがさらに親密な関係にある同義語として定義されている。
また、以下の顧客データを表すセル空間の式と同義語のトポロジー空間の式の和があるとする。また、同義語の式から指定された単語の同義語を取得する関数をhとする。
customerInformation×customerCode{ε+name+company+age }(C1{ε+Ishiguro+M-corp.+47}+C2{ε+Sato+Y-corporation+58}+C3{ε+Akiyama+F-corp.+42}+C4{ε+Kayama+M-corporation+55}+...)+synonym((M-corp.+M-corporation)+(F-corp.+F-corporation+F-CORP.)+...)・・・(数42)
ここで、会社がM-corp.の顧客のコードを知りたい、という要求があるとき、以下の処
理を行う。まず、M-corp.の同義語をhにより取得する。
(M-corp.+M-corporation) = h(数42の式,M-corp.)・・・(数43)
図30に、単語の同義語を取得する関数hのフローチャートを例示する。この処理は、情報処理装置200で実行されるプログラムのサブルーチンとして実現される。この処理では、情報処理装置200は、同義語の一方の入力する(S1020)。ここで、同義の一方を検索元の同義語(図30の例では、W0)と呼ぶ。また、「入力する」という意味は、図24、図25と同様である。
次に、情報処理装置200は、識別子W0によって同義語のトポロジー空間SYNONYMSの位置を検索する(S1022)。ここで、位置を検索するとは、トポロジー空間SYNONYMSで、文字列”W0”を見い出し、文字列”W0”を含む最も内側の括弧(すなわち、”(”と”)”を見い出すことをいう。
次に、情報処理装置200は、トポロジー空間中で、識別子”W0”の左側に存在する括弧”(”から右側に存在する括弧”)”までの式表現を抽出する(S1024)。そして、情報処理装置200は、S1024で抽出した式表現を同義語として出力する(S1026)。ここで、出力するとは、例えば、引数によって、サブルーチンの呼び出し元に引き渡すことをいう。
次に、情報処理装置200は、数42を商演算(分割写像ともいう)により順に、得られたM-corp.およびM-corporationで分割すると以下の式(数44)が得られる。第一項が商項である。商演算の手順は、図11A−図11C、図12A−図12Cに示した。
customerInformation×customerCode×company×C1×M-corp.+customerInformation×customerCode×company×C4×M-corporation+customerInformation×customerCode×company(C2×Y-corporation+C3×F-corp.)+customerInformation×customerCode{ε+name+age
}(C1{ε+47}+C2{ε+Sato+58}+C3{ε+Akiyama+42}+C4{ε+Kayama+55}+...)・・
・(数44)
次に、その商項を同義語であるM-corp.、M-corporationで接着写像により接着すると以下の接着空間が得られる。
customerInformation×customerCode×company×{C1+C4}{M-corporation+M-corp. }
・・・(数45)
会社がM-corp.の顧客は、顧客コードがC1,C4の顧客であることが分かる。このように、各関数を順次使用すれば欲しいデータが得ることができる。また、会社M-corp.の支店名
の同義語データを扱う要求が生じたときは以下のように記述する。
(M-corp.+M-corporation)((OSAKA-branch+osaka-branch)+(TOKYO-branch+tokyo))・・・
(数46)
このようにトポロジー空間の式は式表現の規則にしたがった記号で情報を記述できる。その場合に、記述の仕方に必ずしも一貫性がない場合でも、上記のように同義語に定義することで、情報処理装置200が取り扱うことができる。例えば、M-corpという文字列と、M-corporationという異なる2つの文字列が、同一の意味で混在して使用されているデ
ータについても、同義語の定義を参照することによって、本実施形態の処理を適用できる。また、本情報処理装置200では、基本的に記号で記述するため、記述が柔軟である。その一方、式表現の規則にしたがって、記述されるので、基本システム、第1実施形態で述べた演算で統一的に処理できる。したがって、例えば、データ構造に変化がある場合でもアプリケーションに対する大幅なメンテナンスの可能性を低減できる。
(効果)
本情報処理装置200を利用すれば上述のように、顧客データのみならずメモ情報や商品データ等の各種データを同時に容易に入出力することが可能である。このとき、式とユ
ーザインターフェースのデータマッピング以外のアプリケーションプログラムの開発が簡略化される。そのため、メンテナンス作業の減少できる。これは開発コスト、メンテナンスコストの大幅削減につながる。
《第3実施形態》
(概要)
以下、式表現および表現レベルの代数演算を適用し、見積システムを構成する例を挙げる。見積システムはほとんどの産業で一般的に開発されているシステムである。データ構造はノードに属性を持つ再帰的なグラフ構造であり、見積の対象情報が再帰的に各階層で積み上げられる。
(トポロジー空間の設計例)
本情報処理装置200では、製品に含まれる材料を以下のようなトポロジー空間の式表現(数47)で記述する。ここで、数47は、各材料1単位を記述しているトポロジー空間の式表現である。また、図31は、トポロジー空間に存在する製品、部品の関係を階層化して表示した例である。材料1、材料2等は、それぞれの部分集合IDである。また、トポロジーIDは省略されている。
材料1(1000円/m2)m2
+材料2(1200円/m2)m2
+材料3(2000円/m)m
+材料4(500円/個)個
+作業1(8000円/日)日
+作業2(10000円/日)日
+作業3(12000円/日)日・・・(数47)
次に、見積”部品1(単位は個)”を”材料1が10m2、材料2が15m2、作業1が2日”
として作成し、式に追加する。追加分を数48に示す。数48では、省略するが、この追加分は、トポロジーIDとして、EVAL2,1と設定する。なお、図面中は、見やすさを
考慮し、EVAL2,1の表す。以下、同様である。
... +(部品1{材料1+材料2+作業1})({1000円/m2×10m2+1200円/m2×15m2+8000円/日×2日}/個)個・・・(数48)
同様に、見積”部品2(単位は個)”の内訳が、” 材料2が10m2、材料3が15m、材料4が10個、作業2が1日”であるとして作成し式に追加する。追加分を数49に示す。数
49では、省略するが、この追加分は、トポロジーIDとして、EVAL2,2と設定する

... +(部品2{材料2+材料3+材料4+作業2})({1200円/m2×10m2+2000円/m×15m+500円/個×10個+10000円/日×1日}/個)個・・・(数49)
同様に、見積”製品1(単位は台)”の内訳が、”部品1が5個、部品2が10個、作業
3が2日”であるとして作成し式に追加する。追加分を数50に示す。数50では、省略
するが、この追加分は、トポロジーIDとして、EVAL3,1と設定する。
... +(製品1{部品1{材料1+材料2+作業1}+部品2{材料2+材料3+材料4+作業2}+作業3})({{1000円/m2×10m2+1200円/m2×15m2+8000円/日×2日}/個×5個+{2000円/m×15m+1200円/m2×1
0m2+500円/個×10個+10000円/日×1日}/個×10個+12000円
/日×2日}/台)台・・・(数50)
以上の数48−50によって形成されるデータ構造を図31に示す。このような構造のトポロジーIDをprice3,1として設定する。
なお、数50をセル空間の式として考えた場合、製品1はセル空間IDであり、({部品1{材料1+材料2+作業1}+部品2{材料2+材料3+材料4+作業2}+作業3
})は、セル空間の属性である。また、”({{1000円/m2×10m2+”以降の式は、属性値である。したがって、これらの式は、当然に基本システムで説明した各種演算を適用できる。
(見積額の算出)
見積の金額を算出する場合、見積額のトポロジー空間pricen+1,mの属性値を、表現レベル移行関数gにより、和演算+を代数加算記号(+)に変換し、積演算×を代数乗算記号*に変換する。
これを製品1の見積額price3,1のトポロジー空間について単位計算すると次のようになり、見積額が取得される。この処理は、ユーザ操作を受け付けて、情報処理装置200が実行すればよい。この処理では、それぞれの項から、属性因子である製品1{部品1{材料1+材料2+作業1}+部品2{材料2+材料3+材料4+作業2}+作業3}が括り出される。この処理は、基本システムの商演算で述べた手順と同様である。そして、括り出された属性因子の次に残された値因子である{{1000円/m2×10m2+1200円/m2×15m2+8000円/日×2日}/個×5個+{2000円/m×15m+1200円/m2×10m2+500円/個×10個+10000円/日×1日}/個×10個+12000円/日×2日}に対して、表現レベル移行関数gによる変換を実行すればよい(属性因子に対する変換処理の説明は、個々では省略するが、同様に実行できる)。fw(g(price3,1))
=fw(g({{1000円/m2×10m2+1200円/m2×15m2+8000円/日×2日}/個×5個+{2000円/m×15m+1200円/m2×10m2+500円/個×10個+10000円/日×1日}/個×10個+12000円/日×2日}))
=fw({1000円/m2*10m2 (+) 1200円/m2*15m2 (+) 8000円/日*2日}/個*5個 (+) {2000円/m*15m(+) 1200円/m2*10m2 (+) 500円/個*10個 (+) 10000円/日*1日}/個*10個 (+) 12000円/日*2日)
= 814,000円・・・(数51)
(資源についてのデータの取得)
資源データとは、見積対象である対象商品または対象サービスの構成要素をいう。見積evaln+1,mにおいて、名前namen,p の資源についてのデータが欲しいとき、分割写像hによりevaln+1,mをnamen,pで分割し、商項(italicの部分)を取得する。この処理の理論式を数52に示す。
h:
(namen+1,m{Σinamen,i})({pricen+1,m}/unitn+1,m)unitn+1,m, namen,p
|→
(namen+1,m{Σi(namen,i)-namen,p})({Σi(pricen,i/unitn,i×an,iunitn,i)
-pricen,p/unitn,p×an,punitn,p}/unitn+1,m)unitn+1,m
+namen+1,m×namen,p×pricen,p/unitn,p×an,punitn,p×/unitn+1,m×unit n+1,m ・・
・(数52)
この式は、以下の処理概要を定義している。すなわち、集合IDが、namen+1,mで定義
され、集合の要素Σinamen,i×pricen+1,m/unitn+1,m×unitn+1,m (ただし、Σiはiを1から所定個数まで加算することを意味する)で定義される式表現に対して、識別子namen,pで商演算を実行する。すると、剰余が、|→の次の第1項であり、商が第2項である
得られた商項を表現レベル移行関数gにより表現レベルに移行し、単位計算関数fwに
よる像を求め、namen,pについてのデータが取得される。この処理の理論式を数53に示
す。
fw(g(namen+1,m×namen,p×pricen,p/unitn,p×an,punitn,p×/unitn+1,m×unit n+1,m))=namen+1,m*namen,p*pricen,pan,p・・・(数53)
例えば、製品1における材料2の資源についてデータが欲しいときは、まずhにより製
品1の式を材料2で分割し、商項を取得する。
製品1×部品1×材料2×1200円/m2×15m2×/個×5個×/台×台+製品1×部品2×材料2×1200円/m2×10m2×/個×10個×/台×台・・・(数54)
これをgで表現レベルに移行し、fwによる像を求めると、数55のようになる。
fw(g(製品1×部品1×材料2×1200円/m2×15m2×/個×5個×/台×台+製品1×部品2×材
料2×1200円/m2×10m2×/個×10個×/台×台))
= fw(製品1*部品1*材料2*1200円/m2*15m2*/個*5個*/台*台 (+) 製品1*部品2*材料2*1200円/m2*10m2*/個*10個*/台*台)
=製品1(部品1(+)部品2) 材料2*1200円*(75(+)100)
=製品1(部品1(+)部品2) 材料2*210000円・・・(数55)
ここでは、まず、(数39)の処理、あるいは、図28の“ゴルフ”による括りだし処理と同様、属性を示す識別子(あるいは、単価の左側の因子)を括り出す処理を実行する。その結果、{属性因子+・・・}{属性値+・・・}の形式の式表現が形成される。そのような式表現に対して、上記表現レベル移行関数gによる変換およびfwによる代数演算を実行すればよい。
これより、「材料2は、部品1と部品2にそれぞれ数量75、100が使用され、総額は210,000円である」ことが分かる。
(画面構成)
図32に、見積処理においてユーザが情報を入力するユーザインターフェースを例示する。図32のユーザインターフェースの画面が、前記記憶手段に記憶された要素情報に対する数量の指定と、前記要素情報を複数含む組み合わせの指定と、その組み合わせに付与すべき識別子の指定を受け付ける手段に相当する。
。このユーザインターフェースは、見積名入力欄200と、単位入力欄201と、見積名に該当する見積対象の製品またはサービスに含まれる要素の入力欄202を含む。
この例では、例えば、見積名に”部品1”を入力し、単位を”個”に設定し、その部品1に含まれる下位の部品、その部品1を構成する材料、その部品1を製作するために必要な工数等を入力する。例えば、材料1に対して数量5個、材料2に対して2組、熟練工1に対して2日等である。そして、ユーザが入力部11を通じて登録ボタン03を操作すると、部品1(材料1×5000円/個×5個+材料2×10000円/組×2組+熟練工1×12000円/日×2日)という情報が生成され、メモリ・外部記憶装置に格納される。
なお、ユーザは、このような手順で登録した部品1を次の見積作業で用いることができる。すなわち、名:部品1、単位:個の単位で部品1の個数を指定することによって、部品1を含む上位の部品あるいは、上位の商品、サービスの見積に、ユーザ自身が定義した部品1の見積を使用できる。したがって、図31に示したような階層的な部品の構造に対応する式表現を定義し、その式表現を代数演算式に変換することで、見積を算出できる。
(処理フロー)
図33に、合計算出見積処理の処理フローを例示する。この処理は、例えば、情報処理装置200で実行されるプログラムの一部であるサブルーチンの処理として実現される。この処理では、情報処理装置は、まず、合計算出対象の式表現の入力を受ける(S1030)。入力は、例えば、サブルーチンの引数を通じて呼び出し元の上位モジュールから受けてもよい。また、例えば、ユーザインターフェース画面制御部41に対するイベントを検知し、所定の入力欄から入力を受けてもよい。
次に、情報処理装置200は、入力された式表現を単位式に変換する(S1032)。そして、(数39)の処理、あるいは、図28の“ゴルフ”による括りだし処理と同様、属性を示す識別子(あるいは、単価の左側の因子)を括り出す処理を実行する。その結果、{属性因子+・・・}{属性値+・・・}の形式の式表現が形成される。そのような式表現に対して、上記表現レベル移行関数gによる変換およびfwによる代数演算を実行すればよい。なお、属性を示す識別子(あるいは、単価の左側の因子)を括り出す処理を含めて、表現レベル移行関数がg()としてもよい。そして、情報処理装置200は、変換によって生成された単位式中の代数演算を実行する(S1034)。この算術演算を実行する関数がfwである。そして、情報処理装置200は、他演算結果を出力する(S1036)。出力とは、例えば、引数を通じた上位モジュールへの引き渡しである。ただし、出力部14に出力してもよい。
図34に、部品合計算出処理のフローチャートを例示する。この処理も、例えば、情報処理装置200で実行されるプログラムの一部であるサブルーチンの処理として実現される。この処理では、情報処理装置は、まず、見積対象の対象商品または対象サービスの式表現の入力を受ける(S1040)。入力の意味は、図33の場合と同様である。
次に、情報処理装置200は、部品の指定を受ける(S1042)。部品の指定についても、上位モジュールからの引数またはユーザインターフェース画面制御部41からのイベントを通じて、部品に対応する識別子、例えば、集合ID等、あるいは、文字列を受ければよい。S1042の処理を実行する情報処理装置200のCPU13が、抽出すべきの要素識別子の指定を受け付ける手段に相当する。
次に、情報処理装置200は、部品の指定を受けた識別子によって、見積対象の対象商品または対象サービスの式表現に対して、商演算を実行することで、部品の情報を抽出する(S1044)。S1044の処理を実行する情報処理装置200のCPU13が、要素情報を抽出する手段に相当する。
そして、情報処理装置200は、商演算の結果得られた商項を単位式に変換する(S1046)。さらに、情報処理装置200は、単位式に算術演算を適用する(S1048)。そして、情報処理装置200は、演算結果を出力する(S1050)。この出力は、図33の場合と同様である。
図35に、式表現設定処理のフローチャートを例示する。この処理は、図33のS1030でまたは図34のS1040の処理で入力される式表現を生成するときに実行する処理である。図35の処理によって、設定された式表現が図33あるいは図34の処理に入力されることになる。
この処理では、情報処理装置200は、ユーザからのユーザインターフェース画面への操作を検知し、商品、サービス、または要素(商品あるいはサービスを構成する部品、材料、工程等)の識別情報の入力を受け付ける(S1050)。これは、例えば、図27の画面でのファイル名の入力である。また、図32の画面での見積名の入力である。
次に、情報処理装置200は、その商品、サービス、または要素の単位の入力を受け付ける(S1052)。そして、情報処理装置200は、下位の要素の識別情報、単価、数量の入力を受け付ける(S1054)。
そして、情報処理装置200は、すべての下位の要素の情報を入力したか、否かをユーザインターフェース画面へのユーザの操作から検知する(S1056)。すべての下位の
要素の情報が入力されていない場合、情報処理装置200は、制御をS1054に戻して、次の情報の入力を受け付ける。
一方、すべての下位の情報が入力された場合、情報処理装置200は、入力された情報にしたがって、式表現を生成する(S1058)。そして、情報処理装置200は、生成した式表現をメモリ12に格納する(S1060)。S1060の処理を実行する情報処理装置のCPU13が、新たな要素情報を構成して前記記憶手段に格納する手段に相当する。
(効果)
一般的に見積システムのコア処理開発はその複雑さゆえにコストが大きくなる。この例は、コア処理の開発に、ほとんど実装の必要がないこと示した。その理由は主に以下である。
(1)単位情報の設計、見積金額計算処理の実装が必要ない。
人が頭で考えるようにして数値とともに単位情報を入出力でき、単位計算写像により単位情報を含めたデータの計算が可能である。
(2)そのレベルのどの見積情報のデータも取り出すことが可能である。
一つの見積情報にその下層の見積情報が再帰的に含まれている。
本実施形態では、基本システムでの式表現に加えて、表現レベル上の新たな単位計算代数と呼ばれる代数を実行する処理例を説明した。この処理により、数値だけでなく単位情報も同時に計算することができる。さらに、この代数の単位式は、下位の部品から上位の部品へと階層的に組み合わせることができる。そして、情報処理装置200は、階層的に組み合わせた単位式中から、ユーザの指定した所望の部品に係る情報を抽出できる。また、階層的に組み合わせた単位式から、数値の合計を算出できる。また、階層的に組み合わせた単位式中で同義語となるべき識別子と識別子を指定し、同義語同士を同等に処理できる。
したがって、例えば、人が頭の中で考えるように、部品をボトムアップ的に組み合わせた設計を可能にする。その場合に、トップダウン的で、統一的な規則がなく、ある意味でいい加減なばらつきのある用語の使用がなされても、情報処理装置200が用語のばらつきを吸収して処理できる。また、データの構造にばらつきがあっても、部品(作業、あるいは材料)の識別子*単価*提供量の形式で単価と提供量の関係が記述されている限り、情報処理装置200は、そのような情報の組み合わせを処理できる。《変形例》
上記実施形態では、代数演算部44において、一旦、表現レベル移行関数gによって、式表現を表現レベルの代数演算式に変換した後、代数演算を実行した。しかし、情報処理装置200の処理は、このような手順には限定されない。例えば、代数演算部44が、積演算子”×”を代数乗算記号*として取り扱えばよい。また、和演算子”+”を代数乗算記号”(+)”として取り扱えばよい。さらに、部品等を指定する識別子、例えば、数54において、単価(”N円/単位”)に対して左側から積演算子で結合する文字列である、製品1、部品1、材料1等を無視すればよい。そのような処理を実行することで、予め、表現レベル移行関数gによって式表現を表現レベルの代数演算式に変換することなく、直接代数演算を実行するようにしてもよい。
第1の実施形態に係る情報処理装置の構成を示すブロック図である。 第1の実施形態に係る情報処理装置のメモリに格納される第一のデータ構造を示す。 第1の実施形態に係る情報処理装置のメモリに格納される第二のデータ構造を示す。 第1の実施形態に係る情報処理装置のメモリに格納される第三のデータ構造を示す。 第1の実施形態に係る情報処理装置におけるプログラム構成を示す図である。 横方向展開処理を実行する処理のフローを示す。 横方向展開処理を実行中の対象情報の状態の詳細を示す表である。 横方向展開処理を実行中の対象情報の状態の詳細を示す表である。 縦方向展開処理を実行する処理のフローを示す。 縦方向展開処理を実行中の対象情報の状態の詳細を示す表である。 縦方向展開処理を実行中の対象情報の状態の詳細を示す表である。 縦方向展開処理を実行中の対象情報の状態の詳細を示す表である。 縦方向展開処理を実行中の対象情報の状態の詳細を示す表である。 積演算処理を実行する処理のフローを示す。 積演算処理を実行中の対象情報の状態の詳細を示す表である。 商演算処理(サブルーチン1)を実行する処理のフローを示す図である。 商演算処理(サブルーチン1)を実行中の対象情報の状態の詳細を示す表(その1)である。 商演算処理(サブルーチン1)を実行中の対象情報の状態の詳細を示す表(その2)である。 商演算処理(サブルーチン2)を実行する処理のフローを示す図である。 商演算処理(サブルーチン2)を実行中の対象情報の状態の詳細を示す表(その1)である。 商演算処理(サブルーチン2)を実行中の対象情報の状態の詳細を示す表(その2)である。 接着演算処理を実行する処理のフローを示す。 接着演算処理を実行中の対象情報の状態の詳細を示す表である。 部分集合取得処理を実行する処理のフローを示す。 部分集合取得処理を実行中の対象情報の状態の詳細を示す表である。 部分集合取得処理を実行中の対象情報の状態の詳細を示す表である。 ホモトピー保存処理を実行する処理のフローを示す。 ホモトピー保存式におけるUNDO演算処理のフローを示す。 ホモトピー保存式におけるREDO演算処理のフローを示す。 単位式を木構造で示した例である。 情報処理装置のハードウェア構成を例示する図である。 情報処理装置の機能ブロックを例示する図である。 式表現を表現レベルの単位式に変換する手順を例示する図である。 単位式を計算するアルゴリズムの概要を例示するフローチャート(その1)である。 単位式を計算するアルゴリズムの概要を例示するフローチャート(その2)である。 単位式を処理する例である。 ユーザインターフェースからの入力例である。 ユーザインターフェースへの出力例である。 購入金額合計処理のフローチャートを例示する図である。 単語の同義語を取得する関数hのフローチャートを例示する図でる。 トポロジー空間に存在する製品、部品の関係を階層化して表示した例である。 見積処理においてユーザが情報を入力するユーザインターフェースを例示する図である。 合計算出見積処理のフローチャートを例示する図である。 部品合計算出処理のフローチャートを例示する図である。 式表現設定処理のフローチャートを例示する図である。
符号の説明
100、200 情報処理装置
11 入力部
12 メモリ
13 CPU
14 出力部
15、16、31、33、33 インターフェース
32 通信部
34 外部記憶装置
36 着脱可能記憶媒体アクセス装置
40 処理部
41 ユーザインターフェース画面
42 要素情報編集・格納部
43 要素情報抽出・演算部
44 代数演算部
46 共通関数ライブラリ

Claims (14)

  1. 識別子と、因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶する記憶部と、
    前記対象情報を操作する処理部と、を備え、
    前記処理部は、前記積演算子を代数の乗算演算子とし、前記和演算子を代数の加算演算子とし、前記識別子間の演算を実行する代数演算部を有する情報処理装置。
  2. 前記対象情報は、見積処理の対象となる対象商品または対象サービスに含まれる、要素を識別する要素識別情報と前記要素の単価を示す数値と前記要素の提供量を示す数値とを有する要素情報を含み、
    前記代数演算部は、複数の前記要素情報に含まれる数値に対して代数演算を実行する請求項1に記載の情報処理装置。
  3. 前記処理部は、前記記憶手段に記憶された要素情報に対する数量の指定と、前記要素情報を複数含む組み合わせの指定と、その組み合わせに付与すべき識別子の指定とを受け付ける手段と、
    前記要素情報と数量を示す数値とを積演算子によって結合し、前記数値が結合された複数の要素情報を和演算子によって組み合わせを構成し、前記指定された識別子を新たな要素識別子として前記組み合わせに付与することによって新たな要素情報を構成して前記記憶手段に格納する手段と、をさらに備える請求項2に記載の情報処理装置。
  4. 前記対象商品または対象サービスに含まれる要素から抽出すべき要素識別子の指定を受け付ける手段と、
    前記指定を受け付けた要素識別子を共通因子とする要素情報を抽出する手段と、をさらに備え、
    前記要素情報においては、前記要素の単価を示す数値と貨幣単位を示す文字または文字列とを前記単価に該当する要素の提供量である単位量を示す文字または文字列で除算した形式で単価が記述され、前記提供量を示す数値と単位量を示す文字または文字列とを乗算した形式で提供量が記述され、
    前記代数演算部は、前記要素情報の単価に含まれる数値と提供量に含まれる数値について乗算を適用し、除算した形式で記述された単位量を示す文字または文字列と前記乗算した形式で記述された単位量を示す文字または文字列とを約分し、同一の貨幣単位を示す文字または文字列を有する2以上の要素に含まれる数値に加算を適用し、
    前記出力部は、前記加算された数値と通貨単位を示す文字または文字列とによって、前記指定を受け付けた要素の費用を出力する請求項2または3に記載の情報処理装置。
  5. 前記要素情報が下位の要素情報によって構成される階層構造を2階層以上含み、
    対象商品または対象サービスに含まれる要素情報または要素情報の組み合わせの指定を受ける手段をさらに備え、
    前記代数演算部は、前記指定を受けた要素情報以下の階層に含まれる要素情報について、それぞれ要素情報に指定された数量を示す数値とそれぞれの要素情報に含まれる下位の要素情報の提供量を示す数値との乗算と、同一階層に含まれる複数の要素情報のうち、同一の貨幣単位を示す文字または文字列を有する2以上の要素に含まれる数値に対する加算とを実行する請求項2から4のいずれかに記載の情報処理装置。
  6. 情報の入力を受け付ける入力部を接続可能なインターフェースと、
    情報を出力する出力部を接続可能なインターフェースと、をさらに備え、
    前記処理部は、前記入力部への入力を契機として、前記代数演算部の処理を実行し、前
    記処理の完了後に処理結果を前記出力部に出力する請求項1から5のいずれかに記載の情報処理装置。
  7. 識別子と、因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶する記憶部と、
    前記対象情報を操作する処理部と、を備えるコンピュータが、
    前記積演算子を代数の乗算演算子とするステップと、
    前記和演算子を代数の加算演算子とするステップと、
    前記識別子間の演算を実行する代数演算ステップと、を実行する情報処理方法。
  8. 前記対象情報は、見積処理の対象となる対象商品または対象サービスに含まれる、要素を識別する要素識別情報と前記要素の単価を示す数値と前記要素の提供量を示す数値とを有する要素情報を含み、
    前記代数演算ステップでは、複数の前記要素情報に含まれる数値に対して代数演算が実行される請求項7に記載の情報処理方法。
  9. 識別子と、因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶する記憶部と、
    前記対象情報を操作する処理部と、を備えるコンピュータに、
    前記積演算子を代数の乗算演算子とするステップと、
    前記和演算子を代数の加算演算子とするステップと、
    前記識別子間の演算を実行する代数演算ステップと、を実行させるプログラム。
  10. 前記対象情報は、見積処理の対象となる対象商品または対象サービスに含まれる、要素を識別する要素識別情報と前記要素の単価を示す数値と前記要素の提供量を示す数値とを有する要素情報を含み、
    前記代数演算ステップでは、複数の前記要素情報に含まれる数値に対して代数演算が実行される請求項9に記載のプログラム。
  11. 前記記憶手段に記憶された要素情報に対する数量の指定と、前記要素情報を複数含む組み合わせの指定と、その組み合わせに付与すべき識別子の指定とを受け付けるステップと、
    前記要素情報と数量を示す数値とを積演算子によって結合し、前記数値が結合された複数の要素情報を和演算子によって組み合わせを構成し、前記指定された識別子を新たな要素識別子として前記組み合わせに付与することによって新たな要素情報を構成して前記記憶手段に格納するステップと、をさらに実行させる請求項10に記載のプログラム。
  12. 前記対象商品または対象サービスに含まれる要素から抽出すべき要素識別子の指定を受け付けるステップと、
    前記指定を受け付けた要素識別子を共通因子とする要素情報を抽出するステップと、をさらに備え、
    前記要素情報においては、前記要素の単価を示す数値と貨幣単位を示す文字または文字列とを前記単価に該当する要素の提供量である単位量を示す文字または文字列で除算した形式で単価が記述され、前記提供量を示す数値と単位量を示す文字または文字列とを乗算した形式で提供量が記述され、
    前記代数演算ステップは、前記要素情報の単価に含まれる数値と提供量に含まれる数値について乗算を適用し、除算された形式で記述された単位量を示す文字または文字列と前記乗算される形式で記述された単位量を示す文字または文字列とを約分し、同一の貨幣単
    位を示す文字または文字列を有する2以上の要素に含まれる数値に加算を適用し、
    前記出力ステップは、前記乗算または加算された数値と通貨単位を示す文字または文字列とによって、前記指定を受け付けた要素の費用を出力する請求項10または11に記載のプログラム。
  13. 前記要素情報が下位の要素情報によって構成される階層構造を2階層以上含み、
    対象商品または対象サービスに含まれる要素情報または要素情報の組み合わせの指定を受けるステップをさらに実行させ、
    前記代数演算ステップは、前記指定を受けた要素情報以下の階層に含まれる要素情報について、それぞれ要素情報に指定された数量を示す数値とそれぞれの要素情報に含まれる下位の要素情報の提供量を示す数値との乗算と、同一階層に含まれる複数の要素情報のうち、同一の貨幣単位を示す文字または文字列を有する2以上の要素に含まれる数値に対する加算とを実行させる請求項10から12のいずれかに記載のプログラム。
  14. 前記コンピュータは、情報の入力を受け付ける入力部を接続可能なインターフェースと、情報を出力する出力部を接続可能なインターフェースと、をさらに備え、
    前記入力部への入力を契機として、前記代数演算ステップを実行させ、前記前記代数演算ステップの完了後に処理結果を出力させる請求項9から13のいずれかに記載のプログラム。
JP2007284219A 2007-10-31 2007-10-31 情報処理装置、情報処理方法、プログラム、および媒体 Pending JP2009110440A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007284219A JP2009110440A (ja) 2007-10-31 2007-10-31 情報処理装置、情報処理方法、プログラム、および媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007284219A JP2009110440A (ja) 2007-10-31 2007-10-31 情報処理装置、情報処理方法、プログラム、および媒体

Publications (1)

Publication Number Publication Date
JP2009110440A true JP2009110440A (ja) 2009-05-21

Family

ID=40778834

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007284219A Pending JP2009110440A (ja) 2007-10-31 2007-10-31 情報処理装置、情報処理方法、プログラム、および媒体

Country Status (1)

Country Link
JP (1) JP2009110440A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012023192A1 (ja) * 2010-08-18 2012-02-23 前田建設工業株式会社 情報処理装置、情報処理方法、プログラム、および媒体
WO2013042230A1 (ja) * 2011-09-21 2013-03-28 前田建設工業株式会社 情報処理装置
JP2013080449A (ja) * 2011-09-21 2013-05-02 Maeda Corp 情報処理装置、情報処理方法、およびプログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005339265A (ja) * 2004-05-27 2005-12-08 Casio Comput Co Ltd 電子計算装置および計算表示処理プログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005339265A (ja) * 2004-05-27 2005-12-08 Casio Comput Co Ltd 電子計算装置および計算表示処理プログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012023192A1 (ja) * 2010-08-18 2012-02-23 前田建設工業株式会社 情報処理装置、情報処理方法、プログラム、および媒体
JP5512817B2 (ja) * 2010-08-18 2014-06-04 前田建設工業株式会社 情報処理装置、情報処理方法、プログラム、および媒体
WO2013042230A1 (ja) * 2011-09-21 2013-03-28 前田建設工業株式会社 情報処理装置
JP2013080449A (ja) * 2011-09-21 2013-05-02 Maeda Corp 情報処理装置、情報処理方法、およびプログラム

Similar Documents

Publication Publication Date Title
US9323520B2 (en) Component discovery from source code
US9336184B2 (en) Representation of an interactive document as a graph of entities
US9304672B2 (en) Representation of an interactive document as a graph of entities
JP2019512816A (ja) ページリソースの配置方法及び装置
US20020178184A1 (en) Software system for biological storytelling
US10296626B2 (en) Graph
US20200342029A1 (en) Systems and methods for querying databases using interactive search paths
US20170300461A1 (en) Representation of an Interactive Document as a Graph of Entities
JP5357313B2 (ja) 情報処理装置、情報処理方法、プログラム、およびデータ構造
JP5357286B2 (ja) 情報処理装置、情報処理方法、およびプログラム
JP2009110440A (ja) 情報処理装置、情報処理方法、プログラム、および媒体
CN113988978A (zh) 基于知识图谱的服装搭配推荐方法、系统以及设备
Morris et al. setsApp for Cytoscape: set operations for Cytoscape nodes and edges
US11960794B2 (en) Seamless three-dimensional design collaboration
JP2014102625A (ja) 情報検索システム、プログラム、および方法
JP6542204B2 (ja) 情報処理装置、情報処理方法およびプログラム
CN110347696A (zh) 数据转换方法、装置、计算机设备以及存储介质
JP6682754B2 (ja) 情報処理装置、情報処理方法およびプログラム
JP5512817B2 (ja) 情報処理装置、情報処理方法、プログラム、および媒体
Haridis The topology of shapes made with points
JP5764226B2 (ja) 情報処理装置、情報処理方法、プログラム、および媒体
Mou et al. Implementing computational biology pipelines using VisFlow
Mitrpanont et al. ICDWiz: Visualizing ICD-11 Using 3D Force-Directed Graph
CN106446236A (zh) 信息处理的方法及电子终端
WO2013042230A1 (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111018

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111219

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120619