通过网络模拟器查找特定 "route"

Finding a specific "route" through a network simulator

我正在为涉及网络的游戏编写一些东西。在这个游戏中,一个网络是 class,每个节点的 "connections" 格式如下:

network.nodes = [router, computer1, computer2]
network.connections = [ [1, 2], [0], [0] ]

"network.nodes" 中的每个迭代与 "network.connections" 中的每个迭代并行工作,这意味着 "network.connections[0]" 代表 "network.nodes[0]" 连接的所有节点。我正在尝试在网络 class 中编写一个简单的函数,用于查找从路由器开始的路由 - "network.connections[0]" - 然后到特定的 "node"。越想越觉得答案复杂。

在这种相当简单的情况下,它应该return类似于

[router, computer1]

如果我试图找到通往 "computer1" 的路线,这就是我想要查看的内容,但我需要一些能够处理更复杂的网络模拟的东西。

它基本上是一个计算机网络模拟器。但在这个游戏中,我需要能够准确地知道某些东西可能经过哪些节点才能到达特定目标。 任何帮助将不胜感激。谢谢

如何删除 .nodes.connections 并将它们保存在一个数据结构中,如字典。

network.nodes = {"router": [computer1, computer2],
                 "computer1": [router],
                 "computer2": [router]
                 }

您甚至可以将字符串作为键并使用对象本身:

network.nodes = {router: [computer1, computer2],
                 computer1: [router],
                 computer2: [router]
                 }

这样,如果您需要访问路由器的连接,您可以这样做:

>>>network.nodes[router]
[computer1, computer2]

因为我没有你的项目的完整概览,所以我不能只给你一个函数来做到这一点,但我可以尝试为你指明正确的方向。

如果您将网络 'map' 构建为字典,并且 network.nodes[router] returns [computer1, computer2],接下来您需要做的是 network.nodes[computer1]network.nodes[computer2].

在评论中的防火墙示例中,您将重建网络映射以包括防火墙。所以字典看起来像这样:

network.nodes = {router: [firewall, computer2],
                firewall: [computer1]
                computer1: [firewall],
                computer2: [router]
                }