我有一些訂單,每個訂單包含購買Item
對象。散列一組對象C#
1 : {Item1, Item2, Item3, Item4, Item5}
2 : {Item2, Item8, Item4, Item3, Item11, Item5}
3 : { ... }
我的目標是建立如何頻繁的每一項都一起買的,並能得到爲O結果(1)。
我的想法是迭代通過訂單,基於子集項 - 增加特定數組的元素。這將使我有可能在O(1)中提取所需的值。
例如, Item3和Item4被買了2次。
int frequency = myArray[getHash(Item3+Item4)]
print frequency;
Output : 2
問題:
制定int getHash(...)
功能,將能夠湊項目的子集。
注:{項目1,項目2} = {項目2,項目1}
非常感謝您!歡迎任何更好的想法的幫助!
所以,如果你要問,「物品3 + 4 + 8購物的頻率是多少?」從你上面的例子中,答案是'1'(因爲即使3和4出現在兩者中,只有第二個列表_also_包含8)? –
這似乎與文本搜索相似。假設您有文檔'Item1,Item2,Item3,Item4,Item5'和'Item2,Item8,Item4,Item3,Item11,Item5',並且想要搜索包含單詞'Item3'和'Item4'的文檔。你可以使用[Lucene.Net](http://lucenenet.apache.org/),這非常快。 –