ホームページ  >  記事  >  Java  >  相補グラフを使用してグラフ内の最大独立集合を見つける Java プログラム

相補グラフを使用してグラフ内の最大独立集合を見つける Java プログラム

WBOY
WBOY転載
2023-09-20 16:41:10589ブラウズ

相補グラフを使用してグラフ内の最大独立集合を見つける Java プログラム

これは C で実行される Java プログラムで、グラフ補完メソッドを使用してグラフ内の最大の自律セットを見つけます。まず、プログラムは指定された入力グラフの補数を構築します。次に、相補グラフ内の各頂点を強調し、現在の頂点をカウントまたは除外することによって最大フリー セット (MIS) を再帰的に見つけます。プログラムは、これまでに見つかった最大の自由セットの推定値を追跡し、それを最終結果として返します。相補的なグラフを活用することで、最大の自律セットを見つける問題を元のグラフ内の最大のクリークを見つける問題に変換し、効率的な解決策を達成することができます。

使用説明書

  • ブルートフォースクラッキング手法

暴力的な方法

グラフ内の最大の自律セットを見つけるための総当り的な方法には、グラフ内の頂点の可能なすべてのサブセットを生成し、各サブセットが自由セットを形成しているかどうかを確認することが含まれます。 C で実装された Java プログラムでは、考えられるすべてのサブセットに対して計算が繰り返され、サブセット内の各頂点が同じサブセット内に隣接する頂点を持たないことが確認されます。すべてのサブセットを包括的に調査することにより、プログラムは、この条件を満たす頂点の数が最も多い最大のフリー セットを識別します。それにもかかわらず、指数関数的な時間計算量のため、このアプローチは拡張されたグラフには適していませんが、小さなグラフには基本的に合理的であると思われます。

###アルゴリズム###

  • 変数 maxSetSize を 0 に初期化します。これは、見つかった最大の自律セットの評価値を格納するために使用されます。
  • グラフ内の頂点の可能なすべてのサブセットを生成します。これは、ビット マスキング プロセスを使用するか、すべての可能な頂点の組み合わせを再帰的に強調することによって実行できます。
  • 各サブセット:
  • サブセットが自律セットを形成しているかどうかを確認します。サブセット内の各頂点を反復処理します。
  • サブセット内の各頂点 v について、サブセット内に隣接する頂点 u があるかどうかを確認します。このような隣接する頂点が見つかった場合、サブセットは独立していないため、ループは中断されます。
  • サブセット内に頂点の隣接頂点が見つからない場合は、現在のサブセット メトリックが maxSetSize より大きいかどうか maxSetSize を確認します。
  • maxSetSize の値は、見つかった最大の独立セットの推定値を表します。
  • オプションで、最大フリー セット内の頂点の真のセットを取得する必要がある場合は、最大極値サイズのサブセットと比較して頂点を追跡します。
  • 最大の自律セットの尺度として maxSetSize を返します。実際の頂点セットをたどる場合、次数と対応する頂点セットの両方が返されます。
  • ###例### リーリー ###出力### リーリー ###結論は###
  • この記事では、チャート内の最大の自由集合を見つけるために使用される C 言語で実装された Java プログラムを紹介します。使用される方法は次のとおりです: ブルート フォース メソッド。ブルート フォース手法は、考えられるすべての頂点のサブセットを生成し、各サブセットが自由セットを形成しているかどうかを確認することで構成されます。アルゴリズムとその実装について、コード例と出力結果とともに説明します。これらの方法は、グラフ内の最大の自由集合を見つける問題を解決するためのさまざまな戦略を提供します。

以上が相補グラフを使用してグラフ内の最大独立集合を見つける Java プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。