回答編集履歴

3

表示崩れの修正

2017/01/23 09:38

投稿

can110
can110

スコア38266

test CHANGED
@@ -52,11 +52,11 @@
52
52
 
53
53
 
54
54
 
55
- ```LMax = TL(1)~TL(N)の最大値```とすると```0 <= LL <= LMax```は明らか?なので M,N,LMaxが小さければ、適切な枝刈+全探索でも解けそうな気がします。
55
+ LMax = TL(1)~TL(N)の最大値 とすると 0 <= LL <= LMax は明らか?なので M,N,LMaxが小さければ、適切な枝刈+全探索でも解けそうな気がします。
56
56
 
57
57
 
58
58
 
59
- 2017/01/23追記 : 提示された例を単純に解いてみました。
59
+ 2017/01/23追記 : 提示された例をpythonで単純に解いてみました。
60
60
 
61
61
  ```Python
62
62
 
@@ -106,10 +106,10 @@
106
106
 
107
107
  ```
108
108
 
109
- #(0, 2, 2)
109
+ (0, 2, 2)
110
110
 
111
- #(1, 1, 1)
111
+ (1, 1, 1)
112
112
 
113
- #(2, 0, 0)
113
+ (2, 0, 0)
114
114
 
115
115
  ```

2

サンプル追加

2017/01/23 09:37

投稿

can110
can110

スコア38266

test CHANGED
@@ -53,3 +53,63 @@
53
53
 
54
54
 
55
55
  ```LMax = TL(1)~TL(N)の最大値```とすると```0 <= LL <= LMax```は明らか?なので M,N,LMaxが小さければ、適切な枝刈+全探索でも解けそうな気がします。
56
+
57
+
58
+
59
+ 2017/01/23追記 : 提示された例を単純に解いてみました。
60
+
61
+ ```Python
62
+
63
+ import itertools
64
+
65
+ TL = (2,2) # TotalLoss 方程式の右辺値
66
+
67
+ E = ((1,1,0), (1,0,1)) # Exist 未使用のリンク(列)は除外してます。
68
+
69
+
70
+
71
+ M = len(E[0]) # LLの個数
72
+
73
+ N = len(TL) # 方程式の個数
74
+
75
+ LMax = max(TL) # LLの取りうる最大値
76
+
77
+
78
+
79
+ for LLs in itertools.product(range(LMax+1), repeat=M): # LLのすべての組み合わせ
80
+
81
+ match = True
82
+
83
+ for n in range(N): # 方程式毎にチェック
84
+
85
+ left = 0 # 左辺値を算出
86
+
87
+ for m in range(M):
88
+
89
+ left += E[n][m] * LLs[m]
90
+
91
+ if left != TL[n]: # 式が成立しない
92
+
93
+ match = False
94
+
95
+ break
96
+
97
+ if match:
98
+
99
+ print( LLs)
100
+
101
+ return 0
102
+
103
+ ```
104
+
105
+ 出力結果
106
+
107
+ ```
108
+
109
+ #(0, 2, 2)
110
+
111
+ #(1, 1, 1)
112
+
113
+ #(2, 0, 0)
114
+
115
+ ```

1

内容追記

2017/01/23 09:35

投稿

can110
can110

スコア38266

test CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
  ```
42
42
 
43
- というM元連立一次方程式を満たすL(m)の解(組み合わせ)をすべて求める。
43
+ というM元連立一次方程式を満たすLL(m)の解(組み合わせ)をすべて求める。
44
44
 
45
45
  という問題に表せるかと思います。
46
46
 
@@ -49,3 +49,7 @@
49
49
  >変数の数が動的に変化するため
50
50
 
51
51
  という部分を```E(m,n)```で表現してみました。
52
+
53
+
54
+
55
+ ```LMax = TL(1)~TL(N)の最大値```とすると```0 <= LL <= LMax```は明らか?なので M,N,LMaxが小さければ、適切な枝刈+全探索でも解けそうな気がします。