<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.formulasearchengine.com/index.php?action=history&amp;feed=atom&amp;title=Intersection_%28Euclidean_geometry%29</id>
	<title>Intersection (Euclidean geometry) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://en.formulasearchengine.com/index.php?action=history&amp;feed=atom&amp;title=Intersection_%28Euclidean_geometry%29"/>
	<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/index.php?title=Intersection_(Euclidean_geometry)&amp;action=history"/>
	<updated>2026-05-31T16:40:13Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0-wmf.28</generator>
	<entry>
		<id>https://en.formulasearchengine.com/index.php?title=Intersection_(Euclidean_geometry)&amp;diff=30325&amp;oldid=prev</id>
		<title>en&gt;Incnis Mrsi: not restricted to points anymore (+ fixed a hell of typos, apparently also a bit of German accent?)</title>
		<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/index.php?title=Intersection_(Euclidean_geometry)&amp;diff=30325&amp;oldid=prev"/>
		<updated>2014-01-29T17:58:34Z</updated>

		<summary type="html">&lt;p&gt;not restricted to points anymore (+ fixed a hell of typos, apparently also a bit of German accent?)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Datafly algorithm&amp;#039;&amp;#039;&amp;#039; is an algorithm for providing anonymity in medical data. The algorithm was developed by [[L. Sweeney]] in 1997&amp;amp;minus;98.&amp;lt;ref&amp;gt;{{cite web|last=Latanya Sweeney|title=Datafly: a system for providing anonymity in medical data|url=http://dataprivacylab.org/datafly/|accessdate=19 January 2014}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;L. Sweeney,  Datafly: a system for providing anonymity in medical data. Database Security, XI: Status and Prospects, T. Lin and S. Qian (eds), Elsevier Science, Amsterdam, 1998.[http://dataprivacylab.org/datafly/paper2.pdf]&amp;lt;/ref&amp;gt; The anonymization is achieved by automatically generalizing, substituting, inserting and removing information as appropriate with-out losing many of the details found within the data.  The method can be used on the fly in role-based security within an institution, and in batch mode for exporting data from an institution. &lt;br /&gt;
Organizations release and receive medical data with all explicit identifiers, such as name, etc.  removed in the wrong belief that patient confidentiality is maintained because the resulting data look anonymous. However the remaining data can be used to re-identify individuals by linking or matching the data to other databases or by looking at unique characteristics found in the fields and records of the database itself.&lt;br /&gt;
The Datafly algorithm has been criticized for trying to achieve anonymization by over-generalization. The algorithm selects  the attribute with the greatest number of distinct values as the one to generalize first.&amp;lt;ref&amp;gt;{{cite web|last=Li Xiong|title=Data Anonymization - Generalization Algorithms|url=http://www.mathcs.emory.edu/~lxiong/cs573_s12/share/slides/0131_generalization_slawek.pdf|accessdate=19 January 2014}}&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==Core algorithm==&lt;br /&gt;
An outline of the Datafly algorithm is presented below.&amp;lt;ref&amp;gt;{{cite book|last=Latanya Sweeney|title=Computational Disclosure Control A Primer on Data Privacy Protection|publisher=MIT|page=113|url= http://hdl.handle.net/1721.1/8589}}&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Input&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Private Table PT; quasi-identifier QI = (  &amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, ..., &amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt; ), &amp;#039;&amp;#039;k&amp;#039;&amp;#039;-anonymity constraint &amp;#039;&amp;#039;k&amp;#039;&amp;#039;; domain generalization hierarchies DGH&amp;lt;sub&amp;gt;A&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt;, where &amp;#039;&amp;#039;i&amp;#039;&amp;#039; = 1,...,&amp;#039;&amp;#039;n&amp;#039;&amp;#039; with accompanying functions &amp;#039;&amp;#039;f&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;A&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt;, and loss, which is a limit on the percentage of tuples that can be suppressed. PT[id] is the set&lt;br /&gt;
of unique identifiers (key) for each tuple.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Output&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
MGT a generalization of PT[QI] that enforces &amp;#039;&amp;#039;k&amp;#039;&amp;#039;-anonymity&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Assumes&amp;#039;&amp;#039;&amp;#039;: | PT | ≤ &amp;#039;&amp;#039;k&amp;#039;&amp;#039;, and loss * | PT | = &amp;#039;&amp;#039;k&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;algorithm Datafly&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
// Construct a frequency list containing unique sequences of values across the quasi-identifier in PT,&lt;br /&gt;
&lt;br /&gt;
// along with the number of occurrences of each sequence.&lt;br /&gt;
&lt;br /&gt;
:1. let freq be an expandable and collapsible Vector with no elements initially. Each element is of the form ( QI, frequency, SID ), where SID = { &amp;#039;&amp;#039;id&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; :  &amp;amp;exist;  &amp;#039;&amp;#039;t&amp;#039;&amp;#039;[&amp;#039;&amp;#039;id&amp;#039;&amp;#039;] &amp;amp;isin; [&amp;#039;&amp;#039;id&amp;#039;&amp;#039;]  &amp;amp;rArr; &amp;#039;&amp;#039;t&amp;#039;&amp;#039;[&amp;#039;&amp;#039;id&amp;#039;&amp;#039;] = &amp;#039;&amp;#039;id&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; }; and, frequency = |SID|. Therefore, freq is also accessible as a table over (QI, frequency, SID).&lt;br /&gt;
&lt;br /&gt;
:2. let pos &amp;lt;math&amp;gt; \gets&amp;lt;/math&amp;gt; 0, total &amp;lt;math&amp;gt; \gets&amp;lt;/math&amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
:3. while total ≠ |PT| do&lt;br /&gt;
&lt;br /&gt;
::3.1 freq[pos] &amp;lt;math&amp;gt; \gets&amp;lt;/math&amp;gt; ( &amp;#039;&amp;#039;t&amp;#039;&amp;#039;[QI], occurs, SID ) where &amp;#039;&amp;#039;t&amp;#039;&amp;#039;[QI] &amp;amp;isin; [QI], ( &amp;#039;&amp;#039;t&amp;#039;&amp;#039;[ QI ],__, ___ ) &amp;lt;math&amp;gt;\not\in&amp;lt;/math&amp;gt; freq; occurs = |PT| - |PT[QI] – {&amp;#039;&amp;#039;t&amp;#039;&amp;#039;[QI]}|; and, SID = { &amp;#039;&amp;#039;id&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; : &amp;amp;exist; &amp;#039;&amp;#039;t&amp;#039;&amp;#039;[&amp;#039;&amp;#039;id&amp;#039;&amp;#039;] &amp;lt;math&amp;gt; \gets&amp;lt;/math&amp;gt; PT[id] &amp;amp;rArr;    &amp;#039;&amp;#039;t&amp;#039;&amp;#039;[&amp;#039;&amp;#039;id&amp;#039;&amp;#039;] = &amp;#039;&amp;#039;id&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; } &lt;br /&gt;
&lt;br /&gt;
::3.2 pos &amp;lt;math&amp;gt; \gets&amp;lt;/math&amp;gt; pos + 1, total &amp;lt;math&amp;gt; \gets&amp;lt;/math&amp;gt; total + occurs &lt;br /&gt;
&lt;br /&gt;
:// Make a solution by generalizing the attribute with the most number of distinct values &lt;br /&gt;
&lt;br /&gt;
:// and suppressing no more than the allowed number of tuples.&lt;br /&gt;
&lt;br /&gt;
:4. let belowk &amp;lt;math&amp;gt; \gets&amp;lt;/math&amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
:5. for pos &amp;lt;math&amp;gt; \gets&amp;lt;/math&amp;gt; 1 to |freq| do&lt;br /&gt;
&lt;br /&gt;
::5.1 ( __, count  ) &amp;lt;math&amp;gt; \gets&amp;lt;/math&amp;gt; freq[pos]&lt;br /&gt;
&lt;br /&gt;
::5.2 if count &amp;lt; &amp;#039;&amp;#039;k&amp;#039;&amp;#039; then do&lt;br /&gt;
&lt;br /&gt;
:::5.2.1 belowk &amp;lt;math&amp;gt; \gets&amp;lt;/math&amp;gt; belowk + count&lt;br /&gt;
&lt;br /&gt;
:6. if belowk &amp;gt; &amp;#039;&amp;#039;k&amp;#039;&amp;#039; then do: // Note. loss * |PT| = &amp;#039;&amp;#039;k&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
::6.1 freq &amp;lt;math&amp;gt; \gets&amp;lt;/math&amp;gt; generalize(freq)&lt;br /&gt;
&lt;br /&gt;
::6.2 go to step 4&lt;br /&gt;
&lt;br /&gt;
:7. else do&lt;br /&gt;
&lt;br /&gt;
:// assert: the number of tuples to suppress in freq is ≤ loss * |PT|&lt;br /&gt;
&lt;br /&gt;
::7.1 freq &amp;lt;math&amp;gt; \gets&amp;lt;/math&amp;gt; suppress( freq, belowk )&lt;br /&gt;
&lt;br /&gt;
::7.2 MGT &amp;lt;math&amp;gt; \gets&amp;lt;/math&amp;gt; reconstruct(freq)&lt;br /&gt;
&lt;br /&gt;
:8. return MGT.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
[http://cs.utdallas.edu/dspl/cgi-bin/toolbox/javadoc/datafly/Datafly.html Details of the Datafly algorithm]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Privacy]]&lt;br /&gt;
[[Category:Anonymity]]&lt;/div&gt;</summary>
		<author><name>en&gt;Incnis Mrsi</name></author>
	</entry>
</feed>