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

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

?? nestedmodel.java

?? dragontoolkit用于機器學習
?? JAVA
字號:
package dragon.ml.seqmodel.model;

import dragon.ml.seqmodel.data.DataSequence;
import java.util.*;

/**
 * <p>Nested model graph </p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: IST, Drexel University</p>
 * @author Davis Zhou
 * @version 1.0
 */


public class NestedModel extends AbstractModel {
    private int _numStates;
    private int _numEdges;
    private int nodeOffsets[]; // the number of states in the labels before this.
    private ModelGraph inner[];
    private ModelGraph outer;
    private int startStates[];
    private int endStates[];

    public static void main(String args[]) {
        try {
            System.out.println(args[0]);
            System.out.println(args[1]);
            AbstractModel model = new NestedModel(Integer.parseInt(args[0]), args[1]);
            System.out.println(model.getStateNum());
            System.out.println(model.getEdgeNum());
            System.out.println(model.getStartStateNum());
            System.out.println(model.getEndStateNum());
            EdgeIterator edgeIter = model.getEdgeIterator();
            for (int edgeNum = 0; edgeIter.hasNext(); edgeNum++) {
                boolean edgeIsOuter = edgeIter.nextIsOuter();
                Edge e = edgeIter.next();
                System.out.println(e.getStart() + "("+ model.getLabel(e.getStart()) + ")" + " -> " + e.getEnd() + ":" + edgeIsOuter+ ";");
            }
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
    }

    public NestedModel(int labelNum, String specs) throws Exception {
        super(labelNum, "Nested");

        EdgeIterator outerIter;
        StringTokenizer start;
        String commonStruct, thisStruct;
        int numStart, numEnd, index, i, j;

        nodeOffsets = new int[numLabels];
        inner = new AbstractModel[numLabels];

        start = new StringTokenizer(specs, ",");
        outer =getNewBaseModel(numLabels, (String) start.nextToken());
        commonStruct = null;
        for (i = 0; i < numLabels; i++) {
            thisStruct = commonStruct;
            if (thisStruct == null) {
                thisStruct = start.nextToken();
                if (thisStruct.endsWith("*")) {
                    thisStruct = thisStruct.substring(0, thisStruct.length() - 1);
                    commonStruct = thisStruct;
                }
            }
            inner[i] = new GenericModel(thisStruct, i);
        }

        _numEdges = 0;
        _numStates = 0;
        for (int l = 0; l < numLabels; l++) {
            nodeOffsets[l] += _numStates;
            _numStates += inner[l].getStateNum();
            _numEdges += inner[l].getEdgeNum();
        }

        outerIter = outer.getEdgeIterator();
        while (outerIter.hasNext()) {
            Edge e = outerIter.next();
            _numEdges += inner[e.getEnd()].getStartStateNum() * inner[e.getStart()].getEndStateNum();
        }

        numStart = 0;
        for (i = 0; i < outer.getStartStateNum(); i++) {
            numStart += inner[outer.getStartState(i)].getStartStateNum();
        }
        startStates = new int[numStart];
        index = 0;
        for (i = 0; i < outer.getStartStateNum(); i++) {
            for (j = 0; j < inner[outer.getStartState(i)].getStartStateNum(); j++) {
                startStates[index++] = inner[outer.getStartState(i)].getStartState(j) + nodeOffsets[outer.getStartState(i)];
            }
        }

        numEnd = 0;
        for (i = 0; i < outer.getEndStateNum(); i++) {
            numEnd += inner[outer.getEndState(i)].getEndStateNum();
        }
        endStates = new int[numEnd];
        index = 0;
        for (i = 0; i < outer.getEndStateNum(); i++) {
            for (j = 0; j < inner[outer.getEndState(i)].getEndStateNum(); j++) {
                endStates[index++] = inner[outer.getEndState(i)].getEndState(j) + nodeOffsets[outer.getEndState(i)];
            }
        }
    }

    public EdgeIterator getEdgeIterator() {
        return new NestedEdgeIterator(this);
    }

    public EdgeIterator innerEdgeIterator() {
        return new NestedEdgeIterator(this,false);
    }

    public int getStateNum() {
        return _numStates;
    }

    public int getEdgeNum() {
        return _numEdges;
    }

    public int getLabel(int stateNum) {
        // TODO -- convert to binary scan.
        for (int i = 0; i < nodeOffsets.length; i++) {
            if (stateNum < nodeOffsets[i])
                return i - 1;
        }
        return nodeOffsets.length - 1;
    }

    public int getStartStateNum() {
        return startStates.length;
    }

    public int getEndStateNum() {
        return endStates.length;
    }

    public int getStartState(int i) {
        return ( (i < getStartStateNum()) ? startStates[i] : -1);
    }

    public int getEndState(int i) {
        return ( (i < getEndStateNum()) ? endStates[i] : -1); // endStates[i];
    }

    public boolean isEndState(int i) {
        // TODO -- convert this to binary search
        for (int k = 0; k < endStates.length; k++)
            if (endStates[k] == i)
                return true;
        return false;
    }

    public boolean isStartState(int i) {
        // TODO -- convert this to binary search
        for (int k = 0; k < startStates.length; k++)
            if (startStates[k] == i)
                return true;
        return false;
    }

    public boolean mapStateToLabel(DataSequence dataSeq) {
        int dataLen, segStart, segEnd;

        dataLen = dataSeq.length();
        if (dataLen == 0)
            return true;

        for (segStart = 0, segEnd = 0; segStart < dataLen; segStart = segEnd + 1) {
            for (segEnd = segStart; segEnd < dataLen; segEnd++) {
                if (getLabel(dataSeq.getLabel(segStart)) != getLabel(dataSeq.getLabel(segEnd))) {
                    segEnd -= 1;
                    System.out.println("WARNING: label ending in a state not marked as a End-state");
                    break;
                }
                if (isEndState(dataSeq.getLabel(segEnd))) {
                    break;
                }
            }
            if (segEnd == dataLen) {
                System.out.println("WARNING: End state not found until the last position");
                System.out.println(dataSeq);
                segEnd = dataLen - 1;
            }
            dataSeq.setSegment(segStart, segEnd, getLabel(dataSeq.getLabel(segStart)));
        }
        return true;
    }


    public boolean mapLabelToState(DataSequence data){
        int lstart, lend, label, k;

        if (data.length() == 0)
            return true;
        for (lstart = 0; lstart < data.length(); ) {
            lend = data.getSegmentEnd(lstart) + 1;
            if (lend == 0)
                return false;
            label = data.getLabel(lstart);
            inner[label].mapLabelToState(data, lend - lstart, lstart);
            for (k = lstart; k < lend; k++) {
                data.setLabel(k, nodeOffsets[label] + data.getLabel(k));
            }
            lstart = lend;
        }
        return true;
    }


    private ModelGraph getNewBaseModel(int numLabels, String modelSpecs) throws Exception {
        if (modelSpecs.equalsIgnoreCase("naive") || (modelSpecs.equalsIgnoreCase("semi-markov"))) {
            return new CompleteModel(numLabels);
        } else if (modelSpecs.equalsIgnoreCase("noEdge")) {
            return new NoEdgeModel(numLabels);
        }
        throw new Exception("Base model can be one of {naive, noEdge, semi-Markov}");
    }

    private class NestedEdgeIterator implements EdgeIterator {
        private NestedModel model;
        private int label;
        private Edge edge;
        private EdgeIterator edgeIter[], outerEdgeIter;
        private Edge outerEdge;
        private boolean outerEdgesSent;
        private int index1, index2;
        private boolean sendOuter;

        public NestedEdgeIterator(NestedModel m) {
            this(m, true);
        }

        public NestedEdgeIterator(NestedModel m, boolean sendOuter) {
            model = m;
            edge = new Edge();
            edgeIter = new EdgeIterator[model.numLabels];
            for (int l = 0; l < model.numLabels; l++) {
                edgeIter[l] = model.inner[l].getEdgeIterator();
            }
            outerEdgeIter = model.outer.getEdgeIterator();
            this.sendOuter = sendOuter;
            start();
        }

        public void start() {
            label = 0;
            for (int l = 0; l < model.numLabels; l++) {
                edgeIter[l].start();
            }
            outerEdgeIter.start();
            outerEdge = outerEdgeIter.next();

            //check for the null edge
            if ( (outerEdge == null) || !sendOuter)
                outerEdgesSent = true;
            else
                outerEdgesSent = false;
            index1 = index2 = 0;
        }

        public boolean hasNext() {
            return (label < model.numLabels) || !outerEdgesSent;
        }

        public Edge nextOuterEdge() {
            edge.setStart(model.inner[outerEdge.getStart()].getEndState(index1) + model.nodeOffsets[outerEdge.getStart()]);
            edge.setEnd(model.inner[outerEdge.getEnd()].getStartState(index2) + model.nodeOffsets[outerEdge.getEnd()]);
            index2++;
            if (index2 == model.inner[outerEdge.getEnd()].getStartStateNum()) {
                index2 = 0;
                index1++;
                if (index1 == model.inner[outerEdge.getStart()].getEndStateNum()) {
                    if (outerEdgeIter.hasNext()) {
                        outerEdge = outerEdgeIter.next();
                        index1 = index2 = 0;
                    } else {
                        outerEdgesSent = true;
                    }
                }
            }
            return edge;
        }

        public Edge nextInnerEdge() {
            Edge edgeToRet = edgeIter[label].next();
            edge.setStart(edgeToRet.getStart());
            edge.setEnd(edgeToRet.getEnd());
            edge.setStart(edge.getStart() + model.nodeOffsets[label]);
            edge.setEnd(edge.getEnd() + model.nodeOffsets[label]);
            if (!edgeIter[label].hasNext())
                label++;
            return edge;
        }

        public Edge next() {
            if (!nextIsOuter()) {
                return nextInnerEdge();
            } else {
                return nextOuterEdge();
            }
        }

        public boolean nextIsOuter() {
            return (label >= model.numLabels);
        }
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区中文字幕| 成人亚洲精品久久久久软件| 国产精品色哟哟| 久久久亚洲精品一区二区三区| 91精品国产高清一区二区三区蜜臀| 在线观看免费成人| 欧美美女黄视频| 欧美岛国在线观看| 久久久久久亚洲综合影院红桃| 久久精品一区二区三区四区| 国产欧美日韩综合精品一区二区| 日本一区二区在线不卡| 国产精品久久三区| 亚洲影视资源网| 久久精品国产亚洲aⅴ| 国产美女娇喘av呻吟久久| 国产成人在线视频免费播放| 宅男噜噜噜66一区二区66| 精品国产一区二区三区忘忧草| 精品成a人在线观看| 国产精品网友自拍| 一区二区三区不卡视频 | 欧美理论电影在线| 精品久久久久久最新网址| 国产免费成人在线视频| 一区二区三区小说| 免费在线看一区| 不卡一区二区三区四区| 欧美日韩成人综合在线一区二区| 日韩丝袜情趣美女图片| 亚洲国产精品传媒在线观看| 亚洲综合一区在线| 精品亚洲国内自在自线福利| 95精品视频在线| 欧美丰满高潮xxxx喷水动漫| 欧美精品一区二区三区蜜桃视频| 国产精品国产三级国产aⅴ入口| 亚洲一区二区三区四区五区中文| 韩国中文字幕2020精品| 欧美三级韩国三级日本一级| 久久久久国产一区二区三区四区| 亚洲精品自拍动漫在线| 国产一区二区精品在线观看| 欧美日韩精品专区| 中文字幕av不卡| 久久99精品国产.久久久久久 | 精品久久99ma| 亚洲伦在线观看| 丰满亚洲少妇av| 欧美一区二区三区视频免费 | 6080日韩午夜伦伦午夜伦| 国产精品乱码人人做人人爱| 美腿丝袜亚洲三区| 欧美视频在线一区| 自拍视频在线观看一区二区| 国产在线精品不卡| 欧美一级国产精品| 午夜视黄欧洲亚洲| 在线观看91视频| 一区二区高清在线| 99国产精品国产精品毛片| 国产视频一区在线观看| 日韩av二区在线播放| 91国偷自产一区二区使用方法| 欧美国产亚洲另类动漫| 国产精品一区二区果冻传媒| 精品国产免费视频| 韩国三级在线一区| 亚洲精品在线观| 九色综合国产一区二区三区| 欧美一区二区三区免费观看视频| 亚洲一区二区三区自拍| 欧美丝袜丝交足nylons图片| 一级做a爱片久久| 色婷婷av久久久久久久| 一区二区三区精品| 欧美性极品少妇| 五月婷婷色综合| 欧美日韩国产美| 日韩成人精品在线| 欧美sm美女调教| 国产美女视频91| 国产精品不卡一区| 91福利社在线观看| 日本欧美在线看| 精品国产污污免费网站入口| 国产一区二区三区在线看麻豆| 欧美草草影院在线视频| 国产精品亚洲一区二区三区妖精 | 天堂成人免费av电影一区| 欧美日韩综合不卡| 精品中文字幕一区二区小辣椒 | 亚洲人成影院在线观看| 欧美丝袜丝交足nylons图片| 天天操天天色综合| 久久影院午夜片一区| 成人av网站免费观看| 一区二区三区日韩在线观看| 日韩一区二区三区四区五区六区| 精品亚洲成a人| 亚洲啪啪综合av一区二区三区| 欧美日韩色综合| 狠狠狠色丁香婷婷综合激情| 亚洲欧洲精品成人久久奇米网| 欧美色窝79yyyycom| 国产麻豆欧美日韩一区| 亚洲欧美另类小说| 欧美电影免费提供在线观看| 99久久婷婷国产| 久久国产精品99精品国产| 国产精品国产三级国产有无不卡 | 51久久夜色精品国产麻豆| 国产剧情一区二区| 亚洲成人手机在线| 国产精品久久久久毛片软件| 这里只有精品电影| 日本黄色一区二区| 国产夫妻精品视频| 麻豆国产精品官网| 亚洲一区二区三区在线播放| 欧美激情综合网| 日韩欧美中文字幕一区| 91精彩视频在线| 国产精品一区二区不卡| 免费看日韩a级影片| 怡红院av一区二区三区| 国产欧美精品国产国产专区| 91麻豆精品久久久久蜜臀| 一本大道综合伊人精品热热| 国产福利一区二区三区视频在线| 男人操女人的视频在线观看欧美| 亚洲天堂av一区| 亚洲国产精品成人综合 | 日本韩国一区二区三区| 成人中文字幕合集| 韩国欧美国产一区| 久久er99热精品一区二区| 五月天激情综合| 亚洲一区二区av在线| 亚洲欧美日韩国产成人精品影院 | 免费成人结看片| 亚洲二区在线观看| 一区二区三区中文在线| 亚洲天堂成人在线观看| 亚洲人成在线播放网站岛国| 国产精品午夜在线观看| 国产精品灌醉下药二区| 国产精品久久精品日日| 亚洲欧洲在线观看av| 亚洲人成精品久久久久| 日韩毛片一二三区| 一区二区三区欧美在线观看| 亚洲综合在线免费观看| 一卡二卡三卡日韩欧美| 亚洲成人av电影在线| 肉肉av福利一精品导航| 免费成人你懂的| 国产精品一区二区不卡| 成人精品小蝌蚪| 91小视频免费看| 欧美亚洲一区二区在线观看| 欧美日韩国产在线播放网站| 777久久久精品| 欧美成人三级在线| 久久久久久电影| 亚洲欧美日韩精品久久久久| 亚洲国产视频一区二区| 日本网站在线观看一区二区三区 | 国产精品久久久久影视| 亚洲男人都懂的| 日本中文在线一区| 精彩视频一区二区三区 | 亚洲国产精品一区二区久久恐怖片| 一区二区欧美在线观看| 欧美aaaaaa午夜精品| 成人午夜激情在线| 色综合久久88色综合天天免费| 欧美日韩三级一区| 精品久久久久久无| 亚洲欧美色一区| 美女视频网站久久| av激情综合网| 日韩欧美国产综合一区| 国产精品久久久久久久久久免费看 | 香蕉成人伊视频在线观看| 国产真实精品久久二三区| 99re这里只有精品视频首页| 91精品欧美综合在线观看最新| 久久久久国产精品麻豆ai换脸| 亚洲综合激情网| 国产精品一区二区免费不卡| 欧美午夜精品一区二区三区 | 欧美综合在线视频| 国产亚洲短视频| 舔着乳尖日韩一区| 91免费观看国产| 久久午夜国产精品| 亚洲国产成人av网| 成人av动漫在线| 精品国精品自拍自在线|