次数分布が与えられた場合、与えられた次数分布に従うグラフをどのくらい速く構築できますか?リンクまたはアルゴリズムのスケッチが良いでしょう。アルゴリズムは、グラフを作成できない場合は「no」を、複数のグラフを作成できる場合はいずれかの例を報告する必要があります。
次数分布が与えられた場合、与えられた次数分布に従うグラフをどのくらい速く構築できますか?リンクまたはアルゴリズムのスケッチが良いでしょう。アルゴリズムは、グラフを作成できない場合は「no」を、複数のグラフを作成できる場合はいずれかの例を報告する必要があります。
回答:
このような単純なグラフ(自己ループも平行エッジもなし)の作成方法を意味する場合、Havel-Hakimiの定理が探しているのかもしれません。あなたは自分でそれをグーグルで検索できます。また、ウィキペディアのページ度(グラフ理論)も役立ちます。
度分布は度のリストとして指定された場合、その後、あなたは次のことを行うことができ、与えられたの学位を持つノードは、dは1を、。。。、d n:
n頂点に完全なグラフを作成します。各頂点のV IでK 、N、に分割D Iコピー。ここではスプリット手段、すべての頂点にエッジを持つ部数を作成vの私はに端を持っていることは、ないエッジの他のコピーにV I。場合D 私は = 0を、単に頂点を削除します。新しいグラフでは、これらの頂点が呼び出すV I jのための1 ≤ jの≤ D Iを。
完了すると、に非常に密なグラフができます。。。+ d n頂点; このグラフをHと呼びます。最大のマッチングのためにお気に入りのアルゴリズムを選択し(グラフが非常に密であるため、おそらく高速な行列乗算ベースのアルゴリズムのいずれかを使用する必要があります)、それをHで実行します。これは、一致するMを返します。マッチングが完全でない場合(つまり、すべての頂点をカバーしていない場合)、次数分布は不可能でした。そのため、noを返します。
あなたは完璧なマッチングがある場合は、そしてないですべてのエッジを削除するMからHおき、次いで、かつ1 ≤ I ≤ n個マージDを私は多くの頂点は、V I 1、。。。、v i d iを1つの頂点u iに変換します。2つの頂点をマージするということは、結果の頂点がすべての頂点にエッジを持つように、それらを1つに結合することを意味します。元の少なくとも1つにエッジがあります。結果のグラフGを呼び出します。希望する次数分布を持っています。
得られたランタイムはωは(執筆時点で約ある最速の行列乗算アルゴリズムの定数である2.373)。得られたグラフの頂点の数の点で、緻密である次数分布の最悪の場合、我々はO (N 2 ωに)。