コード例 #1
0
        public static AttributeList ComputeClosure(
            AttributeList attr, List <FunctionalDependency> fdList)
        {
            var size   = 0;
            var result = new AttributeList(attr);

            do
            {
                size = result.Count;
                foreach (var fd in fdList)
                {
                    if (result.Contains(fd.LeftHandSide))
                    {
                        result.Add(fd.RightHandSide);
                    }
                }
            } while (size != result.Count);

            return(result);
        }
コード例 #2
0
        public static List <AttributeList> GetCombinations(AttributeList list)
        {
            var result = new List <AttributeList>();
            var count  = (int)Math.Pow(2, list.Count);

            for (var i = 1; i <= count - 1; i++)
            {
                string str   = Convert.ToString(i, 2).PadLeft(list.Count, '0');
                var    combi = new AttributeList();
                for (var j = 0; j < str.Length; j++)
                {
                    if (str[j] == '1')
                    {
                        combi.Add(list[j]);
                    }
                }
                result.Add(combi);
            }
            return(result);
        }