본문 바로가기

Computer Science 기초

2-1. Algorithms

Algorithms

알고리즘은 입력(Input)에서 받은 자료를 출력(Output형태로 만드는 처리 과정을 말합니다. 즉 알고리즘이란 입력값을 출력값의 형태로 바꾸기 위해 어떤 명령들이 수행되어야 하는지에 대한 규칙들의 순서적 나열 입니다.

정확하고 효율적인 Algorithms

예를 들어 전화번호부에서 Mike Smith를 찾는다면 전화번호부의 처음 페이지부터 그 페이지에 Mike Smith가 있는지 찾은 후 없으면 그 다음페이지를 찾습니다. 

Mike Smith를 찾을 때까지 반복하다보면 만약 Mike Smith가 전화번호부에 있다면 언젠가는 Mike Smith를 찾을 수 있습니다. 

알고리즘을 평가할 때는 정확성도 중요하지만 효율성도 중요합니다. 효율성은 작업을 완료하기까지 얼마나 시간과 노력을 덜 들일 수 있는지에 대한 것입니다. 한페이지씩 넘겨서 찾는 것은 효율성 측면에서 매우 비효율적이고 시간도 오래걸립니다.

이번에는 전화번호부의 가운데를 열고 그 페이지에 Mike Smith가 있다면 알고리즘은 끝납니다. 하지만 없다면 전화번호부가 이름순으로 정렬되어 있으므로 Mike Smith가 현 페이지에서 앞부분에 있는지 뒷부준에 있는지 알 수 있습니다. 그러므로 책의 절반을 버릴 수 있게 되고 나머지 절반에 대해 똑같은 알고리즘을 수행합니다. 한 페이지가 남을 때 까지 계속 수행한다면 마지막 페이지에 Mike Smith가 존재하거나 없거나 둘 중 하나입니다. 이는 앞서 말한 방법보다 효율 적입니다. 

의사코드

의사코드는 필요한 행동이나 조건을 잘 설정하여 컴퓨터가 수행해야 하는 일을 절차적으로 파악할 수 있게 도와줍니다.

 

1    Pick up phone book

2    Open to middle of phone book

3    Look at page

4    If smith is on page

5        Call Mike

6    Else if Smith is earlier in book

7        Open to middle of left half of book

8        Go back to line 3

9    Else if Smith is later in book

10       Open to middle of right half of book

11       Go back to line 3

12   Else

13       Quit   

 

1     전화번호부를 든다

2.    전화번호부의 중간을 편다

3.    페이지를 본다

4.    만약 Mike Smith가 페이지에 있으면

5.        Mike Smith에게 전화한다

6.    그렇지 않고 만약 Mike Smith가 앞 페이지에 있으면

7.        앞 페이지의 절반을 핀다

8.        3번째 줄부터 다시 실행한다

9.    그렇지 않고 만약 Mike Smith가 뒷 페이지에 있으면

10.      뒷 페이지의 절반을 편다

11.      3번째 줄부터 다시 실행한다

12   그렇지 않으면 

13.      그만둔다

 

노란색 부분은 함수라고 불립니다. 함수는 컴퓨터에게 이 경우에는 사람에게 무엇을 할 지 알려주는 동사와 같습니다. 

 

1    Pick up phone book

2    Open to middle of phone book

3    Look at page

4    If smith is on page

5        Call Mike

6    Else if Smith is earlier in book

7        Open to middle of left half of book

8        Go back to line 3

9    Else if Smith is later in book

10       Open to middle of right half of book

11       Go back to line 3

12   Else

13       Quit  

 

다음 노란색으로 강조된 부분들은 조건이라고 부릅니다. 여러 선택지 중 하나를 고르는 것입니다. 

 

1    Pick up phone book

2    Open to middle of phone book

3    Look at page

4    If smith is on page

5        Call Mike

6    Else if Smith is earlier in book

7        Open to middle of left half of book

8        Go back to line 3

9    Else if Smith is later in book

10       Open to middle of right half of book

11       Go back to line 3

12   Else

13       Quit 

 

앞서 말한 결정을 내리기 위한 질문이 필요합니다. 이것을 불리언이라고 합니다. 답이 예, 아니오 혹은 참, 거짓으로 나오는 아니면 2진법에서 0또는 1로 나오는 질문을 뜻합니다. 

 

1    Pick up phone book

2    Open to middle of phone book

3    Look at page

4    If smith is on page

5        Call Mike

6    Else if Smith is earlier in book

7        Open to middle of left half of book

8        Go back to line 3

9    Else if Smith is later in book

10       Open to middle of right half of book

11       Go back to line 3

12   Else

13       Quit 

 

노란색으로 강조된 부분은 루프 입니다. 어떤것을 계속해서 반복하는 순환입니다.

 

1    Pick up phone book

2    Open to middle of phone book

3    Look at page

4    If smith is on page

5        Call Mike

6    Else if Smith is earlier in book

7        Open to middle of left half of book

8        Go back to line 3

9    Else if Smith is later in book

10       Open to middle of right half of book

11       Go back to line 3

12   Else

13       Quit 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Computer Science 기초' 카테고리의 다른 글

01 - 4. 이미지  (0) 2020.06.28
01- 3. ASCII 코드  (0) 2020.06.28
01-2. 비트와 바이트, 2진수, 16진수  (0) 2020.06.28
01-1. 하드웨어  (0) 2020.06.28