亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gsp.java

?? 基于候選產生 測試的序列模式挖掘算法
?? JAVA
字號:
package gsp;

import java.util.ArrayList;

import java.util.Map;

import java.util.HashMap;

/**

 * <title>GSP算法實現類</title>

 * 本類為核心類,在本類中實現了GSP算法

 * @author guangqingzhong

 *

 */

public class GSP {

    private ArrayList<Sequence> c; //長度為i的候選序列模式

    private ArrayList<Sequence> l; //長度為i的序列模式

    private ArrayList<Sequence> result;

    private SeqDB db;

    private int support;

    

   /**

    * 構造方法

    * 在實例化GSP對象時,同時賦值支持度

    * 并獲取序列集和初始化序列模式結果

    * @param support           支持度

    */

    public GSP(int support) {

        this.support = support;                   //賦值支持度

        this.db = new SeqDB();                    //從SeqDB類中獲取設置好的序列集

        this.result = new ArrayList<Sequence>();  //初始化序列模式結果對象

    }

    

    /**

     * 產生序列模式

     * 核心方法,在該方法中調用連接和剪枝操作,并將最后獲得的序列模式放到result中

     * @return     序列模式

     */

    public ArrayList getSequences() {

        long start = System.currentTimeMillis();

        //調用初始化方法

        initialize();

        System.out.println("序列模式L(1) 為:" +l);

        System.out.println(".................................................");

        for (int i = 0; i < l.size(); i++) {

               //產生進行連接操作后的候選集

               genCandidate();      

            if (!(c.size() > 0)) {

                break;

            }         

            System.out.println("剪枝前候選集的大小為:"+c.size()+" 候選集c為:"+c);

            //進行剪枝操作

            pruneC();

            System.out.println("剪枝后候選集的大小為:"+c.size()+" 候選集c為:"+c);

            //產生序列模式

            generateL();

            System.out.println("序列模式L(" + (i + 2) + ") 為:" +l);

            addToResult(l);

            System.out.println(".................................................");

        }

        long end = System.currentTimeMillis();

        System.out.println("計算花費時間" + (end - start) + "毫秒!");

        return this.result;

    }


 


    /*

     * 初始化方法

     * 獲取設置好的序列集

     */

    private void initialize() {

        Map<Integer, Integer> can = new HashMap<Integer, Integer>();

        //對于序列集中的所有序列

        for (Sequence s : db.getSeqs()) {

               //對于序列中的所有項目集

            for (Element e : s.getElements()) {

                   //對于項目集中的所有項目

                for (int i : e.getItems()) {

                       //比較項目的出現次數,并計數,用于與支持度比較

                    if (can.containsKey(i)) {

                        int count = can.get(i).intValue() + 1;

                        can.put(i, count);

                    } else {

                        can.put(i, 1);

                    }

                }

            }

        }

        this.l = new ArrayList<Sequence>();

        //對于產生的候選集,如果支持度大于最小支持度閾值,則添加到序列模式L中

        for (int i : can.keySet()) {

            if (can.get(i).intValue() >= support) {

                Element e = new Element(new int[] {i});

                Sequence seq = new Sequence();

                seq.addElement(e);

                this.l.add(seq);

            }

        }

        //將第一次頻繁序列模式加入結果集中

        this.addToResult(l);

       

    }

    

    /*

     * 產生經過連接操作后的候選集

     * 

     */

    private void genCandidate() {

        this.c = new ArrayList<Sequence>();

        //對于種子集L進行連接操作

        for (int i = 0; i < this.l.size(); i++) {

            for (int j = i; j < this.l.size(); j++) {

                this.joinAndInsert(l.get(i), l.get(j));

                if (i != j) {

                    this.joinAndInsert(l.get(j), l.get(i));

                }

            }

        }

    }


 


   /*

    * 對種子集進行連接操作

    */

    private void joinAndInsert(Sequence s1, Sequence s2) {

        Sequence s, st;

        //去除第一個元素

        Element ef = s1.getElement(0).getWithoutFistItem(); 

        //去除最后一個元素

        Element ee = s2.getElement(s2.size() - 1).getWithoutLastItem();

        int i = 0, j = 0;

        if (ef.size() == 0) {

            i++;

        }

        for (; i < s1.size() && j < s2.size(); i++, j++) {

            Element e1, e2;


 


            if (i == 0) {

                e1 = ef;

            } else {

                e1 = s1.getElement(i);

            }

            if (j == s2.size() - 1) {

                e2 = ee;

            } else {

                e2 = s2.getElement(j);

            }

            if (!e1.equalsTo(e2)) {

                return;

            }

        } //end of for


 


        s = new Sequence(s1);

        //將s2的最后一個元素添加到s中

        (s.getElement(s.size() - 1)).addItem(s2.getElement(s2.size() - 1).

                                            getLastItem());

        //如果候選集中沒有s,則添加到候選集

        if (s.notInSeqs(c)) {

            c.add(s);

        }

        st = new Sequence(s1);

        //將s2的最后一個元素添加到st中

        st.addElement(new Element(new int[] {s2.getElement(s2.size() - 1).

                                  getLastItem()}));

        //如果候選集中沒有st,則添加到候選集

        if (st.notInSeqs(c)) {

            c.add(st);

        }

        return;

    }


 



 



 


    /*

     * 剪枝操作

     * 看每個候選序列的連續子序列是不是頻繁序列

     * 采用逐個取元素,只去其中一個項目,然后看是不是有相應的頻繁序列在l中。

     * 如果元素只有一個項目,則去除該元素做相應判斷。

     */

    private void pruneC() {

        Sequence s;

        //對于序列中的所有元素

        for (int i = 0; i < this.c.size();i++) {

            s = c.get(i);

            //對于元素中的所有項目

            for (int j = 0; j < s.size(); j++) {

                Element ce = s.getElement(j);

                boolean prune=false;

                //只有一個元素的情況

                if (ce.size() == 1) {

                    s.removeElement(j);

                    //如果子序列不是序列模式,則將它從候選序列模式中刪除,否則添加

                    if (s.notInSeqs(this.l)) {

                        prune=true;

                    }

                    s.insertElement(j, ce);

                } else {

                    for (int k = 0; k < ce.size(); k++) {

                        int item=ce.removeItem(k);

                        //如果子序列不是序列模式,則將它從候選序列模式中刪除。否則添加

                        if (s.notInSeqs(this.l)) {

                            prune=true;

                        }

                        ce.addItem(item);

                    }

                }

                //如果剪枝,則將該序列刪除

                if(prune){

                    c.remove(i);

                    i--;

                    break;

                }

            }

        } 

    }


 


    /*

     * 生成序列模式L

     * 用于已經經過連接和剪枝操作后的后選序列集

     */

    private void generateL() {

        this.l = new ArrayList<Sequence>();

        for (Sequence s : db.getSeqs()) {

            for (Sequence seq : this.c) {

                if (seq.isSubsequenceOf(s)) {

                       //支持度計數

                    seq.incrementSupport();

                }

            }

        }

        for (Sequence seq : this.c) {

               //大于最小支持度閾值的放到序列模式中

            if (seq.getSupport() >= this.support) {

                this.l.add(seq);

            }

        }

    }

    

    /*

     * 將該頻繁序列模式加入結果中

     */

    private void addToResult(ArrayList<Sequence> l) { 

        for (int i = 0; i < l.size(); i++) {

            this.result.add(l.get(i));

        }


 


    }

    

    /**

     * 輸出輸入的序列信息

     * 輸出需要進行序列模式分析的序列以及最小支持度(計數)

     */

   public void outputInput() {

          System.out.println("最小支持度計數為:" + this.support);

          System.out.println("輸入的序列集合為:");

          System.out.println(db.getSeqs());

          System.out.println();

   }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久久久久久久| 国产精品一区免费视频| 一区二区中文字幕在线| 国产亚洲欧洲一区高清在线观看| 欧美大片一区二区| 日韩一区二区免费在线电影| 3d动漫精品啪啪| 777奇米成人网| 欧美精品一区二区三区一线天视频| 欧美日韩国产综合久久| 欧美二区在线观看| 6080国产精品一区二区| 欧美精品一区二区不卡| 国产日韩欧美精品综合| 亚洲欧洲国产日韩| 一区二区三区四区精品在线视频| 五月天国产精品| 免费观看一级特黄欧美大片| 精品综合免费视频观看| 国产成人午夜高潮毛片| 91蜜桃在线观看| 欧美片在线播放| 久久综合久久99| 亚洲视频一区二区免费在线观看| 亚洲福利电影网| 国产在线一区二区| av网站免费线看精品| 欧美性受xxxx| 久久精品人人做人人综合 | 午夜不卡在线视频| 蜜臀久久99精品久久久久宅男 | 欧美日韩国产色站一区二区三区| 欧美一级理论片| 日本一区二区高清| 日韩中文字幕麻豆| 粉嫩av一区二区三区| 欧美日韩一区二区三区视频| 精品福利一区二区三区| 亚洲免费在线视频| 国产一区日韩二区欧美三区| 91久久香蕉国产日韩欧美9色| 日韩午夜激情电影| 亚洲欧美日韩国产综合在线| 麻豆精品视频在线观看视频| 99久久国产免费看| 精品国产乱码久久久久久久 | 麻豆精品在线看| 色婷婷亚洲一区二区三区| 欧美一区二区三区免费大片| 亚洲欧洲99久久| 国产乱码精品一区二区三区忘忧草| 91蜜桃在线免费视频| 国产亚洲1区2区3区| 婷婷综合另类小说色区| 色一情一乱一乱一91av| 久久久久久久久久电影| 免费一级欧美片在线观看| 一本一道久久a久久精品综合蜜臀| 精品噜噜噜噜久久久久久久久试看| 亚洲最色的网站| 99精品欧美一区二区三区小说| 精品国产1区2区3区| 蜜桃精品视频在线| 欧美日本视频在线| 亚洲成人777| 日本福利一区二区| 一区二区三区视频在线观看| 成人综合在线视频| 国产欧美一区二区精品忘忧草 | 自拍偷拍欧美精品| 成人少妇影院yyyy| 欧美国产日韩a欧美在线观看| 狠狠色狠狠色综合| 久久综合久色欧美综合狠狠| 韩国成人精品a∨在线观看| 欧美一区二区在线观看| 午夜成人在线视频| 日韩欧美一级二级三级| 麻豆精品在线观看| 久久久久久久久蜜桃| 国产成人在线免费| 欧美精品一区二区三区高清aⅴ| 久久激情五月婷婷| 久久综合九色综合97婷婷| 精品一区二区久久久| 欧美不卡123| 国内精品久久久久影院色| 国产亚洲欧美色| 粉嫩久久99精品久久久久久夜 | 欧美日韩国产一二三| 日韩av一区二| 久久这里都是精品| 成人丝袜高跟foot| 亚洲国产精品久久艾草纯爱| 欧美久久久一区| 国内精品国产三级国产a久久| 亚洲国产精华液网站w| 一本到不卡精品视频在线观看| 亚洲黄色小视频| 日韩亚洲欧美在线观看| 国产成人av在线影院| 一区二区三区在线播放| 日韩午夜电影在线观看| 国产一区二区看久久| 国产精品初高中害羞小美女文| 色av成人天堂桃色av| 毛片基地黄久久久久久天堂| 国产精品视频一二三| 欧美另类videos死尸| 国产精品一区二区视频| 亚洲一区二区三区四区五区中文| 欧美成人国产一区二区| 色综合天天视频在线观看| 免费在线一区观看| 亚洲人成亚洲人成在线观看图片| 欧美一级免费大片| av一区二区三区| 麻豆国产91在线播放| 亚洲日本一区二区| 欧美大片在线观看一区| 色av综合在线| 成人午夜免费视频| 久久精品久久99精品久久| 亚洲卡通动漫在线| 久久新电视剧免费观看| 欧美日韩精品一区二区三区蜜桃| 国产不卡视频一区二区三区| 秋霞电影一区二区| 亚洲一二三区不卡| 欧美国产丝袜视频| 精品国产自在久精品国产| 欧美三级日韩在线| 99久久99久久精品免费观看| 久久精品国产免费| 一二三区精品福利视频| 国产精品无遮挡| 久久免费精品国产久精品久久久久| 欧美日韩一区二区三区四区 | 日韩久久久久久| 欧美人妇做爰xxxⅹ性高电影| 99久久国产综合色|国产精品| 国产美女娇喘av呻吟久久| 全国精品久久少妇| 午夜久久久久久久久久一区二区| 亚洲码国产岛国毛片在线| 日本一区二区三区电影| 欧美精品一区二区三区视频| 日韩欧美激情一区| 91精品视频网| 欧美一区永久视频免费观看| 欧美精品粉嫩高潮一区二区| 色综合久久中文综合久久97| 99re6这里只有精品视频在线观看| 成人黄色在线网站| 99re热视频精品| 色狠狠色狠狠综合| 在线观看免费亚洲| 欧美日韩免费观看一区三区| 欧美日韩和欧美的一区二区| 91福利精品视频| 欧美日韩免费高清一区色橹橹| 欧美性生活影院| 宅男噜噜噜66一区二区66| 日韩一区二区三区视频在线| 日韩一卡二卡三卡四卡| 日韩欧美亚洲国产另类| 久久久精品国产免大香伊| 中文字幕的久久| 亚洲女同女同女同女同女同69| 亚洲午夜私人影院| 奇米影视一区二区三区小说| 国产一区高清在线| 成人av在线播放网址| 欧美性猛交xxxxxx富婆| 欧美久久久影院| 久久久久久久久久久久电影| 亚洲欧洲日本在线| 亚洲成av人影院在线观看网| 另类的小说在线视频另类成人小视频在线| 久久成人羞羞网站| av午夜一区麻豆| 91麻豆精品国产| 欧美激情一区二区三区四区| 一区二区三区欧美视频| 蜜臀精品久久久久久蜜臀| 国产高清在线精品| 欧美四级电影在线观看| 久久新电视剧免费观看| 亚洲精品福利视频网站| 精品一区二区在线视频| 99久久99精品久久久久久| 欧美美女一区二区| 国产精品素人视频| 首页欧美精品中文字幕| 粉嫩嫩av羞羞动漫久久久| 欧美电影一区二区| 国产精品久久久久久久久久久免费看 | 色婷婷精品大视频在线蜜桃视频| 在线播放91灌醉迷j高跟美女| 欧美成人a视频|