首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从一组电阻值中寻找最小电阻数的算法。(C++或Python)

从一组电阻值中寻找最小电阻数的算法。(C++或Python)
EN

Stack Overflow用户
提问于 2018-11-29 16:03:48
回答 1查看 252关注 0票数 3

我试图设计一个算法,接收电阻值,输出最小电阻数和与这些电阻相关联的值。我希望该算法迭代一组电阻值,并且该集合中的值可以使用不超过n次。我想知道从哪里开始的方向。

系列: Req = R1 + R2 +.

平行:(1/Req) = (1/R1) + (1/R2) +.

输入:

100000 (100 K)

集: {30k,50k,80k,200 k}

输出:

2个串联电阻器: 50k + 50k

2个并联电阻器:200 k\x-200 k

EN

回答 1

Stack Overflow用户

发布于 2018-11-29 17:08:14

这其实是相当困难的,我能做的就是提出一个算法的想法来解决第一部分,包含并行的概念看起来也很难,但是也许这个算法可以扩展。

如果您定义了一个函数“最佳”,它以目标电阻作为输入,并输出产生该电阻的最小电阻集。如果你只有10K电阻,最好(50K)=5*10K。

此函数“最佳”对一组可用电阻器A,B,C,…

  1. 最佳(A)=A适用于这组中的任何A。
  2. 最佳(目标)=最小(最佳(目标-A)+ A),最佳(目标-B)+ B,.)
  3. 最佳(0)=0
  4. 最好(X)=胡说八道,如果是x<0 (删除这些情况)

这可以用来简化地解决问题。(我可能会建议您在执行过程中将这些变量存储在树下。

这里有一个例子来说明一下:

AvailableSet = 10K,100 K

目标=120 K

第一次迭代:

最佳(120 K)=最小最佳(110 K)+10 K,最佳(20 K)+100 K

计算每个子树:

最佳(110 K)=最小(100 K)+10 K,最佳(10 K)+100 K

由于我们可以使用这些属性来计算min(_)中的所有内容,所以现在可以完成此操作:最好(110 K)=100 K+ 10K (我想如果在这种情况下有一个领带,那么随机选择一个折扣)

最佳(120 K)=最小(110 K)+ 10K,最佳(20K)+100 K=.=100 K+ 10K + 10K

这应该可以作为问题的前半部分的解决方案,您可以通过添加额外的属性来扩展这个问题,但是它将使以这种方式简化解决问题变得更加困难。

最好的方法可能是解决问题的前半部分,并使用不同的算法,使用并行方法找到最佳解,并决定在每种情况下哪一个是最小的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53543066

复制
相关文章

相似问题

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