2016-10-13 2 views
2

сложность алгоритма выпуклой оболочки может быть представлена ​​в суммирующей нотации:Временная сложность алгоритма выпуклая оболочка

1 C(n)=sum(i=1..n-1)sum(j=i+1..n)sum(k=1..n)1 
2 =sum(i=1..n-1)sum(j=i+1..n)n 
3 =nsum(i=1..n-1)sum(j=i+1..n)1 
4 =nsum(i=1..n-1)(n-i) 

И отсюда мой профессор прыгнул прямо:

5 =nsum(i=1..n-1)i 
6 =n*n(n-1)/2 
7 =(n^3-n^2)/2 

Я не» t получить, как он просто избавился от n в строке 4. Я попробовал другой подход и получил совершенно другой ответ:

5 =nsum(i=1..n-1)n - sum(i=1..n-1)i 
6 =nsum(i=1..n-1)n - n(n-1)/2 
7 =n^2sum(i=1..n-1)1 - n(n-1)/2 
8 =n^2(n-1) - n(n-1)/2 
9 =n^3-n^2 - n^2/2 - n/2 

Может ли кто-нибудь объяснить, как мой профессор избавился от n и почему мое решение неверно?

Благодаря

+2

Я не знаком с суммирования обозначений, но если (4) представляет собой «сумму (Ni) для I = 1 до N-1», то, что так же, как «сумма (i) для i = 1 до n-1 ". это разница между 5 + 4 + 3 + 2 + 1 и 1 + 2 + 3 + 4 + 5. – Blorgbeard

+0

Thanks @Blorgbeard –

ответ

1

Чтобы увидеть, где ошибка, все, что вам нужно сделать, это выбрать небольшое число для n и посмотреть, как математика работает. Итак, давайте выбираем n=3.

4 =3sum(i=1..2)(3-i) = 3(2+1) = 9 
5 =3sum(i=1..2)i  = 3(1+2) = 9 

Теперь ваш

5 =3sum(i=1..2)3 - sum(i=1..2)i = 3(3+3) - (1+2) = 18-3 = 15 

Проблема заключается в том, что вы не размножались оба термина на n

5 =n(sum(i=1..n-1)n - sum(i=1..n-1)i) 
6 =n((n-1)n - (n-1)n/2) 
7 =n((n-1)n/2) 
+0

Спасибо! Но почему (n-1) n исчезает из строк 6-7? –

+0

@JohnT Чтобы перейти от строки 6 к 7, подумайте о 'x - x/2' – user3386109

+1

Я вижу, спасибо –

0

Развернуть условия:

nsum(i=1..n-1)(n-i) = (n-1) + (n-2) + ... + (n-(n-1))=1 

Теперь посмотрим на их в обратном порядке е:

1 + ... (n-2) + (n-1) = sum(i=1..n-1)i 
+0

Спасибо @Gene –