一组开关和灯的最大流量

时间:2019-04-03 02:32:22

标签: python algorithm

有些开关和灯带壁,一个开关只能与一个灯连接。以此形式给灯,开关和墙壁指定x,y点。

params = {'key': '54321'}
resp = requests.get('https://api.example.com/test', data = params)

预期结果应为最大流量输出值,该值指示所有3个开关均已连接到灯,并且可见且不干扰任何墙壁。

Here is the book problem

1 个答案:

答案 0 :(得分:0)

我相信这个问题的挑战是如何将接线问题​​表达为流动问题。从那里开始,大概是您使用所学的算法来计算流量。

我们可以像这样将其概念化:

  • s连接到交换机[sw1, ..., swN],其流量为1(每个设备都通电)
  • 每个开关可能与每个灯泡[b1, ..., bN]连接,整数流量为1(此开关是否有电)
  • 每个灯泡以1的整数倍容量连接到水槽t(灯泡是否发光)

每个开关只有一个可用电源,每个灯泡最多只能从开关接受1个电源,这实际上意味着它们只能连接到唯一的灯泡。如果我们排除穿过墙壁的连接并且所有灯泡都亮着,那么必须有符合人体工程学的布局(尽管我们不知道它是什么)。

该算法的主要步骤如下:

  • 通过排除与墙壁相交的任何线来找出实际上哪些开关连接到每个灯泡
  • 按上述方式构建图形(从源到开关,从开关到灯泡,从灯泡到沉)
  • 计算图的最大流量
    • 如果流量等于灯泡个数,则存在符合人体工程学的布局

我的猜测是可能早在本文中提供了用于计算流量的算法,因此我将这一部分留给读者练习:)