-1

강사는 알고리즘의 계산 복잡도를 계산하는 방법을 알려 주었지만 매우 간단하고 잘 수행하지 못했습니다. 보다 구체적으로, 누군가가 나에게 다음의 계산 복잡도 계산 도움이 될 수 : 그들은 방법 나는 그것에 대해 생각했습니다알고리즘의 효율성과 복잡성 계산

 While (PLength > 0) 
     chartest = sHex(i) 
     ascvalue = Strings.Asc(chartest) 
     decvalue = Convert.ToDecimal(ascvalue) 
     shiftdecvalue = decvalue + 1 
     asc = ChrW(shiftdecvalue) 
     emptychararray(i) = asc 
     i = i + 1 
     PLength = PLength - 1 
    End While 

을, 그냥 나옵니다 T (N) = C_1 * N + C_2 * (N (n-1) + C_8 * (n-1) + C_8 * (n-1) + C_4 * (n-1)) + C_9 * (n-1) + C_10 * (n-1)

그러나 나는 그것을 지나치게 단순화하는 것처럼 느낀다. 또한, 어떻게 이것을위한 큰 O 표기법을 얻습니까? 나는 스스로에게 이것을 가르치는 방법에 대한 자료를 온라인에서 찾고 있었으므로 권고 사항이 있다면 크게 감사 할 것입니다. 미리 감사드립니다.

+0

여기서 많은 용어를 어디에서 구합니까? 당신은'T (n) = T (n-c) 또는 T (n/c)를 포함하는 것 '으로 작성해야합니다. 재발 관계의 몇 가지 다른 예를 살펴보고, 당신이해야 할 일이 분명 해져야합니다. 마찬가지로 재귀 관계를 big-O 표기법으로 변환하는 많은 예제를 찾을 수 있어야합니다. 또한'sHex','Strings.Asc','Convert.ToDecimal'과'ChrW''의'i'와 관련된 복잡성을 우리에게 말해줘야합니다. – Dukeling

+0

교수님이 가르쳐 준 방식은 일부 작업을 완료하는 모든 코드 줄에 상수가 주어진 다음 작업이 수행 된 횟수를 곱한 것입니다. 그래서 제 생각에는 모든 라인이 n-1 번 완료되었습니다 (n은 while 루프가 수행되는 횟수에 달려 있기 때문입니다). 귀하가 요청한 항목의 복잡성은 1 단계 작업으로 가정됩니다 (주문 n이라고 생각합니다). – user2016082

답변

0

T (n)은 T(n) = C1 * n + C2으로 다시 쓸 수 있다는 점에 유의하십시오. 그런 다음 큰 O 표기법은 상수를 무시하므로 복잡도는 O(n)입니다.

+0

'T (n) = C1 * n + C2'가 어떻게되는지 설명해야합니다. 다른 사람들의 숙제를하고 싶다면 최소한 충분히 자세하게 설명해야합니다. 그러면 그들이 직면 한이 유형의 다음 문제를 파악할 수 있습니다. – Dukeling

+0

@Dukeling 방공호로부터의 응답을 기다리고있었습니다. 사람들이 새로운 개념을 이해하도록 도울 때, 혼란의 원인 인 특정 점을 발견 할 수 있도록 대화를하는 것이 도움이됩니다. 그래서 저는이 문제를 2 등분했습니다. 상반기는 OP의 T (n) 문장에서 단순화 된 T (n) 로의 변환이었고, 후반부는 단순화 된 T (n)에서 big-O 표기법으로의 변환이었습니다. – user3386109

+0

그건 당신이 최소한의 노력으로 OP를 도와주는 좋은 방법 일지 모르지만, 다른 사람들에게 장기간의 가치에 관해서는, 박쥐에서 바로 이해할 수있는 사람에 대해 충분히 자세히 설명하는 것이 낫다고 느낍니다. OP가 문제가 될 수있는 점을 명확히하기 위해 답을 수정하십시오. 또한 표현 OP가 나오자, 나는 당신이 표현을 어떻게 시작했는지 이해할 수있을 것이라는 것을 강하게 ** 의심합니다. – Dukeling