我有一个关联矩阵:
Q = matrix(c(0,1,1,1,0,1,1,0,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0), nrow = 5, ncol=5)
rownames(Q) = c(64,32,47,42,58)
colnames(Q) = c(49,64,88,31,13)
我想列出所有可能的最大二分匹配。 使用igraph:
G <- graph_from_incidence_matrix(Q)
M <- max_bipartite_match(G)
M$matching
只提供一个可能的最大匹配:
64 32 47 42 58 49 64 88 31 13
"64" "49" "88" NA NA "32" "64" "47" NA NA
例如,另一个是:
64 32 47 42 58 49 64 88 31 13
"64" "49" NA NA 88 "32" "64" "58" NA NA
有没有办法获得R中所有可能的二分匹配的完整列表?
我也试过lpSolve:
res <- lp.assign(Q, "max")
但它也只给了我一个可能的解决方案,而不是全部。
感谢您的帮助!