各ノードがカテゴリに属する DAG が与えられた場合、このグラフを各カテゴリの列を持つテーブルに変換するにはどうすればよいでしょうか? 変換は可逆的である必要はありませんが、グラフの構造に関する有用な情報を保持する必要があります。グラフとテーブルを見ている人がどの行にも驚かされないという意味で、「自然な」変換である必要があります。また、コンパクトにする必要があります。つまり、行がほとんどありません。
たとえば、エッジ a1->b1、a1->b2、b1->c1、b2->c1 を持つノード a1、b1、b2、c1 のグラフ (つまり、ひし形のグラフ) が与えられた場合、次のようになると予想されます。テーブル:
a b c
--------
a1 b1 c1
a1 b2 c1
私はこの問題についてかなり考えましたが、特定のグラフで直感的な結果が得られるアルゴリズムを思いつくのに苦労しています。エッジ a1->c1、b1->c1 を持つグラフ a1、b1、c1 を考えてみましょう。アルゴリズムでこのテーブルを生成したいと思います:
a b c
--------
a1 b1 c1
しかし、代わりにこれを生成する必要があります。
a b c
--------
a1 c1
a1 b1
問題に対する創造的なアイデアと洞察を探しています。役立つと思われる場合は、問題を単純化または制限するために自由に変更してください。
ブレインストーミングしましょう!
編集:
行の順序は関係ありませんが、変換では常に同じ行セットが生成されます。
テーブルは、Excel などを使用して並べ替えやフィルタリングを行うときに適切に動作するはずです。つまり、複数のノードをテーブルの 1 つのセルにパックすることはできません。セルごとに 1 つのノードのみです。