4. 자료구조와 알고리즘의 관계 및 알고리즘의 특성
자료구조 - 알고 리즘의 기초.
알고리즘 - 컴퓨터에 일을 시키는 명령들의 모음.
- 자료구조 - 명령어들을 수행할 때 필요한 재료들을 넣어 두는 창고. 알고리즘의 성능에도 영향을 줄 수 있을 정도로 밀접한 관계.
알고리즘 - 컴퓨터가 일을 하는 데 필요한 명령어들이 사람의 머릿속에서 추상화되어 존재하는 것. 컴퓨터에게 시킬 일(프로그램)을 머릿속에서 추상화 시켜서 대략적으로 상상해 놓은 것. 추상화시킨 동작들의 연속.
예) 집에서 학교 가는 방법을 알고리즘으로 추상화.
① 집에서 출발 한다.
② 차를 탄다.
③ 차에서 내린다.
④ 강의실에 들어간다.
집에서 출발하기 전에 옷을 입어야 하고 날씨가 추우면 두꺼운 옷을 입어야 하며 타려는 차가 버스인지 지하철인지 결정해야 하고, 요금이 얼마인지 확인해야 하고 가장 가까운 정류 장이 어디인지도 알아야 함. 이처럼 알고리즘과 실제 방법에는 차이가 있음.
다음은 알고리즘이 지니고 있어야 할 조건
1) 출력: 알고리즘을 수행하고 나면 적어도 한 가지 결과를 생성해야 함.
2) 유효성: 알고리즘은 각 연산이 명확한 것만으론 부족하고, 반드시 실행가능해야 함. 명령어를 실행하는 주체가 누구이든 동일한 결과를 생성해야 하며, 이것은 언제나 실행 가능한 명령어를 이용하여 알고리즘 이 만들어져야 함.
3) 입력: 유한한 입력이어야 하며, 반드시 입력 형태가 정의될 수 있어야 함.
4) 명확성: 각 명령들은 명확하고, 애매모호하지 않아야 함. 명령의 실행주체가 누구라도 똑같은 의미로 해석되고 동일한 결과를 생성할 수 있는 알고리즘이어야 함.
5) 유한성: 알고리즘의 명령을 수행하다 보면 언젠가는 멈춰야 함. 특수한 경우를 제외하면 알고리즘은 반드 시 종료가 명확하게 정의되어 있어야 함.