Type of function that is easy to compute in one direction, yet difficult to compute in the opposite direction without special information