Amugona study 1회 jjw

42
Data Structures amugona study 1 회 20150717 jjw
  • Upload

    -
  • Category

    Software

  • view

    35
  • download

    9

Transcript of Amugona study 1회 jjw

Page 1: Amugona study 1회 jjw

Data Structuresamugona study 1 회

20150717 jjw

Page 2: Amugona study 1회 jjw

2amugona2015

Programs = Data Structures + Algorithms

program 이 올바르고 효율적으로 작성되기 위해서는data structures 와 algorithms 이 정확하고 효율적이어야 한다 .

Programming

Page 3: Amugona study 1회 jjw

3amugona2015

목차

DataAlgorithmsStringArrayStackQueueListGraph

Page 4: Amugona study 1회 jjw

4amugona2015

Data

data○ 컴퓨터로 처리하려는 대상

information○ 어떤 문제를 해결하기 위해 컴퓨터로 처리되어 의미가 있는 data

? 컴퓨터는 다음 data 를 어떻게 표현할까○ 정수 , 실수 , 배정도 실수 , 복소수○ 문자 , 논리 , 포인터

Page 5: Amugona study 1회 jjw

5amugona2015

Abstraction

정의○ 많은 image 에서 공통적이거나 중요한 것을 뽑아내어 그것만을

단순하게 표현한 것○ 복잡한 자료 , 모듈 , 시스템 등으로부터 핵심적인 개념 또는

기능을 간추려 내는 것

• abstraction의 목적은 인간에게 편리성을 제공하기 위함

Page 6: Amugona study 1회 jjw

6amugona2015

추상적 ↔ 구체적

Abstraction

추상화

상수 10 은 여기서 이렇게 표시되며 변수 x 는 저렇게 구현되며 치환연산은 요렇게 처리된다 int x = 10;

1)http://www.ipnomics.co.kr/wp-content/uploads/2)http://techholic.co.kr/archives/11390

1 2

Page 7: Amugona study 1회 jjw

7amugona2015

Abstraction

문제를 해결하는 과정에서의 abstraction 의 예

문제의 해결 단계

• 세상 모든 문제는 비슷비슷

• 추상은 인간지향적 , 기계독립적

줄을 선다

• 은행에 저금하러 간 엄마• 한정판 게임기를 사러 매장에 간 덕후 • 시분할처리환경의 프로그램 작업들• 통신용 버퍼의 패킷

추상화

Queue

공통점

문제

what처리대상

how처리방법

data

algorithm

program 해결

abstraction 문제변환

Page 8: Amugona study 1회 jjw

8amugona2015

Abstraction 종류

data abstraction○ data 의 종류마다 그 처리방식을 달리 해주는 것

operation abstraction○ 실제 data 에 가해진 operation 이 내부적으로는 어떻게

수행되는지 알 필요가 없음algorithm abstraction

○ algorithm 의 세세하고 지엽적인 특성은 무시하고 핵심만을 간추려 놓은 것

Page 9: Amugona study 1회 jjw

9amugona2015

Data structures

data type ○ 정의

■ data object 의 집합과 operation 집합○ 구분

■ scalar data type(=elementary data type)□ int, float, char 등으로 선언

■ structured data type□ data type 들의 집합 ( 필드 ) 으로 구성된 영역□ int arr[10]={1,2,3…} 등으로 선언

Page 10: Amugona study 1회 jjw

10amugona2015

Data structures

data structure○ 정의

■ 일종의 structured data type 으로 , data 의 개념적 형태○ 종류

• data 를 ab-straction 한 결과

simple

• string

• array

• record

linear

• stack

• queue

• list

non-linear

• graph

• tree

• binary tree

• special tree

Page 11: Amugona study 1회 jjw

11amugona2015

Algorithm

algorithm 의 정의○ 어떤 특정 문제를 해결하기 위한 명령어들의 유한 집합

programs = data structures + algorithms○ algorithm 의 작성은 data 가 저장되는 방법과 구조에 의존

algorithms 의 조건○ input○ output○ definiteness○ finiteness○ effectiveness

Page 12: Amugona study 1회 jjw

12amugona2015

Algorithm 의 표현

algorithm 의 표현 방법○ flow chart○ pseudo code

그림 : http://www.csgcse.co.uk/programming/flowcharts-pseu-docode/

Page 13: Amugona study 1회 jjw

13amugona2015

Algorithm 의 분석

판단 기준○ correctness

■ 올바른 input 에 대해 유한 시간 내 옳은 답을 내는가○ amount of work done

■ algorithm 에 의해 수행되는 일의 양■ average behavior■ worst-case

○ amount of space used■ algorithm 수행 시 필요한 기억 공간의 사용량

○ simplicity/clarity■ algorithm 의 작성이 쉽고 간결하며 해독성이 높은가

○ optimality■ 실행시간의 평균 = 최악의 경우

Page 14: Amugona study 1회 jjw

14amugona2015

Algorithm 의 분석

correctness 판단○ 실행에 필요한 input 과 각 input 에 대해 생성되는 output 을

자세히 기술한 후 이것을 증명○ mathematical induction

■ algorithm 내의 loop 가 정확히 수행되는가를 증명하는데 사용

Page 15: Amugona study 1회 jjw

15amugona2015

Algorithm 의 분석

sequential search 의 correctness 증명○ input: L, n, x(L 은 n 개의 원소로 된 배열 )○ output: index

증명 ) mathematical induction 으로 다음을 증명하고자 한다 .

• 이 알고리즘이 수행하고자 하는 것

• 수학적 귀납법으로 증명

• 프로그램의 정확성을 엄격하게 증명하고자 할 때

index=0;while(index < n && L[index] != x)

index++;if(index==n) then index=-1;

1234

0≤k≤n 의 범위를 갖는 k 에 대해 , 2 라인의 k 번째 도달했을 때에는 index=k-1 이고 , 0≤i<k 에 대해 L[i]≠k 이다 .

Page 16: Amugona study 1회 jjw

16amugona2015

Algorithm 의 분석

amount of work done 측정하기? 측정방법으로 적절한 것은

■ 알고리즘의 실제 실행 시간 (X)□ 컴퓨터에 따라 달라짐

■ 프로그램에 의해 실행되는 명령어들의 개수 (X)□ PL 과 프로그래머에 따라 달라짐

■ 알고리즘의 중요 연산들 (O)□ 전체 연산 개수와 중요 연산 개수가 어느 정도 비례한다면 좋은 판단 기준이

될 수 있음

Page 17: Amugona study 1회 jjw

17amugona2015

Algorithm 의 분석

○ 입력 자료의 양과 형태에 따라 달라짐 ■ average behavior

□ : 어떤 문제 해결을 위한 크기 n 인 입력들의 집합□ : 원소□ : 가 발생할 확률□ : 입력 에 대해 알고리즘 수행 시 중요 연산 개수

■ worst-case

𝐴 (𝑛 )= ∑𝐼∈𝐷𝑛

𝑝 ( 𝐼 )𝑡 (𝐼 )

𝑊 (𝑛)=max𝐼 ∈𝐷𝑛

𝑡 (𝐼 )

Page 18: Amugona study 1회 jjw

18amugona2015

Algorithm 의 분석

sequential search algorithm 의 worst-case 와 average behavior 분석

○ L 은 n 개의 원소가 들어가는 배열이다 . 배열에서 x 를 찾으면 그 위치를 찾고 , x 가 배열에 없으면 -1 을 출력하라 .

? 중요 연산? ?

Page 19: Amugona study 1회 jjw

19amugona2015

Algorithm 의 분석

행렬의 곱의 worst-case 와 average behavior 분석○ A=(), B=() 인 실수 원소의 행렬 , C=AB 는 ?

? 중요 연산? ?

for(i=0;i<n;i++){ for(j=0;j<n;j++){ c[i][j]=0; for(k=0;k<n;k++){ c[i][j] += a[i][k]*b[k][j]; } }}

12345678

𝑐 𝑖𝑗=∑𝑘=1

𝑛

𝑎𝑖𝑘𝑏𝑖𝑘(1≤ 𝑖 , 𝑖≤𝑛)

행렬의 곱 정의

Page 20: Amugona study 1회 jjw

20amugona2015

Algorithm 의 복잡도

정의○ 작성된 algorithm 의 effectiveness 정도를 나타내는 기준

시간 복잡도○ 주어진 문제 해결을 위한 algorithm 수행 시 사용되는 기본연산의

빈도수를 차수로 표현한 것○ Ο 표시법

■ 연산 차수가 가장 높은 것을 택하여 나타냄○ Ω 표시법

■ 연산차수가 가장 낮은 것을 택하여 나타냄공간 복잡도

○ algorithm 을 비교 시 기억장소를 특정단위로 나눈 후 어떤 algo-rithm 이 몇 개의 기억장소영역을 차지하는가를 측정하여 나타냄

Page 21: Amugona study 1회 jjw

21amugona2015

String

정의○ 일련의 문자

사용○ 언어학적 분석 / 수행을 위해 컴퓨터에 전해지는 프로그램의 기본

매개체○ 문서편집기 , 문서처리시스템에 의해 조작되는 문서의 기본 매개체○ CPU 와 주변 장치간 IO transaction 에서 data 교환을 위한

주요 매개체○ PL 에서 label 이나 identifier 나 procedure 의 이름으로 사

용 , 저장 , 출력 , 조작되는 데이터로 사용○ 항목 명명 , 저장된 값 나타내기 위해 테이블 내에 사용

• identifier

• keyword

Page 22: Amugona study 1회 jjw

22amugona2015

String 의 표현방법

순차 string고정길이 string

○압축 string○ linked list

가변길이 string

Page 23: Amugona study 1회 jjw

23amugona2015

String 의 연산

concatenationinsertiondeletionreplacementsubstringpattern matchingindexing

Page 24: Amugona study 1회 jjw

24amugona2015

Array

정의○동일한 data 형태를 가지는 원소들이 2 차원 (index, value)

장방형 구조에 놓여있는 집합체특징

○같은 data 의 집단을 취급하는 경우 유용한 data structure

연산○검색○ 저장

Page 25: Amugona study 1회 jjw

25amugona2015

1 차원 배열 (vector)

크기가 n 개인 배열 A

1 차원 배열 표현 방법

○ 원소의 수 ○ 인덱스가 인 원소 주소

■ 개의 기억장소 단위 , 배열의 시작 주소

• A(L:U) 는 하한 , 상한을 명시한 배열의 범위를 사용하여 표현한 것

A(0) A(1) A(2) … … … A(n-2)

A(n-1)

Page 26: Amugona study 1회 jjw

26amugona2015

1 차원 배열 (vector)

예제○ 배열 A(0:99) 에서 , 첫 원소의 주소가 200 번지 , 원소의

크기는 10bytes 인 1 차원 배열에서 50 번째 원소의 주소는 ?

Page 27: Amugona study 1회 jjw

27amugona2015

2 차원 배열

m*n 의 배열

2 차원 배열 표현 방법○ 리고 ○ 원소의 수 개

q

p

q+1 n

p+1

m

벡터의 길이

벡터의

Page 28: Amugona study 1회 jjw

28amugona2015

Stack

정의○ 특별한 형태의 linear list 로 , memory 에 data 를

일시적으로 쌓아두었다 필요 시 꺼내 사용할 수 있도록 main memory 나 register 의 일부를 할당하여 사용하는 임시적 memory

특징○ list 내의 data 삽입과 삭제가 한쪽 끝 (top) 에서만 일어남○ LIFO

응용분야○ 수식 계산 , subroutine call, 순환미로실험 , push-down

automata, quick sort …

• linear list: 순서가 정해진 data 의 모임

• pushdown list, LIFO list

Page 29: Amugona study 1회 jjw

29amugona2015

Stack

stack 을 특징짓는 것은 ?○ stack 은 추상적이며 논리적인 구조○ 기억장소에 물리적으로 표현되는 모습 (X)○ stack 이라는 논리적 구조의 동작 (O)

c

b

a

보기에는 배열과 다를 게 없지만

움직이는걸 보니 stack 이구나

Page 30: Amugona study 1회 jjw

30amugona2015

Stack

연산○ push○ pop

표현○ stack 크기 알 때 1 차원 array○ stack 크기 모를 때 linked list

? 동작

c

b

a

top c b a

Page 31: Amugona study 1회 jjw

31amugona2015

Queue

정의○ 한쪽 끝에서 data 삭제 , 다른 한쪽 끝에서 data 삽입되는

linear list

특징○삭제되는 한쪽 끝 (front) 와 삽입되는 한쪽 끝 (rear)○ FIFO

연산○ front(Q)○ rear(Q)○ noel(Q)

Page 32: Amugona study 1회 jjw

32amugona2015

Queue

표현○ 1 차원 array○ linked list

응용○ scheduling○ 통신할 process 선택○ 여러 system 에서 simulation 을 위한 modeling

? 동작

Page 33: Amugona study 1회 jjw

33amugona2015

Circular queue

정의○ 배열의 처음과 끝을 이어놓은 형태의 큐

특징○큐의 단점 보완

■ overflow 시 queue 전체를 옮기는데 걸리는 시간 손실

? 동작

Page 34: Amugona study 1회 jjw

34amugona2015

Double ended queue(deque)

정의○삽입과 삭제가 양쪽 끝에서 모두 허용될 수 있는 linear list

queue 의 일반화특징

○ stack 과 queue 를 하나의 linear list 에 복합시킨 형태표현

○ stack○ 1 차원 array○ singly linked list○ doubly linked list

Page 35: Amugona study 1회 jjw

35amugona2015

Double ended queue(deque)

종류○ 입력 제한 (scroll)

■ 삽입이 한쪽 끝에서만 일어나도록 함○ 출력 제한 (shelf)

■ 삭제가 한쪽 끝에서만 일어나도록 함

• 삽입 , 삭제를 제한함에 따른

Page 36: Amugona study 1회 jjw

36amugona2015

List

linear list○ array 와 같이 연속된 기억 장소에 저장되는 list○ 특징

■ sequential mapping 으로 pointer 불필요■ 단순한 구조 , memory density 높음■ insert, delete 시 data 이동 많음

linked list○ 정의

■ list 의 각 항목들은 다음 항목의 주소에 대한 포인터를 가짐○ 특징

■ non-sequential mapping■ node=data+link

○ 응용■ 다항식의 덧셈■ 희소 행렬

Page 37: Amugona study 1회 jjw

37amugona2015

Circular linked list

정의○ 마지막 node 의 포인터를 NULL 이 아닌 첫 번째 node 의

주소를 가리키도록 구성한 list

응용○ buffer 영역○ terminal service 의 round robin

• linear list• sequential

mapping

• linked list• non-se-

quential mapping

• header pointer• linked list

의 시작 위치를 알려줌

• node• list 의 한

항목• data+link

a1 a2 a3 a4

header

Page 38: Amugona study 1회 jjw

38amugona2015

Doubly linked list

정의○ 다음 node 와 이전 node 를 알 수 있도록 하여 양방향 탐색이

가능한 list

특징○ 연결 부분을 두 개로 하여 효율적인 list 운영○ 각 node 는 2 개의 pointer 를 포함

■ rlink: 오른쪽 방향 나타내는 (after node 를 가리키는 ) pointer■ llink: 왼쪽 방향을 나타내는 (before node 를 가리키는 ) pointer

• circular linked list 의 단점• list 를 뒤로

순회할 수 없음

• 삭제하려는 node 의 포인터만으로 삭제 못함

a1 a2 a3 a4

header

Page 39: Amugona study 1회 jjw

39amugona2015

Doubly linked circular list

정의○ doubly linked list 의 왼쪽 끝 node 의 llink 는 오른쪽 끝

node 를 가리키고 , 오른쪽 끝 node 의 rlink 는 왼쪽 끝 node 를 가리키며 , 여기에 head node 를 가짐

• 양방향 탐색가능

a1 a2 a3 a4

header

a1 a2 a3 a4

head node-

Page 40: Amugona study 1회 jjw

40amugona2015

Graph

graphvertexedgegraph classification1

○ undirected graph○ directed graph○ mixed graph

graph classification2○ simple graph○ multi graph

weightweighted graph

• network

• tree

• dag

• 무엇에 따른 구분인가

null graph○ isolated vertex

complete graphpathlengthcyclic graphacyclic graphdirected acyclic graphtotal degree

○ indegree○ outdegree

subgraphconnected graph

Page 41: Amugona study 1회 jjw

41amugona2015

Graph

응용○ PREP/CPM○ topological sort○ minimum cost spanning tree○ maximum flow

? graph 왜 쓸까

Page 42: Amugona study 1회 jjw

42amugona2015

Topological sort

정의○ directed acyclic graph 에 대해 가능한 정렬 방법