我一直在思考過去幾天的問題,但由於我是MATLAB的初學者,所以我不知道如何解決它。這是背景。假設您有一個對稱的N×N
矩陣,其中每個元素是0
或1
和N = (1,2,...,n)
。在Matlab中查找可能的對的所有可能的「列表」
例如:
A =
0 1 1 0
1 0 0 1
1 0 0 0
0 1 0 0
如果A(i,j) == 1
,那麼很可能形成一對(i,j)
並且如果A(i,j)==0
那麼它是不能夠形成對(i,j)
。例如,(1,2)
是可能的配對,因爲A(1,2)==A(2,1)==1
,但(3,4)
不是A(3,4)==A(4,3)==0
的可能配對。
這是問題所在。假設集合N
的成員只能與集合N
中的至多一個其他不同成員配對(即,如果1與2形成一對,則1不能與3形成一對)。我怎樣才能找到所有可能的對「列表」?在上面的例子中,一個「列表」只能由(1,2)
組成。如果形成這對,則不可能形成任何其他對。另一個「列表」將是:((1,3),(2,4))
。我搜索了論壇並發現後者「列表」是可以找到的最大匹配,例如通過使用二分圖方法。但是,我不一定只對找到最大匹配感興趣;我有興趣找到所有可能的「列表」可能的對。 又如:
A =
0 1 1 1
1 0 0 1
1 0 0 0
1 1 0 0
在這個例子中,有三個可能的列表:
(1,2)
((1,3),(2,4))
(1,4)
我希望你能明白我的問題,我很抱歉,如果我不清楚。我很感激所有我能得到的幫助。非常感謝!
由於羅迪Oldenhuis和Divakar都爲你快速的答覆!我有一個問題Divakar: 如果我嘗試你的矩陣解決方案 A = [0 1 1 1; 1 0 1 1; 1 1 0 1; 1 1 1 0] 輸出是 ans = [1 2; 2 3; 3 4] ,ans = [1 3; 2 4] ,ANS = [ 4], 在這種情況下,然而,這三種可能的「列表」是: ((1,2),(3,4)), ((1,3),(2,4))和 ((1,4),(2,3)) 在輸出中是否存在某些我誤解的內容。再一次,非常感謝。 – user3436833
+1,這比我的笨多了:) –
@ user3436833和Rody,我可能誤解了整件事!也許編碼起來太快了,讓我們來看看! – Divakar