【问题标题】:minimum power required algorithm最小功耗算法
【发布时间】:2012-08-26 06:21:39
【问题描述】:

给定一个逻辑电路,可以建模为有根树——叶子是主要输入,内部节点是门,根是电路的单个输出。每个门可以由高或低电源电压供电。由较低电源电压供电的门消耗较少的功率,但具有 输出信号较弱。您希望在确保电路可靠的同时最大限度地降低功耗。为确保可靠性,您不应让一个由低电源电压供电的门驱动另一个由低电源供电的门 电源电压。所有栅极在连接到低电源电压时消耗 1 纳瓦,在连接到高电源电压时消耗 2 纳瓦。

设计一种高效算法,将逻辑电路作为输入并为每个门选择电源电压,以在确保可靠运行的同时最大限度地降低功耗。

在这个问题中,我认为,它可以通过使用贪婪或动态来解决。但是我很困惑从哪里开始思考这个问题。 请帮忙。

【问题讨论】:

  • 不,karoly,其实我是在准备谷歌的面试,所以才问了同样的问题。
  • Karoly,我觉得应该是“无作业”的标签。

标签: algorithm dynamic-programming greedy


【解决方案1】:

从要求“你不应该让一个由低电源电压供电的门驱动另一个由低电源电压供电的门”,我们知道我们的任务是在树中找到一个最大的独立集(减去叶子可能,我不知道他们是否被认为是有动力的)。

虽然对于一般图来说这个问题是 NP-hard,但对于树来说,它可以快速有效地解决。您可以阅读此simple 3-page article 了解详细信息。

【讨论】:

    【解决方案2】:

    您需要找到树的最大独立集,而属于独立集的点具有低电源电压。除了动态规划,还有一个非常简单的线性贪心算法:

    1. 选择所有叶子(未被其他门驱动的门)为低电压。
    2. 删除所有叶子及其直系父亲。
    3. 现在一些内部节点变成了新叶子。重复到 1,直到处理完所有节点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-02
      • 1970-01-01
      • 1970-01-01
      • 2016-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      相关资源
      最近更新 更多