데이타구조

2016-03-08

 

수업 계획 및 기본 개념 소개

수업계획

  • 학점 평가 방침
  • 실습 환경 안내
  • 과제 제출 안내

학점 평가 방침

  • 출석/퀴즈 25%
  • 과제 25%
  • 중간 25%
  • 기말 25%

실습 환경 안내

  • 화요일 농심관 컴퓨터실 강의에서는
    컴퓨터실에 설치된 Visual Studio 활용
  • 노트북 등 개인 컴퓨터로 과제시에는
    Visual Studio Express (무료버전) 활용
    https://www.visualstudio.com/ko-kr/products/visual-studio-express-vs.aspx
  • 윈도우즈 이외의 다른 OS로 개인 컴퓨터 활용시
    해당 환경에 적합한 개발환경을 선택하되
    첫 프로그래밍 과제 제출 전에 교수와 상담 권장

과제 제출 안내

  • Google Drive 공유 폴더를 통해 (종이 X, 메일 X)
  • DS16<이름><학번> 폴더를 만들고 (예: DS16김연아123456)
    폴더 공유설정으로 kyagrd@gmail.com 에게 공유 (편집권한)
  • Google 메일 계정만 있으면 Google Drive 서비스 이용 가능 
  • Google 메일 계정은 무료로 만들 수 있으며
    참고로 안드로이드 스마트폰 사용자는 누구나 이미 보유

기본개념

  • 데이타 구조와 알고리듬
  • 알고리듬의 복잡도 분석 관련
  • 추상 데이타 타입 (Abstract Data Type)
  • 되돌기(recursion)와 귀납(induction)원리 - 다음 시간에

데이타 구조와 알고리듬

  • 프로그램 = 데이타 구조 + 알고리듬
    -- Niklaus Wirth
      (스위스 컴퓨터 과학자.
       파스칼, 모듈라, 오베론 등의 프로그래밍 언어 설계)
  • 알고리듬
    • 명확한 수행 과정 명시
    • 반드시 끝나야 함
      (끝나기를 원하지 않는 프로그램도 있다: OS, 서버 등)

알고리듬의 복잡도 분석

  • 시간복잡도, 공간복잡도 중 시간복잡도를 주로 많이 분석
    • 시간복잡도 - 끝날 때까지 얼마나 걸리는지
    • 공간복잡도 - 메모리 공간이 얼마나 필요한지
  • 알고리듬의 복잡도는 입력의 크기(n)에 대한 함수로 표현
    • O(1) 상수 알고리듬 constant time algorithm
    • O(log n) 로그 알고리듬 logarithmic algorithm
    • O(n) 선형 알고리듬 linear time algorithm
    • 다항식 알고리듬 polynomial algorithm
      O(n^k) 임의의 k차 다항식 복잡도
    • O(2^n) 지수 알고리듬 exponential algorithm

아래로

갈수록

복잡

!!!

 추상 데이타 타입

  • 인터페이스(interface)를
    구현(implementation)으로부터 분리
  • 비유 - 시계, 자동차
    • 인터페이스(시침/분침, 핸들/페달)는 그대로
    • 예전에는 주로 기계부품으로 구현
    • 요즘에는 주로 전자부품으로 구현
  • SW유지보수 및 재사용성 향상에 도움 되는 중요한 개념

Abstract Data Type (ADT)

데이타구조

By 안기영 (Ahn, Ki Yung)