图表由两件事表示,一组nodes
V和一组edges
U,因为将节点1
与节点2
连接到v。
现在,我有一个图形,其顶部/节点集:
V = [1 2 3 4 5 6];
及其边缘:
U = {[1 6],[2 3],[3 5],[2 4],[5 1]};
如何为循环编写循环以检查最高数字1 V(1)
是否在边缘列表U
上与最高号码2 V(2)
连接?
这个问题动机背后的背景
- 我需要找到使用MATLAB的图形。
- 因为我需要在单独的集合中脱节这两个顶部。
如何为循环编写以检查最高数字1是否与最高号码连接?
?
这是它的功能。创建一个名为areConnect.m
的文件,然后将其放在:
function areConnected = areConnect( topA, topB, U )
for i = 1 : numel( U )
vector = cell2mat( U(i) );
if topA == vector(1) && topB == vector(2)
areConnected = true;
return
end
if topB == vector(1) && topA == vector(2)
areConnected = true;
return
end
end
areConnected = false;
end
在您的主要程序上,您可以对其进行测试:
V = [1 2 3 4 5 6]
U = {[1 6],[2 3],[3 5],[2 4],[5 1]}
areConnected16 = areConnect( V(1), V(6), U )
areConnected12 = areConnect( V(1), V(2), U )
它将导致以下输出:
V =
1 2 3 4 5 6
U =
[1x2 double] [1x2 double] [1x2 double] [1x2 double] [1x2 double]
areConnected16 =
1
areConnected12 =
0
参考:
- https://www.mathworks.com/help/matlab/matlab_prog/access-data-in-a-a-cell-aray-aray.html
- https://www.mathworks.com/help/matlab/ref/specialcharacters.html