首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算给定电阻的总电阻邻接表

计算给定电阻的总电阻邻接表
EN

Stack Overflow用户
提问于 2016-05-27 04:55:46
回答 2查看 1.1K关注 0票数 0

我需要解决的问题是计算电路的总电阻,给出连接电阻的列表(如果把电阻看作节点,则为邻接表)。

例如,在以下电路中:

清单将如下所示:

代码语言:javascript
复制
R1 -> R2
R1 -> R3
R2 -> R4
R3 -> R4

每个电阻器都有一个ID和它的电阻值。连接的元组存储在具有getFromgetTo方法的结构中。

到目前为止,我开发的递归算法考虑了两个电阻之间的总电阻的计算:

代码语言:javascript
复制
private double calculateResistance(Resistor c1, Resistor c2){
    double res = 0;
    for(ComponentConnection cc : getGraph()){
        if(cc.getFrom().getId() == c1.getId()){
            if(cc.getTo().getId() == c2.getId())
                return c1.getRes() + c2.getRes();
            res += (1/calculateResistance(cc.getTo(),c2));
        }
    }
    return c1.getRes() + 1/res;
}

问题是,当电路中有一个分叉时,算法无法确定它何时完成并复制了一些componentes (在示例中,R4被考虑了两次)。

有什么办法解决这个问题或者用另一种方法解决问题吗?

EN

回答 2

Stack Overflow用户

发布于 2016-05-27 05:33:28

我将通过递归地减少节点,而不是电阻来解决这个问题。

  • 从第一个和最后一个节点开始
  • 有中间节点吗?
  • 不,->,你完了。返回(一个或无)中间电阻器的电阻
  • 是的,对于中间串联/并行节点,可以通过递归减少中间节点的->。

为最简单的串联/并行节点(2个并行和2个串联)定义约简函数。所有其他的最终都会减少到这些。

票数 0
EN

Stack Overflow用户

发布于 2016-05-27 08:03:49

有两个手术要你考虑:

  • 减少并联电阻器
  • 减少串联电阻器

对于并行电阻,您必须考虑电阻

如果两个电阻器在一边共用一个连接,而在另一边共享另一个连接,你可以减少它们。

对于串行电阻,您必须考虑节点

如果一个节点只有两个大小电阻连接,则可以减少它们。

藻类将是:

代码语言:javascript
复制
boolean isStillWorking = true;
do{
    boolean foundParallel = reduceParallel();
    boolean foundSerial = reduceSerial();
    isStillWorking = foundParallel | foundSerial;
}while(isStillWorking);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37475125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档