ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ์ˆ˜ํ•™์  ๊ท€๋‚ฉ๋ฒ•์œผ๋กœ ์žฌ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฆ๋ช…
    PROGRAMMING/์ž๋ฃŒ๊ตฌ์กฐ 2020. 6. 18. 13:28

    ์ˆ˜ํ•™์  ๊ท€๋‚ฉ๋ฒ•์œผ๋กœ ์žฌ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ฆ๋ช…ํ•˜๊ธฐ ์œ„ํ•ด์„  ๋‹ค์Œ์˜ ๋‘ ๊ฐ€์ง€๋งŒ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.

    โ‘  P(1) ์ด ์ฐธ์ด๋‹ค.

    โ‘ก P(x-1) -> P(x) ๋Š” ์ฐธ์ด๋‹ค.

    ์ฆ‰, P(x-1) ์ด ์ฐธ์ด๋ผ๊ณ  ๋ฏฟ๊ณ (๊ฐ€์ •) P(x) ํ™•์ธ! :: ์žฌ๊ท€ ์ฝ”๋“œ๋Š” "์žฌ๊ท€๋Š” ํ•ญ์ƒ ์„ฑ๊ณตํ•œ๋‹ค"๊ณ  ์ฝ์œผ๋ฉด ๋จ

     

    ๋‹ค์Œ์˜ ๋‘ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž. (c์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.)

    int sum(int x)
    {
        int i, num;
        num=0;
        for (int i=0; i<num; i++)
        	num+=i;
        return num;
    }
    int sum2(int x){
    	if(x<=0) return 0;
        else return x+ sum(x-1);
    }

    ๋‘ ์ฝ”๋“œ๋Š” ๋ชจ๋‘ 1๋ถ€ํ„ฐ ์ธ์ž๋กœ ๋ฐ›์€ x ๊นŒ์ง€์˜ ํ•ฉ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

    ๋‹จ, ์œ„์˜ ์ฝ”๋“œ๋Š” ๋ฐ˜๋ณต์  ์ ˆ์ฐจ(iterative process) ๋กœ, ์•„๋ž˜์˜ ์ฝ”๋“œ๋Š” ์žฌ๊ท€์  ์ ˆ์ฐจ(recursive process) ๋กœ ์ž‘์„ฑ๋˜์—ˆ๋‹ค.

    ์ด ๋•Œ, ์ด ๋‘ ์ฝ”๋“œ๊ฐ€ ์ •๋ง '1๋ถ€ํ„ฐ x ๊นŒ์ง€์˜ ํ•ฉ์„ ๋ฆฌํ„ด' ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ฆ๋ช…ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?

     

    ๋ฐ˜๋ณต์  ์ ˆ์ฐจ์ธ ์œ„์˜ ์ฝ”๋“œ๋Š” 'ํ•˜๋‚˜์”ฉ' ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

    ํ•˜์ง€๋งŒ ์žฌ๊ท€ ์ฝ”๋“œ๋Š” ํ•˜๋‚˜์”ฉ, ~๋กœ ๋“ค์–ด๊ฐ€์„œ ๋“ฑ์˜ ๋ฐฉ์‹์œผ๋กœ๋Š” ์ง์ž‘ํ•ด์„œ ์ดํ•ดํ•˜๊ธฐ ํž˜๋“ค๋‹ค.

    ์ด๋Ÿด ๋•Œ ์ˆ˜ํ•™์  ๊ท€๋‚ฉ๋ฒ•์„ ํ†ตํ•ด ๋ช…์พŒํ•˜๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฆ๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

     

    <Proof> P(n) : sum(x) ๋Š” 1+2+...+x ๋ฅผ (ํ•ญ์ƒ) ๋ฆฌํ„ดํ•œ๋‹ค.

    1. (Base) P(1) ์ด ์ฐธ์ด๋‹ค : sum(1) ์ด ๋ฆฌํ„ดํ•˜๋Š” ๊ฐ’์€ 1 ์ด๋‹ค -> ์ฝ”๋“œ์— 1์„ ๋Œ€์ž…ํ•˜๋ฉด 1์„ ๋ฆฌํ„ดํ•จ์„ ์•Œ ์ˆ˜ ์žˆ์Œ

    2. (Step) P(x-1) -> P(x) ์ด ์ฐธ์ด๋‹ค : sum(x-1) ์ด 1+2+...+(x-1) ์„ ๋ฆฌํ„ดํ•˜๋ฉด sum(x) ๋Š” 1+2+...+(x-1)+x ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

    => ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด sum(x) ๋Š” x + sum(x-1) ์˜ ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค. sum(x-1) ์€ 1+2+...+(x-1) ๊ณผ ๊ฐ™๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์œผ๋ฏ€๋กœ sum(x) ๋Š” x + (1+2+...+x-1) ์„ ๋ฆฌํ„ดํ•จ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

     

    ๋‹ค์‹œ ๋งํ•ด, sum(x-1) ์ด "์ž์‹ ์˜ ์—ญํ• ์„ ํ•œ๋‹ค" , "์žฌ๊ท€๊ฐ€ ์„ฑ๊ณตํ•œ๋‹ค" ๋ผ๊ณ  '๋ฏฟ๋Š”๋‹ค'๋ฉด, sum(x) ๋Š” ๊ทธ ๋ฏฟ๋Š” ๊ฐ€์ •์—์„œ sum(x) ๊ฐ€ ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์„ ํ•จ๊ป˜ ๋ฆฌํ„ดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฐธ์ž„์„ ์ฆ๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

     

    ์ด๋ ‡๋“ฏ, ์ˆ˜ํ•™์  ๊ท€๋‚ฉ๋ฒ•์œผ๋กœ ์žฌ๊ท€๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฆ๋ช…ํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ˆ˜ํ•™์  ๊ท€๋‚ฉ๋ฒ•์ด ์ฆ๋ช…์— ์œ ์šฉํ•จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

     

    ์ด ์žฌ๊ท€ ์ฝ”๋“œ์˜ Complexity ๋ฅผ ์‚ดํŽด๋ณด์ž.

    T(n) = 1 + T(n-1)

          = 1+ 1 + T(n-2) = .... = n

    ∴ T(n) = O(n)

    n ํ•˜๊ณ  ๋น„์Šทํ•œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆผ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

    ๋ณต์žก๋„๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด์ง€๋งŒ, ์œ„์˜ ๋ฐ˜๋ณต์  ์ ˆ์ฐจ ์ฝ”๋“œ ์—ญ์‹œ n ๋ฒˆ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ n ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ฒŒ ๋œ๋‹ค.

    ๋Œ“๊ธ€

Designed by Tistory.