是否有任何算法或方法可以为任何维度的超立方体生成邻接矩阵?说你的输入是 5 它会创建一个 5 维超立方体
我只能找到来自 维基的资源
和 wolfram
如果要生成一个ND单位超立方体的顶点,基本上可以制作一个N值真值表。这是我使用的一些代码:
function output = ttable(values)
output = feval(@(y)feval(@(x)mod(ceil(repmat((1:x(1))', 1, numel(x) - 1) ./ repmat(x(2:end), x(1), 1)) - 1, repmat(fliplr(y), x(1), 1)) + 1, fliplr([1 cumprod(y)])), fliplr(values));
end
要获得 5-D 超立方体的顶点,您可以这样称呼它:
vertices = ttable(ones(1, 5) * 2) - 1;
从这里您可以通过查找所有仅相差一位的顶点来计算邻接矩阵,即:
adj_list = zeros(2^5, 5);
adj_mat = zeros(2^5, 2^5);
for v=1:2^5
L1_dists = sum(abs(vertices - repmat(vertices(v, :), 2^5, 1)), 2);
adj_list(v, :) = find(L1_dists == 1);
adj_mat(v, find(L1_dists == 1)) = 1;
end