所有子序列在一个程序中,我需要能够有效地回答下列形式的查询:寻找从字典
给定一组字符串A和查询串Q回报所有s∈A使得s为q的子例如,给定A = {“abc”,“aaa”,“abd”}和q =“abcd”,“abc”和“abd”应该被返回。
有没有更好的方法比迭代A的每个元素并检查它是否是q的子序列?
注意:我有STRIPS计划员或自动计划员记。 STRIPS策划师的每个状态都是一组命题,如{“(room rooma)”,“(at robby rooma)”,“(在ball1 rooma)”}。我想找到适用于特定州的所有地面行动。 STRIPS规划师的行动基本上由两部分组成,前提条件和效果(这里并不真正相关)。先决条件是将一个行动应用到一个国家所需要的一组命题。例如,要应用一个动作“(移动rooma roomb)”,其前提条件{“(room rooma)”,“(room roomb)”,(at robby rooma)}}都必须在该状态下为真。
是的 - 你可以从你的集合'A'中建立一个FSM,并且只需要通过'q'并计数/记住你遇到的最终状态 - 它基本上是解析的词法分析器 - 是这个作业还是工作面试问题? ;) – Carsten
引用'A'的每个元素并检查它是否是'q'_的子序列不是一个坏主意。它的复杂性是'O(n2)'。 – Han
感谢您的咨询! FSM的查询速度肯定会更快,但我认为构建它会花费太多。 – user3127171