我正在搜索以下问题的名称和有效解决方案:假设我有一个字符串s='abcdef'
和一组查找/替换规则Pn
P1: ab -> xy
P2: xyc -> 123
P3: ef -> ab
按顺序将这些规则应用于s
我可以得到以下字符串:
1. xycdef
2. 123def
3. 123dab
4. 123dxy
我的目标是达到一个“稳定”状态,其中应用了所有(大多数?)规则(此处:123dxy
)。
所以我的问题是,有没有明确的方法来处理这类问题?是否存在对规则的一般约束以避免无限循环(例如,ab -> xy
,xy -> ab
)。有没有办法确定最大迭代次数的界限?
对相关概念/相关工作的任何指示表示赞赏。
答案 0 :(得分:1)
我会把它翻译成图形问题
在您的情况下,我会有一个名为ab
的节点,另一个xy
,xyc
等。
根据规则,节点之间存在定向边
这里:V={ab, xy, xyc, 123, ef}; E={(ab,xy), (xyz.123), (ef, ab)}
基本检查:
如果在这个阶段你的图表中有循环,那么你就有了一个真正的问题。
<强>前缀:强>
使用ab -> xy
和xyc -> 123
的情况给出了一个问题,即除非给定字符串以某种方式构建,否则两个规则不是问题。 (abc
变为xyc
)。这可以通过以某种方式标记的有向边来检查。如果他们创建一个循环,那么您将遇到某些字符串的问题,但不会与其他字符串有关。
希望这会有所帮助。