有限集合と2つの数AとBが与えられた場合、f(A) = B
を満たす複合関数を決定する最速の方法は何でしょうか?例えば既存の関数の有限集合からターゲット関数を構成する最も速い方法
我々が持っている場合は、:
functions = {
f1(x) = x - 1,
f2(x) = x + 1,
f3(x) = x * x
}
と A = 1, B = 9
を次に最適解は次のようになります。f(x) = f3(f2(f2(x)))
。 f(A) = B
であり、その機能は可能な限り少ない機能で構成されているからです。
解決する最速の解決策は最適ではないかもしれません。いずれの面でもアドバイスをいただければ幸いです。あなたの例では
これらの関数 'f1'、' f2'、および 'f3'は固定されていますか?では、それらを知るアルゴリズムを書くのですか?あなたが関数の可変リストを持っていたいのであれば、この質問は全く答えることができません。 –
実数が許されている場合(通常、関数について話すときに仮定されます)、ほとんどの 'A、B'ペアは与えられた関数の解を全く持たないでしょう。例えば' A'が整数でB 'A = 1、B = 1.1'のようにはなりません。しかし、ドメインを整数に制限し、関数 'f1(x)= 4 * x'と' f2(x)= x * x'を取ると、例えば '2 'のような' B'の値に達することはありません、3、5、6、7、10、... 'Aの値が何であっても。したがって、関数に関する情報があらかじめわかっていなければ、ほとんどの場合、検索は無限になります。 – coproc
@MikePierceはい、セット内の関数は定数になりますが、セット内の関数に関係なく機能する一般的なソリューションがあるかどうか疑問に思っていました。 –