所需的最小功率算法

时间:2012-08-26 06:21:40

标签: algorithm dynamic-programming greedy

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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