Обойти неизвестной глубины дерево параллельно

Ann4Ann
Уже с Приветом
Posts: 1239
Joined: 14 Nov 2002 23:02
Location: S.Peterburg, Russia -->SoFla

Re: Обойти неизвестной глубины дерево параллельно

Post by Ann4Ann »

ALV00 wrote: 07 Mar 2018 00:37
Ann4Ann wrote: 01 Mar 2018 15:02 я сейчас очень похожую задачу пишу, только у меня не дерево, а граф, так что стейт сложнее. вначале один-в-один как у автора написала, но очень уж оно не сбалансровано все. в итоге по времени и по перформансу мне легче вышло вначале сделать легкий траверс графа (в лоб) собирая инфу для heavy lifting в какой-то мнее.. execution plan.
Интересно, как этот план запоминается? Тоже дерево?
ну в итоге thread-am `отдается PriorityBlockingQueque. объекты в ней, правда, могут быть композитами. т.е. если развернуть, то таки дерево. priority помогает выполнение/ресурсы сбалансировать - в зависимости от точки входа в граф, даже для одного стейта графа планы разные собираются, не только по балансу, но и по объёму работ/данных/требуемых ресурсов (собс-но из за этой фичи и все затевалось).
получился приятный сайд-эффект : сейчас я уже этот план в базе сохранять могу (одна таблица), выяснилось, что очень удобно народу взять конкретный стейт. при этом новый траверс на живом графе уже может выдать другой план для той же точки входа.
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Обойти неизвестной глубины дерево параллельно

Post by АццкоМото »

Это... прочитал только пару ответов, но... Это же обычный BFS - breadth first search. Ну а дальше - например, RxJava-й прикручиваем observeOn(workerThreadPool) ну и как только очередь пуста - onComplete() и типа обход завершен. Несколько строк же
Мат на форуме запрещен, блдж!

Return to “Вопросы и новости IT”