Как оценить затраченное время? (темпы роста)

Предположим, у вас есть программа, решающая задачу ИИ. Когда размер проблемы Н "=" 1 , 000 вашей программе требуется 10 секунд, чтобы найти решение. Оцените время, необходимое для решения проблемы размера Н "=" 1 , 000 , 000 если временная сложность вашего алгоритма:

  1. О ( бревно Н )

  2. О ( Н )

  3. О ( Н бревно Н )

  4. О ( Н 2 )

  5. О ( Н 3 )

Вы можете использовать приближения бревно ( 1 , 000 ) "=" 10 и бревно ( 1 , 000 , 000 ) "=" 20

(Я не силен в математике, поэтому очень ценю любую помощь)

Предположительно, эти логи имеют основание 2.

Ответы (1)

Начнем с (4). Использование О обозначения здесь очень неаккуратны, но что здесь имеется в виду, когда говорят, что временная сложность алгоритма равна О ( Н 2 ) заключается в том, что требуемое время примерно пропорционально Н 2 . То есть существует некоторая постоянная к так что время, необходимое для обработки ввода размера Н примерно к Н 2 . В этой задаче вам говорят, что когда Н "=" 1000 , время 10 секунд, так что к ( 1000 ) 2 "=" 10 . Вы могли бы решить это для к , если уж очень хотелось, да ненужно: хочешь к Н 2 когда Н "=" 1 , 000 , 000 , и 1 , 000 , 000 "=" 1000 2 , так что вы хотите

к ( 1 , 000 , 000 ) 2 "=" к ( 1000 ) 2 ( 1000 ) 2 "=" 10 ( 1000 ) 2 "=" 10 , 000 , 000 ,
с к ( 1000 ) 2 "=" 10 . Другими словами, в (4) ваш алгоритм займет около десяти миллионов секунд, что составляет чуть меньше трети года.

В (2) вам говорят, что алгоритм занимает около к Н секунд, чтобы справиться с проблемой размера Н , И ты знаешь это 1000 к "=" 10 . Я позволю вам попытаться решить это и (5) использовать мое решение для (4) в качестве модели; вы должны получить чуть более двух и трех четвертей часов для (2) и более трех столетий для (5).

Теперь давайте посмотрим на (1): он говорит, что приблизительное время работы на входе размера Н является к бревно Н для некоторой константы к , и нам говорят, что к бревно 1000 "=" 10 . Вам разрешено приближение бревно 1000 10 , так что у нас есть 10 к "=" 10 , или к "=" 1 . Таким образом, приблизительное время работы Н "=" 1 , 000 , 000 является

к бревно 1 , 000 , 000 "=" бревно 1 , 000 , 000 20
секунды.

(3) выглядит самым грязным, но не сложнее остальных: примерное время работы на входе размера Н является к Н бревно Н , и вам дано это к ( 1000 ) бревно 1000 "=" 10 . Еще раз вы можете либо решить для к и подключи Н "=" 1 , 000 , 000 или использовать данную точку данных более прямым способом, как я сделал с (4); вы должны получить продолжительность чуть более пяти с половиной часов.