arrays - 多模式匹配算法

标签 arrays algorithm pattern-matching

假设您有几种日期模式 P1 - Pn。

其中一些很简单,例如 P1 - 所有星期一,P2 - 所有星期二;其他更复杂,如 P4 - 所有工作日等。

对于自定义日期数组(V1、V2),我必须创建最短的结果字符串,如图所示:

Multi Pattern Matching

对于任何数组,我们必须创建代表数组中日期的字符串。最简单的方法是创建像 1.5.2013, 2.5.2013, 3.5.2013 ... 这样的字符串,但是结果字符串会很长。

使用几个预定义的模式,我们可以创建更短的结果字符串。

For result string I use following rules:

Single date format: DD.MM.YYYY (10 characters)
Enumeration (dates and patterns): comma and space (2 characters)
Interval of dates: DD.MM.YYYY-DD.MM.YYYY (21 characters)
Interval of pattern names: Px-Py (5 characters)
Special words: except (6 characters)

结果字符串示例:

  • V1 使用 P4 模式:

    P4 except 01.05.2013-03.05.2013, 09.05.2013, 10.05.2013, 16.05.2013, 17.05.2013 (80 characters)

  • V1 使用 Pn 模式:

    Pn 06.05.2013-08.05.2013, 13.05.2013-15.05.2013, 20.05.2013-24.05.2013, 27.05.2013-31.05.2013 (94 characters)

  • V1 使用最佳模式匹配:

    P1-P3 01.05.2013-19.05.2013, P4 20.05.2013-31.05.2013 (54 characters)

主要目标是创建最短的结果字符串。据我了解,我们可以通过找到最佳匹配模式来实现这一目标。

目前我正在尝试适应背包问题和最长公共(public)子序列问题,但我不确定这是不是正确的方向。

如果有任何想法,我将不胜感激。


已更新

感谢 Jan Dvorak 对我的问题的额外简短描述:

目标是使用预定义的字典(P1..Pn 和所有间隔和单个日期)描述 V,其中允许交集、并集和减法,并且每个操作和原子都有预定义的成本(结果字符串中的字符数) ).


最佳答案

经过长时间的搜索,我们终于找到了非常接近我们想要的解决方案。

http://www.fpz.unizg.hr/traffic/index.php/PROMTT/article/view/1287

感谢大家的参与。

关于arrays - 多模式匹配算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16758599/

相关文章:

javascript - 按顺序将数组值附加到多个 div

arrays - $firebaseArray 中的 For 循环

java - Java 中 8 位 Fletcher 算法的正确实现是什么?

java - 创建了几乎可以工作的排序算法,但我不明白第二个 for 循环

performance - 这两种模式匹配哪种方式更受欢迎?

scala - 模式匹配 `@` 符号

python - 保存一个 numpy 矩阵

javascript - 如何使用 jQuery 从 html 字符串中提取多个部分?

Java:数组上的广度优先遍历顺序

支持附加、前置和搜索操作的字符串数据结构