У меня есть следующая проблема (я думаю, что она хорошо известна / стандартна), о которой я думаю:
Убедитесь, что список k наименьших элементов в двоичной минимальной куче равен O (k).
Я думал об обходе большой мини-кучи в BFS , поддерживая минимальную кучу вместо простой очереди. Первоначально вспомогательная минимальная куча содержит корень моей большой минимальной кучи. На каждом шаге я извлекаю минимум и добавляю всех его потомков (максимум 2). Алгоритм останавливается после k извлечения-минут на вспомогательной минуте-куче. Размер вспомогательной min-heap равен O (k) (для каждого извлеченного min-ключа я вставляю его дочерние элементы, максимум 2).
Проблема в том, что extract-min имеет сложность O (log k), поэтому этот алгоритм имеет сложность O (k log k). И я должен найти один в O (k).
У вас есть какие-нибудь идеи / документы, которые я могу использовать?
Спасибо!