反复搜索替换直到收敛

Repeated search replace until convergence

我正在搜索以下问题的名称和有效解决方案:假设我有一个字符串 s='abcdef' 和一组 find/replace 规则 Pn

P1: ab -> xy
P2: xyc -> 123
P3: ef -> ab

将这些规则依次应用于 s 我可以得到以下字符串:

1. xycdef
2. 123def
3. 123dab
4. 123dxy

我的目标是达到 "stable" 已应用所有(大多数?)规则的状态(此处:123dxy)。

所以我的问题是,是否有明确定义的方法来处理此类问题?是否对规则有一般约束以避免无限循环(例如,ab -> xyxy -> ab)。有没有办法确定最大迭代次数的界限?

任何指向相关 concepts/related 工作的指针都将受到赞赏。

我会将其转化为图形问题。
在你的例子中,我会有一个名为 ab 的节点,另一个 xyxyc,等等
根据规则,节点之间存在有向边。
这里:V={ab, xy, xyc, 123, ef}; E={(ab,xy), (xyz.123), (ef, ab)}

基本检查:
如果在这个阶段你的图表中有循环,那么你就有了真正的问题。

前缀:
ab -> xyxyc -> 123 的情况给我们带来了一个问题,即两个规则不是问题,除非给定的字符串是以某种方式构建的。 (abc 变为 xyc)。这可以用以某种方式标记的有向边来检查。如果 他们 创建一个循环,那么您将遇到某些字符串的问题,但其他字符串不会。

希望对您有所帮助。