Java – Как посчитать сложность алгоритма? – Stack Overflow на русском

Продавцом предоставляются следующие гарантии:

1. Для легковых и внедорожных автомобилей BMW  – гарантию на два года на весь автомобиль без ограничения по пробегу, согласно стандартам производителя Автомобиля BMW AG с момента первой регистрации Автомобиля;
Срок гарантии на дополнительное оборудование, которое не было произведено и/или установлено BMW AG, определяется согласно гарантийными условиями производителя и/или фирмы, выполняющей установку соответствующего оборудования;
·  Смена владельца автомобиля не влияет на гарантийные обязательства Продавца в отношении Автомобиля, перейдите ремонт бмв.

2.   Гарантия недействительна, если:
·  Продавец своевременно не сообщает о дефекте или не предоставляет возможность незамедлительно устранить дефект, о котором сообщил;
·  Автомобиль был перегружен, неправильно эксплуатировался или использовался для участия в соревнованиях или ралли;
·  Автомобиль видоизменен таким образом, который не принимается BMW AG;
·  Продавцом не были приняты во внимание инструкции и правила по эксплуатации и обслуживанию Автомобиля.

3.   Гарантия недействительна и расходы не покрываются в случае естественного износа Автомобиля, а также при замене комплектующих в случае их естественного износа (шины, свечи, стеклоочистители, тормозные колодки, диски, и т.   д. ). Гарантией не покрываются расходы, связанные с периодическим обслуживанием Автомобиля, регулировкой и проверками, а также с затратами или ущербом, возникшим в результате простоя Автомобиля.

4.   Гарантия становится недействительной по истечении срока, указанного в 1-м пункте.

*BMW AG сохраняет за собой право вносить изменения в некоторые пункты гарантийных условий. Более подробную информацию Вы можете получить у наших специалистов по вопросам гарантии.

Продавцом предоставляются следующие гарантии:

1. Для легковых и внедорожных автомобилей BMW  – гарантию на два года на весь автомобиль без ограничения по пробегу, согласно стандартам производителя Автомобиля BMW AG с момента первой регистрации Автомобиля;
Срок гарантии на дополнительное оборудование, которое не было произведено и/или установлено BMW AG, определяется согласно гарантийными условиями производителя и/или фирмы, выполняющей установку соответствующего оборудования;
·  Смена владельца автомобиля не влияет на гарантийные обязательства Продавца в отношении Автомобиля, на сайте ремонт бмв.

2.   Гарантия недействительна, если:
·  Продавец своевременно не сообщает о дефекте или не предоставляет возможность незамедлительно устранить дефект, о котором сообщил;
·  Автомобиль был перегружен, неправильно эксплуатировался или использовался для участия в соревнованиях или ралли;
·  Автомобиль видоизменен таким образом, который не принимается BMW AG;
·  Продавцом не были приняты во внимание инструкции и правила по эксплуатации и обслуживанию Автомобиля.

3.   Гарантия недействительна и расходы не покрываются в случае естественного износа Автомобиля, а также при замене комплектующих в случае их естественного износа (шины, свечи, стеклоочистители, тормозные колодки, диски, и т.   д. ). Гарантией не покрываются расходы, связанные с периодическим обслуживанием Автомобиля, регулировкой и проверками, а также с затратами или ущербом, возникшим в результате простоя Автомобиля.

4.   Гарантия становится недействительной по истечении срока, указанного в 1-м пункте.

*BMW AG сохраняет за собой право вносить изменения в некоторые пункты гарантийных условий. Более подробную информацию Вы можете получить у наших специалистов по вопросам гарантии.

Вопрос №1: Правильно ли я понимаю, что алгоритмическая сложность данного метода будет O(1)? Т.к. внутри используется HashMap со сложностью поиска и добавления O(1).

Да, с оговоркой про то, что вставка/поиск в хеше на неудачных данных может деградировать до O(n),

Здесь стоит оговориться, что для хеша с адекватной хеш-функции, подходящем размере таблицы и при квазислучайных входных данных вероятность худшего случая пренебрежимо мала, но всегда существует такой набор данных, который этот случай даст. Зачастую его можно специально подобрать и даже использовать для DOS-атаки.

Кроме того при обычной реализации динамически расширяемой хеш-таблицы map.put может потребовать перестроения индекса хеша, сложность которого также O(n), но этого можно избежать заранее выделив под таблицу достаточный объём данных.

Вопрос №2: Общая сложность системы будет равна O(n) ?

Да, с аналогичной оговоркой, в худшем случае время составит O(n²).

В случае динамически расширяемой хеш таблицы в типовой реализации также необходимо увеличивать её размер и пересчитывать хеши порядка log(N) раз и время соответственно может ухудшиться до O(N*log(N)) в среднем случае, но этот эффект будет проявляться только для относительно больших N и зачастую его так или иначе можно нивелировать (выделяя заведомо больше памяти).

А теперь заменим HashMap на TreeMap:

Вопрос №3: Сложность метода будет равна O(log(n)) ?

Да

Вопрос №4: Сложность всей системы будет равен O(n) ? Т.к. он сложится из O(n) + O(log(n)) -> O(n) т.к. она растет быстрее чем логарифм.

Нет, здесь не верно: нужно N раз сделать операцию сложностью O(log(n)), где n в среднем равно N/2. т.е. сложность будет O(N*log(N)).

Оцените статью