オブジェクトのクラス(たとえば、グラフ、文字列)、およびこれらのオブジェクトの等価関係があるとします。グラフの場合、これはグラフ同型になります。文字列の場合、互いにアナグラムである場合、2つの文字列を同等に宣言できます。
等価クラスの代表を計算することに興味があります。つまり、xとyが同等である場合、任意の2つのオブジェクトx、y、f(x)= f(y)のような関数f()が必要です。(*)
アナグラムの例では、f(s)は文字列内の文字をソートできます。f( 'cabac')= 'aabcc'。グラフ同型の場合、f(G)を、Gに同型で、このプロパティを持つ語彙的に最初のグラフであるグラフG 'とすることができます。
ここで質問:2つの要素が同等であるかどうかを判断する問題が「簡単」(ポリタイム可解)で、代表を見つけるのが難しい(つまり、f()を計算するポリタイムアルゴリズムが( *))。