問題は、BNF で指定されたような入力関数があるとsin(2-cos(3*A/B)^2.5)+0.756*(C*D+3-B)
します。再帰降下アルゴリズムを使用して入力を解析し、ダイクストラのアルゴリズムを使用または変更して、この特定の関数を処理するにはどうすればよいでしょうか? sin | で実行する必要があります。コス | 平方根 | ln では、ダイクストラのアルゴリズムが作業を行う必要があります。
編集:私も尋ねるべきかもしれません:特定の機能を表すためのベストプラクティスまたはデータ構造は何ですか?
EDIT:入力セットは次のように取得できます:
C 0.01 .01 .02 .04 .08 .02 .02 .04
A .016 .008 .116 .124 .147 .155 .039 .023
D .012 .025 .05 .1 .1 .1 .025 .012000 .012
B .007 .007 .015 .022 .029 .036 .044 .051 .058 .066 .073 .080
編集: Shunting Yard は、入力関数を RPN に変換するアルゴリズムですが、sin | のような別の関数を受け入れるように拡張するにはどうすればよいですか? コス | 平方根 | ん?再帰降下は、Shunting Yard に必要な拡張を提供しますか?