2016-04-04 2 views
0

Это вопрос моего учебного пособия, но я не уверен, как начать проблему, или даже то, что означает код «to n do». Я видел ответы на другие вопросы, которые также ищут худшую временную сложность, но ничего с кодом, подобным этой проблеме. Я просто ищу общий способ решения этих проблем, поэтому, если есть способ пойти, мне бы очень понравилась помощь. Вопрос ниже.Вычисление сложности с худшим случаем с алгоритмами

Compute the worst case time complexity of the following algorithm. 

for i = 1 to n do 
    for j = 1 to i do 
     for k = 1 to j do 
      print(i,j,k). 

ответ

1

Мне кажется, что нет лучше или в худшем случае временная сложность в данном случае, просто временная сложность. Как упоминалось в статье this wikipedia, лучшие и худшие случаи обычно применимы к таким функциям, как функции сортировки, где время, затраченное алгоритмом, зависит от того, как исходный файл был отсортирован. Таким образом, в вашем случае, по результатам коды MatLab ниже, я бы сказал, что время сложность

1/6*n*(n+1)*(n+2) 

Это прибыл в запустив код для различных значений п, и учитывая, что каждое приращение к п добавляет соответствующий треугольник число операторов печати, то есть код

sum_{i = 1}^{n} 1/2*i*(i+1) = 1/6*n*(n+1)*(n+2) 

Matlab:

n = 5; 

count = 0; 
for i = 1:n 
    for j = 1:i 
     for k = 1:j 
      count = count + 1; 
     end 
    end 
end 

1/6*n*(n+1)*(n+2) 
count 
+0

Хотя очень практично, я думаю, что этот вопрос (и спрашивающий) ищет немного больше аналитический подход –

1

Этот вопрос был дан ответ уже несколько раз, вы можете проверьте их here и here за математическое объяснение.

В принципе, так как это тройной вложенный цикл, худшее время будет 0 (n³)

+0

Хотя верно, индексы цикла являются интересными, возможно, стоит упомянуть? –

+0

Спасибо, мне просто не удалось найти другие вопросы, которые использовали псевдокод вместо фактического кода. Мне просто легче понять это. –

+0

@ LamarLatrell Поскольку это худший случай, я считаю, что можно с уверенностью предположить, что значение индексов не имеет значения и может рассматриваться просто как ** n **. Поправьте меня если я ошибаюсь. – igormp

Смежные вопросы