제 1 장. 자료구조와 알고리즘.

Slides:



Advertisements
Similar presentations
Copyright © 2015 Pearson Education, Inc. 6 장 : 프로그래밍 언어.
Advertisements

YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
Copyright © 2006 The McGraw-Hill Companies, Inc. 프로그래밍 언어론 2nd edition Tucker and Noonan 5 장 타입 “ 타입은 컴퓨터 프로그래밍의 효소이다 ; 프로그래밍은 타입을 통해 소화할만한 것이 된다.” 로빈.
© DBLAB, SNU 화일구조. 강의 소개 - 화일구조  Instructor : Prof. Sukho Lee (301 동 404 호 )  홈페이지 :  교과목 개요 – 이 과목은 데이타 관리와 응용을 위한 화일 구조의 설계와.
화일구조.
제 4 장 변수, 영역, 수명 변수 바인딩 영역 기억장소 할당과 수명 변수와 그 환경 변수 초기화 상수와 변수.
8장 프로그래밍 언어 8.1 프로그램이란? 8.2 프로그램 언어의 역사 8.3 프로그램 설계 절차
CHAP 1:자료구조와 알고리즘.
Chapter 3 – 프로그래밍 언어 설계 Outline 3.1 설계 기준의 역사적 변천 3.2 효율성
CHAP 1:자료구조와 알고리즘 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
기본 컴퓨터 프로그래밍 Lecture #6.
제 7 장 문장 구조화 제어문 지정문 조건문 반복문 GOTO 문 비결정적문.
시스템 생명 주기(System Life Cycle)(1/2)
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 1 강원대학교 컴퓨터과학전공 문양세.
제 6 장 데이터 타입 6.1 데이터 타입 및 타입 정보 6.2 타입의 용도 6.3 타입 구성자 6.4 사례 연구
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
시스템 생명 주기(System Life Cycle)(1/2)
프로그래밍언어론 2nd edition Tucker and Noonan
출처: IT CookBook, 컴퓨터 구조와 원리 2.0 제 12장
프로그램 개발과 언어 Chapter 05 컴퓨터의 이해
A system is a set of related components that work together in a particular environment to perform whatever functions are required to achieve the system’s.
자료구조 김현성.
장. 문법 구조(Syntax) 컴퓨터공학과 권기태 프로그래밍언어론.
제 1 장 C 언어의 개요 Google 공동 창업자, 래리 페이지와 세르게이 브린.
1 마이크로프로세서의 원리 마이크로컨트롤러 AVR ATmega128.
프로그래밍 서울대학교 통계학과 2009년 2학기 컴퓨터의 개념 및 실습 (
멀티미디어시스템 멀티미디어 정보화 사회 IT응용시스템공학과 김 형 진 교수.
CHAP 1:자료구조와 알고리즘 C로 쉽게 풀어쓴 자료구조 생능출판사 Slide 1 (of 28)
쉽게 풀어쓴 C언어 Express 제1장 프로그래밍의 개념 C Express.
Chapter 1 Welcome Aboard.
Chapter 2 – 언어의 변천 Outline 2.1 디지털 컴퓨터 이전의 언어
5장 이름, 바인딩, 영역(2) 순천향대학교 컴퓨터공학과 하상호.
컴퓨터 시스템 개관 시스템 프로그래밍 - Lecture #1 신라대학교 컴퓨터공학과 시스템 프로그래밍.
제 10장 부 프로그램 10.1 개요 10.2 매개 변수 평가와 전달 기법 10.3 형식 매개 변수 명세
자료구조(SCSC) Data Structures
강의 소개, 자료구조의 개념, SW 개발과 자료구조
제 8 장 객체지향 데이타베이스와 데이타베이스의 새로운 응용 분야
다음 주 과제 3장 읽어오기 숙제 해서 제출하기. 자료구조와 알고리즘, 순환 E304호,
Introduction to Programming Language
제1장 자료구조를 배우기 위한 준비.
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 년 봄학기
Chapter 01 자료 구조와 알고리즘.
Chap. 1 Data Structure & Algorithms
[CPA340] Algorithms and Practice Youn-Hee Han
프로그래밍 원리 Chapter 04 자료 처리와 연산자 신한대학교 IT융합공학부 박 호 균.
프로그래밍언어론 2nd edition Tucker and Noonan
제 5장 변수, 바인딩, 식 및 제어문 5.1 변수 5.6 표현식 5.2 바인딩 5.7 조건문 5.3 선언 5.8 반복문
운영체제 발표자료 B반 최민웅.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Chapter 4 변수 및 바인딩.
Chapter 02. 소프트웨어와 자료구조.
화일구조.
Signature, Strong Typing
Signature, Strong Typing
CHAP 1:자료구조와 알고리즘.
쉽게 풀어쓴 C언어 Express 제1장 프로그래밍의 개념 C Express.
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 년 봄학기
Internet Computing KUT Youn-Hee Han
Signature, Strong Typing
알고리즘(Algorithm) 유비쿼터스 컴퓨팅학과 교수 송 창근
점화와 응용 (Recurrence and Its Applications)
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Chapter 3 – 프로그래밍 언어 설계 Outline 3.1 설계 기준의 역사적 변천 3.2 효율성
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
알기쉽게 해설한 데이터구조 고 갑 승 한남대학교
1. 데이터베이스 환경.
운영체제 학 번 : 이름 : 변현영.
제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유
Report #3- 문제 1 Set(집합) 추상 데이터 타입을 정의하고, 다음과 같은 연산자들을 포함시켜라. 여기서 S, S1, S2는 집합을 나타내고, i는 집합 원소를 나타낸다. 연산 의미 create() Return {} insert(S, i) If i є S then.
제 1 강 컴퓨터의 구조.
Presentation transcript:

제 1 장. 자료구조와 알고리즘

0. 선행학습

0. 기본 개념_1 정의 : 자료간의 상호 관계를 파악하여, 기억장치 공간에 자료 표현 방법과 저장 방법을 연구하고, 이를 통한 여러 가지 작업을 수행하기 위한 알고리즘을 연구 하는 것. 목적: 컴퓨터 처리 시간과 기억공간을 줄이는 것. (decrease the computer time & storage) 좋은 자료구조 ⇒ 좋은(효율적인) 프로그램. ☞ 즉, 취급하려는 자료 항목간의 관계

0. 기본 개념_2 관련 용어 。순차 메모리(sequential(ordered)memory) 구조: ⇒ 순차 위치(sequence of locations) 。구조(structure): 집합 요소간의 관계성(relationship between the individual elements of a group) 。리스트(list) : 항목 순으로 형성된 가장 간단한 형태, 메모리 저장 용이. 。테이블(table(matrix)) : 。자료 요소들간의 구조적 관계성. 。노드의 집합(set of nodes) <참고> 노드(nodes) : records, entity, bead, item, elements

0. 기본 개념_3 。파일(file) : 보조기억장치에 저장된 레코드의 집합체 <참고> 레코드(record) : 필드의 집합체 。트리(tree) 구조 : 계층적 구조를 표현한 자료구조

컴퓨터 내에 쉽게 구현(컴퓨터가 이해하게)되어야 함. (2) DS를 저장할 때는 처리에 대하여, 0. 자료 구조의 특징 (1) 구조가 명확해야 하고, 컴퓨터 내에 쉽게 구현(컴퓨터가 이해하게)되어야 함. (2) DS를 저장할 때는 처리에 대하여, 가장 효율이 좋은 저장 방법을 취한다. 。 기억 용량 적게 。 처리 속도 빠르게 。 범용성 。 프로그래밍이 용이하게

(1) 폰 노이만(Von Neumann)방식 구조의 이해 : 0. Why Data Structures? (1) 폰 노이만(Von Neumann)방식 구조의 이해 : 。저장 프로그램방식(stored program method) ⇒ 직렬 처리(serial processing) 。저장 구조(storage structure) : 제어장치의 제어에 의한 직렬 처리 ⇒ 디지털 컴퓨터 <참고> 비 폰 노이만(non-Von Neumann) 구조 : 병렬 처리(parallel processing) 방식

0 연산(operation) : 순차(직렬, serial)연산 ⇒ 연산자 순차연산(sequenctial operation) : 순차적인 주소 공급 방식 ⇒고속 요구됨 cf. IR(instruction register)/ PC(program counter) 0 표현 단위 : 정보 단위 ⇒ bit →byte(word) →item(field) → record(array) →file ⇒ DB

(2) 저장 매체별, 통신에 의한 정보 단위 변형 : 레코드 : 사용자(프로그램) 관점 : (논리 (레코드)) : 기계(통신) 관점 : block(물리 레코드) o 블록킹 VS. 비블록킹 논리 레코드 ◀============▶ 물리 레코드 비블로킹(deblocking) ← | → 블로킹(blocking) ↓ 블로킹 요인(blocking factor)

1.1 자료구조의 개념

1.1 자료구조의 개념 Data : values, Facts Information(정보) : Data ⇒ Processing(computer) ⇒ Information 컴퓨터(프로그램)의 효율성 요인 : 좋은 알고리즘, 자료구조 선택 알고리즘(algorithm) : 입력 자료 ⇒ 유한 시간내 (finiteness) ⇒ 결과 생성 과정을 제어하는 일련의 명령어 ▶ Program : 무한성(infiniteness)도 가짐 DS : 저장공간에 자료의 표현방식, 그들의 관계성 표현 방법의 정의하는 방법 ▶ cf. Algorithms + DS = Programs by Niklaus Wirth

1.1.1 자료형(1/5) ■ 자료형(Data Types) p14 ⇒ 여러 방 법을 통해 조직화되어 자료구조를 형성 ⇒ 여러 방 법을 통해 조직화되어 자료구조를 형성 원시 자료형 (Primitive data type) 복합 자료형 (Compound data type) 정수(Integer) 타입 문자열(String) 타입 논리형(Boolean) 타입 문자(Character) 타입 <자료형 종류>

1.1.1 자료형(2/5) ■ 정수형 (Integer) 이진 연산자와 단일 연산자에 의해 연산을 수행 ※ 이진 연산자 : 덧셈, 뺄셈, 곱셈, 나눗셈, 지수승과 같이 두 개의 피연산자(operand)를 이용해서 연산을 수행 ※ 단일(항) 연산자 : 숫자의 부호를 바꾸는 부정(Negation)과 같이 하나의 피연산자만을 이용해서 연산을 수행 {…, -(n-1), -n, …, -2, -1, 0, 1, 2, …, n, n+1, …}

1.1.1 자료형(3/5) ■ 논리형(Boolean) p15 연산을 통해 참(true) 또는 거짓(false)의 값을 갖고, 연산자는 크게 논리 연산자와 관계 연산자로 나뉘어짐 ※ 논리 연산자 : not, and, or ※ 관계 연산자 : <, >, ≤, ≥, ≠, = 등

1.1.1 자료형(4/5) ■ 블리언 자료형의 연산 T : 참 값(true), F : 거짓 값(false), not : 첫 번째 값에 대한 연산수행 연산 결과 첫 번째 값 두 번째 값 not and or T F

1.1.1 자료형(5/5) ■ 문자(Character)와 문자열(String) ※ 문자(Character) 가장 원시적인 데이터 구조로부터 얻어지는 자료형. 숫자, 영문자, 일부 특수 문자가 포함되어 이들 문자들을 이용해 복합 자료형을 얻을 수 있는데, 이는 하나 이상의 문자들을 나열 함으로서 복합 자료형인 문자열을 얻을 수 있음을 말한다. ※ 문자열(String) 문자열을 만들기 위해 사용되는 문자 집합을 알파벳이라 하며, 문자열의 처음과 끝은 인용부호로서 표시 프로그래머는 프로그래밍 언어를 이용해서 여러 가지 방법으로 이러한 자료형을 변수에 할당한다

1.1.2 자료의 표현 ■ 보수(Complement) 컴퓨터 내에서 자료에 대한 음수 표현 기법으로 주로 사용 정수 이진수 1의 보수 2의 보수 -3 -2 -1 +1 +2 +3 -011 -010 -001 +000 +001 +010 +011 1100 1101 1110 0000 0001 0010 0011 1111 <정수의 표현>

1.2 알고리즘(Algorithm)

1.2 알고리즘(1/4) 정의 : 어떤 문제를 해결하기 위해 모호함이 없는 간단한 명령들로 구성된 일련의 순서적 과정 <자료구조와 알고리즘>

1.2 알고리즘(2/4) ■ 알고리즘이 적용할 수 있는 최소(요구)조건 조건 1. 외부에서 0개 이상의 입력을 받아들여, 하나 이상의 출력을 생성한다. (입력, 출력) 조건 2. 각 단계가 단순하고 모호하지 않아야 한다. (명확성, definiteness) : 명령의 명확성, 모호성 배제 조건 3. 한정된 수의 작업 후에는 반드시 끝나야 한다. (유한성, finiteness) : 반드시 종료 cf. 프로그램은 무한성(infinite looping)도 가짐 조건 4. 모든 명령이 수행 가능해야 한다. 효과성(effectiveness) 조건 5. 효율적이어야 한다.

1.2 알고리즘(3/4) ■ 알고리즘 기술 방법(도구) p18 기술법 1. 사람들이 사용하는 자연어(Nature Language) 기술법 2. 플로차트(Flowchart) 기술법 3. 의사코드(Pseudo-code) 기술법 4. 프로그래밍 언어(Programming Language) ◎ 알고리즘 언어의 종류 ① 일반 언어 : ALGOL, ALGOL-W, APL, COBOL, FORTRAN, LISP, PASCAL, PL/I, SNOBOL, C, Java ○ 선택이 어려운 이유 : 。알고리즘은 특정 언어의 특성 반영없이 작성 가능해야 함. 。기존 언어의 기법 의존 。특정 언어의 사용 가능 인원의 제약 ② 전용(문) 언어 SPARKS(Structured Programming : A Reasonably Komplete Set, Smart Programmers Are Required to Know)

1.2 알고리즘(4/4) ■ 알고리즘 기술 방법 (예 - 최대값 찾기)

1.3 알고리즘 성능분석 p19

1.3 알고리즘 성능분석(1/2) ■ 알고리즘 성능 측정 방법 - 성능 요인 : 실행시간, 사용공간 크기 ➀ 시간 복잡도(time complexity) : 명령의 개수(T(n)) ➁ 공간 복잡도(space complexity) : 메모리 크기 ■ 알고리즘 성능분석 예 (- 최대값 찾기) p19 - 자료가 5개가 있는 경우 1. temp에 score 배열의 0번째 값을 저장한다. 2. temp에 저장된 값과 score 배열의 1번째 값 중 큰 것을 temp에 저장한다. 3. temp에 저장된 값과 score 배열의 2번째 값 중 큰 것을 4. temp에 저장된 값과 score 배열의 3번째 값 중 큰 것을 5. temp에 저장된 값과 score 배열의 4번째 값 중 큰 것을 6. temp를 반환한다.

1.3 알고리즘 성능분석(2/2) ■ 알고리즘 성능분석 (예 - 최대값 찾기) ※ 알고리즘 종류 ※ 알고리즘별 연산 횟수 ①번 방법 ②번 방법 ③번 방법 대입연산 1 n+1 n*n+1 덧셈연산 n n*n 곱셈연산 전체 연산 수 2 2n+1 2n2+1

1.4 알고리즘 성능 표기법 ■ 알고리즘의 차수(알고리즘의 복잡도) ⇒ 시․공간 복잡도(complexity) ① 시간 복잡도(time complexity) : 문제 해결위한 알고리즘 실행시 사용되는 기본 연산의 빈도수를 차수(degree)로 표현. ㉠ O(big oh)-표시법 : 연산 차수가 가장 높은 것 선택, 알고리즘 차수로 사용. ⓐ 다항 시간(polynomial time) : 복잡도가 n2, nlog2n, n, log2n과 같이 n상수 다항식 표현. ☞ n이 대단히 크지 않은 경우 쉽게 해결 가능 ⓑ 지수 시간(exponential time) : 복잡도 차수가 2n , nn, n!과 같이 n 지수로 표현. ☞ n이 작은 값인 경우 해결 가능 ㉡ Ω(big omega)-표기법 : 연산 차수가 가장 낮은 것 선택, 계산/차수로 사용. (예) 명령어 실행 시간과 실행 빈도수 곱, 계산 차수가 다수인 경우엔 가장 높은 항 선택

1.4.1 빅오(Big O) 표기법 (1) 빅오(Big O) 표기법 예 ② 공간 복잡도(space complexity) : 문제 해결 알고리즘 실행시의 기억 공간 의 양을 문제의 크기에 대한 함수로 표현 (예) O(1) : 입력 크기 불변 O (n) : 입력 크기 n에 비례 O(nn) : 입력 크기 n2에 비례 -------------------------------------------------------------------------------------------------- (1) 빅오(Big O) 표기법 예 T(n) = n+1 → O(n) T(n) = n → O(n)< T(n) = n2+n → O(n2) T(n) = 2n + 1 → O(n) T(n) = 2n + n2 → O(2n) ■ 정의 : 함수 f(n), g(n)에서 n >= n0인 모든 n에 대하여 |f(n)| <= |g(n)|을 만족하는 상수 c와 n0가 존재하면 f(n) = O(g(n))이다.

1.4.2 빅오메가(Big Ω) 표기법 ■ 빅오(Big O) 표기법의 문제 (2) 빅오메가(Big Ω) 표기법 O(n)으로 표기할 수 있는 함수는 O(n2), O(n3) 등으로도 표기할 수 있음 – 간단한 함수 표기에 유용 (2) 빅오메가(Big Ω) 표기법 - 복잡한 함수 표기에 유용 정의 : 함수 f(n), g(n)에서 n >= n0인 모든 n에 대하여 |f(n)| >= |g(n)|을 만족하는 상수 c와 n0가 존재하면 f(n) = Ω(g(n))이다. - 연산 차수가 가장 낮은 것 선택, 계산/차수로 사용. ■ 빅오/빅오메가 표기법 : 조건 만족범위가 서로 반대 ■ 시간함수 O(1) < O(log2n) < O(n) < O(nlog2n) < O(n2) < O(2n) < O(n!) < O(nn)

|g(n)| <= |f(n)| <= |g(n)| "위의 부등식을 만족하는 상수 c1, c2, n0가 존재하면 1.4.3. 빅세타(Big Θ) 표기법 ■ 빅세타(Big Θ) 표기법 - 조건의 만족 범위가 일치함. - 빅오메가 표기법의 등식을 반대로 쓴 다음, 빅오 표기법과 겹치면 다음식이 됨. |g(n)| <= |f(n)| <= |g(n)| "위의 부등식을 만족하는 상수 c1, c2, n0가 존재하면 f(n) = Θ(g(n))이다.”

1.4.4 최선, 최악, 평균 p23 ■ 최선, 최악, 평균 예 n개의 정수가 있는 array 배열에서 value라는 정수를 찾는다. 있으면 그 정수가 있는 위치를, 없으면 -1을 반환한다. 1. for(int i = 0; i < n; i++){ 2. if( value == array[i] ) 3. return i; 4. } 5. return -1; ※ 최선의 경우 배열의 크기에 상관없이 연산은 딱 한 번만 하므로 T(n) = 1, 즉 O(n) = 1 ※ 최악의 경우 T(n) = n, 즉 O(n) = n이다. ※ 평균적인 경우 최선의 경우가 될 확률 : 1/n이다. (1+2+...+n)*(1/n) = (n+1)/2 = T(n) 평균적인 경우는 O(n)이다.