2015-11-03 85 views
2

我認爲這是之前可能已經解決的問題,如果我有適當的數學詞彙,我可能只是谷歌它。我正在編寫一個應用程序,爲Arduino等微控制器生成代碼,此過程的一部分將傳感器等設備所需的連接映射到微控制器本身。映射連接算法

問題並非所有的微控制器上的連接都是同樣的能力,有的只能做數字IO,有的可以做數字IO +模擬輸出,有的可以做數字IO +模擬,有的可以做數字和模擬IO。因此,如果例如我要用完純數字IO連接並需要更多,我仍然可以使用例如數字IO +模擬輸入引腳。但如果這是引腳中唯一的數字IO +模擬,然後我真的需要另一個連接的功能,那麼我需要將它移動到不同類型的引腳。

所以基本上我需要一個算法,可以創建這種映射,如果一個是可能的。這個問題有點像孩子們玩造型塊和相應洞的遊戲,有些形狀可以放在多個洞中,有些是不可以的,你能想出如果你能把所有給定的塊放入洞中嗎?

+0

看起來你對這種情況提出了滿意的答案,但總的來說,你需要的Google術語是「作業問題」。 –

回答

0

好吧,它沒有我想象的那麼糟糕,我自己解決了它。

因此,我們有四類功能(DIO + AIO,DIO + AI,DIO + AO,DIO只)

1)指定的任何要求爲功能最全引腳(DIO + AIO)連接,如果那裏有不夠的,它不會工作

2)儘可能多的請求連接分配給只提供所需功能的引腳,最終會有3組溢出。 (第四個溢出是失敗)

3)AI連接不能使用AO引腳,反之亦然,所以它們都在競爭自由AIO引腳,如果有更多溢出AI & AO連接然後可用AIO引腳,其失敗,否則將溢出的AI連接分配給AIO引腳。

4)將任何溢出的數字連接分配到空閒的AI和AO引腳,如果這些引腳沒有足夠的故障。

5)如果你到了這裏,你應該有連貫的連接圖!