我正在尝试找出用于建模一些假设的理想化网络使用情况的数据结构。
在我的方案中,许多互相敌对的用户都试图组成已知所有潜在连接的计算机网络。但是,一个用户需要连接的计算机可能与另一用户需要连接的计算机不同;用户1可能需要连接计算机A,B和D,而用户2可能需要连接计算机B,C和E。
在NCTM Graph Creator的帮助下生成的图像
我认为其核心将是无向循环图,其中节点表示计算机,边缘表示以太网电缆。但是,由于场景的性质,有一些不常见的功能可以排除邻接表和邻接矩阵(至少,没有进行不重要的修改):
- 边缘可能会限制使用;也就是说,如果一个用户获得了给定的网络连接,则其他任何用户都不能使用该连接
- 在该示例中,绿色用户可能无法连接到计算机A,但是红色用户已将B连接到E,尽管它们之间没有直接链接
- 在某些情况下,一对给定的节点将通过多个边连接
- 在该示例中,有两条独立的电缆从D到E,因此绿色和蓝色用户都可以直接连接这些计算机。但是,红色不再能建立这种联系
- 如果两台计算机通过一根以上的电缆连接,则每个用户最多只能拥有其中一根电缆
我需要在此图上执行一些操作,例如:
- 确定是否为给定用户连接了任何特定的计算机对
- 确定给定用户连接目标计算机的最佳路径
- 识别给定用户的最高延迟计算机连接(即最长路径而不分支)
我的第一个想法就是简单地创建所有边缘的集合,但这对于搜索来说是很糟糕的。我现在想做的最好的事情就是修改一个邻接表,以使列表中的每个项目不仅包含边长,还包含其成本和当前所有者。这是明智的做法吗?假设空间不是问题,那么创建图的多个副本(每个用户一个)而不是单个图是否合理?