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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rootedcatgraph.java

?? Decision Tree 決策樹算法ID3 數(shù)據(jù)挖掘 分類
?? JAVA
字號:
package id3;
import java.io.*;
import shared.*;
import shared.Error;

/** RootedCatGraph instances have a specific root node. All nodes in RootedCatGraphs
 * should be reachable from the root.
 *
 * @author Richard Long 8/27/93 Initial revision (.c) <BR> 8/04/93 Initial revision (.h)
 *
 * @author James Louis Java implementation.
 */
public class RootedCatGraph extends CatGraph {
    
    private Node root;
    
    /** Constructor. Initializes root to NULL.
     * @param isGraphSparse TRUE if the graph is sparse.
     */
    public RootedCatGraph(boolean isGraphSparse) {
        super(isGraphSparse);
        root = null;
    }
    
    /** Constructor.
     * @param grph The graph to be assigned to this RootedCatGraph.
     * @param isGraphSparse TRUE if the graph is sparse.
     */
    public RootedCatGraph(CGraph grph, boolean isGraphSparse) {
        super(grph, isGraphSparse);
        root = null;
    }
    
    /** The number of non-trivial nodes in the CatGraph. Trivial nodes are those
     * that both have no instances, and have unknown edges leading to them.
     *
     * @return The number of non-trivial nodes.
     */
    public int num_nontrivial_nodes(){return num_nontrivial_nodes(null);}
    
    /** The number of non-trivial nodes in the CatGraph. Trivial nodes are those
     * that both have no instances, and have unknown edges leading to them.
     *
     * @param fromRoot The node to use as the root in searching for nodes.
     * @return The number of non-trivial nodes.
     */
    public int num_nontrivial_nodes(Node fromRoot) {
        if (fromRoot == null)
            fromRoot = get_root(true);
        
        int numNodes = 1;
        
        
        //      Edge iterEdge;
        //      forall_adj_edges(iterEdge, fromRoot) {
        for(Edge iterEdge=fromRoot.First_Adj_Edge(0); iterEdge != null ;iterEdge = iterEdge.Succ_Adj_Edge(fromRoot)){
            
            if (!trivial_edge(iterEdge)) {
                Node childNode = iterEdge.target();
                numNodes += num_nontrivial_nodes(childNode);
            }
        }
        //      ASSERT(numNodes <= num_nodes());
        return numNodes;
    }
    
    /** The number of non-trivial leaves in the CatGraph. Trivial nodes are those
     * that both have no instances, and have unknown edges leading to them.
     *
     * @return The number of non-trivial leaves.
     */
    public int num_nontrivial_leaves(){return num_nontrivial_leaves(null);}
    
    /** The number of non-trivial leaves in the CatGraph. Trivial nodes are those
     * that both have no instances, and have unknown edges leading to them.
     *
     * @param fromRoot The node to use as root in searching for leaves.
     * @return The number of non-trivial leaves.
     */
    public int num_nontrivial_leaves(Node fromRoot) {
        if (fromRoot == null)
            fromRoot = get_root(true);
        
        if (num_children(fromRoot) == 0)
            return 1;
        else {
            int numLeaves = 0;
            
            for (Edge iterEdge = fromRoot.first_adj_edge(); iterEdge != null;
            iterEdge = iterEdge.adj_succ()) {
                if (!trivial_edge(iterEdge)) {
                    Node childNode = iterEdge.target();
                    numLeaves += num_nontrivial_leaves(childNode);
                }
            }
            //         DBGSLOW(ASSERT(numLeaves <= num_leaves()));
            return numLeaves;
        }
    }
    
    /** Check if an edge is trivial. A trivial edge has an unknown label and leads to a
     * node with no instances.
     *
     * @param e The edge to be checked.
     * @return TRUE if the edge is trivial, FALSE otherwise.
     */
    public boolean trivial_edge(Edge e) {
        return (((AugCategory)cGraph.inf(e)).num() == Globals.UNKNOWN_CATEGORY_VAL &&
        MLJ.approx_equal(
        (float)(get_categorizer(e.target()).total_weight()),
        (float)0.0)
        );
    }

    /** Sets the root of the RootedCatGraph.
     *
     * @param node The new root node.
     */
    public void set_root(Node node) {
        //DBG(if (node != null)
        //       check_node_in_graph(node, true));
        root = node;
    }
    
    
    /** If the root has been set, returns the root.
     * @return The root node of this RootedCatGraph.
     */
    public Node get_root() {
        return get_root(false);
    }
    
    /** If the root has been set, returns the root. If abortOnNULL is FALSE returns NULL
     * if root has not been set. Otherwise aborts when root is not set.
     *
     * @param abortOnNoRoot TRUE if aborting should occur when there is no root, FALSE if the method returns
     * null if there is no root node set.
     * @return The root node or null if the root is not set.
     */
    public Node get_root(boolean abortOnNoRoot) {
        if (root == null && abortOnNoRoot)
            Error.fatalErr("RootedCatGraph::get_root: Root has not been set");
        return root;
    }
    
    /** Sets the attributes used.
     * @param usedAttr An array indicating used attributes. Used attributes are indicated with TRUE
     * values in their index numbers. Unused attributes are indicated with FALSE values.
     */
    public void set_used_attr(boolean[] usedAttr)
    { cGraph.set_used_attr(usedAttr); }
    
    /** Displays the root, as well as CatGraph.display().
     * @param hasNodeLosses TRUE if node loss values have been set.
     * @param hasLossMatrix TRUE if loss matrix has been set.
     * @param stream The Writer to be displayed to.
     * @param dp The display preferences.
     */
    public void display(boolean hasNodeLosses, boolean hasLossMatrix,
    Writer stream, DisplayPref dp) {
        try{
            if (dp.preference_type() == DisplayPref.ASCIIDisplay)
                if (root != null)
                    stream.write("Root: " + get_categorizer(root).description()
                    + "\n");
                else
                    stream.write("Warning, no root defined for graph" + "\n");
            super.display(hasNodeLosses, hasLossMatrix, stream, dp);
        }catch(IOException e){e.printStackTrace();}
    }
    
    
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合狠狠综合久久综合88| 91在线云播放| 亚洲精品中文在线影院| 一区二区三区免费看视频| 色偷偷88欧美精品久久久| 亚洲国产乱码最新视频| 日韩精品一区在线| 高清不卡一区二区| 一区二区三区免费观看| 日韩西西人体444www| 狠狠v欧美v日韩v亚洲ⅴ| 中文字幕免费在线观看视频一区| 色综合视频在线观看| 日韩av一区二| 国产精品免费看片| 欧美日韩亚洲综合| 国内精品免费**视频| 亚洲视频资源在线| 日韩色在线观看| 99久久精品情趣| 日本欧美一区二区在线观看| 久久久一区二区三区| 色婷婷精品大视频在线蜜桃视频| 丝袜国产日韩另类美女| 国产欧美日韩综合精品一区二区| 色婷婷激情综合| 国产精品538一区二区在线| 一区二区三区在线视频免费 | 亚洲理论在线观看| 日韩精品自拍偷拍| 一本大道久久a久久综合| 激情小说欧美图片| 亚洲影院理伦片| 国产欧美日产一区| 日韩欧美国产一区二区三区| 99vv1com这只有精品| 久久99精品网久久| 亚洲sss视频在线视频| 日本一区二区三区dvd视频在线| 欧美日韩免费电影| 99久久亚洲一区二区三区青草| 美腿丝袜亚洲三区| 亚洲在线一区二区三区| 国产欧美视频在线观看| 欧美v国产在线一区二区三区| 色综合天天综合色综合av | 精品一区二区三区的国产在线播放| 国产精品毛片高清在线完整版| 日韩欧美国产一区在线观看| 色欧美片视频在线观看| 丁香网亚洲国际| 蜜桃视频第一区免费观看| 亚洲成人免费视| 一区二区国产视频| 国产精品成人在线观看| 国产欧美日韩另类一区| 久久综合久久99| 精品精品欲导航| 日韩欧美黄色影院| 日韩女优制服丝袜电影| 制服.丝袜.亚洲.另类.中文 | kk眼镜猥琐国模调教系列一区二区 | 国产不卡视频在线播放| 精品一区二区在线看| 日本最新不卡在线| 日韩精品欧美精品| 丝瓜av网站精品一区二区| 亚洲高清一区二区三区| 亚洲一区二区高清| 亚洲高清不卡在线| 天天色图综合网| 日韩成人av影视| 日韩国产在线一| 全国精品久久少妇| 精品一区二区久久久| 狠狠色2019综合网| 国产一区二区视频在线| 国产成人精品免费网站| 成人激情小说网站| 91首页免费视频| 91福利社在线观看| 欧美日韩亚州综合| 日韩三级精品电影久久久| 日韩一级黄色片| www成人在线观看| 国产亚洲短视频| 成人欧美一区二区三区黑人麻豆 | 欧美日韩一级二级| 日韩写真欧美这视频| 久久婷婷国产综合精品青草| 国产日韩成人精品| 亚洲美女偷拍久久| 亚洲成人777| 黑人巨大精品欧美一区| 成人app在线观看| 欧美怡红院视频| 日韩精品一区二区三区中文精品| 精品久久一区二区三区| 国产精品黄色在线观看| 亚洲成a人v欧美综合天堂下载| 青娱乐精品视频| 成人性视频免费网站| 欧美午夜一区二区三区免费大片| 91精品国产免费| 中文在线一区二区| 五月天久久比比资源色| 国产精品88888| 欧洲色大大久久| 国产亚洲成年网址在线观看| 亚洲欧美另类图片小说| 蜜臀精品一区二区三区在线观看 | 97se亚洲国产综合自在线观| 欧美中文字幕不卡| 久久久综合网站| 亚洲成av人片一区二区梦乃| 国产福利一区二区三区在线视频| 一道本成人在线| 日韩久久久久久| 一区二区三区中文在线| 韩国精品免费视频| 欧美三级资源在线| 国产亚洲一二三区| 日韩va亚洲va欧美va久久| 成人午夜精品一区二区三区| 制服丝袜成人动漫| 一区二区三区在线看| 国产精品996| 日韩午夜中文字幕| 亚洲国产成人av网| 91在线精品一区二区| 久久老女人爱爱| 日本大胆欧美人术艺术动态| 99综合电影在线视频| 久久精品欧美日韩| 日韩vs国产vs欧美| 欧美日韩一区二区电影| 亚洲欧洲制服丝袜| 东方欧美亚洲色图在线| 日韩一区二区在线观看视频播放| 一区二区三区四区不卡在线| 丁香一区二区三区| 久久久久久久电影| 精品影院一区二区久久久| 在线综合视频播放| 亚洲福利一二三区| 91国产丝袜在线播放| 中文字幕中文字幕一区二区| 国产精品一区二区久久精品爱涩| 91精品国产欧美一区二区| 一区二区三区在线观看国产| av电影一区二区| 国产精品久久久久久福利一牛影视| 精品一区二区在线免费观看| 欧美一区二区三区公司| 日韩不卡一区二区三区| 欧美一区二区三区在线观看视频| 午夜精品视频在线观看| 欧美色中文字幕| 亚洲二区在线观看| 欧美日韩国产经典色站一区二区三区 | 亚洲人成精品久久久久久| 国产91精品精华液一区二区三区 | 欧美一区二区三区在线| 日本视频在线一区| 91精品综合久久久久久| 天堂在线亚洲视频| 制服丝袜激情欧洲亚洲| 日韩精品视频网| 精品国产三级电影在线观看| 久久精品免费看| 精品福利一区二区三区| 国产福利一区二区三区在线视频| 国产午夜精品福利| av激情综合网| 亚洲自拍另类综合| 69堂亚洲精品首页| 日韩高清不卡在线| 日韩欧美亚洲国产另类| 国产一区二三区| 国产精品成人免费| 欧美亚洲国产一区二区三区 | 久久精品视频网| 成人免费av在线| 一区二区三区91| 日韩欧美精品在线| 成人精品小蝌蚪| 亚洲一区二区三区美女| 欧美精品tushy高清| 久久99国产精品尤物| 中文字幕欧美激情| 欧美性受xxxx黑人xyx| 天堂va蜜桃一区二区三区 | 欧美日韩国产首页| 激情都市一区二区| 国产精品你懂的| 欧美伦理影视网| 国产精品一区不卡| 一区二区免费看| 精品不卡在线视频| 色狠狠综合天天综合综合|