2004年 4月16日 | 並列 (連言)と再帰 | >> 目次 (テーマごと) |
● QUESTION | 再帰は、並列ではないのか。 | |
▼ ANSWER | ちがう。 再帰は、帰納関数である。 | |
2009年 5月 1日 補遺 |
● 再帰は、関数の観点から言えば、帰納関数である。
関係の論理 aRb として、a=b となる状態が、「再帰 (recursive)」である。 以下を前提にする。
(1) 部品 entity のなかに、製品・半製品・原材料がいっしょに収録されている。
製品 001 部品構成では、階数 (部品表の階 [ レベル ])と次数 (同じ レベル の部品の種類) を考慮しなければならない。したがって、以下の データ 構造となる。 ただし、次数は、部品の数でわかるので、必要ない。 { 階数、部品 コード (R)、部品 コード (R)、員数 }. この部品構成は、上述の データ 構造では、以下のように記述される。
{ 0、001、002、 2個 }
{ 1、001、002、 2個 }
さて、たとえば、上述した構造では、レベル 2 の下に展開が、まだ、あるのかどうか、を判断できない。
製品 001
{ 1、001、002、 2個、LLC }
{ 受注番号、受注日、受注数 } |
[ 補遺 ] (2009年 5月 1日)
本 エッセー を今読み返してみたら、ずいぶん冗長な説明をしていると思う。 { a1, a2, ・・・, an }. そして、この集合において、元を並べる n-項 特徴関数を考えます。 f ( a1, a2, ・・・, an ). そして、この特徴関数を 「2項関係」 f ( ak, ak+1 ) で構成したのが 「再帰」 です。
本 エッセー の説明が長くなった理由は、「部品構成」 において、LLC も述べたかったからでしょうね。
{ 部品番号、部品名称、・・・ }. この構成において、{ 部品番号 (R)、部品番号 (R) } に対して、「方法論が未熟だから、同じ名前 [ 部品番号 (R) ] を使っているのであって、正式には、{ 親部品、子部品 } にしなければならない」 と非難したひとがいましたが、論理的意味論を理解していないのでしょうね。部品構成では、「道」 (グラフ では、頂点と頂点とのあいだの辺を 「道」 と云います) を辿る やりかた には、以下の 2つが考えられます。
(1) DFS (Depth First Search) DFS は 「階数」 を辿る やりかた で、BFS は 「次数」 を辿る やりかた です。したがって、 f ( ak, ak+1 ) において、DFS は 「親-子 関係」 を示し、BFS は 「兄弟 関係」 を示します──言い換えれば、「親-子 関係」 のみが特徴関数 f ( ak, ak+1 ) を構成する訳ではないということに注意してください。「親-子 関係」 とか 「兄弟 関係」 というのは、 f ( ak, ak+1 ) において、2 項の 「関係」 に対して付与された呼びかたであって、元の指示関係ではない、という点に注意してください。f (部品番号 (R)、部品番号 (R)) は、「部品」 entity の元を指示して──言い換えれば、それらは 或る前提から導出されていることを示して、すなわち、「構成」 の途中で、いままで定義されてもいない項を導入していないことを示していて──、かつ、「並べる」 関数です。したがって、部品番号 (R) は、指示関係を示しているのであって、部品どうしの関係を示している訳ではないのです。この関数のなかに、どういう値が入るかは──すなわち、DFS の道における値が代入されるのか、あるいは、BFS の道における値が代入されるのかは、べつの論点です。逆に言えば、定義されていない語を いきなり途中で導入するのは、構文論・意味論の違反になります。ただし、RDB は、一つの テーブル のなかで同じ名称が複数付与されることを禁止しているので、実装するときには、以下のように、部品番号 (R) の名称を変えなければならない。 { 部品番号-1、部品番号-2 }. そして、{ 部品番号-1、部品番号-2 } を { 親部品、子部品 } と呼ぶのなら そうすればいいし、{ 先行部品、後続部品 } とするなら そうすればいいでしょう。 |
<< もどる | HOME | すすむ >> | |
▼ データ解析に関するFAQ |