Re[5]: QSet, скорость перебора контейнера
От: Кузнец Россия  
Дата: 10.08.18 08:22
Оценка:
Здравствуйте, niXman, Вы писали:

X>Здравствуйте, Кузнец, Вы писали:


R>>>разные O-большие


К>>Да, std::set имеет логарифмическое время вставки, а unordered_set константу в среднем. Взамен std::set упорядочен, а другой порядок не гарантирует, в нашем же случае упорядоченность никак не помогает, но критично время обработки.


X>это все понятно. но что-то мой опыт подсказывает мне, что все эти моменты на этом наборе данных с учетом что данные — интегралы — не имеют большого значения...


Эти данные не интегралы, это индексы. Наш алгоритм следует статье , каждому вновь найденному объекту присваивается индекс, иногда индексы приходится отождествить, при этом остаётся один из них (какой именно — определяет алгоритм отождествления, у нас там работает disjoint-set-union, поэтому нельзя сказать, например, что всегда выбирается меньший из двух). Эти индексы потом в QSet и были сложены, причём каждый клался столько раз, сколько других индексов было отождествлено, поэтому и пришлось испольховать хеш-множество, чтобы не заниматься каждый раз поиском по уже набранным индексам (можно было бы сложить в std::vector, но тогда мы бы имели много повторяющихся чисел, что сломает алгоритм)
Отредактировано 10.08.2018 8:24 Кузнец . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.