This is an automated email from the ASF dual-hosted git repository.
git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/datasketches-website.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 3962161 Automatic Site Publish by Buildbot
3962161 is described below
commit 3962161095814b03b7e4c7c76db28f22bf263ef7
Author: buildbot <[email protected]>
AuthorDate: Thu Dec 2 19:25:40 2021 +0000
Automatic Site Publish by Buildbot
---
output/docs/Theta/ThetaSetOpsCornerCases.html | 326 +++++++++++++++-----------
1 file changed, 191 insertions(+), 135 deletions(-)
diff --git a/output/docs/Theta/ThetaSetOpsCornerCases.html
b/output/docs/Theta/ThetaSetOpsCornerCases.html
index eee1d77..9e7d392 100644
--- a/output/docs/Theta/ThetaSetOpsCornerCases.html
+++ b/output/docs/Theta/ThetaSetOpsCornerCases.html
@@ -561,11 +561,22 @@
<p>Here, the number of distinct inputs to the sketch have exceeded the size of
the buffer, so the sketch must start choosing what values to retain in the
sketch and starts reducing the value of <em>theta</em> accordingly. <em>theta
< 1.0</em>, <em>retained entries > 0</em>, and <em>empty = F</em>.</p>
<h3 id="degenerate10-0-f">Degenerate{<1.0, 0, F}</h3>
-<p>This requires some explanation. Imagine the intersection of two estimating
sketches where the values retained in the two sketches are disjoint (i.e, no
overlap). Since the two sketches chose their internal values at random, there
remains some probability that there could be common values in an exactly
computed intersection, but it just so happens that one of the two sketches did
not select any of them in the random sampling process. Therefore, the
<em>retained entries = 0</em>.</p>
+<p>This requires some explanation.</p>
-<p>Even though the <em>retained entries = 0</em> the upper bound of the
estimated number of distinct values in the input domain, but missed by the
sketch, can be computed statistically. It is too complex to discuss here, but
the sketch code actually performs this estimation.</p>
+<p>Imagine we have two large data sets, A and B, with only a few items in
common. The exact intersection of these two sets, <em>A∩B</em> would result
+in those few common items.</p>
-<p>Since there is a non-zero probability of a non-empty intersection,
<em>empty = F</em>. This is also a degenerate case in the sense that <em>theta
< 1.0</em> and <em>empty = F</em> like an estimating sketch, except that no
actual values were found in the operation, so <em>retained entries = 0</em>.</p>
+<p>Now suppose we compute Sketch(A) and Sketch(B). Because sketches are
approximate and the items from each set are chosen at random,
+there is some probability that one of the sketches may not contain any of the
common items.
+As a result, the sketch intersection of these two sets,
<em>Sketch(A)∩Sketch(B)</em>, which is also approximate, might contain zero
retained entries.
+Even though the retained entries is zero, the upper bound of the estimated
number of distinct values from the input domain is clearly greater than zero,
but missed by the sketch intersection. This upper bound can be computed
statistically. It is too complex to discuss further here, but the sketch code
actually performs this estimation.</p>
+
+<p>Where both input sketches are non-empty, there is a non-zero probability
that the intersection will have zero entries, yet the statistics tells us that
the result may
+not be really empty, we may have been just unlucky. We indicate this by
setting the result <em>empty = F</em>, and <em>retained entries = 0</em>. The
resulting <em>theta = min(thetaA, thetaB)</em>.
+Calling <em>getUpperBound(…)</em> on the resulting intersection will reveal
the best estimate of how many values might exist in the intersection of the raw
data.
+The <em>getLowerBound(…)</em> will be zero because it is also possible that
the two sets, A and B, were exactly disjoint.</p>
+
+<p>Note that this degenerate state can also result from an AnotB operation or
the Union operation, which will be demonstrated below.</p>
<h3 id="summary-table-of-the-valid-states-of-a-sketch">Summary Table of the
Valid States of a Sketch</h3>
<p>The <em>Has Seen Data</em> column is not an independent variable, but helps
with the interpretation of the state.</p>
@@ -583,51 +594,51 @@
<table>
<thead>
<tr>
- <th style="text-align: center">Shorthand Notation</th>
- <th style="text-align: center">theta</th>
- <th style="text-align: center">retained entries</th>
- <th style="text-align: center">empty</th>
- <th style="text-align: center">Has Seen Data</th>
+ <th style="text-align: center">Shorthand<br />Notation</th>
+ <th style="text-align: center">Theta</th>
+ <th style="text-align: center">Retained<br />Entries</th>
+ <th style="text-align: center">Empty</th>
+ <th style="text-align: center">Has Seen<br />Data</th>
<th style="text-align: center">ID</th>
- <th style="text-align: center">Comments</th>
+ <th style="text-align: left">Comments</th>
</tr>
</thead>
<tbody>
<tr>
- <td style="text-align: center">Empty {1.0,0,T}</td>
+ <td style="text-align: center">Empty<br />{1.0,0,T}</td>
<td style="text-align: center">1.0</td>
<td style="text-align: center">0</td>
<td style="text-align: center">T</td>
<td style="text-align: center">F</td>
<td style="text-align: center">5</td>
- <td style="text-align: center">Empty Sketch</td>
+ <td style="text-align: left">Empty Sketch</td>
</tr>
<tr>
- <td style="text-align: center">Exact {1.0,>0,F}</td>
+ <td style="text-align: center">Exact<br />{1.0,>0,F}</td>
<td style="text-align: center">1.0</td>
<td style="text-align: center">>0</td>
<td style="text-align: center">F</td>
<td style="text-align: center">T</td>
<td style="text-align: center">6</td>
- <td style="text-align: center">Exact Mode</td>
+ <td style="text-align: left">Exact Mode</td>
</tr>
<tr>
- <td style="text-align: center">Estimation {<1.0,>0,F}</td>
+ <td style="text-align: center">Estimation<br />{<1.0,>0,F}</td>
<td style="text-align: center"><1.0</td>
<td style="text-align: center">>0</td>
<td style="text-align: center">F</td>
<td style="text-align: center">T</td>
<td style="text-align: center">2</td>
- <td style="text-align: center">Estimation Mode</td>
+ <td style="text-align: left">Estimation Mode</td>
</tr>
<tr>
- <td style="text-align: center">Degenerate {<1.0,0,F}<sup>3</sup></td>
+ <td style="text-align: center">Degenerate<br
/>{<1.0,0,F}<sup>3</sup></td>
<td style="text-align: center"><1.0</td>
<td style="text-align: center">0</td>
<td style="text-align: center">F</td>
<td style="text-align: center">T</td>
<td style="text-align: center">0</td>
- <td style="text-align: center">Valid Intersect or AnotB result</td>
+ <td style="text-align: left">Valid Intersect<br />or AnotB result</td>
</tr>
</tbody>
</table>
@@ -645,10 +656,10 @@
<thead>
<tr>
<th style="text-align: center">Theta</th>
- <th style="text-align: center">Retained Entries</th>
- <th style="text-align: center">Empty Flag</th>
- <th style="text-align: center">Has Seen Data</th>
- <th style="text-align: center">Comments</th>
+ <th style="text-align: center">Retained<br />Entries</th>
+ <th style="text-align: center">Empty<br />Flag</th>
+ <th style="text-align: center">Has Seen<br />Data</th>
+ <th style="text-align: left">Comments</th>
</tr>
</thead>
<tbody>
@@ -657,248 +668,293 @@
<td style="text-align: center">0</td>
<td style="text-align: center">F</td>
<td style="text-align: center">T</td>
- <td style="text-align: center">If it has seen data Empty = F; ∴ Theta
cannot be = 1.0 AND Entries = 0</td>
+ <td style="text-align: left">If it has seen data Empty = F. <br />∴
Theta cannot be = 1.0 AND Entries = 0</td>
</tr>
<tr>
<td style="text-align: center">1.0</td>
<td style="text-align: center">>0</td>
<td style="text-align: center">T</td>
<td style="text-align: center">F</td>
- <td style="text-align: center">If it has not seen data Empty = T; ∴
Entries cannot be > 0</td>
+ <td style="text-align: left">If it has not seen data Empty = T. <br />∴
Entries cannot be > 0</td>
</tr>
<tr>
<td style="text-align: center"><1.0</td>
<td style="text-align: center">>0</td>
<td style="text-align: center">T</td>
<td style="text-align: center">F</td>
- <td style="text-align: center">If it has not seen data, Empty = T; ∴
Theta cannot be < 1.0 OR Entries > 0</td>
+ <td style="text-align: left">If it has not seen data, Empty = T. <br />∴
Theta cannot be < 1.0 OR Entries > 0</td>
</tr>
<tr>
<td style="text-align: center"><1.0</td>
<td style="text-align: center">0</td>
<td style="text-align: center">T</td>
<td style="text-align: center">F</td>
- <td style="text-align: center">If it has not seen data, Empty = T; ∴
Theta cannot be < 1.0</td>
+ <td style="text-align: left">If it has not seen data, Empty = T. <br />∴
Theta cannot be < 1.0</td>
</tr>
</tbody>
</table>
-<h2 id="combinations-of-states-of-two-sketches">Combinations of States of Two
Sketches</h2>
+<h2 id="state-combinations-of-two-sketches-and-set-operation-results">State
Combinations of Two Sketches and Set Operation Results</h2>
<p>Each sketch can have four valid states, which means we can have 16
combinations of states of two sketches as expanded in the following table.</p>
<table>
<thead>
<tr>
- <th style="text-align: center">ID</th>
- <th style="text-align: center">Sketch A</th>
- <th style="text-align: center">Sketch B</th>
- <th style="text-align: center">Intersection Result</th>
- <th style="text-align: center">AnotB Result</th>
- <th style="text-align: center">Result Actions</th>
+ <th style="text-align: center">Sketch A<br />State</th>
+ <th style="text-align: center">Sketch B<br />State</th>
+ <th style="text-align: center">Pair<br />ID</th>
+ <th style="text-align: center">Intersection<br />Result</th>
+ <th style="text-align: center">AnotB<br />Result</th>
+ <th style="text-align: center">Union<br />Result</th>
+ <th style="text-align: center">Actions</th>
</tr>
</thead>
<tbody>
<tr>
+ <td style="text-align: center">Empty<br />{1.0,0,T}</td>
+ <td style="text-align: center">Empty<br />{1.0,0,T}</td>
<td style="text-align: center">55</td>
- <td style="text-align: center">Empty {1.0,0,T}</td>
- <td style="text-align: center">Empty {1.0,0,T}</td>
- <td style="text-align: center">Empty {1.0,0,T}</td>
- <td style="text-align: center">Empty {1.0,0,T}</td>
- <td style="text-align: center">1,1</td>
+ <td style="text-align: center">Empty<br />{1.0,0,T}=A=B</td>
+ <td style="text-align: center">Empty<br />{1.0,0,T}=A</td>
+ <td style="text-align: center">Empty<br />{1.0,0,T}=A=B</td>
+ <td style="text-align: center">E,E,E</td>
</tr>
<tr>
+ <td style="text-align: center">Empty<br />{1.0,0,T}</td>
+ <td style="text-align: center">Exact<br />{1.0,>0,F}</td>
<td style="text-align: center">56</td>
- <td style="text-align: center">Empty {1.0,0,T}</td>
- <td style="text-align: center">Exact {1.0,>0,F}</td>
- <td style="text-align: center">Empty {1.0,0,T}</td>
- <td style="text-align: center">Empty {1.0,0,T}</td>
- <td style="text-align: center">1,1</td>
+ <td style="text-align: center">Empty<br />{1.0,0,T}=A</td>
+ <td style="text-align: center">Empty<br />{1.0,0,T}=A</td>
+ <td style="text-align: center">Sketch B</td>
+ <td style="text-align: center">E,E,B</td>
</tr>
<tr>
+ <td style="text-align: center">Empty<br />{1.0,0,T}</td>
+ <td style="text-align: center">Estimation<br />{<1.0,>0,F}</td>
<td style="text-align: center">52</td>
- <td style="text-align: center">Empty {1.0,0,T}</td>
- <td style="text-align: center">Estimation {<1.0,>0,F}</td>
- <td style="text-align: center">Empty {1.0,0,T}</td>
- <td style="text-align: center">Empty {1.0,0,T}</td>
- <td style="text-align: center">1,1</td>
+ <td style="text-align: center">Empty<br />{1.0,0,T}=A</td>
+ <td style="text-align: center">Empty<br />{1.0,0,T}=A</td>
+ <td style="text-align: center">Sketch B</td>
+ <td style="text-align: center">E,E,B</td>
</tr>
<tr>
+ <td style="text-align: center">Empty<br />{1.0,0,T}</td>
+ <td style="text-align: center">Degenerate<br />{<1.0,0,F}</td>
<td style="text-align: center">50</td>
- <td style="text-align: center">Empty {1.0,0,T}</td>
- <td style="text-align: center">Degenerate {<1.0,0,F}</td>
- <td style="text-align: center">Empty {1.0,0,T}</td>
- <td style="text-align: center">Empty {1.0,0,T}</td>
- <td style="text-align: center">1,1</td>
+ <td style="text-align: center">Empty<br />{1.0,0,T}=A</td>
+ <td style="text-align: center">Empty<br />{1.0,0,T}=A</td>
+ <td style="text-align: center">Degenerate<br />{minTheta,0,F}=B</td>
+ <td style="text-align: center">E,E,D</td>
</tr>
<tr>
+ <td style="text-align: center">Exact<br />{1.0,>0,F}</td>
+ <td style="text-align: center">Empty<br />{1.0,0,T}</td>
<td style="text-align: center">65</td>
- <td style="text-align: center">Exact {1.0,>0,F}</td>
- <td style="text-align: center">Empty {1.0,0,T}</td>
- <td style="text-align: center">Empty {1.0,0,T}</td>
+ <td style="text-align: center">Empty<br />{1.0,0,T}=B</td>
+ <td style="text-align: center">Sketch A</td>
<td style="text-align: center">Sketch A</td>
- <td style="text-align: center">1,5</td>
+ <td style="text-align: center">E,A,A</td>
</tr>
<tr>
+ <td style="text-align: center">Exact<br />{1.0,>0,F}</td>
+ <td style="text-align: center">Exact<br />{1.0,>0,F}</td>
<td style="text-align: center">66</td>
- <td style="text-align: center">Exact {1.0,>0,F}</td>
- <td style="text-align: center">Exact {1.0,>0,F}</td>
<td style="text-align: center">Full Intersect</td>
<td style="text-align: center">Full AnotB</td>
- <td style="text-align: center">6,7</td>
+ <td style="text-align: center">Full Union</td>
+ <td style="text-align: center">I,N,U</td>
</tr>
<tr>
+ <td style="text-align: center">Exact<br />{1.0,>0,F}</td>
+ <td style="text-align: center">Estimation<br />{<1.0,>0,F}</td>
<td style="text-align: center">62</td>
- <td style="text-align: center">Exact {1.0,>0,F}</td>
- <td style="text-align: center">Estimation {<1.0,>0,F}</td>
<td style="text-align: center">Full Intersect</td>
<td style="text-align: center">Full AnotB</td>
- <td style="text-align: center">6,7</td>
+ <td style="text-align: center">Full Union</td>
+ <td style="text-align: center">I,N,U</td>
</tr>
<tr>
+ <td style="text-align: center">Exact<br />{1.0,>0,F}</td>
+ <td style="text-align: center">Degenerate<br />{<1.0,0,F}</td>
<td style="text-align: center">60</td>
- <td style="text-align: center">Exact {1.0,>0,F}</td>
- <td style="text-align: center">Degenerate {<1.0,0,F}</td>
- <td style="text-align: center">Degenerate {minTheta,0,F}</td>
- <td style="text-align: center">Trim A by minTheta</td>
- <td style="text-align: center">2,4</td>
+ <td style="text-align: center">Degenerate<br />{minTheta,0,F}=B</td>
+ <td style="text-align: center">Trim A<br />by minTheta</td>
+ <td style="text-align: center">Trim A<br />by minTheta</td>
+ <td style="text-align: center">D,AT,AT</td>
</tr>
<tr>
+ <td style="text-align: center">Estimation<br />{<1.0,>0,F}</td>
+ <td style="text-align: center">Empty<br />{1.0,0,T}</td>
<td style="text-align: center">25</td>
- <td style="text-align: center">Estimation {<1.0,>0,F}</td>
- <td style="text-align: center">Empty {1.0,0,T}</td>
- <td style="text-align: center">Empty {1.0,0,T}</td>
+ <td style="text-align: center">Empty<br />{1.0,0,T}=B</td>
+ <td style="text-align: center">Sketch A</td>
<td style="text-align: center">Sketch A</td>
- <td style="text-align: center">1,5</td>
+ <td style="text-align: center">E,A,A</td>
</tr>
<tr>
+ <td style="text-align: center">Estimation<br />{<1.0,>0,F}</td>
+ <td style="text-align: center">Exact<br />{1.0,>0,F}</td>
<td style="text-align: center">26</td>
- <td style="text-align: center">Estimation {<1.0,>0,F}</td>
- <td style="text-align: center">Exact {1.0,>0,F}</td>
<td style="text-align: center">Full Intersect</td>
<td style="text-align: center">Full AnotB</td>
- <td style="text-align: center">6,7</td>
+ <td style="text-align: center">Full Union</td>
+ <td style="text-align: center">I,N,U</td>
</tr>
<tr>
+ <td style="text-align: center">Estimation<br />{<1.0,>0,F}</td>
+ <td style="text-align: center">Estimation<br />{<1.0,>0,F}</td>
<td style="text-align: center">22</td>
- <td style="text-align: center">Estimation {<1.0,>0,F}</td>
- <td style="text-align: center">Estimation {<1.0,>0,F}</td>
<td style="text-align: center">Full Intersect</td>
<td style="text-align: center">Full AnotB</td>
- <td style="text-align: center">6,7</td>
+ <td style="text-align: center">Full Union</td>
+ <td style="text-align: center">I,N,U</td>
</tr>
<tr>
+ <td style="text-align: center">Estimation<br />{<1.0,>0,F}</td>
+ <td style="text-align: center">Degenerate<br />{<1.0,0,F}</td>
<td style="text-align: center">20</td>
- <td style="text-align: center">Estimation {<1.0,>0,F}</td>
- <td style="text-align: center">Degenerate {<1.0,0,F}</td>
- <td style="text-align: center">Degenerate {minTheta,0,F}</td>
- <td style="text-align: center">Trim A by minTheta</td>
- <td style="text-align: center">2,4</td>
+ <td style="text-align: center">Degenerate<br />{minTheta,0,F}</td>
+ <td style="text-align: center">Trim A<br />by minTheta</td>
+ <td style="text-align: center">Trim A<br />by minTheta</td>
+ <td style="text-align: center">D,AT,AT</td>
</tr>
<tr>
+ <td style="text-align: center">Degenerate<br />{<1.0,0,F}</td>
+ <td style="text-align: center">Empty<br />{1.0,0,T}</td>
<td style="text-align: center">05</td>
- <td style="text-align: center">Degenerate {<1.0,0,F}</td>
- <td style="text-align: center">Empty {1.0,0,T}</td>
- <td style="text-align: center">Empty {1.0,0,T}</td>
- <td style="text-align: center">Degenerate {ThetaA,0,F}</td>
- <td style="text-align: center">1,3</td>
+ <td style="text-align: center">Empty<br />{1.0,0,T}=B</td>
+ <td style="text-align: center">Degenerate<br />{minTheta,0,F}=A</td>
+ <td style="text-align: center">Degenerate<br />{minTheta,0,F}=A</td>
+ <td style="text-align: center">E,D,D</td>
</tr>
<tr>
+ <td style="text-align: center">Degenerate<br />{<1.0,0,F}</td>
+ <td style="text-align: center">Exact<br />{1.0,>0,F}</td>
<td style="text-align: center">06</td>
- <td style="text-align: center">Degenerate {<1.0,0,F}</td>
- <td style="text-align: center">Exact {1.0,>0,F}</td>
- <td style="text-align: center">Degenerate {minTheta,0,F}</td>
- <td style="text-align: center">Degenerate {ThetaA,0,F}</td>
- <td style="text-align: center">2,3</td>
+ <td style="text-align: center">Degenerate<br />{minTheta,0,F}=A</td>
+ <td style="text-align: center">Degenerate<br />{minTheta,0,F}=A</td>
+ <td style="text-align: center">Trim B<br />by minTheta</td>
+ <td style="text-align: center">D,D,BT</td>
</tr>
<tr>
+ <td style="text-align: center">Degenerate<br />{<1.0,0,F}</td>
+ <td style="text-align: center">Estimation<br />{<1.0,>0,F}</td>
<td style="text-align: center">02</td>
- <td style="text-align: center">Degenerate {<1.0,0,F}</td>
- <td style="text-align: center">Estimation {<1.0,>0,F}</td>
- <td style="text-align: center">Degenerate {minTheta,0,F}</td>
- <td style="text-align: center">Degenerate {minTheta,0,F}</td>
- <td style="text-align: center">2,2</td>
+ <td style="text-align: center">Degenerate<br />{minTheta,0,F}</td>
+ <td style="text-align: center">Degenerate<br />{minTheta,0,F}</td>
+ <td style="text-align: center">Trim B<br />by minTheta</td>
+ <td style="text-align: center">D,D,BT</td>
</tr>
<tr>
+ <td style="text-align: center">Degenerate<br />{<1.0,0,F}</td>
+ <td style="text-align: center">Degenerate<br />{<1.0,0,F}</td>
<td style="text-align: center">00</td>
- <td style="text-align: center">Degenerate {<1.0,0,F}</td>
- <td style="text-align: center">Degenerate {<1.0,0,F}</td>
- <td style="text-align: center">Degenerate {minTheta,0,F}</td>
- <td style="text-align: center">Degenerate {minTheta,0,F}</td>
- <td style="text-align: center">2,2</td>
+ <td style="text-align: center">Degenerate<br />{minTheta,0,F}</td>
+ <td style="text-align: center">Degenerate<br />{minTheta,0,F}</td>
+ <td style="text-align: center">Degenerate<br />{minTheta,0,F}</td>
+ <td style="text-align: center">D,D,D</td>
</tr>
</tbody>
</table>
-<p>The description of each column:</p>
+<p><strong>Column Descriptions:</strong></p>
<ul>
- <li>ID: two octal digits, the first digit represents the state of Sketch A,
the second digit represents the state of Sketch B.</li>
+ <li>Pair ID: two octal digits, the first digit represents the state of
Sketch A, the second digit represents the state of Sketch B.</li>
<li>Sketch A State</li>
<li>Sketch B State</li>
<li>Intersection Result</li>
<li>AnotB Result</li>
- <li>The ID of the Intersection Result followed by the ID of the AnotB
result. The result codes are given by the following table:</li>
+ <li>Union Result</li>
+ <li>Action Codes: Intersection, AnotB, Union.</li>
</ul>
+<p>The action codes are given by the following table along with description
and where used:</p>
+
<table>
<thead>
<tr>
- <th style="text-align: center">Result Action</th>
- <th style="text-align: center">Result ID</th>
- <th style="text-align: center">Used by Intersection</th>
- <th style="text-align: center">Used By AnotB</th>
+ <th style="text-align: center">Action</th>
+ <th style="text-align: center">Action Description</th>
+ <th style="text-align: center">Intersection</th>
+ <th style="text-align: center">AnotB</th>
+ <th style="text-align: center">Union</th>
</tr>
</thead>
<tbody>
<tr>
- <td style="text-align: center">Empty{1.0,0,T}</td>
- <td style="text-align: center">1</td>
- <td style="text-align: center">Yes</td>
- <td style="text-align: center">Yes</td>
+ <td style="text-align: center">A</td>
+ <td style="text-align: center">Sketch A</td>
+ <td style="text-align: center"> </td>
+ <td style="text-align: center">&check;</td>
+ <td style="text-align: center">&check;</td>
</tr>
<tr>
- <td style="text-align: center">Degenerate{minTheta,0,F}</td>
- <td style="text-align: center">2</td>
- <td style="text-align: center">Yes</td>
- <td style="text-align: center">Yes</td>
+ <td style="text-align: center">AT</td>
+ <td style="text-align: center">Sketch A trimmed by minTheta</td>
+ <td style="text-align: center"> </td>
+ <td style="text-align: center">&check;</td>
+ <td style="text-align: center">&check;</td>
</tr>
<tr>
- <td style="text-align: center">Degenerate{thetaA,0,F}</td>
- <td style="text-align: center">3</td>
+ <td style="text-align: center">B</td>
+ <td style="text-align: center">Sketch B</td>
+ <td style="text-align: center"> </td>
<td style="text-align: center"> </td>
- <td style="text-align: center">Yes</td>
+ <td style="text-align: center">&check;</td>
</tr>
<tr>
- <td style="text-align: center">Sketch A trimmed by minTheta</td>
- <td style="text-align: center">4</td>
+ <td style="text-align: center">BT</td>
+ <td style="text-align: center">Sketch B trimmed by minTheta</td>
+ <td style="text-align: center"> </td>
<td style="text-align: center"> </td>
- <td style="text-align: center">Yes</td>
+ <td style="text-align: center">&check;</td>
</tr>
<tr>
- <td style="text-align: center">Sketch A</td>
- <td style="text-align: center">5</td>
- <td style="text-align: center"> </td>
- <td style="text-align: center">Yes</td>
+ <td style="text-align: center">D</td>
+ <td style="text-align: center">Degenerate {minTheta,0,F}</td>
+ <td style="text-align: center">&check;</td>
+ <td style="text-align: center">&check;</td>
+ <td style="text-align: center">&check;</td>
+ </tr>
+ <tr>
+ <td style="text-align: center">E</td>
+ <td style="text-align: center">Empty {1.0,0,T}</td>
+ <td style="text-align: center">&check;</td>
+ <td style="text-align: center">&check;</td>
+ <td style="text-align: center">&check;</td>
</tr>
<tr>
+ <td style="text-align: center">I</td>
<td style="text-align: center">Full Intersect</td>
- <td style="text-align: center">6</td>
- <td style="text-align: center">Yes</td>
+ <td style="text-align: center">&check;</td>
+ <td style="text-align: center"> </td>
<td style="text-align: center"> </td>
</tr>
<tr>
+ <td style="text-align: center">N</td>
<td style="text-align: center">Full AnotB</td>
- <td style="text-align: center">7</td>
<td style="text-align: center"> </td>
- <td style="text-align: center">Yes</td>
+ <td style="text-align: center">&check;</td>
+ <td style="text-align: center"> </td>
+ </tr>
+ <tr>
+ <td style="text-align: center">U</td>
+ <td style="text-align: center">Full Union</td>
+ <td style="text-align: center"> </td>
+ <td style="text-align: center"> </td>
+ <td style="text-align: center">&check;</td>
</tr>
</tbody>
</table>
-<p>Note that the results of a <em>Full Intersect</em> or a <em>Full AnotB</em>
will require further interpretation of the resulting state.
-For example, if the resulting sketch is <em>{1.0,0,?}</em>, then an
<em>Empty{1.0,0,T}</em> is returned.
-If the resulting sketch is <em>{<1.0,0,?}</em> then a
<em>Degenerate{<1.0,0,F}</em> is returned.<br />
-Otherwise, the sketch returned will be an estimating or exact <em>{theta,
>0, F}</em>.</p>
+<p>Note that the results of a <em>Full Intersect</em>, <em>Full AnotB</em>, or
<em>Full Union</em> will require further interpretation of the resulting state.
For example:</p>
+
+<ul>
+ <li>For example, if the resulting sketch is <em>{1.0,0,?}</em>, then an
<em>Empty{1.0,0,T}</em> is returned.</li>
+ <li>If the resulting sketch is <em>{<1.0,0,?}</em> then a
<em>Degenerate{<1.0,0,F}</em> is returned.</li>
+ <li>Otherwise, the sketch returned will be an estimating <em>{minTheta,
>0, F}</em>, or exact <em>{1.0, >0, F}</em>.</li>
+</ul>
<h2 id="testing">Testing</h2>
<p>The above information is encoded as a model into the special class <em><a
href="https://github.com/apache/datasketches-java/blob/master/src/main/java/org.apache.datasketches.SetOperationCornerCases.java">org.apache.datasketches.SetOperationsCornerCases</a></em>.
This class is made up of enums and static methods to quickly determine for a
sketch what actions to take based on the state of the input arguments. This
model is independent of the implementation of the Theta Sketch, whether t [...]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]