6 Feb 2010 (updated 6 Feb 2010 at 16:01 UTC)
»
A user becomes a Journeyer with a single certification, from
another user who was, in turn, certified by a single user. I
see a problem there. There's way too much trust
passing through a single vertex in the graph.
Let's put on our Dijkstra hats and think of a solution.
Here's one possibility: create a special vertex - let's call
it the "sink". Create edges from every vertex in the graph to
the sink (the weight of this edge would need to be tweaked a
bit). This would add some "leaking" to trust, and help avoid
this sort of situation. The actual masters would
continue to be masters, but users with few certifications
would see their ratings decreased.
An objection to that solution: it would be hard for vertices
that are far from the sources to get their ratings raised.
But I don't think there are that many "hops" from the
sources to vertices that truly deserve trust.
Edit: looks like I misunderstood how the trust
metric works. I assumed that mod_virgule would somehow
find the sinks in the graph before running the network flow
algorithm, but that wouldn't work, since sinks may not even
exist (and they probably don't). All vertices are already
connected to a single "supersink" - there's no other way.
And the problem of users far from the sources not getting
certified already exists.
Anyway, there already is a way to attain the proposed
"solution", which doesn't even involve code changes: simply
decrease the node capacities as a function of source
distance; this is defined in
config.xml, inside the <caps> tag.