当前位置: 首页>>代码示例>>C#>>正文


C# Bucket.HasDistinctValuesAt方法代码示例

本文整理汇总了C#中Bucket.HasDistinctValuesAt方法的典型用法代码示例。如果您正苦于以下问题:C# Bucket.HasDistinctValuesAt方法的具体用法?C# Bucket.HasDistinctValuesAt怎么用?C# Bucket.HasDistinctValuesAt使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Bucket的用法示例。


在下文中一共展示了Bucket.HasDistinctValuesAt方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: FindStrictSplit

        /// <summary>
        /// Strict partitioning step of the Mondrian algorithm.
        /// </summary>
        /// <returns>Returns true, if it is possible to split the bucket,
        /// false otherwise.</returns>
        private bool FindStrictSplit(Bucket bucket, List<IHierarchy> hierarchies, int hierarchyIndex)
        {
            Node originalNode = CopyNode(bucket.node);
            Node specializedNode = CopyNode(bucket.node);
            int level = specializedNode.generalizations[hierarchyIndex];
            if (level != 0)
                specializedNode.generalizations[hierarchyIndex] = level - 1;
            else
                return false;

            bucket.node = CopyNode(specializedNode);

            Bucket specializedEQClass = GeneralizeBucket(bucket, hierarchies);

            int dimension = hierarchies[hierarchyIndex].GetQid();

            foreach (var splittingValue in GetDistinctValues(specializedEQClass, dimension))
            {
                Bucket right = new Bucket(), left = new Bucket();
                foreach (var t in specializedEQClass)
                {
                    if (t.GetValue(dimension).Equals(splittingValue))
                        left.Add(t);
                    else
                        right.Add(t);
                }
                // If the left has the same size as the original eq, maybe it is possible to release more generalizations.
                left.node = CopyNode(specializedNode);
                if (left.Count == bucket.Count)
                {
                    queue.Enqueue(left);
                    return true;
                }

                Node leftNode = left.node;
                var generalizedRight = new Bucket();
                generalizedRight.node = CopyNode(originalNode);

                //generalize back the right side/the rest
                if (right.Count > 0)
                {
                    if (right.HasDistinctValuesAt(dimension) != -1)
                    {
                        right.node = CopyNode(originalNode);
                        generalizedRight = GeneralizeBucket(right, hierarchies);
                    }
                    else
                    {
                        right.node = CopyNode(specializedNode);
                        generalizedRight = right;
                        generalizedRight.node = CopyNode(specializedNode);
                    }
                }

                if (IsAnonymous(left) && IsAnonymous(generalizedRight))
                {
                    queue.Enqueue(generalizedRight);
                    queue.Enqueue(left);
                    return true;
                }
            }
            bucket.node = CopyNode(originalNode);
            return false;
        }
开发者ID:tothbalazs0920,项目名称:DataAnonymizationLibrary,代码行数:69,代码来源:Mondrian.cs


注:本文中的Bucket.HasDistinctValuesAt方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。