本文整理汇总了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;
}