6 Feb 2010 8191   » (Apprentice)

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.

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!