VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1024|回复: 6

如何判断两个运算表达式(字符串)是否等价,例如如a*(b+c)与a*b+a*c等价

[复制链接]

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-16 14:00:01 | 显示全部楼层 |阅读模式
如何判断两个运算表达式(字符串)是否等价,例如a*(b+c)与a*b+a*c等价
回复

使用道具 举报

2

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-4-18 13:30:01 | 显示全部楼层
用数值多代入几次就可以了
回复

使用道具 举报

0

主题

8

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-5-21 11:30:01 | 显示全部楼层
不知道你的问题是不是涉及到字符串操作的内容。如果是这样的话,我到有个思路:
1.假设你有N个字符串,他们不敬相同,但是我们可以为他们寻找一个标示(signature),在本文的例子中,我们可以认为"a*b+a*c"是他们的一个标示。
2.将所有的字符串按照某种策略转化,如果他们转化的结果和标示是一致的,则认为他们是等价的,否则不是等价的。
这个想法是从寻找"anagrams"的算法中找到灵感。具体的算法你可以自己搜搜。
回复

使用道具 举报

0

主题

9

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-7-3 13:15:01 | 显示全部楼层
用编译原理的方法吧!
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-7-6 16:30:02 | 显示全部楼层
a*(b+c)与a*b+a*c等价 即 a*(b+c)-(a*b+a*c)=0

将a*(b+c)-(a*b+a*c)逆波兰,再多项式化减看能否归零

考虑除法得话麻烦些 :),以前学C++的时候练习写了个
回复

使用道具 举报

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-7-13 21:00:02 | 显示全部楼层
to zhengwei198422:
a*(b+c)-(a*b+a*c)的逆波兰应该是:
abc+*ab*ac*+-吧,请问下一步多项式化简应如何操作,本人比较菜
回复

使用道具 举报

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-7-13 21:15:01 | 显示全部楼层
to zhengwei198422:
a*(b+c)-(a*b+a*c)的逆波兰应该是:
abc+*ab*ac*+-吧,请问下一步多项式化简应如何操作,本人比较菜
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表