Java 带订单的最常见模式

Java 带订单的最常见模式,java,apriori,Java,Apriori,我正在寻找一种类似Apriori的算法,但有顺序 我需要一个算法来找到最频繁的模式。 例子: A、B、C、D、E A、B、C A、C、B、D D E C F 最常见的模式:A B C 订单很重要。不应该查看cb,因为在我的示例中cb只有一次,而bc有三次 有没有一个算法,或者是我自己编写代码的最佳解决方案 谢谢你的帮助 您可以扫描序列并将总体存储在地图中 String sequence = "ABCDEABCACBDDECF"; char[] chars = sequence.toCharAr

我正在寻找一种类似Apriori的算法,但有顺序

我需要一个算法来找到最频繁的模式。 例子: A、B、C、D、E A、B、C A、C、B、D D E C F

最常见的模式:A B C

订单很重要。不应该查看cb,因为在我的示例中cb只有一次,而bc有三次

有没有一个算法,或者是我自己编写代码的最佳解决方案


谢谢你的帮助

您可以扫描序列并将总体存储在
地图中

String sequence = "ABCDEABCACBDDECF";

char[] chars = sequence.toCharArray();
int i = 0;
Map<String,Integer> map = new HashMap<String,Integer>();
while(i < chars.length - 2){
    String pattern = "" + chars[i] + chars[i+1] + chars[i+2];
    System.out.println(pattern);
    Integer population = map.get(pattern);
    if(population == null){
        population = 1;
    }else{
        population++;
    }
    map.put(pattern, population);

    i++;
}

System.out.println(map);
您可以轻松地按值对地图进行排序:或者只需扫描地图以查找最高的人口


顺便说一下:模式的总体
ABC
实际上是2而不是3

您可以使用trie数据结构轻松地对其进行编码。它的复杂性是少齿模式,你正在寻找必须是一个三元组,对吗?正则表达式应该是一个良好的开端!!!好的,谢谢,我想我可以用这个。我只有琴弦,没有琴弦。没问题。算法运行良好。
{ACB=1, DEA=1, BCA=1, ABC=2, BCD=1, BDD=1, DEC=1, CAC=1, CBD=1, DDE=1, CDE=1, EAB=1, ECF=1}