在尝试对多项式进行建模时,特别是它们的乘法运算时,我遇到了以下问题。在乘法运算期间,两个多项式的单个单项式相乘,当然可能发生我有(3x^2 y + 5x y^2)*(x + y)。结果包含3x^2 y^2和5 x^2 y^2,我想通过加法立即合并。允许分别提供等值比较器和散列函数的映射
当然,我希望使用单项部分x^2 y^2作为(散列)映射中的一个键来合并不同的系数(示例中的3和5)。但是我设想它的单项对象当然也应该包含系数,它应该是而不是是地图关键字的一部分。
当然,我可以写出单项对象的equals/hashcode,以使它们忽略系数。但是这种感觉真的太错了,因为在数学上,如果系数是相等的,那么单项式显然只与另一个相等。
为中间操作引入一个无系数单项对象也看起来不正确。
除了使用地图,我可以使用一个列表并使用二进制搜索与专用比较器忽略系数。
实现一个不使用键'等号/哈希码,但专用的地图的缺点,有没有更好的想法如何融合单项式?
使用Wrapper当然是一种可能性,但我认为这太多开销,如果不是性能(尽早优化),但从概念上讲,这在我看来太多了。 – Harald 2014-09-12 19:06:11
然后尝试使用TreeMap,但这应该是TreeMap>或者你不应该忘记求和系数:) –
NoDataFound
2014-09-12 20:33:13