java - 映射连接的算法

标签 java algorithm

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

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

所以基本上我需要一种算法,如果可能的话,它可以创建这种映射。这个问题有点像 child 游戏,有形状的积木和相应的洞,有些形状可以放入多个洞,有些则不能,你能想出是否可以将所有给定的积木都放入洞中吗?

最佳答案

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

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

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

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

3)AI 连接不能使用 AO 引脚,反之亦然,所以此时它们都在争夺空闲的 AIO 引脚,如果溢出的 AI 和 AO 连接比可用的 AIO 引脚多,则失败,否则分配溢出的 AI & AO 连接到 AIO 引脚。

4) 将任何溢出的数字连接分配给空闲的 AI 和 AO 引脚,如果没有足够的则失败。

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

关于java - 映射连接的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33489460/

相关文章:

c++ - 生成随机 DAG

识别非歧义簇的算法?

java - 将十六进制字符串转换为长17位java

java - 高级通配符操作从 URL 中删除逗号?

java - 使用Netbeans 8.0.2、Java 8、Windows 7——自定义库窗口经常挂起;该怎么办?

algorithm - Big O,你如何计算/近似?

algorithm - 射线(平面)三角形交点

Java解析包含字符串映射的Json对象以将字符串映射到字符串数组

java - Npm 安装失败,错误为 “EINVAL: invalid argument, chown”

algorithm - 你如何在算法中定义 "generalized example"?