У вас есть несколько шаблонов дат P1 - Pn.Множественный алгоритм сопоставления шаблонов
Некоторые из них просты, как P1 - все понедельники, P2 - все вторники; другие являются более сложными, как P4 - все рабочие дни и т.д.
Для пользовательского массива дат (V1, V2), я должен создать кратчайший результирующую строку, как показано на картинке:
Для любого массива мы должны создать строку, которая будет представлять даты в массиве. Самый простой способ - создать строку, например 1.5.2013, 2.5.2013, 3.5.2013 ... Но строка результата будет очень длинной.
Используя несколько предопределенных шаблонов, мы можем создать более короткую строку результата.
Для строки результата я использую следующие правила:
Single Формат даты: ДД.ММ.ГГГГ (10 символов)
перечислений (даты и модель): запятая и пространство (2 символа)
Интервал дат: ДД.ММ.ГГГГ-ДД.ММ.ГГГГ (21 символов)
Интервал имен шаблонов: Px-Py (5 символов)
Специальные слова: кроме (6 символов)
Примеры результатов строк:
V1 с помощью P4 шаблона:
P4, за исключением 01.05.2013-03.05.2013 , 09.05.2013, 10.05.2013, 16.05.2013, 17.05.2013 (80 знаков)
V1, используя шаблон Рп:
Рп 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 символов)
V1 с использованием лучших образцов матча:
P1-P3 01.05.2013-19.05.2013, P4 20.05.2013-31.05.2013 (54 CHARACT ERS)
Основной цель состоит в том, чтобы создать самые короткие строки результата. Насколько я понимаю, мы можем добиться этого, найдя наилучшие совпадающие шаблоны/шаблоны.
В настоящее время я пытаюсь адаптировать проблему ранца и самую длинную общую проблему подпоследовательности, но я не уверен, что это правильное направление.
Буду признателен за любые идеи.
обновленный
Благодаря Jan Dvorak за дополнительную краткое описание моей проблемы:
Цель состоит в том, чтобы описать V используя предопределенный словарь (P1..Pn и все интервалы и отдельные даты), где разрешено пересечение, объединение и вычитание, и каждая операция и атом имеют предопределенную стоимость (количество символов в строке результата).
Кратчайший результат строка для * какой *? Укажите ясное описание задачи. Из вашей графики я, например, не могу понять, почему V2 соответствует части всех дней, но V1 не соответствует части рабочих дней. – Bergi
Я добавил дополнительную информацию. Вы можете использовать для шаблона V1 P4 (все рабочие дни), но результат будет длиннее. Строка результата для V1 с использованием рисунка P4: P4 с 5.5.2013 по 8.5.2013 и с 13.5.2013 до 15.5.2013 и с 20.5.2013 до 24.5.2013 и с 27.5.2013 до 31.5.2013 – dannikoti
так, ваша цель заключается в том, чтобы описать V, используя предопределенный словарь (P1..Pn и все интервалы и отдельные даты), где разрешено пересечение, объединение и вычитание, и каждая операция и атом имеют предопределенные затраты? –