Вопрос

Учебник «Недружественные алгоритмы Snape» утверждают, что время работы слияния слияния является O (N ^ 4). Это претензия правильно?

Решение: Да. Это утверждение технически правильно, поскольку O (N ^ 4) дает только верхнюю оценку для того, как долго принимает алгоритм. Тем не менее, это отвратительно бесполезный ответ, так как плотная граница Θ(n log n).

Я не совсем понимаю, что такое решение. Как можно o (n ^ 4) быть правильным?

Это было полезно?

Решение

Обозначение больших o - это верхний отуз на худшем случае для во время выполнения алгоритма.

Поскольку O (N ^ 4) вышеупомянутого времени времена случаев Mergeort, это технически правильно, потому что он обеспечивает границу - то есть. Mergeort никогда не будет производительности хуже, чем o (n ^ 4).

Тем не менее, это бесполезно, потому что лучшее выражение времени работы - это o (n log n), который является «жестким» связанным для слияния

Другие советы

Big-O - это набор, который включает в себя все, что работает так быстро, как (Foo) или быстрее. Little-O - это набор вещей, которые бегают строго быстрее, чем (foo). Хотя правильно сказать, что mergeort - это o (n ^ 4), это не очень полезно, потому что это тета (n log n). Сказав, что mergeort is o (n ^ 4) незначительно полезнее, потому что нотация Little-o никогда не используется, чтобы подразумевать временную среду Big-Theta.

Дальнейшие осложняющие вопросы, Big-O часто используется, когда Big-Theta будет более подходящим, только потому, что большинство клавиатур не имеют тета.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top