Re[8]: Toposort сломан
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.05.16 22:50
Оценка:
Здравствуйте, Lexey, Вы писали:

AVK>>Не нужно. Во-первых, как я уже писал, это приведет к непониманию людей, с теорией графов незнакомых.

L>Для таких людей как раз будет адаптер в "простом" стиле.

Если будет адаптер — вопросов нет.

L>Cейчас, получив на вход обратные связи вида "M зависит от N1, N2, ...", ты все равно строишь прямые и работаешь с ними.


Потому что в 99% случаев в наличии имеются именно обратные связи.

L>С тем же успехом можно получать прямые связи и считать количество обратных.


Можно. Если посмотришь по истории, то первый порт был именно таким. Но в этом случае результат получается задом наперед.

L>Тем более, зачем тогда заморачиваться борьбой за O(число ребер) при возможном перевороте направления связей?


Ей разве кто то особо заморачивался? Но лишняя работа только ради того чтобы сделать универсальный алгоритм не нужна.

AVK>>Ну вот отличный пример как делать не надо в данном случае. С почти 100% вероятностью в типовом юзкейсе придется преобразовывать структуру в такой список.

L>С почти 100% вероятностью в типовом юзкейсе будет или такое или обратное представление.

Какое? В виде явно выделенных ребер? Ничего подобного. Именно для этой цели в текущем API в параметрах лямбда, а не какие то структуры. В моих юзкейсах такой вариант на 100% обеспечивает отсутствие необходимости куда-то что-то перекладывать в прикладном коде.

L>Если так хочется побороться за то, чтобы не делать лишних преобразований (хотя это копейки в условиях типичных задач, которые ты сам описал), то можно получать связи через аналог твоего dependsOnGetter. Только вместо него будет dependantsGetter.


dependsOnGetter не от балды придуман, связи почти всегда именно в таком виде хранятся. Дополнительно можно добавить обратный вариант, но текущий должен быть обязательно.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[8]: Toposort сломан
От: Sinix  
Дата: 15.05.16 07:21
Оценка:
Здравствуйте, Lexey, Вы писали:

L>Ну, по хорошему, если пилить алгоритмы на графах (к которым относится топосорт), то нужно их пилить с нормальной базой для графов.

Легко и просто не потянем. Хорошие библиотеки алгоритмов / коллекций пилятся годами с обязательным знанием матчасти, с отличными алгоритмистами в команде и с кучей нюансов под капотом.

И то для пользователей они все как одна выглядят страшновато, ms glee как пример. Или вообще Z3, восторг и ужас в одном флаконе

В общем если и делать — точно не в основной сборке.
Re: Toposort сломан
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.05.16 09:31
Оценка: 3 (1)
Здравствуйте, Sinix, Вы писали:

Перенес GroupTopoSort в Main. TopoSort теперь реализован через GroupTopoSort. Сигнатуры у него подкорректированы и добавлены перегрузки в соответствии с новыми реалиями.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.