Перетворіть список значень 24-годинних опадів у загальну кількість годин


11

Скажімо, у мене є список значень опадів за годиною, кожен із яких показує, скільки дощу трапилося за попередні 24 години, упорядкований за датою. Наприклад:

{
    '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
}

Чи є стратегія / алгоритм для визначення кількості дощу за кожну годину? Я, здається, не можу обернути голову навколо цього. Я знаю, що це не так просто, як просто підбивати підсумки.

Візуалізація набору даних

P(N)    [.....======================]
P(N-1)  [....======================.]
P(N-2)  [...======================..]
P(N-3)  [..======================...]
I want  [..........................=]

Велике спасибі за будь-яку допомогу.


Чи означає .6 "дощу від 5/23 11:00 - 5/24 10:59 означає, що в цей період проміжок часу .6" дощу випало або в середньому .6 "дощу в цей період?
Система вниз

Колишній. Це сума дощу за годиною за попередні 24 години. Я хочу розібратися, як «відірватися» в ту останню годину.
Майк Гріффіт

1
Це напрочуд важко. Кожне значення, яке ви записуєте, складається з 24 невідомих підсумованих чисел. Для вирішення цього вам знадобиться 24 рівняння, тобто 24 рівняння, у яких однакові невідомі, але тому, що у вас є розсувне вікно, це не так. Я не можу собі уявити, що це "нерозв'язно", але це мені точно здається. Ще один спосіб подумати над цим: Ви отримуєте одну невідому для кожного P(N-x)доданого, тому врешті-решт кількість рівнянь і невідомих навіть знову виходять.
sebastiangeiger

3
Мені цікаво, чи це буде краще питання для: cstheory.stackexchange.com
FrustratedWithFormsDesigner

2
@FrustratedWithFormsDesigner чи math.stackexchange.com ?
CaffGeek

Відповіді:


8

Якщо припустити, що набір даних завжди складається з послідовних 24-годинних вікон (тобто, перша точка даних - це не вікно на 1 годину) ...

Це не є вирішуваною проблемою принаймні в загальному випадку, оскільки існує контрприклад, де принаймні два зразки дощу відображаються в одному наборі даних.

  • Випадок 1: Дощ іде 24 "о 12:30 щодня назавжди.
  • Випадок 2: Іде дощ 1 "по 30 хвилин кожну годину назавжди.

В обох випадках ваше P(N) = 24"для всіх N.

Оскільки не існує жодного сценарію, який можна отримати з цього набору даних, проблема не вирішується в загальному сенсі.


Як осторонь ми можемо також продемонструвати, що це не обов'язково правда, що проблема завжди нерозв'язна. Найпростіше, якщо P(N) = 0"для всіх Nіснує лише одна можлива схема дощу: нульовий дюйм дощу щогодини.


Тому більш цікавою є проблема виявлення того, які характеристики щодо набору даних роблять проблему вирішуваною. Тривіально, якщо у вас є набір даних хоча б з одним Nтаким P(N) = 0", то у вас є рішення.

Я не був би здивований, якби були інші властивості, які зробили б вирішення проблеми для даного набору даних. Пошук цих питань повинен бути цікавим завданням. У той же час, доказ того, що ніхто не може існувати, є однаково цікавим.


5

вам потрібно повторити дані, поки ви не знайдете період опадів 0, тоді ви будете обчислювати вперед з тієї точки, як описано SnOrus. Якщо жодна точка даних не дорівнює 0, я не думаю, що це можна вирішити, якщо ви не визначите, що найдавніший запис буде через 1 годину після початку часу, тому пункти раніше, ніж визначені.

також можна було б обчислити час назад від читання 0, роблячи те ж саме в зворотному порядку (хоча ви отримаєте принаймні 24 0 підряд.


Цікавим обмеженням даних, що робить це можливим, є те, що опади ніколи не можуть бути негативними, тому при нульовому значенні ви знаєте, що 24 попередні години повинні були дорівнювати нулю.
Скотт Вітлок

0

P (n) - P (n-1) Обмежений до> = 0

Де P () - кількість опадів, зафіксованих за 24 години до n.

... повинен дати вам кількість дощу за годину до P(n).


Це порахувало -1 дюймів за 12:00. Звучить малоймовірно. Якщо в 11:00 23-го за 24 години було встановлено 0,2 дюйма, то правильною відповіддю має бути .1
Едвард Странд

Якщо N - "5/24 12:00 вечора", P (N) включає вікно з 5/23 о 12:00 до 5/24 о 11:59 ранку. Тоді P (N-1) включає вікно з 5/23 о 11:00 до 5/24 о 10:59 ранку. Я хочу знати, що сталося у вікні з 11:00 до 11:59 ранку, але лише віднімання обох також вводить додаткове "вікно" за попередній день. Дивіться оновлений опис для візуального подання.
Майк Гріффіт

@MikeGriffith: Дивіться мою редакцію. Я вважаю, що я мав рацію, але вам потрібно прив'язати результат до> = 0. (<= 0 вказувало б на те, що дощу не було). Якщо я не розумію проблеми.
Стівен Еверс

@SnOrfus: У вас досі є два невідомих значення.
Daenyth

0

Це не повна відповідь, я на роботі і вже витратив на це купу часу ... далі мені знадобляться додаткові дані, щоб дізнатися, чи правильна моя думка.

Назвемо P (x) 24-годинний показник у часі x.

Розглянемо наступний сценарій перекриття:

|H1|H2|H3.............|H23|H24|H25|H26 ................ |H46|H47|H48|
|-----------------P(X)--------|-----------------P(X-24)-------------|
   |----------------------P(X-1)--|

P (X) - P (X-1) + H25 = H1.

Таким чином, потрібно обчислити Н25. Я вважаю, що рішення буде відпочивати десь у системі, створеній з P (X), P (X-1) та P (X-24).


0

Протягом двох годин поспіль n (зараз) та n-1 (година раніше) ви маєте двадцять чотири годинну суму опадів (T), що складається з 24 годинних опадів (P):

T(n) = P(n) + P(n-1) + P(n-2) + ... + P(n-22) + P(n-23)
T(n-1) = P(n-1) + P(n-2) + P(n-3) +... + P(n-23) + P(n-24)

Так:

T(n) - T(n-1) = P(n) - P(n-24)

(Умови P (n-1) ... P (n-23) дублюються і в T (n), і в T (n-1), тому віднімання їх дає 0.) Переставляючи, ви отримуєте:

P(n) = T(n) - T(n-1) + P(n-24)

Тепер ви не можете зрозуміти, що таке P (n), якщо ви не знаєте, що таке P (n-24). Ви можете повернутися до даних, щоб обчислити P (n-24), але для отримання цього вам потрібно P (n-25) і так далі infinitum. Тоді вам потрібно значення опадів за будь-яку одну годину, що минула більше ніж 24 години. Якщо у вас це є, ви можете розрахувати погодинну кількість опадів за всі наступні години.


1
+1 "Тоді вам потрібно значення опадів за будь-яку одну годину, що минула більше ніж 24 години." Або значення 0 "протягом 24 годин.
CaffGeek

@Chad Це, безумовно, один із способів отримати це.
Калеб
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.