Iは、以下を計算する必要がある友人があります完全グラフKnを(K < = 13)でパス
は、K *(K-1)/ 2のエッジがあります。 各辺は2通りの方向に向けることができるので、2^[(k *(k-1))/ 2]の異なる場合があります。彼女はP[A !-> B && C !-> D] - P[A !-> B]*P[C !-> D]
Xを計算する必要が
は - !> Yは、 "XからYへのパスがない" を意味し、P []は確率です。
したがって、2^[(k *(k-1))/ 2]個の異なるグラフを調べるアルゴリズムがあり、それらが完全であるため、各グラフでは、 A、B、C、Dの対称性があるためです。 【数1】P [A!→B]は、「ノード1と2との間の経路を持たないグラフの数」をグラフの総数で割ったもの、すなわち2^[(k *(k-1))/ 2]。
bruteforceメソッドはK8までmathematicaで動作しますが、K9、K10 ... K13までが必要です。
明らかに、最短パスを見つける必要はありませんが、ケースがある場合は見つけたいだけです。
誰にでも最適化の提案がありますか? (これは典型的なProject Euler問題のようなものです)。
例:
最小グラフK4 6つのエッジを与え、4つの頂点を有しています。したがって、4つの頂点A、B、CおよびDにラベルを付けると、エッジに方向を割り当てる2^6 = 64の可能な方法があります。
一部のグラフでは、AからBへのパスはありません彼らのXと言うことができます)、他のものでは、CからDへのパスがありません(Yと言うことができます)。しかし、いくつかのグラフでは、AからBへのパスはなく、同時にCからDへのパスもありません。これらはWです。
更新:
- A、B、C及びDは、4つの異なるvertivesあり、それゆえ我々は、少なくともK4を必要とします。
- DIRECTEDグラフを扱っていることに注意してください。そうすれば、UT-行列による正規表現では十分ではありません。
- 有向グラフのノード間の距離を求める関数があります(無限大を返す場合はパスがありません)が、これはちょっと距離が必要ないのでちょっと残念ですパスかどうか。
問題をより明確にするために小さな例を追加してください。 –
A、B、C、Dは等しいことが許されていますか? –