2

次のアルゴリズムの時間計算量を改善するのを手伝ってください。

ハッセ図(ハッセ図とは何かをすでに知っている場合は、このセクションをスキップしてください。次のセクションに直接進んでください):

半順序集合(略してポーズ)(A、⊆)を考えます。ここで、Aは集合であり、⊆半順序です。図の各ノードは半順序集合の要素であり、2つの要素xとyが線で接続されている場合、x⊆yまたはy⊆xです。要素の位置と接続は、次のルールに従って描画されます。

  1. 半順序集合でx⊆yの場合、xに対応する点はyに対応する点の下に表示されます。

  2. ポセットの推移性はグラフィカルに省略されます。つまり、x⊆yおよびy⊆zの場合、半順序⊆、x⊆zの推移性によって省略されます。この場合、接続xzは省略されます。

  3. 同様に、再帰性はグラフィカルに省略されています。

Poset(S = {{1,2,3,5}、{2,3}、{5}、{3}、{1,3}、{1,5}}、⊆)のハッセ図表現は次のように(エッジのみが報告されます)

{1,2,3,5}-> {2,3}

{1,2,3,5}-> {1,3}

{1,2,3,5}-> {1,5}

{2,3}-> {3}

{1,3}-> {3}

{1,5}-> {5}

私の最初の考え

私が考えることができる唯一のアルゴリズムは、次のようにO(N ^ 2)です。

最初の要素がSであることを読み取り、ハッセ図の最初の要素として挿入します。次の要素を読むとき、それらをすでに作成された図の正しい位置に挿入します(これまでに作成された図にK個の要素があるとすると、新しい要素を正しい場所に挿入するにはO(K)時間がかかります)。このようにして、O(N ^ 2)は明らかです。

しかし、ポセットSの要素を並べ替えることが役立つかどうかを考えていますが、⊆がすべての要素のペアに当てはまらない可能性があるため、Sの完全な要素の並べ替え順序を作成することはできません(例、{2,3}と{1,3を検討してください) })。

最悪の場合の複雑さを改善するためのアイデアは大歓迎です!!

ありがとう。

PS:これは宿題の問題ではありません!!

4

2 に答える 2

0

この問題は通常、推移還元と呼ばれます。あなたのアルゴリズムは間違っていると思います。正確な方法を説明するのに十分な詳細はありませんが、推移閉包から推移還元への効率的な還元と、いくつかの指数 ω > 2 に対する前者のランインタイム O(n ω ) の最もよく知られているアルゴリズムがあります。

于 2012-07-10T12:10:27.610 に答える
0

セットが {1,2,3,5} の場合、サブセットは ({Æ},{1},{2},{3},{5},{1,2},{1,3] ,{1,5},{2,3}{2,5},{3,5},{1,2,3}{1,3,5},{1,2,5},{2, 3,5}、{1,2,3,5})。推移的な関係を取り除いた後、({{Æ}},{1},{2},[3},{4},{5},{1,2},{2,3}{1,5 },{2,5},{3,5},{1,2,3},{1,3,5},{1,2,5},{1,2,3,5})。ここで、空のセットから始めて、1,2,3,5.. に線を引きます。次に、点 1 と 2 から 1,2 に線を引きます。2 と 3 から線を引き、2,3 を結合します。次に、点 5 に線を引きます。 1,2,3... 次に、[1,2}、{2,3} から {1,2,3} に線を引きます。次に、 {3,5} と {1,5} から {1,3,5} に線を引きます。次に、再び次の set に線を引き、最後に、前のすべての sbset から最後のサブセットに線を引きます...

于 2013-01-27T14:44:34.750 に答える