Рассмотрите задачу поиска элементов top-k в наборе из N независимых и одинаково распределенных значений с плавающей запятой. При использовании очереди приоритетов/кучи, мы можем перебирать один раз по всем N элементов и поддерживать топ-K установить с помощью следующих операций:Средняя сложность времени нахождения элементов top-k
если элемент х «хуже», чем голова кучного в: отбрасывать х ⇒ сложности O (1)
если элемент х «лучше», чем голова кучи в: удалить головку и вставить х ⇒ сложности O (Log к)
в худшем случае временная сложность этот подход, очевидно, O (N log k), но как насчет средней сложности времени? Благодаря н.о.р.-предположению, вероятность из O (1) операции возрастает с течением времени, и мы редко приходится выполнять дорогостоящую O (вход к), особенно к < < Н.
Это среднее время сложность документирована в любой цитируемой ссылке? Какова средняя временная сложность? Если у вас есть ссылка на ваш ответ, пожалуйста, включите его.
IMO для k << N, сложность асимптотически приближается к O (N). –
Я довольно уверен, что запрос на «цитируемую ссылку» классифицирует как рекомендательный вопрос, который не подходит для [так], согласно [help/on-topic]. Не стесняйтесь правильно изменить свой вопрос. – Dukeling
@ Dukeling: Я не прошу рекомендации. Должен ли я изменить вопрос так, чтобы у него был уникальный ответ? Например, запросив публикацию _first_, которая содержит этот результат? Для меня вопрос в том, существует ли такая ссылка вообще. – bluenote10