所有子序列在一個程序中,我需要能夠有效地回答下列形式的查詢:尋找從字典
給定一組字符串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