Załóżmy, że mam listę wartości opadów według godziny, z których każda pokazuje, ile deszczu wystąpiło w ciągu ostatnich 24 godzin, uporządkowane według daty. Na przykład:
{
'2012-05-24 12:00': 0.5, // .5" of rain from 5/23 12:00 - 5/24 11:59
'2012-05-24 11:00': 0.6, // .6" of rain from 5/23 11:00 - 5/24 10:59
'2012-05-24 10:00': 0.6, // .6" of rain from 5/23 10:00 - 5/24 09:59
...
'2012-05-23 10:00': 0
}
Czy istnieje strategia / algorytm określający, ile deszczu spadało w każdej godzinie? Nie wydaje mi się, żeby mnie to owijało. Wiem, że to nie jest tak proste, jak sumowanie różnic.
Wizualizacja zestawu danych
P(N) [.....======================]
P(N-1) [....======================.]
P(N-2) [...======================..]
P(N-3) [..======================...]
I want [..........................=]
Wielkie dzięki za wszelką pomoc.
algorithms
functional-programming
functions
Mike Griffith
źródło
źródło
P(N-x)
zyskujesz jedną nieznaną za każde dodane, więc ostatecznie liczba równań i niewiadomych znów się wyłania.Odpowiedzi:
Zakładając, że zestaw danych zawsze składa się z kolejnych 24-godzinnych okien (tzn. Pierwszy punkt danych nie jest oknem 1-godzinnym) ...
Nie jest to problem do rozwiązania, przynajmniej w ogólnym przypadku, ponieważ istnieje kontrprzykład, w którym co najmniej dwa wzorce deszczu odwzorowują jeden zestaw danych.
W obu przypadkach Twój
P(N) = 24"
za wszystkichN
.Ponieważ nie ma jednego scenariusza, który można by wyprowadzić z tego jednego zestawu danych, problemu nie można rozwiązać w sensie ogólnym.
Nawiasem mówiąc, możemy również wykazać, że niekoniecznie jest prawdą, że problem jest zawsze nierozwiązywalny. Najprościej, jeśli
P(N) = 0"
w ogóleN
, istnieje tylko jeden możliwy wzorzec deszczu: zero cali deszczu co godzinę.Dlatego bardziej interesującym problemem jest określenie, jakie cechy zestawu danych sprawiają, że problem można rozwiązać. Trywialnie, jeśli masz zestaw danych z co najmniej jednym
N
takimP(N) = 0"
, to masz rozwiązanie.Nie zdziwiłbym się, gdyby istniały inne właściwości, które rozwiązałyby problem dla danego zestawu danych. Znalezienie ich powinno być zabawnym wyzwaniem. Jednocześnie udowodnienie, że nikt nie może istnieć, jest równie zabawne.
źródło
musisz iterować dane, aż znajdziesz okres opadów 0, a następnie obliczasz naprzód od tego miejsca, jak opisuje SnOrus. Jeśli żaden punkt danych nie jest równy 0, to nie sądzę, że można to rozwiązać, chyba że zdefiniujesz najwcześniejszy wpis jako godzinę po początku czasu, więc punkty wcześniejsze są niezdefiniowane.
byłoby również możliwe obliczenie wstecz w czasie od odczytu 0, robiąc to samo w odwrotnej kolejności (chociaż dostaniesz co najmniej 24 0 z rzędu.
źródło
... powinien dać ci ilość deszczu na godzinę przed
P(n)
.źródło
To nie jest pełna odpowiedź, jestem w pracy i spędziłem już nad tym dużo czasu ... ponadto potrzebuję więcej danych, aby sprawdzić, czy moje przeczucie jest prawidłowe.
Nazwijmy P (x) miarą 24-godzinną w czasie x.
Rozważmy następujący scenariusz nakładania się:
P (X) - P (X-1) + H25 = H1.
Dlatego musisz obliczyć H25. Wierzę, że rozwiązanie spoczywa gdzieś w systemie utworzonym z P (X), P (X-1) i P (X-24).
źródło
Przez dwie kolejne godziny n (teraz) i n-1 (przed godziną) masz 24-godzinną sumę opadów (T) złożoną z 24 godzinnych liczb opadów (P):
Więc:
(Warunki P (n-1) ... P (n-23) są powielone zarówno w T (n), jak i T (n-1), więc odejmowanie ich daje 0.) Zmiana układu daje:
Teraz nie możesz zrozumieć, czym jest P (n), chyba że wiesz, co to jest P (n-24). Możesz cofnąć się w danych, aby obliczyć P (n-24), ale aby go uzyskać, potrzebujesz P (n-25) i tak dalej w nieskończoność. Potrzebujesz zatem wartości opadów dla każdej godziny, która była dłuższa niż 24 godziny. Jeśli tak, możesz obliczyć godzinne opady dla wszystkich następnych godzin.
źródło