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

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

?? fpgrowthfacade.cs

?? fp-growth算法 用vb.net2005 實(shí)現(xiàn)
?? CS
字號(hào):
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;

namespace FPTree
{
    /// <summary>
    /// FPGrowth操作類
    /// </summary>
    public class FPGrowthFacade 
    {
        /// <summary>
        /// 計(jì)算頻繁K項(xiàng)集的大小
        /// </summary>
        Hashtable _frequentPattern = new Hashtable();
        /// <summary>
        /// 計(jì)算頻繁K項(xiàng)集的大小
        /// </summary>
        public Hashtable FrequentPattern
        {
            get { return _frequentPattern; }            
        }
        
        
        /// <summary>
        /// 在頻繁一項(xiàng)集表中,從后到前遍歷
        /// 生成條件FPTree
        /// </summary>
        /// <param name="_frequentItemList"></param>
        public void FPGrowth(FPTree _fpTree, List<TreeNodeItem> _itemSet)
        {
            if (_fpTree.SinglePath)
            {  
                //返回所有組合,用_itemSetList保存
                List<ItemSet> _itemSetList = new List<ItemSet>();
                CombineNodes(_fpTree, _itemSetList);
                //產(chǎn)生模式 β∪α,_itemSetList是β的集合                
                AddPattern(_itemSet, _itemSetList);
                
                _itemSet.Clear();
            }
            else
            {
                for (int i = _fpTree.FrequentItemCount - 1; i > -1; i--)
                {                    
                    //頭表中的每個(gè)a(i)
                    TreeNodeItem _treeNodeItem = _fpTree.GetLinkNode(i);                    
                    //產(chǎn)生模式β = a(i)∪α
                    List<TreeNodeItem> _itemSetConbine = new List<TreeNodeItem>();
                    if (_treeNodeItem != null)
                    {
                        if (_itemSet == null)
                            _itemSet = new List<TreeNodeItem>();
                        TreeNodeItem[] _arrTreeNodeItem = new TreeNodeItem[_itemSet.Count];
                        _itemSet.CopyTo(_arrTreeNodeItem);
                        _itemSetConbine.AddRange(_arrTreeNodeItem);
                        _itemSetConbine.Insert(0,_treeNodeItem);                        
                    }
                    //構(gòu)造條件FPTree(1)
                    FPTree _conditionFPTree = new FPTree();
                    _conditionFPTree.MinSupCount = _fpTree.MinSupCount;
                    List<List<TreeNodeItem>> _listStrList = new List<List<TreeNodeItem>>();                    
                    Hashtable _hashTable = new Hashtable();  

                    bool _doLoop = (_treeNodeItem != null);
                    while (_doLoop)
                    {
                        //構(gòu)造條件模式基,支持度計(jì)數(shù)由小到大放入List
                        List<TreeNodeItem> _treeNodeItemList = new List<TreeNodeItem>();
                        GetParentPath(_treeNodeItem.CloneNode(), _treeNodeItemList, _hashTable, _conditionFPTree);

                        //如果模式已經(jīng)產(chǎn)生并且不是頻繁一項(xiàng)集
                        if (_treeNodeItemList.Count == 0 && _itemSetConbine.Count >1)                        
                            //產(chǎn)生模式 
                            AddPattern(_itemSetConbine,_fpTree);                            
                        
                        //構(gòu)造條件FPTree(2)
                        if(_treeNodeItemList.Count>0)                            
                        _listStrList.Add(_treeNodeItemList);                    
                        
                        //多個(gè)條件模式基
                        if (_treeNodeItem.NextNode != null)
                            _treeNodeItem = _treeNodeItem.NextNode;
                        else
                            _doLoop = false;
                    }                   
                    //構(gòu)造條件FPTree(3)
                    if(_listStrList.Count >0)
                    _conditionFPTree.InitializeConditionFPTree(_listStrList);
                
                    //檢查樹(shù)是否為空
                    if (_conditionFPTree.TopNode.Nodes.Count > 0)
                        FPGrowth(_conditionFPTree, _itemSetConbine);   
                    else
                        _itemSetConbine = _itemSet;
                }                
            }
        }
        /// <summary>
        /// 樹(shù)為空時(shí)產(chǎn)生模式
        /// </summary>
        /// <param name="_itemSetConbine">傳入的β = a(i)∪α</param>
        private void AddPattern(List<TreeNodeItem> _itemSetConbine,FPTree _fpTree)
        {
            //產(chǎn)生模式 
            if (!_frequentPattern.ContainsKey(_itemSetConbine.Count))
            {
                List<ItemSet> _tmpItemSetList = new List<ItemSet>();
                ItemSet _tmpItemSet = new ItemSet();
                //產(chǎn)生模式              
                foreach (TreeNodeItem _nodes in _itemSetConbine)
                {
                    _tmpItemSet.Content.Add(_nodes.ItemName);                    
                }
                _tmpItemSet.Count =
                        _fpTree.GetSupCountByID(
                        _itemSetConbine[0].ItemName);
                _tmpItemSetList.Add(_tmpItemSet);
                _frequentPattern.Add(_itemSetConbine.Count, _tmpItemSetList);
            }
            else
            {
                List<ItemSet> _tmpItemSetList = (List<ItemSet>)_frequentPattern[_itemSetConbine.Count];
                ItemSet _tmpItemSet = new ItemSet();
                //增加/設(shè)置α的內(nèi)容           
                foreach (TreeNodeItem _nodes in _itemSetConbine)
                {
                    _tmpItemSet.Content.Add(_nodes.ItemName);                    
                }
                _tmpItemSet.Count =
                        _fpTree.GetSupCountByID(
                        _itemSetConbine[0].ItemName);
                _tmpItemSetList.Add(_tmpItemSet);
                //_frequentPattern[_itemSetConbine.Count] = _tmpItemSetList;
            }
        }
        /// <summary>
        /// 樹(shù)為單一路徑時(shí)產(chǎn)生模式
        /// </summary>
        /// <param name="_itemSet">傳入的α</param>
        /// <param name="_itemSetList">節(jié)點(diǎn)的組合β'</param>
        private void AddPattern(List<TreeNodeItem> _itemSet, List<ItemSet> _itemSetList)
        {
            for (int i = 0; i < _itemSetList.Count; i++)
            {
                //每個(gè)組合β
                ItemSet _tmpItemSet = _itemSetList[i];

                int _count = _itemSet.Count + _tmpItemSet.Content.Count;
                if (!_frequentPattern.ContainsKey(_count))
                {
                    List<ItemSet> _tmpItemSetList = new List<ItemSet>();
                    //增加α的內(nèi)容          
                    foreach (TreeNodeItem _nodes in _itemSet)
                    {
                        //β∪α最小支持度為β(在Combine中已經(jīng)設(shè)置節(jié)點(diǎn)最小的)
                        _tmpItemSet.Content.Add(_nodes.ItemName);
                        //_tmpItemSet.Count = _tmpItemSet.Count;
                    }
                    _tmpItemSetList.Add(_tmpItemSet);
                    _frequentPattern.Add(_count, _tmpItemSetList);
                }
                else
                {
                    List<ItemSet> _tmpItemSetList = (List<ItemSet>)_frequentPattern[_count];
                    //增加α的內(nèi)容
                    foreach (TreeNodeItem _nodes in _itemSet)
                    {
                        //β∪α最小支持度為β(在Combine中已經(jīng)設(shè)置節(jié)點(diǎn)最小的)
                        _tmpItemSet.Content.Add(_nodes.ItemName);
                        //_tmpItemSet.Count = _tmpItemSet.Count;
                    }
                    _tmpItemSetList.Add(_tmpItemSet);
                    //_frequentPattern[_count] = _tmpItemSetList;
                }
            }
        }

        /// <summary>
        /// 返回一個(gè)包含子節(jié)點(diǎn)的父結(jié)點(diǎn)
        /// 設(shè)置父結(jié)點(diǎn)的計(jì)數(shù)為葉子結(jié)點(diǎn)計(jì)數(shù)
        /// 復(fù)制樹(shù)
        /// </summary>
        /// <param name="_treeNodeItem"></param>
        /// <param name="_treeNodeItemList"></param>
        public void GetParentPath(TreeNodeItem _treeNodeItem, List<TreeNodeItem> _treeNodeItemList, Hashtable _hashTable,FPTree _fpTree)
        {
            while (_treeNodeItem.Parent != null && _treeNodeItem.Parent.ItemName != null)
            {
                //條件模式基所有的節(jié)點(diǎn)的支持度計(jì)數(shù)都為葉子計(jì)數(shù)
                TreeNodeItem _newTreeNodeItem = _treeNodeItem.Parent.CloneNode();
                _newTreeNodeItem.Count = _treeNodeItem.Count;
                
                _treeNodeItemList.Insert(0, _newTreeNodeItem);
                //建立頻繁一項(xiàng)集
                if (_hashTable.ContainsKey(_newTreeNodeItem.ItemName))
                    _hashTable[_newTreeNodeItem.ItemName] = Convert.ToInt32(_hashTable[_newTreeNodeItem.ItemName]) +
                        _newTreeNodeItem.Count;
                else
                    _hashTable.Add(_newTreeNodeItem.ItemName, _newTreeNodeItem.Count);
                //頻繁
                if (Convert.ToInt32(_hashTable[_newTreeNodeItem.ItemName]) > _fpTree.MinSupCount - 1)
                {
                    _fpTree.BuildFrequentItemList(_newTreeNodeItem.ItemName,
                        Convert.ToInt32(_hashTable[_newTreeNodeItem.ItemName]));
                }
                _treeNodeItem = _newTreeNodeItem;
            } 
        }
        
        /// <summary>
        /// 獲得所有的模式
        /// 獲取子集算法
        /// </summary>
        /// <param name="_treeNodeItemList"></param>
        public void CombineNodes(FPTree _fpTree, List<ItemSet> _itemSetList)
        {
            //獲取所有結(jié)點(diǎn)
            List<TreeNodeItem> _treeNodeItemList = new List<TreeNodeItem>();
            TreeNodeItem _treeNodeItem = _fpTree.TopNode;
            bool _hasNext = (_treeNodeItem.Nodes.Count > 0);
            _treeNodeItem = _treeNodeItem.Nodes[0];
            while (_hasNext)
            {
                _treeNodeItemList.Add(_treeNodeItem);
                if (_treeNodeItem.Nodes.Count > 0)
                    _treeNodeItem = _treeNodeItem.Nodes[0];
                else
                    _hasNext = false;
            }

            int _length = _treeNodeItemList.Count;
            //從1開(kāi)始,因?yàn)椴蝗】占?            for (int i = 1; i < Math.Pow(2, _length); i++)
            {
                String str = Convert.ToString(int.Parse(i.ToString()), 2);
                str = str.PadLeft(_length, '0');
                char[] _arrChr = str.ToCharArray();             
                ItemSet _itemSet = new ItemSet();
                for (int j = _arrChr.Length-1; j >-1; j--)
                {
                    if (_arrChr[j] == '1')
                    {
                        _itemSet.Content.Add(_treeNodeItemList[j].ItemName);
                        if (_itemSet.Count == 0)
                            _itemSet.Count = _treeNodeItemList[j].Count;
                        else
                        {
                            //支持度等于β中結(jié)點(diǎn)最小的支持度計(jì)數(shù)
                            if(_treeNodeItemList[j].Count < _itemSet.Count)
                            _itemSet.Count = _treeNodeItemList[j].Count;
                        }
                    }
                }
                if(_itemSet.Content.Count!=0)
                    _itemSetList.Add(_itemSet);               
            }
        }

        /// <summary>
        /// 清空所有的數(shù)據(jù)集
        /// </summary>
        public void DisposeAll()
        {
            _frequentPattern.Clear();           
        }       

    }
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产大陆亚洲精品国产| 日韩欧美视频一区| 国产日韩v精品一区二区| 成人妖精视频yjsp地址| 亚洲综合免费观看高清在线观看| 欧美精品日日鲁夜夜添| 午夜精品国产更新| 久久久99精品免费观看不卡| 色悠悠久久综合| 极品美女销魂一区二区三区| 最新久久zyz资源站| 69堂成人精品免费视频| 成人一级黄色片| 久久精品国产99| 一区二区三区日韩| 日韩三级高清在线| 色网综合在线观看| 国产一区二区三区四区五区美女 | 国产精品一品视频| 国产精品美女一区二区三区 | 欧美精品v日韩精品v韩国精品v| 国产一区二区在线视频| 午夜在线电影亚洲一区| 国产精品嫩草久久久久| 91精品国产综合久久精品性色| 99久久综合国产精品| 日韩av中文字幕一区二区| 亚洲欧洲日产国码二区| 337p日本欧洲亚洲大胆色噜噜| 欧美日韩在线亚洲一区蜜芽| 成人性生交大合| 久国产精品韩国三级视频| 亚洲成人综合网站| 亚洲视频资源在线| 欧美国产精品专区| 2021中文字幕一区亚洲| 欧美一区二区人人喊爽| 91精彩视频在线| 91丝袜国产在线播放| 成a人片国产精品| 丁香激情综合国产| 亚洲影院久久精品| 成人欧美一区二区三区在线播放| 久久久不卡网国产精品一区| 欧美mv和日韩mv国产网站| 欧美一区二区在线播放| 欧美撒尿777hd撒尿| 在线视频欧美精品| 色综合视频在线观看| 成人禁用看黄a在线| 国产成人精品一区二区三区四区 | 日本午夜精品一区二区三区电影| 一区二区三区国产精品| 亚洲精品高清在线观看| 国产精品国产精品国产专区不片| 欧美国产一区二区在线观看| 国产日韩影视精品| 国产午夜精品理论片a级大结局| 精品国产一区二区亚洲人成毛片| 日韩视频一区二区在线观看| 日韩一区二区三区免费看| 欧美日韩另类一区| 欧美精品三级在线观看| 日本韩国一区二区三区视频| 色视频成人在线观看免| 91精品福利视频| 欧美日韩成人综合| 欧美一级欧美三级在线观看 | 色94色欧美sute亚洲线路一久| 91免费精品国自产拍在线不卡 | 久久99蜜桃精品| 国产在线一区观看| 国产精品白丝jk黑袜喷水| 国产91精品一区二区麻豆亚洲| 裸体在线国模精品偷拍| 狠狠色丁香婷综合久久| 国产91丝袜在线播放0| 不卡一区中文字幕| 欧美日韩一区二区三区在线| 91精品婷婷国产综合久久竹菊| 91精品国产91久久久久久一区二区 | 精品国产乱码久久久久久1区2区| 欧美午夜精品一区二区三区| 欧美丰满少妇xxxbbb| 日韩欧美在线影院| 欧美极品xxx| 亚洲天堂免费在线观看视频| 亚洲国产综合91精品麻豆| 婷婷久久综合九色国产成人| 国产一区二区三区日韩| 91视频91自| 91精品国产入口在线| 91精品国产入口| 久久综合久色欧美综合狠狠| 国产精品毛片久久久久久久| 亚洲女性喷水在线观看一区| 亚洲第一综合色| 国产精品亚洲人在线观看| eeuss国产一区二区三区| 欧美日韩国产综合久久| 久久亚洲春色中文字幕久久久| 亚洲欧洲另类国产综合| 免费精品99久久国产综合精品| 从欧美一区二区三区| 99精品在线免费| 欧美激情资源网| 亚洲成人免费看| 国产酒店精品激情| 色综合久久久久综合| 日韩一二三四区| 国产精品视频你懂的| 日本成人在线电影网| 91在线观看下载| 欧美xxxxx裸体时装秀| 亚洲青青青在线视频| 国产主播一区二区三区| 欧美调教femdomvk| 国产精品久久久久久户外露出| 日日夜夜精品免费视频| 久久精品男人的天堂| 婷婷六月综合亚洲| 99久久婷婷国产| 久久久综合精品| 视频在线观看一区| 色婷婷综合激情| 成人免费高清在线| 日韩精品专区在线影院重磅| 性感美女极品91精品| 97精品久久久午夜一区二区三区 | 91福利在线导航| 亚洲色图一区二区三区| 成人动漫在线一区| 国产精品美女久久久久久久久久久 | 欧美色精品在线视频| 国产香蕉久久精品综合网| 国产专区欧美精品| 久久久久久99久久久精品网站| 激情六月婷婷综合| 久久久午夜精品| 国产成人午夜片在线观看高清观看 | 九九国产精品视频| 69堂成人精品免费视频| 免费精品视频在线| 精品999久久久| 国产精品911| 国产精品福利在线播放| 色婷婷av一区二区| 亚洲国产成人tv| 91精品国产全国免费观看| 奇米影视一区二区三区小说| 亚洲国产美女搞黄色| 欧美日韩高清一区二区三区| 免费在线观看精品| 精品国产99国产精品| 国产精品一区专区| 国产精品丝袜久久久久久app| jiyouzz国产精品久久| 一区二区三区毛片| 4438x成人网最大色成网站| 韩国成人在线视频| 国产精品丝袜在线| 欧美日韩专区在线| 麻豆成人av在线| 中文字幕乱码一区二区免费| 色综合一个色综合| 日韩在线一区二区| 久久久国产午夜精品| 91蝌蚪porny九色| 日本va欧美va欧美va精品| 久久久综合激的五月天| 一本到一区二区三区| 日韩av一二三| 国产精品激情偷乱一区二区∴| 欧美午夜精品一区二区三区| 国产在线国偷精品产拍免费yy| 中文字幕亚洲视频| 制服丝袜亚洲色图| 成人三级在线视频| 日本不卡的三区四区五区| 国产精品久久综合| 91麻豆精品国产| 成人av资源在线| 免费成人性网站| 一区视频在线播放| 精品久久久久香蕉网| 色狠狠色狠狠综合| 国产电影一区在线| 亚洲va国产va欧美va观看| 欧美国产国产综合| 91精品麻豆日日躁夜夜躁| 波波电影院一区二区三区| 日韩国产高清在线| 国产精品国产三级国产aⅴ中文| 日韩欧美国产麻豆| 在线观看国产日韩| 懂色av中文一区二区三区| 日本亚洲天堂网| 亚洲一区二区三区四区在线观看 | 欧美国产综合一区二区| 日韩一区二区免费高清|