適当なグラフをかくと、オイラーグラフになることは少ないけれど、奇点が2個ある連結グラフができて、一筆書きができることは多い。[br][br][color=#9900ff][u][b][size=150]質問:そこで、その感覚が正しいのか、どのくらいの比率なのか、頂点と辺の数の変化がその比率に影響する傾向があるか。[br][/size][/b][/u][/color][br]連結グラフで奇点が0個、連結グラフで奇数が2個、連結グラフで奇数点が2個より多い、非連結グラフ[br]この4タイプの比率を調べてみよう。[br][br]グラフ作成関数が隣接グラフだけを返すように変更した上で、[br]調査のための関数を作ろう。[br]頂点の数をv=6から10まで変えてみる。[br]辺の数eは連結可能な最小数v-1から完全グラフになれるv(v-1)/2まで変えてみよう。[br]def gene_G(v,e):[br] # 頂点数v,辺数eのグラフをデタラメに作り、隣接行列Aと、グラフGを返す[br] A=[[0]*v for i in range(v)] # v*vの隣接行列 (初期化 by 0 )[br] nodes = [x for x in range(v)] # 0〜v-1のv個の点[br] edges = [] # ランダムにできる辺[br] G = nx.Graph()[br] while len(edges) < e:[br] i,j = random.sample(range(v),2)[br] if i > j: i,j = j,i[br] edges.append((i,j)) #辺の格納[br] A[i][j] = A[j][i]= 1 #隣接行列の更新(by 1)[br] #グラフオブジェクトに辺と点を一括で登録する[br] return A[br][br][color=#0000ff]#==========次は調査のための関数=======[br]def statEuler(v,e,trials):[br] res=[0,0,0,0][br] for i in range(trials):[br] A = gene_G([/color][color=#ff0000]v, e[/color][color=#0000ff]) #隣接グラフのみ[br] Euler = evenPoints(A) #奇点のリスト[br] Connect = all(np.where(walkSum(A)>=1,1,0).flatten()) #連結グラフならTrue[br] if Connect == True:[br] if len(Euler)==0:[br] res[0] +=1 [br] elif len(Euler)==2:[br] res[1] +=1 [br] else:[br] res[2] +=1[br] else:[br] res[3] +=1[br] return [ res[0]/trials, res[1]/trials, res[2]/trials, res[3]/trials][br][br]def test1(minV, maxV):[br] trialCount = 100[br] result =[][br] for V in range(minV,maxV):[br] F = int(V*(V-1)/2)[br] for E in range(V-1,F+1):[br] result.append([V, statEuler(V, E, trialCount)])[br] return result[br][br][/color]print("test1の結果==================")[br]test1(6,10)[br]#======================================================[br][OUT][br]test1の結果==================[br][[(6, 5), [0.02, 0.47, 0.37, 0.14]],[br] [(6, 6), [0.03, 0.4, 0.5, 0.07]],[br] [(6, 7), [0.02, 0.39, 0.48, 0.11]],[br] [(6, 8), [0.01, 0.41, 0.51, 0.07]],[br] [(6, 9), [0.03, 0.48, 0.37, 0.12]],[br] [(6, 10), [0.02, 0.43, 0.49, 0.06]],[br] [(6, 11), [0.02, 0.38, 0.5, 0.1]],[br] [(6, 12), [0.03, 0.42, 0.45, 0.1]],[br] [(6, 13), [0.02, 0.49, 0.44, 0.05]],[br] [(6, 14), [0.01, 0.41, 0.42, 0.16]],[br] [(6, 15), [0.05, 0.42, 0.43, 0.1]],[br] [(7, 6), [0.04, 0.41, 0.43, 0.12]],[br] [(7, 7), [0.04, 0.4, 0.45, 0.11]],[br] [(7, 8), [0.01, 0.49, 0.43, 0.07]],[br] [(7, 9), [0.04, 0.42, 0.45, 0.09]],[br] [(7, 10), [0.03, 0.5, 0.34, 0.13]],[br] [(7, 11), [0.03, 0.43, 0.45, 0.09]],[br] [(7, 12), [0.06, 0.38, 0.46, 0.1]],[br] [(7, 13), [0.02, 0.46, 0.43, 0.09]],[br] [(7, 14), [0.0, 0.44, 0.44, 0.12]],[br] [(7, 15), [0.03, 0.38, 0.48, 0.11]],[br] [(7, 16), [0.02, 0.38, 0.43, 0.17]],[br] [(7, 17), [0.02, 0.45, 0.4, 0.13]],[br] [(7, 18), [0.02, 0.44, 0.41, 0.13]],[br] [(7, 19), [0.03, 0.44, 0.44, 0.09]],[br] [(7, 20), [0.02, 0.39, 0.47, 0.12]],[br] [(7, 21), [0.04, 0.34, 0.53, 0.09]],[br] [(8, 7), [0.02, 0.36, 0.52, 0.1]],[br] [(8, 8), [0.02, 0.34, 0.52, 0.12]],[br] [(8, 9), [0.01, 0.47, 0.43, 0.09]],[br] [(8, 10), [0.0, 0.43, 0.41, 0.16]],[br] [(8, 11), [0.03, 0.47, 0.45, 0.05]],[br] [(8, 12), [0.04, 0.4, 0.46, 0.1]],[br] [(8, 13), [0.04, 0.42, 0.4, 0.14]],[br] [(8, 14), [0.03, 0.41, 0.49, 0.07]],[br] [(8, 15), [0.02, 0.45, 0.34, 0.19]],[br] [(8, 16), [0.0, 0.32, 0.55, 0.13]],[br] [(8, 17), [0.01, 0.42, 0.47, 0.1]],[br] [(8, 18), [0.02, 0.48, 0.39, 0.11]],[br] [(8, 19), [0.04, 0.39, 0.5, 0.07]],[br] [(8, 20), [0.02, 0.41, 0.41, 0.16]],[br] [(8, 21), [0.02, 0.35, 0.55, 0.08]],[br] [(8, 22), [0.01, 0.38, 0.53, 0.08]],[br] [(8, 23), [0.02, 0.4, 0.47, 0.11]],[br] [(8, 24), [0.03, 0.41, 0.46, 0.1]],[br] [(8, 25), [0.02, 0.44, 0.49, 0.05]],[br] [(8, 26), [0.03, 0.37, 0.49, 0.11]],[br] [(8, 27), [0.03, 0.41, 0.43, 0.13]],[br] [(8, 28), [0.04, 0.34, 0.51, 0.11]],[br] [(9, 8), [0.01, 0.39, 0.52, 0.08]],[br] [(9, 9), [0.03, 0.38, 0.46, 0.13]],[br] [(9, 10), [0.02, 0.38, 0.52, 0.08]],[br] [(9, 11), [0.01, 0.44, 0.41, 0.14]],[br] [(9, 12), [0.02, 0.49, 0.4, 0.09]],[br] [(9, 13), [0.01, 0.37, 0.51, 0.11]],[br] [(9, 14), [0.02, 0.41, 0.47, 0.1]],[br] [(9, 15), [0.02, 0.31, 0.57, 0.1]],[br] [(9, 16), [0.04, 0.47, 0.39, 0.1]],[br] [(9, 17), [0.01, 0.43, 0.48, 0.08]],[br] [(9, 18), [0.01, 0.51, 0.4, 0.08]],[br] [(9, 19), [0.03, 0.33, 0.56, 0.08]],[br] [(9, 20), [0.0, 0.39, 0.47, 0.14]],[br] [(9, 21), [0.01, 0.38, 0.47, 0.14]],[br] [(9, 22), [0.01, 0.46, 0.46, 0.07]],[br] [(9, 23), [0.04, 0.36, 0.53, 0.07]],[br] [(9, 24), [0.03, 0.42, 0.42, 0.13]],[br] [(9, 25), [0.02, 0.4, 0.51, 0.07]],[br] [(9, 26), [0.01, 0.4, 0.47, 0.12]],[br] [(9, 27), [0.01, 0.28, 0.55, 0.16]],[br] [(9, 28), [0.01, 0.48, 0.38, 0.13]],[br] [(9, 29), [0.03, 0.38, 0.46, 0.13]],[br] [(9, 30), [0.04, 0.44, 0.44, 0.08]],[br] [(9, 31), [0.03, 0.39, 0.45, 0.13]],[br] [(9, 32), [0.05, 0.32, 0.52, 0.11]],[br] [(9, 33), [0.03, 0.41, 0.42, 0.14]],[br] [(9, 34), [0.04, 0.44, 0.39, 0.13]],[br] [(9, 35), [0.01, 0.41, 0.5, 0.08]],[br] [(9, 36), [0.03, 0.3, 0.55, 0.12]]][br]