⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 totalsupporttree.java

📁 FP树的JAVA版本
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    
    /* SET NUMBER ONE ITEM SETS */
    
    /** Sets the number of one item sets field (<TT>numOneItemSets</TT> to 
    the number of supported one item sets. */
    
    public void setNumOneItemSets() {
        numOneItemSets=getNumSupOneItemSets();
	}

    /*----------------------------------------------------------------------- */
    /*                                                                        */
    /*                              OUTPUT METHODS                            */
    /*                                                                        */
    /*----------------------------------------------------------------------- */

    /* ---------------- */
    /*   OUTPUT T-TRRE  */
    /* ---------------- */
    
    /** Commences process of outputting T-tree structure contents to screen. */	
    public void outputTtree() {
	int number = 1;
	
	// Loop
	
	for (short index=1; index < startTtreeRef.length; index++) {
	    if (startTtreeRef[index] !=null) {
	        String itemSetSofar = 
		                    new Short(reconvertItem(index)).toString();
	        System.out.print("[" + number + "] {" + itemSetSofar);
	        System.out.println("} = " + startTtreeRef[index].support);
	        outputTtree(new Integer(number).toString(),itemSetSofar,
			                        startTtreeRef[index].childRef);
		number++;
		}
	    }   
	}
	
    /** Continue process of outputting T-tree. <P> Operates in a recursive 
    manner.
    @param number the ID number of a particular node.
    @param itemSetSofar the label for a T-tree node as generated sofar.
    @param linkRef the reference to the current array level in the T-tree. */
    
    private void outputTtree(String number, String itemSetSofar,
    				TtreeNode[] linkRef) {
	// Set output local variables.
	int num=1;
	number = number + ".";
	itemSetSofar = itemSetSofar + " ";
	
	// Check for empty branch/sub-branch.
	if (linkRef == null) return;
	
	// Loop through current level of branch/sub-branch.
	for (short index=1;index<linkRef.length;index++) {
	    if (linkRef[index] != null) {
	        String newItemSet = itemSetSofar + (reconvertItem(index));
	        System.out.print("[" + number + num + "] {" + newItemSet);
	        System.out.println("} = " + linkRef[index].support);
	        outputTtree(number + num,newItemSet,linkRef[index].childRef); 
	        num++;
		}
	    }    
	}

    /* ----------------------- */
    /*   OUTPUT FREQUENT SETS  */
    /* ----------------------- */
    /** Commences the process of outputting the frequent sets contained in
    the T-tree. */

    public void outputFrequentSets() {
	int number = 1;

	System.out.println("FREQUENT (LARGE) ITEM SETS:\n" +
	                    	"---------------------------");
	System.out.println("Format: [N] {I} = S, where N is a sequential " +
		"number, I is the item set and S the support.");

	// Loop

	for (short index=1; index <= numOneItemSets; index++) {
	    if (startTtreeRef[index] !=null) {
	        if (startTtreeRef[index].support >= minSupport) {
	            String itemSetSofar = 
		                   new Short(reconvertItem(index)).toString();
	            System.out.println("[" + number + "] {" + itemSetSofar + 
		    		       "} = " + startTtreeRef[index].support);
	            number = outputFrequentSets(number+1,itemSetSofar,
		    			 index,startTtreeRef[index].childRef);
		    }
		}
	    }

	// End

	System.out.println("\n");
	}

    /** Outputs T-tree frequent sets. <P> Operates in a recursive manner.
    @param number the number of frequent sets so far.
    @param itemSetSofar the label for a T-treenode as generated sofar.
    @param size the length/size of the current array level in the T-tree.
    @param linkRef the reference to the current array level in the T-tree.
    @return the incremented (possibly) number the number of frequent sets so
    far. */

    private int outputFrequentSets(int number, String itemSetSofar, int size,
    							TtreeNode[] linkRef) {

	// No more nodes

	if (linkRef == null) return(number);

	// Otherwise process

	itemSetSofar = itemSetSofar + " ";
	for (short index=1; index < size; index++) {
	    if (linkRef[index] != null) {
	        if (linkRef[index].support >= minSupport) {
	            String newItemSet = itemSetSofar + (reconvertItem(index));
		    System.out.println("[" + number + "] {" + newItemSet +
		                             "} = " + linkRef[index].support);
	            number = outputFrequentSets(number + 1,newItemSet,index,
		    			             linkRef[index].childRef);
	            }
		}
	    }

	// Return

	return(number);
	}
	
    /* ------------------------------ */
    /*   OUTPUT NUMBER FREQUENT SETS  */
    /* ------------------------------ */
    /** Commences the process of counting and outputing number of supported
    nodes in the T-tree.<P> A supported set is assumed to be a non null node in
    the T-tree. */

    public void outputNumFreqSets() {
	
	// If empty tree (i.e. no supported sets) do nothing
	if (startTtreeRef== null) System.out.println("Number of frequent " +
					"sets = 0");
	// Otherwise count and output
	else System.out.println("Number of frequent sets = " + 
					countNumFreqSets());
	}
    
    /* COUNT NUMBER OF FRQUENT SETS */
    /** Commences process of counting the number of frequent (large/supported
    sets contained in the T-tree. */
    
    protected int countNumFreqSets() {
        // If empty tree return 0
	if (startTtreeRef ==  null) return(0);

	// Otherwise loop through T-tree starting with top level
	int num=0;
	for (int index=1; index <= numOneItemSets; index++) {
	    // Check for null valued top level Ttree node.
	    if (startTtreeRef[index] !=null) {
	        if (startTtreeRef[index].support >= minSupport) 
			num = countNumFreqSets(index,
	    				startTtreeRef[index].childRef,num+1);
		}
	    }   
	
	// Return
	return(num);
	}
	
    /** Counts the number of supported nodes in a sub branch of the T-tree.
    @param size the length/size of the current array level in the T-tree.
    @param linkRef the reference to the current array level in the T-tree.
    @param num the number of frequent sets sofar. */

    protected int countNumFreqSets(int size, TtreeNode[] linkRef, int num) {
	
	if (linkRef == null) return(num);
	
	for (int index=1; index < size; index++) {
	    if (linkRef[index] != null) {
	        if (linkRef[index].support >= minSupport) 
	            			num = countNumFreqSets(index,
					linkRef[index].childRef,num+1);
		}
	    }
	
	// Return
	
	return(num);
	}

    /* --------------------------- */
    /*   OUTPUT T-TREE STATISTICS  */
    /* --------------------------- */
    /** Commences the process of outputting T-tree statistics (for diagnostic
    purposes): (a) Storage, (b) Number of nodes on P-tree, (c) number of
    partial support increments (updates) and (d) generation time. */
    
    public void outputTtreeStats() {
        System.out.println("T-TREE STATISTICS\n-----------------");	
	System.out.println(calculateStorage() + " (Bytes) storage");
	System.out.println(TtreeNode.getNumberOfNodes() + " nodes");
	System.out.println(countNumFreqSets() + " frequent sets");
	System.out.println(numUpdates + " support value increments");
	System.out.println(duration);
	}
	
    /* --------------------------- */
    /*   OUTPUT NUMBER OF UPDATES  */
    /* --------------------------- */
    /** Commences the process of determining and outputting the storage
    requirements (in bytes) for the T-tree */
    /** Outputs the number of update and number of nodes created during the
    generation of the T-tree (the later is not the same as the number of 
    supported nodes). */
    
    public void outputNumUpdates() {
	System.out.println("Number of Nodes created = " +
			TtreeNode.getNumberOfNodes());
	System.out.println("Number of Updates       = " + numUpdates);
	} 
		
    /* ----------------- */
    /*  OUTPUT STORAGE   */
    /* ----------------- */
    /** Commences the process of determining and outputting the storage
    requirements (in bytes) for the T-tree. <P> Example: Given ---
    <PRE>
        	{1,2,3} 
    		{1,2,3}
		{1,2,3}
    		{1,2,3}
		{1,2,3}
    </PRE>
    This will produce a T-tree as shown below:	
    <PRE>
    +---+---+---+---+ 		
    | 0 | 1 | 2 | 3 |	
    +---+---+---+---+
          |   |   |
	  |   |   +-----------+
	  |   |               |
	  |   +---+         +---+---+---+    
          |       |         | 0 | 1 | 2 |
	( 5 )   +---+---+   +---+---+---+
	(nul)   | 0 | 1 |         |   |
	        +---+---+         |   +----+
		      |           |        |
		      |           |      +---+---+
		    ( 5 )         |      | 0 + 1 |
		    (nul)       ( 5 )    +---+---+
	                        (nul)          |
				               |
					     ( 5 )
					     (nul)    
    </PRE>					     
    0 elements require 4 bytes of storage, null nodes (not shown above) 4 bytes 
    of storage, others 12 bytes of storage.			*/
    
    public void outputStorage() {
	
	// If empty tree (i.e. no supported sets) do nothing
	if (startTtreeRef ==  null) return;
		
	/* Otherwise calculate storage */
	System.out.println("T-tree Storage          = " + calculateStorage() + 
			" (Bytes)");
	} 	
   
    /* CALCULATE STORAGE */
    /** Commences process of calculating storage requirements for  T-tree. */
    
    protected int calculateStorage() {
        // If emtpy tree (i.e. no supported sets) return 0
	if (startTtreeRef ==  null) return(0);
		
	/* Step through top level */	
	int storage = 4;	// For element 0
	for (int index=1; index <= numOneItemSets; index++) {
	    if (startTtreeRef[index] !=null) storage = storage + 12 + 
	    		calculateStorage(0,startTtreeRef[index].childRef);
	    else storage = storage+4;
	    }
	// Return
	return(storage);
	}
        
    /** Calculate storage requirements for a sub-branch of the T-tree.
    @param localStorage the storage as calculated sofar (set to 0 at start).
    @param linkRef the reference to the current sub-branch of the T-tree. */
    
    private int calculateStorage(int localStorage, TtreeNode[] linkRef) {
	
	if (linkRef == null) return(0);
	
	for (int index=1; index < linkRef.length; index++) {
	    if (linkRef[index] !=null) localStorage = localStorage + 12 + 
	    		calculateStorage(0,linkRef[index].childRef);
	    else localStorage = localStorage + 4;
	    }   
         
	 /* Return */
	 
	 return(localStorage+4);	// For element 0
	 }
    }
    
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -