• 검색 결과가 없습니다.

 알고리즘의 요건

N/A
N/A
Protected

Academic year: 2022

Share " 알고리즘의 요건"

Copied!
26
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

알고리즘의 기본 개념

알고리즘

교재: 쉽게 배우는 알고리즘: 관계 중심의 사고법 저자: 문병로

출판사: 한빛미디어, 2013년 발행

(2)

수업 목표

 알고리즘의 개념 이해

 알고리즘의 요건

 알고리즘 기술 언어

 알고리즘의 분석

(3)

용어 정의

(4)
(5)

알고리즘 이란?

 문제 해결 절차를 체계적으로 기술한 것

 문제의 요구조건

입력과 출력으로 명시할 수 있다.

알고리즘은 입력으로부터 출력을 만드는 과정 을 기술

(6)

입출력의 예

 문제

100명의 학생의 시험점수의 최대값을 찾으라

 입력

100명의 학생들의 시험점수

 출력

위 100개의 시험점수들 중 최대값

(7)

프로그램 작성을 위한 접근 방법 (1/2)

 컴퓨터를 사용하여 문제를 풀려면 최종적으

로는 그 문제를 해결하는 프로그램을 작성

해야 한다.

(8)

프로그램 작성을 위한 접근 방법 (2/2)

방법 1 문제의 파악

프로그램 작성 프로그램

방법 2 문제의 파악

프로그램 작성 프로그램 문제 해결 단계

해결방안 구상 (알고리즘)

(9)

알고리즘 공부의 목적

 특정한 문제를 위한 알고리즘의 습득

 체계적으로 생각하는 훈련

 지적 추상화의 레벨 상승

Intellectual abstraction

연구나 개발에 있어 정신적 여유를 유지하기 위 해 매우 중요한 요소

(10)

알고리즘의 요건

① 외부에서 0개 이상의 입력을 받아들여, 하나 이상의 출력을 생성한다.

② 각 단계가 단순하고 모호하지 않아야 한 다.

③ 한정된 수의 작업 후에는 반드시 끝나야 한다.

④ 모든 명령이 수행 가능해야 한다.

⑤ 효율적이어야 한다.

(11)

바람직한 알고리즘

 명확해야 한다

이해하기 쉽고 가능하면 간명하도록

지나친 기호적 표현은 오히려 명확성을 떨어뜨 림

명확성을 해치지 않으면 일반언어의 사용도 무 방

 효율적이어야 한다

같은 문제를 해결하는 알고리즘들의 수행시간 이 수백만배 이상 차이 날 수 있다

(12)

컴퓨터가 수행할 수 있게 하기 위해서는 알고리즘에 포함 될 수 있는 연산들에 약간의 제한들이 존재

각 연산(operation)은 명확하고 확실

예) 

X에 6을 더해야 할지 7을 더해야 할지 확실하지 않고 문장의 수 행 결과도 분명하지 않음

ADD 6 OR 7 TO X.

(13)

알고리즘 기술 언어

의사 코드 (pseudo code)

프로그래머가 기억하기 쉬운 연상 언어(mnemonic language)로 작 성한 컴퓨터 명령어

특정한 프로그래밍 언어의 문법과는 상관없이 영어나 국어와 같이 읽을 수 있도록 프로그램 논리를 명시하기 위해 작성한 것

특정 프로그래밍 모듈의 목적을 어느 정도 일반적인 용어로 단순 히 표현하는 데 사용

(14)

의사 코드 예

1부터 10까지 더하여 결과를 얻는 문제에 대한 해결 방법

① 시작한다.

② 데이터 값의 변수 I와 합의 변수 S를 모두 0으로 둔다.

③ 데이터 변수 I의 값을 1 증가시킨다.

④ 합 S와 I를 더하여 그 값을 합으로 한다.

⑤ 만약 I의 값이 10보다 작으면 ③으로 가서 계속한다.

⑥ I와 S의 값을 출력한다.

⑦ 실행을 마친다.

(15)

의사 프로그램(pseudo program) 

의사코드를 사용

특정한 컴퓨터나 프로그래밍 언어에 구애받지 않고

프로그래 머가 표현하기 쉽도록 처리 절차를 의사코드를 사용하여 작성 하는 것

의사 언어(pseudo language)

독특한 일을 수행할 수 있도록 특별히 인위적으로 만든 언어

선택된 표현에 부합되는 특별한 의미를 나타낼 수 있도록 고안된 규칙의 집합

(16)

C 언어에 기반을 둔 의사 언어

sample(A[ ], n)  { 

sum ← 0 ; 

for i ← 1 to

n

sum← sum+ A[i] ;

return

sum ;

(17)

알고리즘으로 어떤 문제를 푸는가?

 차량 네비게이션 시스템

최단 경로, 최단 시간 소요 경로 찾기

 현금자동입출기 운용 방법

한 기계에 돈을 채워 넣기 위해 5만원의 인건비 소요

어떤 날에 어떤 기계에 돈을 얼마나 채워 넣을 것인 가?

어떤 순서로 기계를 방문할 것인가?

(18)

 DNA 데이터

인간 게놈 서열간의 유사성 파악

생물들의 DNA 데이터로부터 진화 계통도 생성

 인터넷 검색

 가스파이프나 수도관 배치

(19)

알고리즘의 생성단계

 알고리즘의 설계

 알고리즘의 표현

 알고리즘의 정확성 검증

 알고리즘의 효율 분석

(20)

데이터(자료) 구조

데이터 구조

컴퓨터 기억 공간 내에 데이터의 표현이나 처리 방법

주어진 문제를 컴퓨터로 풀기 위해서는 그 문제를 컴퓨 터로 처리할 수 있는 형태로 표현

문제의 내용을 표현하는 데이터 구조와 그 구조에 대한 각종 연산을 구상한 후 이를 다시 프로그래밍 언어가 제공하는 데 이터 구조로 표시

데이터 구조는 알고리즘의 효율에 크게 영향을 미침

데이터 구조가 복잡할 경우 연산의 횟수가 줄어들고, 데이터 구조 가 단순하여 많은 정보를 수록하기 어려운 경우 연산 횟수가 많아 져 수행 시간이 늘어나는 경향이 있음

(21)

적합한 데이터 구조를 선택하기 위한 요인들

포함된 데이터의 양

데이터를 사용하는 방법과 횟수

데이터의 정적 혹은 동적인 특성

데이터 구조에 의해 요구되는 기억장치의 양

하나의 데이터를 수정하는 데 걸리는 시간

프로그래밍의 복잡도

(22)

데이터 구조의 분류

(23)

알고리즘의 분석

 정확성 분석

 효율 분석

(24)

정확성 분석

 증명 → 이론적

 테스트 데이터에 의한 디버깅 → 실용적

(25)

알고리즘의 효율 분석

 시간 복잡도(time complexity)

알고리즘의 수행시간

실제 컴퓨터에서 수행한 시간 측정

각 명령문 모두 단위 시간에 수행하는 것으로 가정하 고 명령문의 수행 횟수의 합

 공간 복잡도(space complexity)

메모리 사용 등

(26)

Question & 

Answer

참조

관련 문서

• 단계적인 절차를 따라 하면 요리가 만들어 지듯이, 알고리즘도 단계적인 절차를 따라 하면 주어진 문제의 답을 준다... 김치를 잘게 썰어서

• 시간복잡도는 알고리즘이 수행하는 기본적인 연산 횟수를 입력 크기에

• 첫째, 다른 사람의 기분을 나쁘게 하거나 마음을 상하게 하는 말을 하는 것, 상대방을 놀리거나 상대방이 불쾌하게 느낄 별명을 부르는 것,.. • 둘째,

vector 클래스의 사용 list 클래스의 사용 이터레이터의 이해 이터레이터의 사용 이터레이터의 종류 알고리즘의 이해 알고리즘의

 사람이 제품을 사용하는 행동(action)과 반응(reaction) 방식, 그 사이의 상호작용(interaction) 방식과 절차를

정보시스템 요건 기술서 검토 정보시스템 요건 기술서 작성 정보시스템 요건의 이행 연관성 식별 정보시스템 아키텍처 정의

다중 프로그래밍 1대의 CPU로 여러 개의 프로그램을 동시에 처리하는 방식 시분할 시스템 1대의 시스템을 여러 사용자가 동시에 사용하는 방식. 다중 처리

AI 시대 새로운 일자리로서 인공지능 학습용 데이터 구축(수집, 가공, 검수 등)에 시간과 장소에 구애받지 않고, 원하는 시간대에 원하는 장소에서, 하고 싶은