Skip navigation.
Personalize your internet.

Calculating Levels of Trust

In the simple case, the numerical trust value of an informer (or a report) can be expressed as the inverse of the minimum number of “hops” required to reach the informer (or the informer making the report) starting from the user’s informer file. For example, if the user trusts informer X who in turn expresses trust in informer Y, then informer Y and the reports in Y’s informer file would be two hops away from the user. To prevent values of infinity for cases where the number of hops is zero (i.e. in cases where the user has made the report), we add one to the number of hops before taking the inverse.

More generally, the trust placed in target t relative to a source informer s is shown in Equation 1:

This is the model which is currently used by Outfoxed. However, looking to the future, other factors can and should be included for a more realistic evaluation of a report's relevance to the users.

Explicit trust level

In the previous section trust and distrust were discrete, and the trust value of each informer was directly related to the number of hops to the user. However, more fine-grained values of trust are possible and should be preferred. In the following examples, trust is defined as having values in the range [0,1], where 1 indicates complete trust and 0 indicates distrust. Trust values may also be undefined in cases where a numerical value cannot be determined. (Thanks to Mike Berger for help with the following formal representations.)

For non-discrete values of trust, the trust value of an informer is found in the following manner:

Trust is defined between two informers, the source s and the target t. Typically, s will be the user of the system. To calculate how much s trusts t, we consider all informers which have an edge to t (i.e. all informers with a report about t). In the figure below, these are labeled as i1 to in. (Note that these informers need not be directly trusted by s, in which case there will be a chain of intermediate informers.)

If there are no informers with an edge to t (i.e. n=0), the trust between s and t is undefined.

trust(s,t) = undefined

If there is only one such informer (i.e. n=1), we multiply the trust of this informer by how much this informer trusts the target. Note that this requires recursively determining the trust value of this informer.

trust(s,t) = trust(s,i1) • edge(i1,t)

If there is more than one such informer (i.e. n>1), we choose the one with the highest trust value, and multiply this value by how much this informer trusts the target, as shown in the equation below. As in the single informer case, trust values are determined by recursively determining each value of trust(s,in) for all n informers. In the equation, imax is the informer which had the highest trust value, max(trust(s,i)).


A report may be for a specific URI, or for a range of URIs. Typically this is the difference between rating a single web page and an entire domain.

It is clear that a report that is more specific is more relevant that one which is general.

The current implementation takes this to the extreme, with specific reports always taking priority over general. It may be advantages in future development or in certain applications for this effect to be moderated.


Tags can also be used to vary path lengths. When a user adds an informer, they can add tags indicating particular areas where this informer is trusted (or not trusted). For example, if your friend Bob is a good car mechanic but with very bad sense of humor, you might give him the tags "car repair auto-funny -humor". This means that his reports will take preference on pages tagged as auto, repair, or auto, and that his reports will be deprecated on pages tagged as humor or funny.

Althought the current standard does not support it, it may be useful in the future to include a degree attribute with each tag. This would normally represent the degree that the tag applies to its target, and for informers would represent the degree of trust placed in that informer for the given tag.

[TODO: this only slightly modified from Tagging. Need to organize this.]