我有一个电阻网络,用一个无向图表示,它的边代表电阻值。一些节点称为驱动器,一些节点称为汇点,其他节点是内部节点。目标是计算每个驱动器到每个汇点的有效电阻。图可以有循环,星形三角形网络等。所以可以使用以下公式来计算有效电阻。
请参阅维基百科文章。
注意,如果图中没有循环,则简单的DFS遍历将给出每个汇点的有效驱动器电阻。但是,如果有循环,则必须删除循环。一种方法是将图复制到临时图中,然后使用上述公式从临时图中删除除驱动器和汇点之外的所有节点。对于所有驱动器汇点对执行此操作,但是这种方法对于大型密集图非常耗费时间。我通过将图存储在tcl哈希表或
您有关于计算每个驱动器到每个汇点电阻的有效方法吗?
我有一个低效的解决方案:
- 对于每个驱动器和每个汇点, - 将原始图复制到临时图中, - 然后使用我上面提到的维基百科文章从临时图中删除除源和目标之外的所有节点。 - 最后的临时图将给出该源和该汇点之间的有效电阻。
这种解决方案的运行时间对于大型输入数据是不可接受的,因此我需要更好的解决方案。
请参阅维基百科文章。
注意,如果图中没有循环,则简单的DFS遍历将给出每个汇点的有效驱动器电阻。但是,如果有循环,则必须删除循环。一种方法是将图复制到临时图中,然后使用上述公式从临时图中删除除驱动器和汇点之外的所有节点。对于所有驱动器汇点对执行此操作,但是这种方法对于大型密集图非常耗费时间。我通过将图存储在tcl哈希表或
std::tr1::unordered_map
中而获得高运行时间。您有关于计算每个驱动器到每个汇点电阻的有效方法吗?
我有一个低效的解决方案:
- 对于每个驱动器和每个汇点, - 将原始图复制到临时图中, - 然后使用我上面提到的维基百科文章从临时图中删除除源和目标之外的所有节点。 - 最后的临时图将给出该源和该汇点之间的有效电阻。
这种解决方案的运行时间对于大型输入数据是不可接受的,因此我需要更好的解决方案。
I
R = V / I = 1 / I