表示:
你有24個元素,我將其命名爲從A這個元素X(24個字母)。 這四個元素中的每一個都會在4個圖中的一箇中放置。我將爲從1到24的4個圖表中的24個節點分配一個數字。
我將通過24-uple =(xA1,xA2 ...,xA24)確定A的位置,如果我想要把A賦給8號節點爲例,我會寫(xa1,Xa2..xa24)=(0,0,0,0,0,0,0,1,0,0 ... 0),其中圖1是在第8位置
我們可以說,A =(A1,... xa24)
E1 ... E24是單位矢量(1,0 ...,0)到(0, 0 ...1)
注意到有關操作 '':
- A.e1 = XA1
- ...
- X.e24 = Xx24
上有一些限制A,... X與這些符號:
Xii在{0,1} 和
(Xa1,xb1,... Xx1)= 1 ... Sum(Xa24,Xb24,... Xx24)= 1 ... Sum(Xxi)= 1
Sum(Xa1, 1
由於一個元素只能分配給一個節點。
我將通過定義每個節點的鄰居關係限定的曲線圖,可以說,節點8具有鄰居節點7和節點10
檢查A和B是在節點8的鄰居爲例我NEDD:
A.e8 = 1和B.e7或B.e10 = 1,則我只需要A.e8 *(B.e7 + B.e10)== 1
在函數isNeighborInGraphs(A,B )我測試每個節點,我得到一個或零取決於鄰里。
符號:
- 6個節點的4個曲線圖中,每個元素的位置是由1-3的整數定義爲24. (1至6第一圖表等...)
- e1 ... e24是單位矢量(1,0,0 ... 0)至(0,0 ... 1)
- 設A,B ... X爲N個元素。
A =(0,0 ...,1,...,0)=(XA1,XA2 ... xa24)
B = ...
。 ..
X =(0,0 ...,1,...,0)
IsNeigborInGraphs(A,B)= A.e1 * B.e2 + ... //如果1和2是在neigbors一個圖表 爲爲例系統
L(A)= [B,B,C,E,G ...] //的A的 neigbors列表(可以重複)
actualise(L(A)):
for element in [B,X]
if IsNeigbotInGraphs(A,Element)
L(A).append(Element)
endIf
endfor
N(A)= LEN(L(A))+薩姆(IsneigborInGraph (A,i)中,i的L(A))
...
N(X)= ...該算法
- 開始的
說明與初始位置 A = E1 ... X = E24
具體化L(A),L(B)... ...你(X)
解決這個(用solveur,ampl爲 爲例將工作我想,因爲它是 一個非線性優化 問題): 目標函數
分鐘(薩姆(N(Z)中,Z = A至X)
限制條件:
薩姆(賽)= 1 ... Sum(Xxi)= 1
Sum(Xa1,xb1,... Xx1)= 1 ... 總和(Xa24,XB24,... Xx24)= 1
你得到最佳的解決方案
4.重複步驟2和3,3次以上。
我可能會遺漏一些東西,但... 24個對象意味着您可以爲每個圖中的每個節點分配一個不同的對象,從而導致任何給定鄰居不超過一次。 – Chowlett 2011-06-06 14:57:32
@Chowlett,是的,但這只是一項任務(即將24個對象總共分配給4 x 6個節點)。我在這裏感興趣的是超過4個作業,重複鄰居的數量被最小化。 – skyork 2011-06-06 15:02:17
啊,我遵循。我很困惑,因爲有4個圖表和4個分配,但是這些數字實際上是無關的。 – Chowlett 2011-06-06 15:22:24