Всём привет
Сразу скажу, в алгоритмах я полный ноль, был бы признателен не сколько решению задачи, а просто советам, что нужно прочитать, какие темы, чтобы понимать как работать над такими вопросами.Задача:
Искомая вероятность является вероятностью происшествия INCIDENT, которое либо наступает, либо нет. Кратко запишем это как INCIDENT->true и INCIDENT->false.
INCIDENT зависит от описанных ниже пар объект-событие и их комбинаций.
Имеется множество объектов A...Z с разными полями-событиями a....z. Причём некоторые события являются не простыми, а составными (включают в себя некоторые параметры) т.е. имеет место быть вложенность, но не более двух уровней. Чтобы было проще понять, структура данных для событий такая:
[
{
"Object A": {
"event": "(event name) a",
"event": "(event name) b",
"event": "(event name) c",
},
"Object B": {
"event": "(event name) a",
"event": "(event name) b",
"event": "(event name) c",
},
"Object С": [{
"event": {
"event name": "(event name) a",
"param1": "(param) 1",
"param2": "(param) 2",
},
"event": {
"event name": "(event name) a",
"param1": "(param) 123",
"param2": "(param) 321",
}
}]
}
]
Как видно, имеются объекты типа C, события которых являются составными (включают в себя некоторые параметры param1, param2 etc).
Имеется база данных происшествий, в которой указаны состояния этих происшествий (INCIDENT->true или INCIDENT->false) и предшествующие им объекты с их событиями.
Требуется найти такие комбинации событий (и их параметров, в случае с составными событиями), при которых наступление INCIDENT->true было чаще всего.Пример:
1) Имеется 100 записей с такими данными: у объекта A сработало событие a (краткая запись: A->a), 33% INCIDENT являются true среди множества всех INCIDENT с такими же событиями, остальные 66% INCIDENT являются false.
[
{
"A": "a",
"INCIDENT": true x33 (33%)
"INCIDENT": false x66 (66%)
}
]
Если же одновременно вместе с этим событием (A->a) срабатывало событие B->a, то количество INCIDENT->true стало больше и теперь равно 50% от общего числа.
[
{
"A": "a",
"B": "a",
"INCIDENT": true x50 (50%),
"INCIDENT": false x50 (50%),
}
]
2) Добавим составное событие (вложенность). Если к событиям A->a и B->a добавляется C->a с параметром (param1 = 1), то количество INCIDENT->true уменьшается и становится 10% от общего числа.
[
{
"A": "a",
"B": "a",
"C": {
"event name": "a",
"param1": 1
},
"INCIDENT": true x10 (10%)
"INCIDENT": false x90 (90%)
},
]
А если к A->a и B->a добавляется такое же событие C->a, но с другими параметрами (param1 = 123) и (param2 = 321), то количество INCIDENT->true увеличивается и становится 60%.
[
{
"A": "a",
"B": "a",
"C": {
"event name": "a",
"param1": 123,
"param3": 321
},
"INCIDENT": true x60 (60%)
"INCIDENT": false x40 (40%)
},
]
Всем спасибо!