지난 며칠 동안 문제에 대해 생각해 봤지만 MATLAB 초보자인데 해결 방법이 없습니다. 다음은 배경입니다. 각 요소가 0
또는 1
이고 N = (1,2,...,n)
인 대칭 N×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)
난 당신이 내 질문을 이해 수 있기를 바랍니다, 그리고 불분명 오전 만약 내가 죄송합니다. 내가 얻을 수있는 모든 도움에 감사드립니다. 많은 감사합니다!
감사합니다! 나는 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 = 1 \t 4] 이때 는하지만, 세 가지 "리스트"이다 : ((1,2), (3,4)), ((1,3), (2,4)) 및 ((1,4), (2,3)) 출력에 오해되는 것이 있습니까? 다시 한번, 많은 감사합니다. – user3436833
+1, 그것은 내 것보다 훨씬 덜 불쾌합니다 :) –
@ user3436833 그리고 Rody, 나는 모든 것을 잘못 이해했을 것입니다! 너무 빨리 코드화되어 보자. – Divakar