[자료구조] 자료구조란 무엇인가 (2차정리)
자료의 정의
- 현실 세계에서 관찰이나 측정을 통해서 수집된 값이나 사실
- 우리의 생활에서 실제로 만질 수 있거나 볼 수 있는 것(길이,무게,부피 등을 측정할수 있는 대상)에 대해서 물리적인 단위로 표현하여 얻어낼 수 있는 내용
정보의 정의
- 어떤 상황에 대해서 적절한 의사결정을 할 수 있게하는 지식으로서 자료의 유효한 해설이나 자료 상호 간의 관계를 표현하는 내용
- 어떠한 상황에 적절한 결정이나 판단에 사용될 수 있는 형태로 가공되거나 분류되기 위해 ‘처리 과정’을 거쳐서 정리되고 정돈된 ‘자료’의 2차 처리 결과물
추상화
- 자료의 추상화 : 물리적이며 전기적인 동작과는 무관하게 자료를 생각하고 바라보는 사람의 상상
- “정수가 컴퓨터 내부에서 ‘0101’의 이진코드로 어떻게 저장될까”라는 의문 없이 정수 그 자체를 머릿속의 그림처럼 떠올리는 것
- 공통적인 개념을 이용하여 같은 종류의 다양한 객체를 정의하는 것
- 추상화를 통해 간결하게 말하는 사람의 의사를 전달할 수 있게 되는 것
자료의 추상화
- 다양한 대상을 컴퓨터에 저장하고 처리하기 위해 그 대상들의 의미와 구조에 대해서 공통의 특징만을 뽑아 정리한 것
자료구조
- 추상화를 통해 알고리즘에서 사용할 자료의 논리적 관계를 구조화한 것
- 자료의 추상화와 구조화가 적절히 이루어지지 못하면 소프트웨어는 비효율적으로 수행되거나 소프트웨어의 확장성에 문제가 생길 수 있음
알고리즘
- 컴퓨터에게 일을 시키기 위한 (추상화된) 명령어의 연속된 덩어리
- 사람(개발자)이 컴퓨터에게 일을 시키기 위한 사람의 의도와 명령을 전달해 줄 수 있는 방법
- 컴퓨터에게 시킬 일
- 컴퓨터가 수행할 명령어의 유한 집합이 사람의 머릿속에 추상화 되어 존재하는 것
- 컴퓨터에게 시킬 일(프로그램)을 머릿속에서 추상화시켜서 대략적으로 상상해 놓은 것
자료구조와 알고리즘의 관계
-
자료구조는 입력 자료에 대한 추상화 된 상태라면, 알고리즘은 컴퓨터가 수행해야 할 명령의 추상화
- 입력값을 머릿속에서 추상화된 형태(자료구조)로 구조화하고, 수행되어야 할 명령어를 머릿속에서 추상화된 형태(알고리즘)로 체계화 됨
- 프로그래밍 언어 : 자료구조와 알고리즘을 구체화하는 수단
추상 자료형
- 자료구조와 알고리즘의 중간쯤에 있는 자료의 복잡한 논리적 성격을 정의하는 형식
-
자료값의 집합과 연산 집합에 대한 정의로 구성되며, 자료구조를 표현하는 가장 대표적인 방법
- 추상화 : 그림이나 수식과 같이 의미를 표현하고 전달하는 방법
- 추상 자료형 : 전산학에서 사용되는 자료구조를 표현하는(공통의 의미를 추출하여 전달하는) 방법