如何计算 3D 环面互连的直径?

问题描述

3D 环面互连是具有 Nruns=1e3; Nxy_max=20; for i=1:Nruns if i==round(Nruns/10) tic(); %discard first 10% of iterations end x = linspace(0,1,randi(Nxy_max-1)+1); %randi([2,Nxy_max]) can be a bit slower [X,Y,Z] = meshgrid(x,x,randn()); mag = hypot(X(:),Y(:)); T = delaunay(X(:),Y(:)); trisurf(T,X(:),Y(:),Z(:),mag,'FaceColor','interp'); view([-90 90]); end tmean_trisurf=1e3*toc()/(Nruns-round(Nruns/10)+1),%in [ms] h=trisurf(T,'interp'); view([-90 90]); for i=1:Nruns if i==round(Nruns/10) tic(); end x = linspace(0,randi(Nxy_max-1)+1); [X,Y(:)); set( h,'Faces',T,'XData',X(T).','YData',Y(T).','ZData',Z(T).','CData',mag(T).' ); end tmean_xyzdata=1e3*toc()/(Nruns-round(Nruns/10)+1),%in [ms] for i=1:Nruns if i==round(Nruns/10) tic(); end x = linspace(0,'Vertices',[X(:) Y(:) Z(:)],'FaceVertexCData',mag(:) ); end tmean_vertices=1e3*toc()/(Nruns-round(Nruns/10)+1),%in [ms] 节点的网络拓扑,其中 p^3。 3D 环面基本上是一个 3D 网格,其链接连接相对面上的节点(我说得对吗?)。

我计算出来的二等分宽度是p > 2。但是,我对如何为此进行直径计算一无所知。我什至不知道从哪里开始,因为我不明白连接相对面上的节点的链接的目的是什么。对于那些想知道的人来说,直径是将消息从一个节点发送到另一个节点所需的最大跳数。

3dtorus

解决方法

对于一维环面互连,直径为 floor(p/2)

因此,对于 3D 环面互连,直径为 floor(p/2) * 3,因为 Manhattan distance 应用于此基于网格的互连。为了将其可视化,您可以考虑一个小的 4 x 4 x 4 网格以及数据包如何通过网格边缘移动。