मैं गणित में एक यादृच्छिक ग्राफ द्वारा उत्पन्न सबग्राफ के किनारों को गिनने की कोशिश कर रहा हूं। मैंने एक यादृच्छिक ग्राफ उत्पन्न करने और एक सूची में एक विशिष्ट आकार के विभिन्न सबग्राफ को निकालने और सहेजने के लिए कोड लिखा है। अब मैं सूची के तत्वों पर एजकाउंट का उपयोग करने का प्रयास कर रहा हूं, लेकिन एक त्रुटि प्राप्त करें EdgeCount::एक ग्राफ़ ऑब्जेक्ट EdgeCount में स्थिति 1 पर अपेक्षित है।

यादृच्छिक ग्राफ उत्पन्न करने के लिए कोड

G[n_, p_] := 
Module[{A, M}, A = Table[If[i < j, If[RandomReal[] < p, 1, 0], 0], {i, 1, n}, {j, 1, n}];
M = A + Transpose[A];Return[AdjacencyGraph[M]]; ]

सबग्राफ की सूची बनाने के लिए कोड

Subcount[n_, p_, d_] := Module[{i, ex, comb, sub1}, 
ex = G[n, p]; comb = Subsets[Range[n], {d}];
Table[{Subgraph[ex, Part[comb, i]]}, {i, Length[comb]}]]

किनारों को गिनने के लिए कोड

mylist2 = Subcount2[5, 0.4, 4]
ab = mylist2[[3]]
EdgeCount[ab]

अनुवर्ती कार्रवाई करें, इसके बाद मैं शीर्षों को रंगकर पूर्ण द्विदलीय रेखांकन खोजना चाहता हूं, क्या यह उस तरह से किया जा सकता है जिस तरह से डेटा वर्तमान में संग्रहीत है या कोई अधिक कुशल तरीका है?

1
pythonthrowaway 16 सितंबर 2019, 17:50

1 उत्तर

सबसे बढ़िया उत्तर

Subcount को परिभाषित करने का एक छोटा सा विवरण है लेकिन फिर Subcount2 का उपयोग करना

Subcount, {graph} का एक Table लौटाता है और इस प्रकार आप Edgecount[graph] के बजाय Edgecount[{graph}] करने का प्रयास कर रहे हैं

यदि आप इसे Edgecount[First[ab]] में बदलते हैं ताकि आप graph को {graph} में से निकाल सकें या इसके समकक्ष कुछ भी कर सकें, तो यह ठीक काम करता प्रतीत होता है

1
Bill 16 सितंबर 2019, 20:13