2017-02-21 10 views
0

私はAprioriのようなアルゴリズムを探していますが、順序はあります。最も頻繁に発注されるパターン

最も頻繁なパターンを見つけるアルゴリズムが必要です。 例: A B C D E A B C A C B D D E C F

最も頻出パターン:B C

順序が非常に重要です。 A C Bは私の例では1回だけであるが、A B Cは3回であるので、C Bは見てはならない。

アルゴリズムはありますか、自分でコード化するのに最適なソリューションですか?

ありがとうございました。

+1

トライデータ構造を使用すると、簡単にコード化できます。その複雑さはあまりにも少ない –

+0

あなたが探しているパターンは、三つ組、右ですか? – fustaki

+0

正規表現は良いスタートです! – FSm

答えて

0

あなたは出力はあなたが簡単に値でマップを並べ替えることができます

{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} 

あるmap

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); 

をシーケンスや店舗集団をスキャンすることができます:http://www.programcreek.com/2013/03/java-sort-map-by-value/かだけを探してマップをスキャンします最高人口

ところで:パターンの人口ABCは実際には2ではない3

+0

ありがとう、私はこれを使うことができると思います。私は文字列がありません。それは問題ありません。アルゴリズムは正常に動作します。 – Interita

関連する問題