2012-09-11 224 views
1

我有一個N * N矩陣給出,我需要找出所有可能的獨特的矩陣在那個更大的矩陣。怎樣才能實現它的快速和內存效率呢?N * N矩陣,計數唯一矩形矩陣的數量。

面臨的問題: 實際上創建的矩陣是N - > [2,50,000..3,00,000],每個元素實際上標記爲位[On/Off]或[0/1],並且我需要得到所有那些大於特定極限(比如20 ie; N> = 20)的獨特方陣,並且方陣的所有元素都應該是1,那麼只有矩陣被用於進一步處理, , 所以基本上我需要找出這樣的矩陣。

+1

出於興趣,當你使用這些信息? –

+2

什麼是在你的上下文中的「矩陣矩陣在更大的矩陣」?你是否包含1×1矩陣,或只有2×2或更高?你只選擇連續的行或列,還是任意的子集? – MvG

+0

@MvG,是的,只是覺得好像你給了一個N * N的棋盤,你需要計算所有可能的數量的方塊.. !!請提出一些快速有效的建議。 – KDjava

回答

1

算法是簡單的:

  1. 平方矩陣
  2. 使用環路計數數目超過這個數
  3. 計算i_minj_mini_maxj_max每個矩陣。這只是一個循環遍歷矩陣,用於查找具有特定大小的矩陣。
  4. 將數據範圍i_min,j_min,i_maxj_max複製到新矩陣。

只是一個提示:數平方的矩陣取決於大矩陣大小

  • 的1x1 - > *(1×1)
  • 的2x2 - > *(1×1) + *(2x2)
  • 3x3 - > *(1x1)+ *(2×2)+ *(3×3)
  • 4×4 - > *(1×1)+ *(2×2)+ *(3×3)+ *(4×4)

我希望你得到的廣場這裏的要點。

注意:這只是包含連續的行/列組合。

+0

這是正確的,但是這確實需要花費太多時間,但實際上(蠻力)實際創建的矩陣是N - > [2,50,000..3,00,000]每個元素實際上標記爲位[On /關],我需要得到所有那些大於特定限制(比如說20)的獨特矩陣矩陣,並且矩陣的所有元素應該是1. – KDjava

+0

@KDjava然後您需要編輯所有這些問題細節 – mishadoff