【问题标题】:How to store Patterns in specific matrix index in java?java - 如何在java中的特定矩阵索引中存储模式?
【发布时间】:2014-09-29 10:42:54
【问题描述】:

我有一段伪代码无法正确转换为 Java 代码,我的第一个问题是我使用的数据结构。我必须使用可以处理大型数据集并且必须具有可扩展性的数据结构。我将展示这部分伪代码并提出问题:

 Create a matrix of pattern lists ptList |A] x |A|
 For i = |sk| - maxError to |sk| -1 
 For j = i +1 to |sk|
 Construct new pattern p = {sk [i], sk [j]}

 If p NOT in ptList [sk [j], sk [j]] then     
     then Add p to ptList [sk [j], sk [j]]
 Add (k,i,j) to ptList [sk [j], sk [j]].getLocationList (p)

所以首先我必须创建一个矩阵并搜索模式,然后在找到模式后我必须将模式添加到 [j][j] 位置,例如必须将模式 (3,28) 添加到位置 [28][28] 等等。但是当我这样做时,java 给了我 IndexOutOfBoundException ,然后我必须在同一位置存储一个三元组。这可能吗?我使用了 ArrayList 和 List,但我无法完成这项工作。 最后一个问题,谁能解释一下伪代码的最后一行是什么意思?如何为相同模式和相同位置生成位置列表。

【问题讨论】:

  • 你说的“大数据集”有多大?
  • 这里需要更多背景知识。这个算法试图做什么?什么是“ptList”?什么是“最大错误”?什么是“getLocationList”?这需要更多的上下文。大小/内存问题的部分答案取决于这个矩阵是非常稀疏还是非常密集。我不确定我什至可以从伪代码中分辨出来,因为我不知道其他的东西是什么。
  • @Leo 数据集可能包含 50,000 个序列,每个序列平均包含 35 个项目,这意味着超过 200 万个项目。
  • @FrobberOfBits 该算法称为 IPM,用于从网络跟踪中挖掘频繁序列。 ptList 是我必须创建的矩阵 现在最重要的是我可以在添加所有模式之前将模式存储在 [j][j] 位置吗?至于其他部分,可能需要一天时间来解释。
  • 是的,您可以将模式存储在 [j][j]。但是你确定 sk[j] 在界限内吗?我的意思是如果矩阵是 AxA 是 sk[j]= 0 吗?是 sk-1 >= 0 吗? ...

标签: java design-patterns matrix arraylist data-mining


【解决方案1】:

假设您的模式具有 Something 类,我不确定您需要存储什么数据类型。

int sizeofA = -1; // Insert size of |A|
List<List<Something>> matrix = new ArrayList<>(sizeofA);
for(int i = 0; i < sizeofA; ++i)
    matrix.add(new ArrayList<Something>(sizeofA));

// Insert at position i, j
matrix.get(i).get(j).add(value);

它并不总是最有效的,但也不算太糟糕,而且很简单。

【讨论】:

    猜你喜欢
    • 2019-04-16
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多