Z-Граф

3 октября 2024, 15:26
Maxim Kuznetsov
0
8

так как старую тему про зигзаги, в момент нового важного обсуждения, бахнули модераторы

часть информации оттуда - в данной заметке. Может существенно пригодится при разметке данных и в МL,NN.

Заодно вместо записной книжки и мысли вслух

Алг. "рекурсивный минимакс", рекурсивная разметка зигзагов Z-Граф.

данные:

  • Набор узлов = { }, каждая вершина содержит её ранг,время и данные. Опционально - признак вершина или впадина
  • текущий ранг=1

1. во всём диапазоне данных ищется глобальный минимум и максимум (при равенстве значений,предпочтение отдаётся данным слева, более старым). 

1.1 Найденные  экстремумы добавляются в граф (в "набор узлов"), с текущем рангом, текущий ранг увеличивается

1.2 Они делят весь диапазон данных на 3 отрезка.

2. РЕКУРСИЯ: В каждом отрезке ищется максимальный противоход. (при равенстве предпочтение самому левому противоходу)

2.1 Найденные экстремумы добавляются в граф (в "набор узлов"), с текущем рангом

2.1 Отрезок поделили на 3 меньших отрезка.

2.2 покуда противоход вообще имеется, Повторяем №2 РЕКУРСИВНО С УВЕЛИЧЕНИЕМ РАНГА

3. По выходу из рекурсий, "Набор узлов" сортировать по времени.

3.1 для удобства опционально можно в начало набора добавить "фейковый узел", чтобы вершины получались на чётных позициях, а впадины на нечётных.

Получается довольно любопытная структура, которая содержит все возможные зигзаги.

Очень практичная - её удобно хранить и обрабатывать в базах.

Для практических целей, алгоритм можно дополнить бизнес-логикой "правило выбора противохода", и "критерий увеличения ранга при рекурсии".

Модификации Z-Граф

а) при поступлении новых данных, новые экстремумы добавляются в Z-Граф, при этом у части существующих может измениться (увеличится) ранг. Существующие экстремумы не удаляются.

б) в соответствии с бизнес-логикой можно непротиворечиво корректироваться ранг вершин. Или отдельно вести атрибут "бизнес-ранг" не больший ранга вершины,  например чтобы смежные движения схожего размера имели одинаковый ранг.

в) базовый рекурсивный алгоритм ресурсоёмкий, поэтому практичнее им строить начальную часть а потом инкрементно её дополнять. Можно придумать эффективные алгоритмы конкатенации графов (складывать граф с временем от A до B с графом от B C)

Свойства Z-Граф

- во первых - это ориентированный граф без циклов. И очень своеобразный, у него должно быть своё общепринятое научное имя. К сожалению я его не знаю :-(

- во вторых - это дерево разбиения. Если не применяются модификации "б" то бинарное.

- чётность позиций всех вершин (верхних экстремумов) одинакова. И впадин соотв.тоже. Они строго чередуются вершина-впадина-вершина-...

- произвольный набор экстремумов является зигзагом, если они все содержатся в Z-граф и соблюдается правило чётности

- множество всех возможных зигзагов можно сформировать перебором. 

- Выборка вершин с рангом N+1 является детализацией (суб-зигзагом) зигзага N. И наоборот, N-1 обобщает зигзаг N

- Z-граф имеет отношение как к графическим разметкам, так и к DSP. Выборка вершин с рангом от N до M это де-факто фильтр НЧ,ВЧ. Если ставить такую цель, то можно упороться и по Z-Граф доказать эквивалентность разных подходов ТА

Возможное практическое применение

Конечно-же алгоритмы поиска. Всякие: Найти первичный/вторичный максимум в диапазоне. Определить сопротивления (разворотные уровни) от уровней впадин с заданными рангами. 

удаление шумов - выборка экстремумов с рангами более N

определение "шумности" - от кол-во узлов с максимальным рангом в заданном периоде.

определение "волатильности" - кол-во узлов со средним рангом

оценка и оптимизация торговых стратегий - Buy должен открываться в окрестностях впадин с минимальным рангом, закрываться ближе к вершинам с минимальным рангом.

----

PS/ вот даже и не удивительно что тему заспамили и затем удалили