このブログの更新は X(旧Twitter)アカウント @m_hiyama で通知されます。
Follow @m_hiyama

ご連絡は上記 X アカウントに DM にてお願いします。

参照用 記事

用語・用法図の応用: 「関係」、「グラフ」

パンダ用法と用語・用法図」で、用語の用法を図解する用語・用法図を導入しました。この記事では、厄介な曖昧多義語である「関係」と「グラフ」の明瞭化〈clarification〉を通じて、用語・用法図の応用事例を紹介します。また、用語・用法図に若干の機能追加もします。

記事内で使う文字の色については「文字の色の約束(再確認)」を参照してください。$`\newcommand{\T}[1]{ \text{#1} }
\newcommand{\corr}{\leftrightarrow } % correspondence
\newcommand{\BR}[1]{ \left[\!\left[ {#1} \right]\!\right] }
`$

内容:

ハブ記事:

はじめに

この記事内では、以下の用語・用法図を描きます。

  1. 関係 R1 : 関係圏〈category of relations〉の射としての「関係」
  2. 一般的関係 R1.5 : 「関係」を「n項関係」と解釈した場合
  3. 一般的関係 R2 : R1.5 に R1 の用語を埋め込み、同義語の追加
  4. 正統派RDB DB1 : 正統派を自認する人々のRDB〈Relational Database〉の用語
  5. 世間的RDB DB2 : 比較的よく使われているRDBの用語
  6. 曖昧なグラフ G1 : 曖昧多義語としての「グラフ」
  7. グラフ G2 : 「グラフ」を「リニアグラフ」と解釈した場合
  8. 有向グラフ G3 : 有向グラフに関する用語
  9. 半グラフ G4 : 半グラフに関する用語
  10. 慣用グラフ G5 : 慣用の(ただし、檜山による観測)「グラフ」の用法

他に、「関係」のコンフリクト(用語の衝突)が起きていることを示す“コンフリクト図”も描きます。

パンダ用法と用語・用法図」で導入した図解法に対して、以下を追加します。(はじめて出現するときに再度説明をします。)

  1. 他の用法の用語を埋め込む: 写像の矢印 '$`\mapsto`$' を使う代わりに、他の用法の用語を埋め込んでイコール辺 '$`=`$' で繋ぐ。
  2. $`\corr`$ : 2つの用語が表す個体〈individual object〉のあいだに一対一対応があることを示す。
  3. $`\cdots|\cdots`$ : 2つの用語が排他的とは限らないが、包含関係が存在しないことを示す。
  4. $`-☓-`$ : 2つの用語がコンフリクトしていることを示す。
  5. $`\overset{省略}{\to}`$ : 一方の用語がもう一方の省略語であることを示す。

説明のために、$`\BR{\cdots}`$ という特殊な括弧(スコットブラケット〈Scott brackets〉*1 )を使います。$`\BR{\T{用語} }`$ は、その用語が意味する個体達からなる集合です。例えば、$`\BR{\T{レッサーパンダ} }`$ は、すべてのレッサーパンダ(動物個体)達の集合です。

「関係」の明瞭化

$`A, B`$ を集合だとして、A から B への関係〈relation from $`A`$ to $`B`$〉$`R`$ とは、部分集合 $`R\subseteq A\times B`$ のことです。この意味での関係は、関係圏の射になります。

以上に定義した用語「関係」の用語・用法図は以下です。

$`\T{関係 R1}\\
\quad \xymatrix{
\T{関係}
}
`$

$`\T{関係}`$ というノードが1個だけの非常に単純な図です。これだけではつまらないですが、他の用法との関係により興味深くなります。

より一般的なn項関係〈n-ary relation〉は $`R\subseteq A_1\times \cdots \times R_n`$ という部分集合です。n項関係を「関係」と解釈した場合の用語・用法図は以下のようです。

$`\T{一般的関係 R1.5}\\
\quad \xymatrix{
{}
&{\T{関係}} \ar@{=}[r]
&{\T{n項関係}}
\\
{\T{0項関係}} \ar@{^{(}->}[ur] \ar@{-}[r]|{|}
&{\T{1項関係}} \ar@{^{(}->}[u] \ar@{-}[r]|{|}
&{\T{2項関係}} \ar@{_{(}->}[ul]
}
`$

ここで注意事項です。$`A \mathrel{-|-} B`$ の意味は $`\BR{A} \cap \BR{B} = \emptyset`$ です。つまり排他的であることです。排他的という関係は推移的ではないので:

  • $`A \mathrel{-|-} B`$ と $`B \mathrel{-|-} C`$ から $`A \mathrel{-|-} C`$ は導けない

なので、$`{\T{0項関係}} \mathrel{-|-} {\T{2項関係}}`$ は明示的に書く必要があります。省略しているのは、推移性を仮定しているからではなくて(仮定できない!)、単にレイアウトが難しかったからです。察してください。

[追記]
次のようなレイアウトで、なんとかなりました。

$`\T{一般的関係 R1.6}\\
\quad \xymatrix{
{}
&{\T{関係}} \ar@{=}[r]
&{\T{n項関係}}
\\
{\T{0項関係}} \ar@{^{(}->}[ur] \ar@{-}[rr]|{|}
&{}
&{\T{2項関係}} \ar@{_{(}->}[ul]
\\
{}
&{\T{1項関係}} \ar@{^{(}->}@/_1pc/[uu] \ar@{-}[ul]|{/} \ar@{-}[ur]|{\backslash}
&{}
}
`$
[/追記]

また、黒丸とイコール辺(「パンダ用法と用語・用法図 // 黒丸とイコール辺」参照)を使ってないのは、「n項関係」には、他に「3項関係」や「4項関係」などもあるからです。

「一般的関係」の用語・用法図に、もう少し情報を足します。以下のようです。

$`\T{一般的関係 R2}\\
\quad \xymatrix{
{}
&{\T{関係}} \ar@{=}[r]
&{\T{n項関係}}
&{}
\\
{\T{0項関係}} \ar@{^{(}->}[ur] \ar@{-}[r]|{|}
&{\T{1項関係}} \ar@{^{(}->}[u] \ar@{-}[r]|{|}
&{\T{2項関係}} \ar@{_{(}->}[ul] \ar@{=}[r]
&{\T{関係@R1}}
\\
{\T{0項述語}} \ar@{<->}[u]
&{\T{1項述語}} \ar@{<->}[u]
&{\T{2項述語}} \ar@{<->}[u]
&{}
\\
{\T{真偽値}} \ar@{=}[u]
&{\T{性質}} \ar@{=}[u]
&{}
&{}
}
`$

$`\T{関係@R1} \mapsto \T{2項関係@R2}`$ という写像による対応を書く代わりに、$`\T{関係@R1}`$ を用法 R2 のなかに直接書いて、イコール辺で結んでいます。これでも、他の用法との対応は分かります。

両矢印 $`A \corr B`$ は、$`\BR{A}\cong \BR{B}`$ を意味します。集合 $`\BR{A}`$ と集合 $`\BR{B}`$ のあいだに、なにかしらの同型写像があることです。

「関係」という言葉はRDB〈関係データベース〉の分野でも使われます。クリス・デイト〈C.J. Date〉のような、正統派を自認する人々は次のような用語を使っています。

$`\T{正統派RDB DB1}\\
\quad \xymatrix{
{\T{属性}}
&{\T{リレーション}} \ar@{=}[d]
&{}
\\
{\T{タプル}}
&{\T{関係}}
&{\T{関係@R2}} \ar@{-}[l]|-{|}
}
`$

厄介なことに、通常の数学的な「関係@R2」(n項関係)とは似てますが排他的です。「関係@DB1」は、属性名を必須として要求しますが、数学的関係(n項関係)に属性名なんて出てきません。

細かいことを言うと、空スキーマで定義される関係を認めるとすると、0項関係(特定された単元集合またはその部分集合としての空集合)と一致します。つまり、0項関係は、「関係@DB1」にも「関係@R2」にも所属する事例となるので、「関係@DB1」と「関係@R2」は“ほとんど排他的”だが、厳密には“排他的”ではない、となります。このような状況のとき、
  $`\T{関係@DB1} \mathrel{\cdots|\cdots} \T{関係@R2}`$
と書くことにします。

$`A \mathrel{\cdots|\cdots} B`$ の意味は次です。

$`\quad \BR{A}\setminus \BR{B} \ne \emptyset
\;\land\; \BR{B}\setminus \BR{A} \ne \emptyset
`$

別な言い方をすると、次の4つの命題がすべて成立することです。

  1. $`\BR{A} \ne \emptyset`$
  2. $`\BR{B} \ne \emptyset`$
  3. $`\lnot (A \subseteq B)`$
  4. $`\lnot (B \subseteq A)`$

通常1番と2番は暗黙に仮定されているので、言っていることは「$`\BR{A}`$ と $`\BR{B}`$ のあいだに包含関係がない」ということです。さらに説明的に言えば、「$`\BR{A}`$ と $`\BR{B}`$ は排他的とは限らないが、異なる」となります。

世の中の人がすべて正統派RDB用語を使うわけではありません。多数派と思える用語法は以下です。

$`\T{世間的RDB DB2}\\
\quad \xymatrix{
{\T{属性@DB1}} \ar@{=}[d]
&{\T{リレーション@DB1}} \ar@{=}[d]
&{}
\\
{\T{カラム}}
&{\T{テーブル}}
&{}
\\
{\T{ロー}}
&{}
&{}
\\
{\T{タプル@DB1}} \ar@{=}[u]
&{}
&{}
}
`$

「関係」という言葉がコンフリクト〈衝突〉する様子を図に描くと次のようです。$`-☓-`$ はコンフリクトを表しています。そして、$`\overset{省略}{\to}`$ は、修飾語付きの名前を短く省略していることを表しています。

$`\T{関係のコンフリクト}\\
\quad \xymatrix{
{}
&{\T{関係} } \ar@{=}[r] \ar@{-}[dl]|{☓} \ar@{-}[d]|{☓}
&{\T{n項関係@R2} } \ar@/_1pc/[l]_-{省略}
\\
{\T{関係} } \ar@{=}[d] \ar@{-}[r]|{☓}
&{\T{関係} } \ar@{=}[r]
&{\T{2項関係@R2} } \ar@/_1pc/[l]_-{省略}
\\
{\T{関係@DB1} }
&{}
&{}
}
`$

「グラフ」の明瞭化

まず、曖昧多義語としてのグラフは次の用語・用法図に描けます。

$`\T{曖昧なグラフ G1}\\
\quad \xymatrix{
{}
&{}
&{\T{(曖昧)グラフ} }
\\
{\T{関係@R1} } \ar@{=}[r]
&{\T{関係@R1 のグラフ} } \ar@{^{(}->}[ur]
&{\T{リニアグラフ}} \ar@{_{(}->}[u]
\\
{}
&{\T{関数 のグラフ} } \ar@{^{(}->}[u]
&{}
}
`$

ここでの「グラフ」は、いくつかの概念の総称ではなくて、いくつかの意味を持つ曖昧多義語です。

「関係や関数のグラフ」という概念があります。「関係@R1」のグラフとは、結局「関係@R1」そのものと同義です。関数を関係の特別なものとみなせば、「関数のグラフ」も「関数」と同義です。が、関数を関係の特別なものとはみなさない立場の人にとっては、「関数のグラフ」と「関数」は別物です。

さて、リニアグラフにフォーカスしましょう。以下、「グラフ」はリニアグラフのことだとします。グラフは有向グラフと無向グラフがあります*2。このことは次のように描けます。

$`\T{グラフ G2}\\
\quad \xymatrix{
{}
&{\T{グラフ}} \ar@{=}[d]
&{}
\\
{}
&{\bullet}
&{}
\\
{\T{有向グラフ}} \ar@{..}[rr]|{|} \ar@{^{(}->}[ur]
&{}
&{\T{無向グラフ}} \ar@{_{(}->}[ul]
}
`$

この場合、「グラフ」は「有向グラフ」と「無向グラフ」の総称です。「有向グラフ」と「無向グラフ」が排他的ではないのは、辺を持たない頂点だけのグラフは有向とも無向とも言えるからです。

「有向グラフ」を扱う機会が多いので、「グラフ」は「有向グラフ」のことだと約束します。すると、用語・用法図は次のようになります。

$`\T{有向グラフ G3}\\
\quad \xymatrix{
{}
&{?} \ar@{=}[d]
&{\T{グラフ@G2}} \ar@{=}[l]
\\
{}
&{\bullet}
&{}
\\
{\T{グラフ}} \ar@{..}[rr]|-{|} \ar@{^{(}->}[ur]
&{}
&{\T{無向グラフ@G2}} \ar@{_{(}->}[ul]
}
`$

次に半グラフ〈semi-graph〉について考えます。半グラフは、以下の過去記事で述べています。

半グラフにも有向と無向があります。以下のとおりです。

$`\T{半グラフ G2}\\
\quad \xymatrix{
{}
&{\T{半グラフ}} \ar@{=}[d]
&{}
\\
{}
&{\bullet}
&{}
\\
{\T{有向半グラフ}} \ar@{..}[rr]|{|} \ar@{^{(}->}[ur]
&{}
&{\T{無向半グラフ}} \ar@{_{(}->}[ul]
\\
{\T{有向グラフ@G2}} \ar@{..}[rr]|{|} \ar@{^{(}->}[u]
&{}
&{\T{無向グラフ@G2}} \ar@{_{(}->}[u]
}
`$

通常のグラフは半グラフの特殊なものです。

半グラフの場合は、有向より無向なものを扱う機会が多いです。よって、単に「半グラフ」と言えば「無向半グラフ」を意味することだと約束します。すると、「グラフ」、「半グラフ」の慣用の用語・用法図は次のようになります。

$`\T{慣用グラフ G5}\\
\quad \xymatrix{
{\T{無向半グラフ@G4} } \ar@{=}[d]
&{}
&{}
\\
{\T{半グラフ} } \ar@{..}[r]|-{|}
&{\T{有向半グラフ@G4} }
&{}
\\
{\T{無向グラフ@G2} } \ar@{^{(}->}[u] \ar@{..}[r]|-{|}
&{\T{有向グラフ@G2} } \ar@{_{(}->}[u]
&{\T{グラフ@G3} } \ar@{=}[l]
}
`$

おわりに

この記事で分析した「関係」や「グラフ」などの曖昧多義語は、文章で説明することはなかなか難しいです。用語・用法図は、曖昧性や相互関係を視覚化するので、ずっと分かりやすい説明装置になっています。他の曖昧多義語や、似てるけど微妙に違う類義語などの説明にも用語・用法図は効果的に利用できるでしょう。

*1:このブログ内の表記が「スコットブラケット」と「スコット・ブラケット」(ナカグロの有り無し)が混在していて、安定していません。

*2:稀に、有向辺と無向辺が混じったグラフが出てきますが、今回は無視します。