0

我很難相信這不是一個騙局,但我不能找到任何帖子回答這個問題,所以我會盡力使它成爲一個好的。向前移動n個矩陣

基本上問題是這樣的:你有一個大小爲Row X Column的矩陣,你的處理器數量是P。分區的最大大小(每個處理器分配的元素數量)爲((Rows*Columns)/processors)+1,並且您必須執行一些邏輯以確保不會超出範圍。每個處理器都分配一個起點,並且必須跳轉P個索引。

上的4×4矩陣

所以其被順序編號如下所示:

[1] [2] [3] [4]
[5] [6] [7] [8]
[9] [10] [11] [12]
[13] [14] [15] [16]

ID爲0一個處理器將獲得1,4,7,10,13 ,和16.(最大分區大小)。

我的老師給了我們的算法是這樣的:

I /列=列#和我%列=列#

這個工作對他給了我們像6/4 = 1的例子, 6 % 4 = 2所以6在索引[1][2] 邏輯至少是直觀的,但在幾次失敗。

那麼在NxM矩陣上能夠可靠地產生期望值的索引的算法是什麼?

+0

您的問題陳述很好奇。我沒有看到把這個想象成二維矩陣的優點。你似乎有一個數組是循環分區的* n *處理器。也許用這種方式來解決問題將有助於你理解解決方案。 –

+0

該任務要求使用矩陣,我很確定教師將在測試中期望此算法。 – Csteele5

+0

如果你不認爲這些公式在某些場合有效,你應該提供一個你認爲它不能正常工作的例子。 – Sneftel

回答

1

計算指標所給出的「算法」是基於所有指標是從零開始,包括「矩陣編號」:

0 1 2 3 

0 0 1 2 3 
1 4 5 6 7 
2 8 9 10 11 
3 12 13 14 15 

現在你可以看到,6真的是在第1行第2列。

+0

哦,非常好,所以算法的工作,我只需要迭代時添加1到每個索引。謝謝 – Csteele5

+0

沒錯。並且可能還會首先從您輸入的矩陣索引「i」中減去1。 –

1

您好像有一個數組循環分區到n個處理器。

作爲提示解決方案(因爲這是班級工作),將每個矩陣位置轉換爲數組中的一個位置,比如說i。然後對這個數字進行算術運算。

+0

這是在這種情況下獲得這些值的唯一可靠方法嗎?我寫了一個函數來做到這一點,但感覺就像是我避免了這個任務。 – Csteele5