グラフのはなし・その4

だんだん連載記事を書く時刻が遅くなっている cocoatomo です。

はてダの日付変更線が3:00くらいらしいので助かってます。

追記: 今日は書かずに寝てしまったので、次の日の朝に更新してます。

さて今日は昨日持ち越した、半順序をグラフで表現してみようという話です。
細かい議論は昨日訓練したので大丈夫だと思うので、昨日よりは話のペースを上げてみます。

再追記: すみません。昨日は自然休講でしたm(_ _)m

半順序をグラフで

さて、今日は半順序をグラフで表してみます。


前回、全順序をグラフで表すと点が一直線に並ぶということを見ました。


全順序と半順序の違いは、「どの 2 つの点も比較できる」のが全順序で「比較できないものもあり得る」のが半順序です。


例を見ていきましょう。
以下のような半順序があったします。
A ≦ B
A ≦ C
B ≦ D
C ≦ D

これをグラフで表すと

A -> B -> D
`--> C --^

のようになります。B と C には大小関係は入っていないので、線はありませんね。
そしてその比較できない点どうしがあるので、決して一直線には並ばないですね。

この例ではその感覚が分かれば十分です。


次の例を見ていきましょう。
以下のような半順序を考えます。
A ≦ B
B ≦ C
C ≦ D
D ≦ B

これをグラフで表すと

A -> B -> C
     ^    V
     `--- D

となり輪っかができていますね。しかも矢印の向きにそって一周できる輪っかなんで、前の例の輪っかとは違いますね。

全順序では輪っかは 1 点につぶれていましたが、今回はどうでしょう? ちょっと考えてみてください。



















さて、輪っかが1点につぶれた理由はなんだったでしょうか?
そうです。「a ≦ b, a ≧ b ならば a = b」というルールによって1点につぶれるのでした。

このルールは半順序にもあるのでもちろん、この場合も1点につぶれます。
確認してみましょう。

B ≦ C, C ≦ D より B ≦ D。D ≦ B でもあるので B = D です。同様に B = C が示せます。

つまりこのグラフは

A -> B

という形に直されます。単純になりましたね。

まとめ

半順序をグラフで表すと、矢印に沿って一周できる輪っかの無いグラフができます。こういうグラフには名前が付いていて、無閉路有向グラフ (Directed Acyclic Graph, DAG) と呼びます。もう少しくだけた言い方をすると「循環路がない辺が向き付けされているグラフ」となります。

反省

突然、休講にしてすみませんでした。

来週からはもう少し計画的に書きます。