Należy wziąć pod uwagę kilka wzorów dat P1 - Pn.Algorytm dopasowania wielu wzorów
Niektóre z nich są proste jak P1 - wszystkie poniedziałki, P2 - we wtorki; inne są bardziej skomplikowane jak P4 - wszystkie dni robocze itp
dla niestandardowych tablicy dat (V1, V2) Mam do tworzenia najkrótszą wynik ciąg, jak to jest pokazane na zdjęciu:
Dla każdej tablicy musimy utworzyć ciąg, który będzie reprezentował daty w tablicy. Najprostszą metodą jest utworzenie ciągu znaków takiego jak 1.5.2013, 2.5.2013, 3.5.2013 ... Ale ciąg wyniku będzie bardzo długi.
Używając kilku predefiniowanych wzorów możemy stworzyć krótszy ciąg wyników.
dla wyniku ciąg używam następujących zasad:
data pojedynczy format: DD.MM.YYYY (10 znaków)
Wyliczanie (daty i wzory): przecinek i spacja (2 znaki)
przedział dat: DD.MM.YYYY-DD.MM.YYYY (21 znaków)
Interval nazw wzór: PX-Py (5 znaków)
słowa szczególne: oprócz (6 znaków)
Przykłady ciągów Wynik:
V1 wykorzystujące P4 wzoru:
P4 wyjątkiem 01.05.2013-03.05.2013 , 09.05.2013, 10.05.2013, 16.05.2013, 17.05.2013 (80 znaków)
V1 pomocą Pn wzór:
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 znaków)
V1 za pomocą najlepsze dopasowanie wzorów:
01.05.2013-19.05.2013 P1-P3, P4 20.05.2013-31.05.2013 (54 znak, co ers)
Głównym celem jest stworzenie najkrótszą wynik ciąg. Jak rozumiem, możemy to osiągnąć, znajdując najlepszy pasujący wzór/wzory.
Obecnie próbuję dostosować problem z plecakiem i najdłuższym typowym problemem podciągu, ale nie jestem pewien, czy jest to właściwy kierunek.
Byłbym wdzięczny za wszelkie pomysły.
aktualizowane
Dzięki Jan Dvorak za dodatkową krótki opis mojego problemu:
Celem jest opisanie V przy użyciu predefiniowanego słowniku (P1..Pn i wszystkie interwały i pojedyncze daty), w których przecięcie, unifikacja i odejmowanie są dozwolone, a każda operacja i atom mają wstępnie zdefiniowany koszt (liczba znaków w ciągu wynikowym).
Najkrótszy wynik dla * co *? Podaj wyraźny opis zadania. Na podstawie grafiki nie mogę na przykład zrozumieć, dlaczego V2 pasuje do części wszystkich dni, ale V1 nie pasuje do części dni roboczych. – Bergi
Dodałem więcej informacji. Możesz użyć do wzorca V1 P4 (wszystkie dni robocze), ale ciąg wyniku będzie dłuższy. Łańcuch wyników dla V1 przy użyciu wzorca P4 to: P4 od 5.5.2013 do 8.5.2013 i od 13.5.2013 do 15.5.2013 oraz od 20.5.2013 do 24.5.2013 i od 27.5.2013 do 31.5.2013 – dannikoti
Twój cel jest opisanie V przy użyciu predefiniowanego słownika (P1..Pn i wszystkich interwałów i pojedynczych dat), gdzie dozwolone jest przecięcie, połączenie i odejmowanie, a każda operacja i atom mają wstępnie zdefiniowany koszt? –