私は現在、変数で機能するシャンティング ヤード アルゴリズムの修正版に取り組んでいますが、それを機能させる方法がわかりません。たとえば、アルゴリズムで 2 * (2x + 5) - 5 を 4x + 5 に書き換えたいと思います。これを既に実行している既に実装されているアルゴリズムへのアイデア/リンクはありますか?
1294 次
1 に答える
4
- 次の式を使用します。
2 * (2x + 5) - 5
- * 記号を追加して、コンピューターにとってより理解しやすいようにします。
2 * (2*x + 5) - 5
- Shunting Yard Algorithm を使用して解析すると、次のようになります:
2 2 x * 5 + * 5 -
(各文字は配列の要素と見なすことができます)。 - 解析された式を使用して、バイナリ ツリーを作成します。
-
/ \
* 5
/ \
2 +
/ \
* 5
/ \
2 x
5.代数ルールを定義してツリーに適用します。2
たとえば、ノードを2 * x + 5
サブツリーで「乗算」できるルール。
于 2014-08-15T03:20:39.430 に答える