映射连接的算法

时间:2015-11-03 00:25:12

标签: java algorithm

我认为这是以前可能已经解决的问题,如果我有适当的数学词汇,我可能只是谷歌它。我正在编写一个为Arduino等微控制器生成代码的应用程序,该过程的一部分是将设备(如传感器)所需的连接映射到微控制器本身。

问题不在于微控制器上的所有连接都是同等能力的,有些只能做数字IO,有些可以做数字IO +模拟输出,有些可以做数字IO +模拟输入,有些可以做数字和模拟IO。因此,例如,如果我用完纯粹的数字IO连接并需要更多,我仍然可以使用例如数字IO +模拟输入引脚。但如果那是引脚中唯一的数字IO +模拟,那么我实际上需要将该功能用于另一个连接,那么我需要将它移动到另一种引脚。

所以基本上我需要一种能够创建这种映射的算法(如果有的话)。这个问题有点儿童游戏有形状的块和相应的洞,有些形状可以放在多个洞里,有些不能,你能算出是否可以将所有给定的块放入洞中吗?

1 个答案:

答案 0 :(得分:0)

好吧,它没有我想象的那么糟糕,我自己解决了。

所以我们有四类功能(DIO + AIO,DIO + AI,DIO + AO,DIO)

1)为功能最多的引脚(DIO + AIO)分配任何请求的连接,如果还不够,它将无法工作

2)尽可能多地将请求的连接分配给只提供所需功能的引脚,最终会有3组溢出。 (第4次溢出是失败的。)

3)AI连接不能使用AO引脚,反之亦然,如果有更多溢出的AI和A,它们都会在此时竞争免费的AIO引脚。 AO连接然后可用AIO引脚,它失败,否则分配溢出的AI& AO连接到AIO引脚。

4)将任何溢出的数字连接分配到自由AI和AO引脚,如果它们没有足够的故障。

5)如果你到了这里,你应该有连贯的连接图!