这是半数学半计算机科学问题。我正在matlab上研究数学问题。
我想在一个简单的友谊矩阵x
中生成一个线性系统,用于计算一般社交网络中人的受欢迎程度(向量F
)。如果用户1和用户2是朋友,F(1,2)=1
还有F(2,1)=1
(友谊是双向的)。为了在线性系统中转换这个问题,我需要一个人(x(i)
)的受欢迎度值和他所有朋友(∀x(j) | F(i,j)=1 and j≠i
)的受欢迎程度是线性相关的。所以我写了这个简单的公式
x(j) = sum(x(i) x n(i) x F(i,j)) ∀i≠j
其中n(i)
是我的朋友数。
对于size(x)=3
系统是这样的
-x(1) + f(1,2) n(2) x(2) + f(1,3) n(3) = 0
f(2,1) n(1) x(1) - x(2) + f(1,3) n(3) x(3) = 0
f(3,1) n(1) x(1) + f(1,2) n(2) x(2) - x(3) = 0
使用这个特定的公式有两个问题:
x(i)=0 ∀i
所以我需要一个没有这两个问题的公式。公式可以任意选择,因为问题完全由我定义。它必须考虑到友谊关系和线性组合中的朋友数量(获得线性系统所必需的),但也要积极。 这里是系统生成和解析的代码
n=10;
F=triu(randi([0,1],n));
F=F-diag(diag(F));
F=F+F';
N=(sum(F))';
A=ones(n);
for i=1:n
A(:,i)=diag(N)*F(:,i);
end
A=A-eye(n);
b=zeros(n,1);
x=A\b