In Social Code the excellent (albeit sceptically applied) phrase "social algorithm" found its way into the Terra Nova lexicon. This led to a small spiral on algorithms, their sociability, and a little bit about agency, software, and a flirtation with social AI, and finally to speculation of a social algorithm...
First off, we need a working sense of algorithm. The Wikipedia offers us:
...an algorithm is a procedure (a finite set of well-defined instructions) for accomplishing some task which, given an initial state, will terminate in a defined end-state...
Informally, the concept of an algorithm is often illustrated by the example of a recipe, although many algorithms are much more complex; algorithms often have steps that repeat... or require decisions (such as logic or comparison)...
Great. A quick Googling then suggests that a working definition of "social algorithm" seems to have been adopted in Multi-Agent Systems (MAS) literature. Excellent.
Software agents imply a range of Computer Science concerns related to the many challenges that software built from pieces operating with some degree of independence can pose. As was earlier mentioned (e.g. [1.], [2.] ), such topics are as of a practical matter not very far removed from the concerns of the games industry...
In MAS literature "social laws" have been occasionally suggested as an organizing principle (e.g., ref [1.] , [2.] ). The idea here is that if all the bits of unleashed code were rooted in some "social" framework they might be more responsible and productive - ant colonies are but one metaphorical tease.
While the MAS usage is an interesting offering, it feels like it advances social algorithm as a social simulation: there is little direct contact with the people, so to speak. Yet imagine a workflow - another algorithmic form - containing both software and human components. Imagine an MMORPG where players play the AI...
Fascinating stuff and somewhat abstract even for the likes of us navel-gazing Terra Novans.
However, along the way comes interesting discussion ( ACM Queue) of the Amazon Mechanical Turk (AMT). The AMT is, as best I can tell, an Amazon web-service offered to web-developers using which they can ask Artificial Intelligence (AI) like questions about content using a standard software interface pattern (remote procedure call). But the kicker is that the answers would come from a vast human participation (btw, for profit):
...The application sends the request, and the service returns the results. In reality, a network of humans fuels this “artificial artificial intelligence” by coming to the Web site, searching for and completing tasks, and receiving payment for their work. This allows software developers to easily and economically build programs that tap into a worldwide, massively parallel, Internet-scale human workforce on an incremental, as-needed basis...
A truly social algorithm?
I dont really feel that this would be a 'social algorithm' unless there's some amazing work being done on how the participants interact with one another. Personally when I read this I imagine it's more like a set of task-distribution algorithms in the traditional computing sense to distribute work between willing participants, and then the opposite sorts of things to feed the responses back.
That's not to say this isn't a neat idea, and if they can get it right (that is, make it easy to use from both sides, and address the problems of incorrect answers by accident or negligence/fraud) then it could find all manner of uses.
Posted by: Daniel Stephens | May 10, 2006 at 23:37
If you really want a "social algorithm" in the sense that keeps being brought up, take a look at systems that try to pair likely partners in computerised dating systems.
The first mention I recall seeing of a concept of social matchmaking (in an MMO) was an interview with Richard Garriot about his ideas for his next MMO (this was pre-Tabula rasa, in the UO2, UOX era). He mentioned that he really wanted to push an MMO storytelling system that would engineer the creation of friends and enemies from other players. Of course, the LFG / LFM system is a social system, although it's arguable that the algorithm that powers the system is no more "social" than any other.
I keep getting this feeling that the current debate is fixating on finding a Deus Ex to fill the void of this abstract concept so that everyone can pat themselves on the back and rejoice in the birth of a new paradigm of computer science.
So why "algorithm", and not "system"? The concept of the design of social systems that promote social interaction, particularly within a game world really doesn't seem that foreign to me, but the concept of an "algorithm" gives me the sense of some well defined process that cranks out an "answer" within the domain of possible solutions.
To find myself strangely drawn back to The Hitchhiker's Guide:
If a social algorithm cranks out an anwser and is what we're all looking for to solve our issues, what's the question?
Posted by: Daniel Speed | May 11, 2006 at 07:08
So why "algorithm", and not "system"? The concept of the design of social systems that promote social interaction, particularly within a game world really doesn't seem that foreign to me, but the concept of an "algorithm" gives me the sense of some well defined process that cranks out an "answer" within the domain of possible solutions.
To find myself strangely drawn back to The Hitchhiker's Guide:
If a social algorithm cranks out an anwser and is what we're all looking for to solve our issues, what's the question?
-----------------------------------------------
Just to play with this a bit - I think it may come down to the precision one wishes to discuss the underlying logic of the process. For example, one might be more apt to describe a system less exactly - in terms of its properties, data-flow etc. Whereas if one had a fairly good handle (even if only statistical) on the behavior of the same system (as well a desire to roll it out in its full detail), perhaps an algorithmic description is appropriate. The latter allows one to abstract away from the implementation a logic which presumably is portable across implementations.
Posted by: Nate | May 12, 2006 at 02:46
A system can be equally well defined in terms of its process, but a system isn't required to produce an answer for a given set of inputs.
To go back to the original post and borrow from wikipedia again:
"In mathematics and computer science, an algorithm is a procedure (a finite set of well-defined instructions) for accomplishing some task which, given an initial state, will terminate in a defined end-state."
So an algorithm would be something that (for example) takes a set of inputs like, the available people in an online dating service, and for a specific person, returns the people who best match their mutual preferences.
You can apply algorithmic analysis to it and say (again, f.ex.) that the computation required to find those matches grows at O(n) where n is the size of the user base.
A system would be able to be a more nebulous thing that continually sends people suggestions for other users they might get along with. Since there's no well defined termination condition (solution) to this, it's not an algorithm. The part that picks the recipient and person whom it suggests however, would be an algorithm, since it would have well defined inputs and outputs, and could be analysed for it's computational complexity.
Algorithm:
The steps taken to answer: "Which guild is this user most likely to fit in with and be accepted into?"
System:
"A service that mails users suggesting guilds they might want to consider joining"
In these cases, the system is designed to do something socially inclined - however, the algorithm is likely to be merely performing well defined steps of finding a best match for various variables. The same pattern matching process could very likely be applied to other things not inherently social, which makes labelling the algorithm a "social" one a dubious proposition.
Posted by: Daniel Speed | May 12, 2006 at 19:52
Daniel Speed>
the system is designed to do something socially inclined - however, the algorithm is likely to be merely performing well defined steps of finding a best match for various variables. The same pattern matching process could very likely be applied to other things not inherently social
---------------------------
I think there are two separable arguments in play here.
The *first issue* is whether something like AMT should be thought of in terms of a long running service or in terms of its transactions - open-ended vs. end-state-terminated, system vs. algorithm.
The *second issue* is whether is whether a series of computed steps (algorithm) can ever be "social" or is it just, well, computation (by the definition of algorithm).
The question of the Amazon Mechanical Turk example let me recast as: can a human population that performs some work within a software system (<=) be described in algorithmic terms?
For example.
If i had an auditorium full of people, I passed out flash cards. I asked everyone to write their age on it. Then I asked them to line up on the center court and via instructions over a bullhorn had them implement some sorting algorithm - say QuickSort: they are then all lined up by age. Would it be fair to describe (and subsequent analyze) their interactions via the algorithm used?
Now imagine I hired someone to sit at desk answer the phone. Imagine then I invited the world to call in and submit their age.. then with bull horn.. merged.. report back their age rank (in terms of pool of cards held by auditorium folk).
Now flip it.
Folks call in with a judgement question. Everyone in auditorium goes into a huddle and eventually votes: aye or nay! I run around and document the rules used.
algorithm?
social algorithm?
Posted by: Nate | May 13, 2006 at 17:00
Folks call in with a judgement question. Everyone in auditorium goes into a huddle and eventually votes: aye or nay! I run around and document the rules used.
---------
In my opinion, not an algorithm. There's no well defined instructions, despite there being an input and termination state. If you restrict the instructions to the systems that deal with the result, then they're applicable to anything else that could produce a result (including a dice throw) and the algorithm isn't social.
The key to finding a social algorithm is probably first to find a well defined computational step that's inherently social (does this even make sense?). The results of a social system aren't good enough in my opinion, since that makes counting votes a 'democratic algorithm' when it's really just computational.
I think the requirement is a contradiction in terms. You can take social results and feed them into algorithms to build a social system, but you can't take something intentionally not well defined and build something that's still an algorithm.
Posted by: Daniel Speed | May 14, 2006 at 04:14