重复搜索替换直到收敛

时间:2016-08-31 07:55:45

标签: algorithm replace convergence

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

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

按顺序将这些规则应用于s我可以得到以下字符串:

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

我的目标是达到一个“稳定”状态,其中应用了所有(大多数?)规则(此处:123dxy)。

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

对相关概念/相关工作的任何指示表示赞赏。

1 个答案:

答案 0 :(得分:1)

我会把它翻译成图形问题 在您的情况下,我会有一个名为ab的节点,另一个xyxyc等。 根据规则,节点之间存在定向边 这里:V={ab, xy, xyc, 123, ef}; E={(ab,xy), (xyz.123), (ef, ab)}

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

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

希望这会有所帮助。