Size: a a a

Programming Offtop

2020 April 21

AZ

Alexander Zalutskiy in Programming Offtop
Ничего. В следующий раз пройду)
источник

Sergey λ in Programming Offtop
Alexander Zalutskiy
Вот совсем)

Не так просто менять направление так резко. За плечами 7 лет iOS разработки. А тут desktop, jvm и прочее
а какая была позиция?
источник

AK

Anton Korotkikh in Programming Offtop
Кирилл Романенко
Подскажите плз, я вот никак не могу допереть ( осторожно : алгоритмы на графах и MPI)
У меня в задаче по MPI надо распараллелить проверку графа на признак того, что он дерево. Типо у него не должно быть циклов и т.д. Крч достаточно просто представить в голове дерево.)
Как бл это вообще можно распараллелить? Ладно когда ты динамически можешь выделять потоки или отправлять в диспатчер, но тут так не получится, MPI требует задать все ветви сразу.
Если у меня есть граф с 101 узлом, то он может выглядеть как 1 вершина - 100 листьев, так и связный список размером 101. И то и другое будет являться деревом. Первый вариант эффективно распараллелить, разбив листья по группам, а второй ты никак не разобьёшь в принципе. Я понимаю, как это распараллелить, динамически управляя потоками, но как в MPI?...
прикольная задачка, а кто такую набросил?
источник

КР

Кирилл Романенко... in Programming Offtop
Anton Korotkikh
прикольная задачка, а кто такую набросил?
Универ
источник

ML

Mikhail Levchenko in Programming Offtop
Quantum Harmonizer
Введи @ в поиск
TIL
источник

AN

Alexander Nozik in Programming Offtop
Кирилл Романенко
Нет. Это же mpi, там у каждого процесса своя область памяти, процессы могут только обмениваться сообщениями, в разных режимах.
А есть лимит на процессы или вложенность графа?
источник

КР

Кирилл Романенко... in Programming Offtop
Alexander Nozik
А есть лимит на процессы или вложенность графа?
В принципе я уже примерно понял, как решить задачу, спасибо. :) Но отвечая на вопрос: процессы от 1 до 50, ограничений на граф нет.
источник

AN

Alexander Nozik in Programming Offtop
Кирилл Романенко
В принципе я уже примерно понял, как решить задачу, спасибо. :) Но отвечая на вопрос: процессы от 1 до 50, ограничений на граф нет.
И как? Я несколько вариантов придумал вроде.
источник

AN

Alexander Nozik in Programming Offtop
Один даже вроде хороший. Доступ к любой вершине графа? Не только к корню?
источник

AN

Alexander Nozik in Programming Offtop
И можно ли у потока определить предка? Он двусязный?
источник

КР

Кирилл Романенко... in Programming Offtop
Ну там решение через поиск в глубину. Режешь список смежности и рассылаешь, в каждом куске выписываешь посещённые вершины, потом отправляешь в основной цикл и сравниваешь пересекаются ли списки посещенных, если да, то цикл.
источник

AN

Alexander Nozik in Programming Offtop
Кирилл Романенко
Ну там решение через поиск в глубину. Режешь список смежности и рассылаешь, в каждом куске выписываешь посещённые вершины, потом отправляешь в основной цикл и сравниваешь пересекаются ли списки посещенных, если да, то цикл.
Если я правильно понял, то в этом случае вы не выиграете ничего от параллельного обсчета, поскольку все время будет уходить на синхронизацию основного списка. Граф напрпавленный?
источник

КР

Кирилл Романенко... in Programming Offtop
Alexander Nozik
Один даже вроде хороший. Доступ к любой вершине графа? Не только к корню?
Да
источник

КР

Кирилл Романенко... in Programming Offtop
Alexander Nozik
И можно ли у потока определить предка? Он двусязный?
Нет
источник

AN

Alexander Nozik in Programming Offtop
О, супер. Тогда я придумал. Берем фильтруем все листья (элементы без наследников). Для каждого листа начинаем идти вверх и считать пересечения. Надо подумать, могут ли быть петли без листьев
источник

AN

Alexander Nozik in Programming Offtop
Видимо могут...
источник

ML

Mikhail Levchenko in Programming Offtop
Alexander Nozik
О, супер. Тогда я придумал. Берем фильтруем все листья (элементы без наследников). Для каждого листа начинаем идти вверх и считать пересечения. Надо подумать, могут ли быть петли без листьев
могут

A -> B -> C не имеет листов вообще
источник

AN

Alexander Nozik in Programming Offtop
Ну тогда так, берем все листья, делаем для них то, что я сказал, запоминаем обойденные ноды. Потом берем оставшиеся ноды и делаем с ними то же самое. Если нод много, то можно сэкономить и при следующей итерации не пересчитывать промежуточные ноды, если они уже посчитаны на предыдущей.
источник

AN

Alexander Nozik in Programming Offtop
Mikhail Levchenko
могут

A -> B -> C не имеет листов вообще
А - лист
источник

ML

Mikhail Levchenko in Programming Offtop
Alexander Nozik
А - лист
забыл дописать C -> A
источник