擅长:python、mysql、java
<p>实际上,您正在构建/找到一个<strong>表达式简化器</strong>,它可以处理:</p>
<ul>
<li><strong>+</strong>(用您的术语:<code>followed_by</code>)</li>
<li>*****(用你的话说:<code>inside</code>)</li>
<li><strong>^,日志!</strong>(表示复杂性)</li>
<li><strong>变量</strong>(如<code>n</code>,<code>m</code>)</li>
<li><strong>常量数</strong>(就像<code>2^n</code>中的那样)</li>
</ul>
<p>例如,当您给出<code>f_time.inside(g_time).followed_by(h_time)</code>时,它可以是如下表达式:</p>
<p><code>n*(n^2)+(n^(1/2))</code></p>
<p>,并期望处理器将其输出为:<code>n^3</code>。在</p>
<p>因此,一般来说,您可能希望使用<a href="https://stackoverflow.com/questions/7540227/strategies-for-simplifying-math-expressions">common expression simplifier</a>(如果您希望它有趣,请查看<a href="http://www.wolfram.com/learningcenter/tutorialcollection/MathematicsAndAlgorithms/MathematicsAndAlgorithms.pdf" rel="nofollow noreferrer">Mathemetica</a>是如何实现的)来获得一个简化的表达式,如<code>n^3+n^(1/2)</code>,然后您需要一个额外的处理器从表达式中选择复杂度最高的术语并去掉其他术语。这很简单,只需使用一个表来定义每种符号的复杂性顺序。在</p>
<p>请注意,在本例中,表达式只是符号,您应该将其写成<code>string</code>(例如:<code>f_time = "O(n)"</code>),而不是函数。在</p>