In computer science, human-based computation is a technique when an algorithm ora computational process employs humans and relies on human abilities to perform its function, e.g.using human abilities to solve a certain computational problem or a set of problems. This approach explores differences in abilities and alternative costs between humans and computer agents to achieve symbiotic human-computer interaction.
In traditional computation, a human employs computer to solve a problem: a human provides a formalized problem description to a computer, and receives a solution to interpret. In human-based computation, the roles are reversed: computer asks a person or often manya large number of people to solve a problem, then collects, interprets, and integrates their solutions. Precursors of this idea are interactive programs requesting input from a user, e.g. asking a confirmation to delete a file. However, this concept in its explicit form appeared at the intersection of computer graphics and evolutionary computation. [Sims 91] used human visual perception and esthetic ability to implement evaluation function in evolutionary programming application and evolve pieces of graphic art this way. The crucial difference here is agency: Sim's program was no longer an agent of its user, but rather a coordinator of many human evaluators who became agents of the program. Human-based genetic algorithm is a logical extension of this approach where human also can contribute their innovative solutions into the process and thus have more control over the functions they are performing.
The following table from [Kosorukoff 00] uses the evolutionary computation model to describe four classes of computation, three of which rely on humans in some role. The classification is in terms of the roles (innovation or selection) performed in each case by humans and computational processes. This table also has a third dimension, determining how coordination among agents is performed. Here we assume that coordination is performed by a program.