Example #1
0
        public void Run()
        {
            TransactionDatabase.CreateUniqueItemsList();
            SupportedTransactionsList   = new List <Transaction>();
            UnSupportedTransactionsList = new List <Transaction>();
            var transactionList = TransactionDatabase.UniqueItems.Items.Select(transactionDatabaseUniqueItem => new Transaction(transactionDatabaseUniqueItem.ToString())).ToList();
            var uniqueItems     = new HashSet <Item>();

            for (var i = 0; i < TransactionDatabase.GetMaxTransactionLength(); i++)
            {
                UnSupportedTransactionsList = new List <Transaction>();
                uniqueItems.Clear();
                transactionList = CalculateSupportOfTransactionList(transactionList);
                foreach (var transaction in transactionList)
                {
                    if (transaction.Support >= MinimumSupport)
                    {
                        SupportedTransactionsList.Add(transaction);
                        foreach (var item in transaction.Items)
                        {
                            uniqueItems.Add(item);
                        }
                    }
                    else
                    {
                        UnSupportedTransactionsList?.Add(transaction);
                    }
                }
                var itemList = uniqueItems.ToList();
                transactionList = GenerateCandidates(itemList, i + 1);
            }
        }
Example #2
0
        public void Run()
        {
            TransactionDatabase.CreateUniqueItemsList();
            SupportedTransactionsList   = new HashSet <Transaction>();
            UnSupportedTransactionsList = new HashSet <Transaction>();
            List <ItemsTransactionList> uniqueItemsTransactionLists     = new List <ItemsTransactionList>();
            List <ItemsTransactionList> tempUniqueItemsTransactionLists = new List <ItemsTransactionList>();

            foreach (Item uniqueItem in TransactionDatabase.UniqueItems.Items)
            {
                ItemsTransactionList itemsTransactionList = new ItemsTransactionList();
                itemsTransactionList.ItemList = new ItemList();
                itemsTransactionList.ItemList.Items.Add(uniqueItem);
                itemsTransactionList.AddTransactionsToList(GetTransactionsContainsItemList(itemsTransactionList.ItemList));
                if (TransactionDatabase.GetSupportOfTransaction(new Transaction(uniqueItem)) >= MinimumSupport)
                {
                    ItemsTransactionLists.Add(itemsTransactionList);
                    uniqueItemsTransactionLists.Add(itemsTransactionList);
                    var transaction = new Transaction(uniqueItem);
                    if (CalculateSupport)
                    {
                        transaction.Support = TransactionDatabase.GetSupportOfTransaction(transaction);
                    }
                    SupportedTransactionsList.Add(transaction);
                }
            }

            int                maxItemCount          = 1;
            HashSet <Item>     temporaryItems        = new HashSet <Item>();
            List <Transaction> temporaryTransactions = new List <Transaction>();

            while (true)
            {
                temporaryItems.Clear();
                temporaryTransactions.Clear();
                tempUniqueItemsTransactionLists.Clear();
                List <ItemsTransactionList> tmpItemsTransactionLists = new List <ItemsTransactionList>();

                foreach (ItemsTransactionList itemsTransactionList in ItemsTransactionLists)
                {
                    if (itemsTransactionList.ItemList.Items.Count == maxItemCount)
                    {
                        tmpItemsTransactionLists.Add(itemsTransactionList);
                    }
                }
                foreach (ItemsTransactionList tmpItemsTransactionList in tmpItemsTransactionLists)
                {
                    foreach (Item item in tmpItemsTransactionList.ItemList.Items)
                    {
                        temporaryItems.Add(item);
                    }
                }

                foreach (ItemsTransactionList itemsTransactionList in uniqueItemsTransactionLists)
                {
                    foreach (Item temporaryItem in temporaryItems)
                    {
                        if (itemsTransactionList.ItemList.Items.First() == temporaryItem)
                        {
                            tempUniqueItemsTransactionLists.Add(itemsTransactionList);
                        }
                    }
                }

                List <ItemsTransactionList> candidateTransactions = GenerateCandidates(tempUniqueItemsTransactionLists.ToList(), maxItemCount);
                if (candidateTransactions.Count == 0)
                {
                    break;
                }
                foreach (ItemsTransactionList tmpItemsTransactionList in candidateTransactions)
                {
                    ItemsTransactionLists.Add(tmpItemsTransactionList);
                    var transaction = new Transaction(tmpItemsTransactionList.ItemList);
                    if (CalculateSupport)
                    {
                        transaction.Support = TransactionDatabase.GetSupportOfTransaction(transaction);
                    }
                    SupportedTransactionsList.Add(transaction);
                }
                maxItemCount++;
            }
        }