可以從here查看此問題的延續/擴展/概括。向量化搜索包含給定子方位(重複)的排列
一些定義:我有一組整數S = {1,2,...,s}
的,說s = 20
,和兩個矩陣N
和M
其行是分別從S
號碼的有限序列(即,具有可以重複排列),的順序n
和m
,其中1 <= n <= m
。讓我們將N
看作是來自M
的序列的候選子序列的集合。
示例:[2 3 4 3]
是[1 2 2 3 5 4 1 3]
亞序列,與發生多重 2(=在多少不同的方式,可以發現子SEQ主SEQ。),而[3 2 2 3]
不是子它的序列。特別是,根據定義,有效的子序列必須保留索引的順序。
問題陳述:
(P1)對於M
每一行,得到的它的子序列,具有多重性和沒有多重性,發生在N
作爲行數(它可以是如果沒有包含在N
中,則爲零);
(P2)對於N
每一行,瞭解有多少次,多重性和無多重性,它被包含在M
作爲子序列(同樣,這數量可以是零);
例如:讓N = [1 2 2; 2 3 4]
和M = [1 1 2 2 3; 1 2 2 3 4; 1 2 3 5 6]
。然後(P1)針對'具有多重性'返回[2; 3; 0]
,並且針對'沒有多重性'返回[1; 2; 0]
。 (P2)返回[3; 2]
'有多重性'和[2; 1]
沒有多重性。
量級:M
通常可以有多達30-40列和幾千行,雖然我現在有M
只有幾百行〜10列。 N
可能接近 M
的大小或可能也小得多。
我到目前爲止:沒什麼,說實話。我相信我可能會略微修改我之前提出的不是很好的矢量化解決方案,以解決重複排列問題,但我仍然在想這個問題,只要我有一些工作,就會立即更新。但考慮到我的(缺乏)到目前爲止的經驗,這將是在所有的可能性非常不理想:(
謝謝!
那GPU呢?我們可以在這裏使用gpuArrays嗎? – Divakar 2014-09-10 08:27:00
是的,只要有可能就最高興:) – July 2014-09-10 08:43:03
在(P1)的例子中,爲什麼是第二個結果1? M的第二行包含子序列1 2 2和2 3 4,所以該行的結果應該是2? – 2014-09-10 10:03:29