SlideShare a Scribd company logo
1 of 48
Download to read offline
제1장 알고리즘의 첫 걸음
Disclaimer
• 연세대학교 양성봉 교수님의 알기 쉬운 알고리즘
PPT에 개인적으로 몇 가지 내용을 더하였습니다.
• 법적인 문제가 될 경우, dkkang@gmail.com 으로
알려주시면 삭제하겠습니다.
알고리즘의 유래
• 9세기경 페르시아 수학자
알콰리즈미 (al-Khwārizmī)
• 최초의 알고리즘:BC300년경
유클리드의 최대공약수 알고리즘
최대 공약수 – Greatest Common Divisor
최소 공배수 - Least Common Multiple
알고리즘이란
• 알고리즘은 문제를 해결하기 위한 단계적인
절차를 의미한다.
• 요리법과 유사 - 라면 봉지의 요리법
• 단계적인 절차를 따라 하면 요리가 만들어지듯이,
알고리즘도 단계적인 절차를 따라 하면 주어진
문제의 답을 준다.
• 주어진 문제에 대해 여러 종류의 알고리즘이 있을
수 있으나, 항상 보다 효율적인 알고리즘을
고안하는 것이 매우 중요
1.1 최대 숫자 찾기
• 가장 큰 숫자 찾기
알고리즘
• 카드의 숫자를 하나씩 비교하면서 본 숫자들 중에
서 가장 큰 숫자를 기억해가며 진행하는 방법일 것
이다.
• 마지막 카드의 숫자를 본 후에, 머릿속에 기억된
가장 큰 숫자가 적힌 카드를 바닥에서 집어 든다.
• 이렇게 찾는 방법을 순차탐색 (Sequential Search,
또는 선형 탐색 linear search)이라고 한다. 즉,
카드를 한 장씩 차례대로 (주어진 순서대로) 읽어
가며 찾는 방법
1.2 임의의 숫자 찾기
• 85를 찾기
알고리즘
• 최대 숫자 찾기처럼 머릿속에 85를 기억하고
바닥에 펼쳐진 카드를 차례대로 한 장씩 읽으며
85가 적힌 카드를 찾는다.
• 역시 순차탐색을 이용한 것이다.
순차 탐색의 기대값은?
• 1*1/n+2*1/n+3*1/n+4*1/n+…+n*1/n
• 이는 (n*(n+1)/2) * 1/n 이므로
• 답은 (n+1)/2

• 과연 위와 같을까?
• 만일 주어진 수가 분명히 배열 안에 하나 있다는
것을 알고리즘도 알고 있다고 가정하자.
• 그런 경우 기대값은 ((n-1)(n+2))/(2n) 이다. (왜?)
• 10장의 카드가 오름차순으로 미리
정렬되어있다면,
• 실생활에서의 예: 사전, 핸드폰의
전화번호 리스트, 책 뒷부분의
인덱스 등
• 85 찾기
15, 20, 25, 35, 45, 55, 60, 75, 85, 90에서 85를 순
차탐색으로 찾을 경우, 위쪽에 있는 8장의 카드를
읽은 후에나 85를 찾는다.
알고리즘
• 중간에 있는 카드의 숫자인 45 (혹은 55)와 85를 먼저
비교한다.

• 오름차순으로 정렬된 데이터를 반으로 나누고,
나누어진 반을 다시 반으로 나누고, 이 과정을
반복하여 원하는 데이터를 찾는 탐색 알고리즘을
이진탐색 (Binary Search)이라고 한다.
• 이진 탐색의 기대값은? (심화 문제)
1.3 동전 거스름돈
• 물건을 사고 거스름돈을 동전으로 받아야 한다면,
대부분의 경우 가장 적은 수의 동전을 받기 원한다.
• 거스름돈이 730원이라면, 500원짜리 동전 1개,
100원 짜리 동전 2개, 10원짜리 동전 3개인 총
6개를 거슬러 받으면 거스름돈 730원에 대한 최소
동전의 수이다.
알고리즘
• 남은 거스름돈 액수를 넘지 않는 가장 큰 액면의
동전을 계속하여 선택하는 것이다.
• 그리디 (Greedy) 알고리즘 – 탐욕 알고리즘
• 730원의 거스름돈에 대해서, 500원짜리 동전
1개를 선택한다.
• 그 다음엔 230원이 남아있으므로, 100원짜리
동전 2개를 선택하고 나면, 30원이 남는다.
• 마지막으로 10원짜리 동전 3개를 선택한다.
• 총 동전의 수: 1+2+3 = 6개, 최소 동전의 수
1.4 한붓그리기
• 종이에서 연필을 떼지 않고 그리는 한붓그리기 문
제이다.
• 한붓그리기는 그래프의 어느 한 점에서 출발하여
모든 선분을 한 번만 지나서 출발점으로 돌아오되,
궤적을 그리는 동안 연필이 종이에서 떨어져서는
안 된다. 단, 점은 여러 차례 방문하여도 괜찮다.
• 점 1에서 출발하여 점 2를 지나고, 점 3과 점 8을
거쳐서 점 7에 도착한 상태를 나타내고 있다.
• 지나온 궤적을 굵은 선으로 보여주고 있다. 점
7이 현재 점이라 하자. 현재 점으로부터 점 6, 9
또는 10 중에서 어디로 진행해야 할까?

현재점
• 점 6으로 가면, 5, 4, 3, 9, 7, 10을 거쳐서 점 1로 돌아
올 수 있다.
• 점 9로 가면, 3, 4, 5, 6, 7, 10을 거쳐서 점 1로 역시 돌
아올 수 있다.
• 점 10으로 가면, 점 1로 갈 수 밖에 없고, 3, 4, 5, 6, 7,
9 사이의 선분을 지나가기 위해서는 연필을 떼어야
만 한다.

• 점 6, 9의 공통점은? 현재 점에서 현재 점으로 돌아
오는 사이클
알고리즘
• 현재 점으로부터 진행하고자 하는 점을 지나서
현재 점으로 돌아오는 사이클 (cycle)을 찾는
것이다.
• 현재 점 7에서 점 10을 지나서 현재 점으로
돌아오는 사이클은 없다. 왜냐하면 그러기
위해서는 점 1, 2, 3, 8을 지나가야 하는데 이 점들
사이의 선분은 이미 지나갔기 때문이다.
• 현재 점으로부터 점 6이나 점 9를 지나서 현재
점으로 돌아오는 사이클이 존재한다. 따라서 현재
점에서 점 6이나 점 9를 선택하면, 연필을 떼지
않고 진행할 수 있다.
1.5 미로 찾기
• 미로를 찾는 문제는 그리스 신화에서 유래
• 당시 지중해의 크레타 섬을 통치하던 폭군 미노스
(Minos) 왕이 있었다. 미노스 왕은 황소 머리에
하반신은 사람인 무서운 짐승 미노타우르
에게 제물로 받치기 위해
아테네에게 젊은 남녀를
조공으로 요구하였다.
• 조공으로 바쳐진 젊은이들은 지하에 있는 매우
광대하고 복잡한 미로 내부에 갇혔고, 그들이
미로를 탈출하지 못하면 미노타우르가 그들을
잡아먹었다.

• 이러한 비극이 계속되는 동안, 아테네의 한 젊은
청년 테세우스 (Theseus)는 자발적으로 제물이
되기로 결심하여 조공으로 바쳐졌다. 그는 다행히
미노스 왕의 딸 아리아드네 (Ariadne)의 충고로
칼과 함께 실타래를 가지고 실을 풀면서 미로에
들어갔다.
• 그리고 마침내 테세우스는 미노타우르를 칼로
죽이고, 실을 다시 감으면서 미로를 빠져 나왔다.
이 그리스 신화에서 알려주는 미로 찾기의 해는
바로 실타래이다.
• 대부분의 경우는 실타래
나 도와주는 사람도 없
다. 이러한 상황에서 어
떻게 미로를 빠져나올
수 있을까?
알고리즘
• 현 위치에서 한 방향을 선택하고, 벽에 오른손을
댄다. 그리고 출구가 나올 때까지 계속 오른손을
벽에서 떼지 않고 계속 걸어간다.
• 오른손 법칙
알고리즘으로 출구를
찾아 나아가는 궤적을
점선으로 보여주고
있다.
미로에서의 무한 루프
• 출처 - http://blog.naver.com/omath/150035865377
• 모든 벽들이 연결된 구조일 때에는
우수법(友手法)또는 좌수법(左手法)으로 충분함
• 무한 루프는 도는 경우
–
–
–
–

확장 좌수법 (한 번 갔던 곳은 다시 가지 않는다)
구심법
다익스트라A
백트래킹

• 네이버의 길찾기나 네비게이션의 핵심 코드로
사용됨
무한루프의 예
마이크로마우스 대회
• 2007 APEC Micromouse Contest 세계 1위
• 단국대학교 황하윤
– FIRST PRIZE : 최우수상
– BEST STUDENT : 학생부 우승
– FASTEST RUN :가장 빠른 주행 상

• http://pann.nate.com/video/202643346
1.6 가짜 동전 찾기
• 아주 많은 동전 더미 속에 1개의 가짜 동전이 섞여
있다.
• 가짜 동전은 매우 정교하게 만들어져 누구도
눈으로 식별할 수 없다.
• 그러나 가짜 동전의 무게는 정상적인 동전보다
약간 가볍다.
• 가짜 동전 찾기 문제는 이 가짜 동전을 찾아내기
위해서 양팔 저울만 사용하여 가짜 동전을
찾아내는 것인데, 가능한 한 저울에 동전을 다는
횟수를 줄여야 한다.
철수의 생각
• 임의의 동전 1개를 저울 왼편에 올리고, 나머지
동전을 하나씩 오른편에 올려서 가려내어 보자.

• 1번 (n-1)번
영희의 생각
• 동전을 2개씩 짝을 지어, n/2 짝을 각각 저울에 달
아서 가짜 동전을 찾아보자.

• 1번  n/2번
광수의 생각
• 동전 더미를 반 (2 짝)으로 나누어 저울 양편에
놓으면 어떨까?
이쪽에 가짜
동전이 있다.

이쪽만 반씩
나누어 …
알고리즘
• 동전 더미를 반으로 나누어 저울에 달고, 가벼운
쪽의 더미를 계속 반으로 나누어 저울에 단다.
• 분할된 더미의 동전 수가 1개씩이면, 마지막으로
저울을 달아 가벼운 쪽의 동전이 가짜임을
찾아낸다.
• 광수의 알고리즘은 운이 좋을 때가 없다. 왜냐하면
마지막에 가서야 가짜 동전을 찾기 때문이다.
• 동전이 1,024개 있을 때 몇 번 저울에 달아야 할까?
• 먼저 512개씩 양쪽에 올려놓고 저울을 재고,

• 다음은 256개씩 재고,
• 128개씩, 64개씩, 32개씩, 16개씩, 8개씩, 4개씩,
2개씩, 마지막엔 1개씩 올려서 저울을 잰다.
• 는 총 10번이고, log21,024 = 10 이다.
• n개의 동전에 대해서 log2n 번 저울에 달면 가짜
동전을 찾는다.
자루 안의 가짜 동전 문제
• 동전이 가득 든 자루가 10 개 있다.
• 동전은 어느 것이나 겉으로 봐서 똑같게 보이지만,
한 개의 자루에 들어 있는 동전만은 가짜
동전들이다.
• 진짜 동전 – 10 g, 가짜 동전 – 9 g
• 지금 곁에는 눈금 저울이 있는데, 단 한 번만
사용해서 어느 자루에 가벼운 가짜 동전이 들어
있는지 알아맞혀 보아라.
1.7 독이든 술 단지
• 옛날 어느 먼 나라에 술을 매우 즐겨 마시는
임금님이 살고 있었다.
• 어느 날 이웃 나라의 스파이가 창고에 들어가서 술
단지 하나에 독을 넣고 나오다가 붙잡혔다.
• 스파이는 어느 단지인지는 모르지만 하나의
단지에만 독을 넣었다고 실토하고는 숨을
거두었다.
• 사용된 독의 특징은 독이든 단지의 술을 아주
조금만 맛보아도 술을 맛 본 사람이 정확히 일주일
후에 죽는다.
• 임금님은 독이든 술 단지를 반드시 일주일 만에
찾아내라고 신하들에게 명하였다.
• 희생되는 신하의 수를 줄여야 한다.

술 술
술 술
술 술 술 술
술 술
술 술
술 술
술 술
술 술
술 술
술 술 술 술
술 술
술 술
술 술
술 술
술 술
술 술
술 술
술 술
술 술
술 술
술 술 술 술
술 술
술 술
술 술 술 술
술 술
술 술
술 술
술 술
술 술
술 술
술 술
술 술
술 술
술 술
술 술 술 술
술 술
술 술
술 술 술 술
술 술
술 술
술 술
술 술
술 술
술 술
술 술
술 술
술 술
술 술
술 술 술 술
술
술 술 술 술
술
아이디어 찾아내기
• 적은 수의 술 단지에 대해서 생각해보는 것이다.
• 즉, 술 단지의 수가 2개일 때, 4개일 때 문제를
풀어보고, 술 단지의 수를 늘려가면서 일반적인
규칙을 찾아보는 것이다.
2개일 때
• 1 명의 신하가 1개의 술 단지의 술을 맛보아
일주일 후 살아 있으면 맛보지 않은 단지에 독이
있는 것이고, 죽는다면 맛본 술 단지에 독이 들어
있을 것이다.
술

술
4개일 때
• 3 사람이 각각 1개씩 맛본다면

술

술

술

술

• 그런데 2사람으로 줄일 수는 없을까?
4개일 때
• 철수의 제안: 2 사람이 각각 1 단지씩 맛보게
해보자.

?

술

술

?

술

술

• 2 사람이 맛보지 않은 나머지 2개의 단지 중
하나에 독이 들어 있으면, 일주일 후 두 사람을
살아있을 것이고, 나머지 2개의 단지 중 어느
하나에 독이 들어 있는지를 알 수 없다.
• 광수의 제안: 4개의 단지를 2개의 그룹으로 나누어,
각 그룹에 한 사람씩 할당한다.
• 이 경우는 맨 처음 고려했었던 술 단지의 수가 2인
경우가 2개가 생긴 셈이다.
• 과연 답을 찾을 수 있을까?

술

술

술

술
광수의 제안을 어떻게 보완해야 할까?
• 다시 한 번 문제를 살펴보자.
• 혹시 문제에서 간과한 점이 있나, 아니면 문제에
없는 조건을 우리 마음대로 만들었는지를 생각해
보자.
• 대부분의 경우에 한 명의 신하가 반드시 하나의 단
지의 술만 맛보아야 하는 것으로 생각하기 쉽다.
문제에는 이러한 조건이 주어지지 않았다.
• 광수의 제안에서 총 4개의 단지 중에서, 시음하지
않은 2개의 단지가 있다. 이 2개의 단지 중에
하나를 두 신하에게 동시에 맛을 보게 하자.

술

술

술

A

B

술

A

B
• 이렇게 하면 아래와 같이 4가지의 결과가 생긴다.
두 신하를 각각 A와 B라고 하자.
1. 아무도 시음하지 않은 단지에 독이 있으면, 일주
일 후에 두 신하 둘 다 살아있다.
2. A가 혼자 시음한 단지에 독이 있으면, 일주일 후
에 A만 죽는다.
3. B가 혼자 시음한 단지에 독이 있으면, 일주일 후
에 B만 죽는다.
4. A와 B 둘 다 시음한 단지에 독이 있으면, 일주일
후에 둘 다 죽는다.
알고리즘
• 각 단지에 2진수를 0부터 부여하고, 각 신하가 술
맛을 보면 1 안보면 0으로 하여, 아래와 같이
단지와 신하를 짝지어 보는 것이다.

00

01
A

10
B

11
A

B
8개일 때

술

술

술

술

술

술

술

술

여기에 독이
있으면 모두
죽는다
단지 수가 n일 때
• 희생자 수: 0  log2n명
• 8 개의 술단지에 대해 7명을 사용하는 경우,
기대값은? – 7/8 명 – (n-1)/n
• 8 개의 술단지에 대해 3명을 사용하는 경우,
기대값은? – 12/8 = 3/2 명 - ? (심화 문제)
제로 리스크 편향(zero risk bias)
• 모든 위험을 완벽하게 제거할 수 있다는 환상
• 6개의 탄알이 들어갈 수 있는 회전 탄창을 가진
러시안 룰렛을 생각해 보자.
• (1) 4 개의 탄알이 남아있을 때, 그 중 2 개를
제거하기 위해 돈을 얼마나 지불할 수 있나?
• (2) 1 개의 탄알이 남아있을 때, 그 1 개를 제거하기
위해 돈을 얼마나 지불할 수 있나?
• 대부분의 사람들은 (2)의 경우에 더 많은 돈을
지불함
• (1)은 1/3의 확률 제거, (2)는 1/6의 확률 제거
요약
• 순차탐색 (Sequential Search): 주어진 순서에 따라
차례로 탐색한다.
• 이진탐색 (Binary Search): 정렬된 데이터에 대해서
중간에 있는 데이터를 비교하여 그 결과에 따라 같
으면 탐색을 마치고, 다르면 작은 데이터가 있는
쪽 또는 큰 데이터가 있는 쪽을 같은 방식으로 탐
색한다.
• 동전 거스름돈 문제에서 가장 액면이 높은 동전을
항상 선택 (그리디하게 선택)한다. 그리디 (Greedy) 알고
리즘(4장)
• 한붓그리기 문제는 오일러 서킷 (Euler Circuit) 문
제와 같다. 알고리즘의 핵심은 현재 점에서 다음으
로 이동 가능한 점을 선택할 때에는 반드시 사이클
이 존재하여야 한다.
• 가짜 동전 찾기에서 동전더미를 반으로 분할하여
저울에 달고, 가짜 동전이 있는 더미를 계속해서
반으로 나누어 저울에 단다. 이는 분할 정복
(Divide-and-Conquer) 알고리즘의 일종:분할 정복 알
고리즘(3장)

• 독이든 술 단지 문제는 2진수를 활용하여 그 해를
찾는다.
연습 문제
• 순차 탐색의 기대값은? 만일 반드시 하나가 있다는
것을 고려하는 경우의 기대값은?
• 이진 탐색의 기대값은?
• 미로에 대한 확장 우수법을 프로그램으로 구현해
보라. 어떤 자료 구조로 구현해야 할까?
• 가짜 동전 문제에서 철수의 생각에 대한 기대값은?
• 가짜 동전 문제에서 영희의 생각에 대한 기대값은?
• 자루 안의 가짜 동전 문제의 해법은?
• n 개의 술단지에 대해 n-1 명을 사용하는 경우의
기대값은?
• n 개의 술단지에 대해 log 2 𝑛명을 사용하는 경우의
기대값은?

More Related Content

What's hot

Optimization in Deep Learning
Optimization in Deep LearningOptimization in Deep Learning
Optimization in Deep LearningYan Xu
 
Latest Frame interpolation Algorithms
Latest Frame interpolation AlgorithmsLatest Frame interpolation Algorithms
Latest Frame interpolation AlgorithmsHyeongmin Lee
 
smallpt: Global Illumination in 99 lines of C++
smallpt:  Global Illumination in 99 lines of C++smallpt:  Global Illumination in 99 lines of C++
smallpt: Global Illumination in 99 lines of C++鍾誠 陳鍾誠
 
Python for Image Understanding: Deep Learning with Convolutional Neural Nets
Python for Image Understanding: Deep Learning with Convolutional Neural NetsPython for Image Understanding: Deep Learning with Convolutional Neural Nets
Python for Image Understanding: Deep Learning with Convolutional Neural NetsRoelof Pieters
 
Deep Learning Tutorial | Deep Learning TensorFlow | Deep Learning With Neural...
Deep Learning Tutorial | Deep Learning TensorFlow | Deep Learning With Neural...Deep Learning Tutorial | Deep Learning TensorFlow | Deep Learning With Neural...
Deep Learning Tutorial | Deep Learning TensorFlow | Deep Learning With Neural...Simplilearn
 
프로그래머를 위한 360VR
프로그래머를 위한 360VR프로그래머를 위한 360VR
프로그래머를 위한 360VRyorung
 
Understanding randomness
Understanding randomnessUnderstanding randomness
Understanding randomnesssuncil0071
 
GAN - Theory and Applications
GAN - Theory and ApplicationsGAN - Theory and Applications
GAN - Theory and ApplicationsEmanuele Ghelfi
 
[PR12] Generative Models as Distributions of Functions
[PR12] Generative Models as Distributions of Functions[PR12] Generative Models as Distributions of Functions
[PR12] Generative Models as Distributions of FunctionsJaeJun Yoo
 
[Gpg2권 박민근] 2.8 프랙탈의 프로그래밍
[Gpg2권 박민근] 2.8 프랙탈의 프로그래밍[Gpg2권 박민근] 2.8 프랙탈의 프로그래밍
[Gpg2권 박민근] 2.8 프랙탈의 프로그래밍MinGeun Park
 
[논문리뷰] Data Augmentation for 1D 시계열 데이터
[논문리뷰] Data Augmentation for 1D 시계열 데이터[논문리뷰] Data Augmentation for 1D 시계열 데이터
[논문리뷰] Data Augmentation for 1D 시계열 데이터Donghyeon Kim
 
Convolutional Neural Networks (CNN)
Convolutional Neural Networks (CNN)Convolutional Neural Networks (CNN)
Convolutional Neural Networks (CNN)Gaurav Mittal
 
Moving Your Machine Learning Models to Production with TensorFlow Extended
Moving Your Machine Learning Models to Production with TensorFlow ExtendedMoving Your Machine Learning Models to Production with TensorFlow Extended
Moving Your Machine Learning Models to Production with TensorFlow ExtendedJonathan Mugan
 
Triton and symbolic execution on gdb
Triton and symbolic execution on gdbTriton and symbolic execution on gdb
Triton and symbolic execution on gdbWei-Bo Chen
 
마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠동환 김
 
Görüntü i̇şlemede makine öğrenme teknikleri
Görüntü i̇şlemede makine öğrenme teknikleriGörüntü i̇şlemede makine öğrenme teknikleri
Görüntü i̇şlemede makine öğrenme teknikleriTalha Kabakus
 
diffusion 모델부터 DALLE2까지.pdf
diffusion 모델부터 DALLE2까지.pdfdiffusion 모델부터 DALLE2까지.pdf
diffusion 모델부터 DALLE2까지.pdf수철 박
 

What's hot (20)

Optimization in Deep Learning
Optimization in Deep LearningOptimization in Deep Learning
Optimization in Deep Learning
 
Depth estimation using deep learning
Depth estimation using deep learningDepth estimation using deep learning
Depth estimation using deep learning
 
Latest Frame interpolation Algorithms
Latest Frame interpolation AlgorithmsLatest Frame interpolation Algorithms
Latest Frame interpolation Algorithms
 
AlexNet
AlexNetAlexNet
AlexNet
 
smallpt: Global Illumination in 99 lines of C++
smallpt:  Global Illumination in 99 lines of C++smallpt:  Global Illumination in 99 lines of C++
smallpt: Global Illumination in 99 lines of C++
 
Python for Image Understanding: Deep Learning with Convolutional Neural Nets
Python for Image Understanding: Deep Learning with Convolutional Neural NetsPython for Image Understanding: Deep Learning with Convolutional Neural Nets
Python for Image Understanding: Deep Learning with Convolutional Neural Nets
 
Deep Learning Tutorial | Deep Learning TensorFlow | Deep Learning With Neural...
Deep Learning Tutorial | Deep Learning TensorFlow | Deep Learning With Neural...Deep Learning Tutorial | Deep Learning TensorFlow | Deep Learning With Neural...
Deep Learning Tutorial | Deep Learning TensorFlow | Deep Learning With Neural...
 
Gradient descent method
Gradient descent methodGradient descent method
Gradient descent method
 
프로그래머를 위한 360VR
프로그래머를 위한 360VR프로그래머를 위한 360VR
프로그래머를 위한 360VR
 
Understanding randomness
Understanding randomnessUnderstanding randomness
Understanding randomness
 
GAN - Theory and Applications
GAN - Theory and ApplicationsGAN - Theory and Applications
GAN - Theory and Applications
 
[PR12] Generative Models as Distributions of Functions
[PR12] Generative Models as Distributions of Functions[PR12] Generative Models as Distributions of Functions
[PR12] Generative Models as Distributions of Functions
 
[Gpg2권 박민근] 2.8 프랙탈의 프로그래밍
[Gpg2권 박민근] 2.8 프랙탈의 프로그래밍[Gpg2권 박민근] 2.8 프랙탈의 프로그래밍
[Gpg2권 박민근] 2.8 프랙탈의 프로그래밍
 
[논문리뷰] Data Augmentation for 1D 시계열 데이터
[논문리뷰] Data Augmentation for 1D 시계열 데이터[논문리뷰] Data Augmentation for 1D 시계열 데이터
[논문리뷰] Data Augmentation for 1D 시계열 데이터
 
Convolutional Neural Networks (CNN)
Convolutional Neural Networks (CNN)Convolutional Neural Networks (CNN)
Convolutional Neural Networks (CNN)
 
Moving Your Machine Learning Models to Production with TensorFlow Extended
Moving Your Machine Learning Models to Production with TensorFlow ExtendedMoving Your Machine Learning Models to Production with TensorFlow Extended
Moving Your Machine Learning Models to Production with TensorFlow Extended
 
Triton and symbolic execution on gdb
Triton and symbolic execution on gdbTriton and symbolic execution on gdb
Triton and symbolic execution on gdb
 
마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠
 
Görüntü i̇şlemede makine öğrenme teknikleri
Görüntü i̇şlemede makine öğrenme teknikleriGörüntü i̇şlemede makine öğrenme teknikleri
Görüntü i̇şlemede makine öğrenme teknikleri
 
diffusion 모델부터 DALLE2까지.pdf
diffusion 모델부터 DALLE2까지.pdfdiffusion 모델부터 DALLE2까지.pdf
diffusion 모델부터 DALLE2까지.pdf
 

Viewers also liked

1. introduction to algorithm
1. introduction to algorithm1. introduction to algorithm
1. introduction to algorithmGeunhyung Kim
 
2013-1 Machine Learning Lecture 07 - Michael Negnevitsky - Hybrid Intellig…
2013-1 Machine Learning Lecture 07 - Michael Negnevitsky - Hybrid Intellig…2013-1 Machine Learning Lecture 07 - Michael Negnevitsky - Hybrid Intellig…
2013-1 Machine Learning Lecture 07 - Michael Negnevitsky - Hybrid Intellig…Dongseo University
 
NoSQL Guide & Sample
NoSQL Guide &  SampleNoSQL Guide &  Sample
NoSQL Guide & SampleSangon Lee
 
알고리즘 스터디 NP-완비
알고리즘 스터디 NP-완비알고리즘 스터디 NP-완비
알고리즘 스터디 NP-완비SeungMin Yang
 
세미나
세미나세미나
세미나Dongyi Kim
 
하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기beom kyun choi
 
2013-1 Machine Learning Lecture 03 - Andrew Moore - a gentle introduction …
2013-1 Machine Learning Lecture 03 - Andrew Moore - a gentle introduction …2013-1 Machine Learning Lecture 03 - Andrew Moore - a gentle introduction …
2013-1 Machine Learning Lecture 03 - Andrew Moore - a gentle introduction …Dongseo University
 
2013-1 Machine Learning Lecture 06 - Lucila Ohno-Machado - Ensemble Methods
2013-1 Machine Learning Lecture 06 - Lucila Ohno-Machado - Ensemble Methods2013-1 Machine Learning Lecture 06 - Lucila Ohno-Machado - Ensemble Methods
2013-1 Machine Learning Lecture 06 - Lucila Ohno-Machado - Ensemble MethodsDongseo University
 
2013-1 Machine Learning Lecture 05 - Andrew Moore - Support Vector Machines
2013-1 Machine Learning Lecture 05 - Andrew Moore - Support Vector Machines2013-1 Machine Learning Lecture 05 - Andrew Moore - Support Vector Machines
2013-1 Machine Learning Lecture 05 - Andrew Moore - Support Vector MachinesDongseo University
 
2014-1 Computer Algorithm W14 Notes
2014-1 Computer Algorithm W14 Notes2014-1 Computer Algorithm W14 Notes
2014-1 Computer Algorithm W14 NotesDongseo University
 
2014-1 Computer Algorithm W13 Notes
2014-1 Computer Algorithm W13 Notes2014-1 Computer Algorithm W13 Notes
2014-1 Computer Algorithm W13 NotesDongseo University
 
TAOCP1 - 1.2.11.1 - O 표기법
TAOCP1 - 1.2.11.1 - O 표기법TAOCP1 - 1.2.11.1 - O 표기법
TAOCP1 - 1.2.11.1 - O 표기법JangHyuk You
 
6장 그래프 알고리즘
6장 그래프 알고리즘6장 그래프 알고리즘
6장 그래프 알고리즘Vong Sik Kong
 
구종만 - 알고리즘: 기술 사회의 연금술
구종만 - 알고리즘: 기술 사회의 연금술구종만 - 알고리즘: 기술 사회의 연금술
구종만 - 알고리즘: 기술 사회의 연금술SKOOPMEDIA
 
2013-1 Machine Learning Lecture 06 - Artur Ferreira - A Survey on Boosting…
2013-1 Machine Learning Lecture 06 - Artur Ferreira - A Survey on Boosting…2013-1 Machine Learning Lecture 06 - Artur Ferreira - A Survey on Boosting…
2013-1 Machine Learning Lecture 06 - Artur Ferreira - A Survey on Boosting…Dongseo University
 
GPU를 위한 병렬 음원 방향 추정 알고리즘
GPU를 위한 병렬 음원 방향 추정 알고리즘GPU를 위한 병렬 음원 방향 추정 알고리즘
GPU를 위한 병렬 음원 방향 추정 알고리즘Taewoo Lee
 
[H3 2012] 클라우드기반 앱 만들기 - baas.io SDK 활용
[H3 2012] 클라우드기반 앱 만들기 - baas.io SDK 활용[H3 2012] 클라우드기반 앱 만들기 - baas.io SDK 활용
[H3 2012] 클라우드기반 앱 만들기 - baas.io SDK 활용KTH, 케이티하이텔
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)Ubuntu Korea Community
 

Viewers also liked (20)

1. introduction to algorithm
1. introduction to algorithm1. introduction to algorithm
1. introduction to algorithm
 
2015-2 W16 kernel and smo
2015-2 W16   kernel and smo2015-2 W16   kernel and smo
2015-2 W16 kernel and smo
 
2013-1 Machine Learning Lecture 07 - Michael Negnevitsky - Hybrid Intellig…
2013-1 Machine Learning Lecture 07 - Michael Negnevitsky - Hybrid Intellig…2013-1 Machine Learning Lecture 07 - Michael Negnevitsky - Hybrid Intellig…
2013-1 Machine Learning Lecture 07 - Michael Negnevitsky - Hybrid Intellig…
 
NoSQL Guide & Sample
NoSQL Guide &  SampleNoSQL Guide &  Sample
NoSQL Guide & Sample
 
Solution 3.
Solution 3.Solution 3.
Solution 3.
 
알고리즘 스터디 NP-완비
알고리즘 스터디 NP-완비알고리즘 스터디 NP-완비
알고리즘 스터디 NP-완비
 
세미나
세미나세미나
세미나
 
하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기
 
2013-1 Machine Learning Lecture 03 - Andrew Moore - a gentle introduction …
2013-1 Machine Learning Lecture 03 - Andrew Moore - a gentle introduction …2013-1 Machine Learning Lecture 03 - Andrew Moore - a gentle introduction …
2013-1 Machine Learning Lecture 03 - Andrew Moore - a gentle introduction …
 
2013-1 Machine Learning Lecture 06 - Lucila Ohno-Machado - Ensemble Methods
2013-1 Machine Learning Lecture 06 - Lucila Ohno-Machado - Ensemble Methods2013-1 Machine Learning Lecture 06 - Lucila Ohno-Machado - Ensemble Methods
2013-1 Machine Learning Lecture 06 - Lucila Ohno-Machado - Ensemble Methods
 
2013-1 Machine Learning Lecture 05 - Andrew Moore - Support Vector Machines
2013-1 Machine Learning Lecture 05 - Andrew Moore - Support Vector Machines2013-1 Machine Learning Lecture 05 - Andrew Moore - Support Vector Machines
2013-1 Machine Learning Lecture 05 - Andrew Moore - Support Vector Machines
 
2014-1 Computer Algorithm W14 Notes
2014-1 Computer Algorithm W14 Notes2014-1 Computer Algorithm W14 Notes
2014-1 Computer Algorithm W14 Notes
 
2014-1 Computer Algorithm W13 Notes
2014-1 Computer Algorithm W13 Notes2014-1 Computer Algorithm W13 Notes
2014-1 Computer Algorithm W13 Notes
 
TAOCP1 - 1.2.11.1 - O 표기법
TAOCP1 - 1.2.11.1 - O 표기법TAOCP1 - 1.2.11.1 - O 표기법
TAOCP1 - 1.2.11.1 - O 표기법
 
6장 그래프 알고리즘
6장 그래프 알고리즘6장 그래프 알고리즘
6장 그래프 알고리즘
 
구종만 - 알고리즘: 기술 사회의 연금술
구종만 - 알고리즘: 기술 사회의 연금술구종만 - 알고리즘: 기술 사회의 연금술
구종만 - 알고리즘: 기술 사회의 연금술
 
2013-1 Machine Learning Lecture 06 - Artur Ferreira - A Survey on Boosting…
2013-1 Machine Learning Lecture 06 - Artur Ferreira - A Survey on Boosting…2013-1 Machine Learning Lecture 06 - Artur Ferreira - A Survey on Boosting…
2013-1 Machine Learning Lecture 06 - Artur Ferreira - A Survey on Boosting…
 
GPU를 위한 병렬 음원 방향 추정 알고리즘
GPU를 위한 병렬 음원 방향 추정 알고리즘GPU를 위한 병렬 음원 방향 추정 알고리즘
GPU를 위한 병렬 음원 방향 추정 알고리즘
 
[H3 2012] 클라우드기반 앱 만들기 - baas.io SDK 활용
[H3 2012] 클라우드기반 앱 만들기 - baas.io SDK 활용[H3 2012] 클라우드기반 앱 만들기 - baas.io SDK 활용
[H3 2012] 클라우드기반 앱 만들기 - baas.io SDK 활용
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
 

Similar to 양성봉 - 알기쉬운 알고리즘 - 1장알고리즘의첫걸음

확률을 높이는 확률
확률을 높이는 확률확률을 높이는 확률
확률을 높이는 확률Seung-Woo Kang
 
누워서 읽는 퍼즐북
누워서 읽는 퍼즐북누워서 읽는 퍼즐북
누워서 읽는 퍼즐북Kevin Kim
 
9th 개조명운
9th 개조명운9th 개조명운
9th 개조명운Budong Woo
 
(독서광) 하마터면 깨달을 뻔
(독서광) 하마터면 깨달을 뻔(독서광) 하마터면 깨달을 뻔
(독서광) 하마터면 깨달을 뻔Jay Park
 
아이템 추천의 다양성을 높이기 위한 후처리 방법(논문 리뷰)
아이템 추천의 다양성을 높이기 위한 후처리 방법(논문 리뷰)아이템 추천의 다양성을 높이기 위한 후처리 방법(논문 리뷰)
아이템 추천의 다양성을 높이기 위한 후처리 방법(논문 리뷰)hyunsung lee
 
랜덤Walks, 몬테카를로 시뮬레이션
랜덤Walks, 몬테카를로 시뮬레이션랜덤Walks, 몬테카를로 시뮬레이션
랜덤Walks, 몬테카를로 시뮬레이션Sunggon Song
 

Similar to 양성봉 - 알기쉬운 알고리즘 - 1장알고리즘의첫걸음 (6)

확률을 높이는 확률
확률을 높이는 확률확률을 높이는 확률
확률을 높이는 확률
 
누워서 읽는 퍼즐북
누워서 읽는 퍼즐북누워서 읽는 퍼즐북
누워서 읽는 퍼즐북
 
9th 개조명운
9th 개조명운9th 개조명운
9th 개조명운
 
(독서광) 하마터면 깨달을 뻔
(독서광) 하마터면 깨달을 뻔(독서광) 하마터면 깨달을 뻔
(독서광) 하마터면 깨달을 뻔
 
아이템 추천의 다양성을 높이기 위한 후처리 방법(논문 리뷰)
아이템 추천의 다양성을 높이기 위한 후처리 방법(논문 리뷰)아이템 추천의 다양성을 높이기 위한 후처리 방법(논문 리뷰)
아이템 추천의 다양성을 높이기 위한 후처리 방법(논문 리뷰)
 
랜덤Walks, 몬테카를로 시뮬레이션
랜덤Walks, 몬테카를로 시뮬레이션랜덤Walks, 몬테카를로 시뮬레이션
랜덤Walks, 몬테카를로 시뮬레이션
 

More from Dongseo University

Lecture_NaturalPolicyGradientsTRPOPPO.pdf
Lecture_NaturalPolicyGradientsTRPOPPO.pdfLecture_NaturalPolicyGradientsTRPOPPO.pdf
Lecture_NaturalPolicyGradientsTRPOPPO.pdfDongseo University
 
Evolutionary Computation Lecture notes03
Evolutionary Computation Lecture notes03Evolutionary Computation Lecture notes03
Evolutionary Computation Lecture notes03Dongseo University
 
Evolutionary Computation Lecture notes02
Evolutionary Computation Lecture notes02Evolutionary Computation Lecture notes02
Evolutionary Computation Lecture notes02Dongseo University
 
Evolutionary Computation Lecture notes01
Evolutionary Computation Lecture notes01Evolutionary Computation Lecture notes01
Evolutionary Computation Lecture notes01Dongseo University
 
Average Linear Selection Algorithm
Average Linear Selection AlgorithmAverage Linear Selection Algorithm
Average Linear Selection AlgorithmDongseo University
 
Lower Bound of Comparison Sort
Lower Bound of Comparison SortLower Bound of Comparison Sort
Lower Bound of Comparison SortDongseo University
 
Running Time of Building Binary Heap using Array
Running Time of Building Binary Heap using ArrayRunning Time of Building Binary Heap using Array
Running Time of Building Binary Heap using ArrayDongseo University
 
Proof By Math Induction Example
Proof By Math Induction ExampleProof By Math Induction Example
Proof By Math Induction ExampleDongseo University
 
Estimating probability distributions
Estimating probability distributionsEstimating probability distributions
Estimating probability distributionsDongseo University
 
2018-2 Machine Learning (Wasserstein GAN and BEGAN)
2018-2 Machine Learning (Wasserstein GAN and BEGAN)2018-2 Machine Learning (Wasserstein GAN and BEGAN)
2018-2 Machine Learning (Wasserstein GAN and BEGAN)Dongseo University
 
2018-2 Machine Learning (Linear regression, Logistic regression)
2018-2 Machine Learning (Linear regression, Logistic regression)2018-2 Machine Learning (Linear regression, Logistic regression)
2018-2 Machine Learning (Linear regression, Logistic regression)Dongseo University
 
2017-2 ML W9 Reinforcement Learning #5
2017-2 ML W9 Reinforcement Learning #52017-2 ML W9 Reinforcement Learning #5
2017-2 ML W9 Reinforcement Learning #5Dongseo University
 

More from Dongseo University (20)

Lecture_NaturalPolicyGradientsTRPOPPO.pdf
Lecture_NaturalPolicyGradientsTRPOPPO.pdfLecture_NaturalPolicyGradientsTRPOPPO.pdf
Lecture_NaturalPolicyGradientsTRPOPPO.pdf
 
Evolutionary Computation Lecture notes03
Evolutionary Computation Lecture notes03Evolutionary Computation Lecture notes03
Evolutionary Computation Lecture notes03
 
Evolutionary Computation Lecture notes02
Evolutionary Computation Lecture notes02Evolutionary Computation Lecture notes02
Evolutionary Computation Lecture notes02
 
Evolutionary Computation Lecture notes01
Evolutionary Computation Lecture notes01Evolutionary Computation Lecture notes01
Evolutionary Computation Lecture notes01
 
Markov Chain Monte Carlo
Markov Chain Monte CarloMarkov Chain Monte Carlo
Markov Chain Monte Carlo
 
Simplex Lecture Notes
Simplex Lecture NotesSimplex Lecture Notes
Simplex Lecture Notes
 
Reinforcement Learning
Reinforcement LearningReinforcement Learning
Reinforcement Learning
 
Median of Medians
Median of MediansMedian of Medians
Median of Medians
 
Average Linear Selection Algorithm
Average Linear Selection AlgorithmAverage Linear Selection Algorithm
Average Linear Selection Algorithm
 
Lower Bound of Comparison Sort
Lower Bound of Comparison SortLower Bound of Comparison Sort
Lower Bound of Comparison Sort
 
Running Time of Building Binary Heap using Array
Running Time of Building Binary Heap using ArrayRunning Time of Building Binary Heap using Array
Running Time of Building Binary Heap using Array
 
Running Time of MergeSort
Running Time of MergeSortRunning Time of MergeSort
Running Time of MergeSort
 
Binary Trees
Binary TreesBinary Trees
Binary Trees
 
Proof By Math Induction Example
Proof By Math Induction ExampleProof By Math Induction Example
Proof By Math Induction Example
 
TRPO and PPO notes
TRPO and PPO notesTRPO and PPO notes
TRPO and PPO notes
 
Estimating probability distributions
Estimating probability distributionsEstimating probability distributions
Estimating probability distributions
 
2018-2 Machine Learning (Wasserstein GAN and BEGAN)
2018-2 Machine Learning (Wasserstein GAN and BEGAN)2018-2 Machine Learning (Wasserstein GAN and BEGAN)
2018-2 Machine Learning (Wasserstein GAN and BEGAN)
 
2018-2 Machine Learning (Linear regression, Logistic regression)
2018-2 Machine Learning (Linear regression, Logistic regression)2018-2 Machine Learning (Linear regression, Logistic regression)
2018-2 Machine Learning (Linear regression, Logistic regression)
 
2017-2 ML W11 GAN #1
2017-2 ML W11 GAN #12017-2 ML W11 GAN #1
2017-2 ML W11 GAN #1
 
2017-2 ML W9 Reinforcement Learning #5
2017-2 ML W9 Reinforcement Learning #52017-2 ML W9 Reinforcement Learning #5
2017-2 ML W9 Reinforcement Learning #5
 

양성봉 - 알기쉬운 알고리즘 - 1장알고리즘의첫걸음

  • 2. Disclaimer • 연세대학교 양성봉 교수님의 알기 쉬운 알고리즘 PPT에 개인적으로 몇 가지 내용을 더하였습니다. • 법적인 문제가 될 경우, dkkang@gmail.com 으로 알려주시면 삭제하겠습니다.
  • 3. 알고리즘의 유래 • 9세기경 페르시아 수학자 알콰리즈미 (al-Khwārizmī) • 최초의 알고리즘:BC300년경 유클리드의 최대공약수 알고리즘 최대 공약수 – Greatest Common Divisor 최소 공배수 - Least Common Multiple
  • 4. 알고리즘이란 • 알고리즘은 문제를 해결하기 위한 단계적인 절차를 의미한다. • 요리법과 유사 - 라면 봉지의 요리법 • 단계적인 절차를 따라 하면 요리가 만들어지듯이, 알고리즘도 단계적인 절차를 따라 하면 주어진 문제의 답을 준다. • 주어진 문제에 대해 여러 종류의 알고리즘이 있을 수 있으나, 항상 보다 효율적인 알고리즘을 고안하는 것이 매우 중요
  • 5. 1.1 최대 숫자 찾기 • 가장 큰 숫자 찾기
  • 6. 알고리즘 • 카드의 숫자를 하나씩 비교하면서 본 숫자들 중에 서 가장 큰 숫자를 기억해가며 진행하는 방법일 것 이다. • 마지막 카드의 숫자를 본 후에, 머릿속에 기억된 가장 큰 숫자가 적힌 카드를 바닥에서 집어 든다. • 이렇게 찾는 방법을 순차탐색 (Sequential Search, 또는 선형 탐색 linear search)이라고 한다. 즉, 카드를 한 장씩 차례대로 (주어진 순서대로) 읽어 가며 찾는 방법
  • 7. 1.2 임의의 숫자 찾기 • 85를 찾기
  • 8. 알고리즘 • 최대 숫자 찾기처럼 머릿속에 85를 기억하고 바닥에 펼쳐진 카드를 차례대로 한 장씩 읽으며 85가 적힌 카드를 찾는다. • 역시 순차탐색을 이용한 것이다.
  • 9. 순차 탐색의 기대값은? • 1*1/n+2*1/n+3*1/n+4*1/n+…+n*1/n • 이는 (n*(n+1)/2) * 1/n 이므로 • 답은 (n+1)/2 • 과연 위와 같을까? • 만일 주어진 수가 분명히 배열 안에 하나 있다는 것을 알고리즘도 알고 있다고 가정하자. • 그런 경우 기대값은 ((n-1)(n+2))/(2n) 이다. (왜?)
  • 10. • 10장의 카드가 오름차순으로 미리 정렬되어있다면, • 실생활에서의 예: 사전, 핸드폰의 전화번호 리스트, 책 뒷부분의 인덱스 등 • 85 찾기 15, 20, 25, 35, 45, 55, 60, 75, 85, 90에서 85를 순 차탐색으로 찾을 경우, 위쪽에 있는 8장의 카드를 읽은 후에나 85를 찾는다.
  • 11. 알고리즘 • 중간에 있는 카드의 숫자인 45 (혹은 55)와 85를 먼저 비교한다. • 오름차순으로 정렬된 데이터를 반으로 나누고, 나누어진 반을 다시 반으로 나누고, 이 과정을 반복하여 원하는 데이터를 찾는 탐색 알고리즘을 이진탐색 (Binary Search)이라고 한다. • 이진 탐색의 기대값은? (심화 문제)
  • 12. 1.3 동전 거스름돈 • 물건을 사고 거스름돈을 동전으로 받아야 한다면, 대부분의 경우 가장 적은 수의 동전을 받기 원한다. • 거스름돈이 730원이라면, 500원짜리 동전 1개, 100원 짜리 동전 2개, 10원짜리 동전 3개인 총 6개를 거슬러 받으면 거스름돈 730원에 대한 최소 동전의 수이다.
  • 13. 알고리즘 • 남은 거스름돈 액수를 넘지 않는 가장 큰 액면의 동전을 계속하여 선택하는 것이다. • 그리디 (Greedy) 알고리즘 – 탐욕 알고리즘 • 730원의 거스름돈에 대해서, 500원짜리 동전 1개를 선택한다. • 그 다음엔 230원이 남아있으므로, 100원짜리 동전 2개를 선택하고 나면, 30원이 남는다. • 마지막으로 10원짜리 동전 3개를 선택한다. • 총 동전의 수: 1+2+3 = 6개, 최소 동전의 수
  • 14. 1.4 한붓그리기 • 종이에서 연필을 떼지 않고 그리는 한붓그리기 문 제이다. • 한붓그리기는 그래프의 어느 한 점에서 출발하여 모든 선분을 한 번만 지나서 출발점으로 돌아오되, 궤적을 그리는 동안 연필이 종이에서 떨어져서는 안 된다. 단, 점은 여러 차례 방문하여도 괜찮다.
  • 15. • 점 1에서 출발하여 점 2를 지나고, 점 3과 점 8을 거쳐서 점 7에 도착한 상태를 나타내고 있다. • 지나온 궤적을 굵은 선으로 보여주고 있다. 점 7이 현재 점이라 하자. 현재 점으로부터 점 6, 9 또는 10 중에서 어디로 진행해야 할까? 현재점
  • 16. • 점 6으로 가면, 5, 4, 3, 9, 7, 10을 거쳐서 점 1로 돌아 올 수 있다. • 점 9로 가면, 3, 4, 5, 6, 7, 10을 거쳐서 점 1로 역시 돌 아올 수 있다. • 점 10으로 가면, 점 1로 갈 수 밖에 없고, 3, 4, 5, 6, 7, 9 사이의 선분을 지나가기 위해서는 연필을 떼어야 만 한다. • 점 6, 9의 공통점은? 현재 점에서 현재 점으로 돌아 오는 사이클
  • 17. 알고리즘 • 현재 점으로부터 진행하고자 하는 점을 지나서 현재 점으로 돌아오는 사이클 (cycle)을 찾는 것이다. • 현재 점 7에서 점 10을 지나서 현재 점으로 돌아오는 사이클은 없다. 왜냐하면 그러기 위해서는 점 1, 2, 3, 8을 지나가야 하는데 이 점들 사이의 선분은 이미 지나갔기 때문이다. • 현재 점으로부터 점 6이나 점 9를 지나서 현재 점으로 돌아오는 사이클이 존재한다. 따라서 현재 점에서 점 6이나 점 9를 선택하면, 연필을 떼지 않고 진행할 수 있다.
  • 18. 1.5 미로 찾기 • 미로를 찾는 문제는 그리스 신화에서 유래 • 당시 지중해의 크레타 섬을 통치하던 폭군 미노스 (Minos) 왕이 있었다. 미노스 왕은 황소 머리에 하반신은 사람인 무서운 짐승 미노타우르 에게 제물로 받치기 위해 아테네에게 젊은 남녀를 조공으로 요구하였다.
  • 19. • 조공으로 바쳐진 젊은이들은 지하에 있는 매우 광대하고 복잡한 미로 내부에 갇혔고, 그들이 미로를 탈출하지 못하면 미노타우르가 그들을 잡아먹었다. • 이러한 비극이 계속되는 동안, 아테네의 한 젊은 청년 테세우스 (Theseus)는 자발적으로 제물이 되기로 결심하여 조공으로 바쳐졌다. 그는 다행히 미노스 왕의 딸 아리아드네 (Ariadne)의 충고로 칼과 함께 실타래를 가지고 실을 풀면서 미로에 들어갔다.
  • 20. • 그리고 마침내 테세우스는 미노타우르를 칼로 죽이고, 실을 다시 감으면서 미로를 빠져 나왔다. 이 그리스 신화에서 알려주는 미로 찾기의 해는 바로 실타래이다. • 대부분의 경우는 실타래 나 도와주는 사람도 없 다. 이러한 상황에서 어 떻게 미로를 빠져나올 수 있을까?
  • 21. 알고리즘 • 현 위치에서 한 방향을 선택하고, 벽에 오른손을 댄다. 그리고 출구가 나올 때까지 계속 오른손을 벽에서 떼지 않고 계속 걸어간다. • 오른손 법칙 알고리즘으로 출구를 찾아 나아가는 궤적을 점선으로 보여주고 있다.
  • 22. 미로에서의 무한 루프 • 출처 - http://blog.naver.com/omath/150035865377 • 모든 벽들이 연결된 구조일 때에는 우수법(友手法)또는 좌수법(左手法)으로 충분함 • 무한 루프는 도는 경우 – – – – 확장 좌수법 (한 번 갔던 곳은 다시 가지 않는다) 구심법 다익스트라A 백트래킹 • 네이버의 길찾기나 네비게이션의 핵심 코드로 사용됨
  • 24. 마이크로마우스 대회 • 2007 APEC Micromouse Contest 세계 1위 • 단국대학교 황하윤 – FIRST PRIZE : 최우수상 – BEST STUDENT : 학생부 우승 – FASTEST RUN :가장 빠른 주행 상 • http://pann.nate.com/video/202643346
  • 25. 1.6 가짜 동전 찾기 • 아주 많은 동전 더미 속에 1개의 가짜 동전이 섞여 있다. • 가짜 동전은 매우 정교하게 만들어져 누구도 눈으로 식별할 수 없다. • 그러나 가짜 동전의 무게는 정상적인 동전보다 약간 가볍다. • 가짜 동전 찾기 문제는 이 가짜 동전을 찾아내기 위해서 양팔 저울만 사용하여 가짜 동전을 찾아내는 것인데, 가능한 한 저울에 동전을 다는 횟수를 줄여야 한다.
  • 26. 철수의 생각 • 임의의 동전 1개를 저울 왼편에 올리고, 나머지 동전을 하나씩 오른편에 올려서 가려내어 보자. • 1번 (n-1)번
  • 27. 영희의 생각 • 동전을 2개씩 짝을 지어, n/2 짝을 각각 저울에 달 아서 가짜 동전을 찾아보자. • 1번  n/2번
  • 28. 광수의 생각 • 동전 더미를 반 (2 짝)으로 나누어 저울 양편에 놓으면 어떨까? 이쪽에 가짜 동전이 있다. 이쪽만 반씩 나누어 …
  • 29. 알고리즘 • 동전 더미를 반으로 나누어 저울에 달고, 가벼운 쪽의 더미를 계속 반으로 나누어 저울에 단다. • 분할된 더미의 동전 수가 1개씩이면, 마지막으로 저울을 달아 가벼운 쪽의 동전이 가짜임을 찾아낸다. • 광수의 알고리즘은 운이 좋을 때가 없다. 왜냐하면 마지막에 가서야 가짜 동전을 찾기 때문이다.
  • 30. • 동전이 1,024개 있을 때 몇 번 저울에 달아야 할까? • 먼저 512개씩 양쪽에 올려놓고 저울을 재고, • 다음은 256개씩 재고, • 128개씩, 64개씩, 32개씩, 16개씩, 8개씩, 4개씩, 2개씩, 마지막엔 1개씩 올려서 저울을 잰다. • 는 총 10번이고, log21,024 = 10 이다. • n개의 동전에 대해서 log2n 번 저울에 달면 가짜 동전을 찾는다.
  • 31. 자루 안의 가짜 동전 문제 • 동전이 가득 든 자루가 10 개 있다. • 동전은 어느 것이나 겉으로 봐서 똑같게 보이지만, 한 개의 자루에 들어 있는 동전만은 가짜 동전들이다. • 진짜 동전 – 10 g, 가짜 동전 – 9 g • 지금 곁에는 눈금 저울이 있는데, 단 한 번만 사용해서 어느 자루에 가벼운 가짜 동전이 들어 있는지 알아맞혀 보아라.
  • 32. 1.7 독이든 술 단지 • 옛날 어느 먼 나라에 술을 매우 즐겨 마시는 임금님이 살고 있었다. • 어느 날 이웃 나라의 스파이가 창고에 들어가서 술 단지 하나에 독을 넣고 나오다가 붙잡혔다. • 스파이는 어느 단지인지는 모르지만 하나의 단지에만 독을 넣었다고 실토하고는 숨을 거두었다. • 사용된 독의 특징은 독이든 단지의 술을 아주 조금만 맛보아도 술을 맛 본 사람이 정확히 일주일 후에 죽는다.
  • 33. • 임금님은 독이든 술 단지를 반드시 일주일 만에 찾아내라고 신하들에게 명하였다. • 희생되는 신하의 수를 줄여야 한다. 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술 술
  • 34. 아이디어 찾아내기 • 적은 수의 술 단지에 대해서 생각해보는 것이다. • 즉, 술 단지의 수가 2개일 때, 4개일 때 문제를 풀어보고, 술 단지의 수를 늘려가면서 일반적인 규칙을 찾아보는 것이다.
  • 35. 2개일 때 • 1 명의 신하가 1개의 술 단지의 술을 맛보아 일주일 후 살아 있으면 맛보지 않은 단지에 독이 있는 것이고, 죽는다면 맛본 술 단지에 독이 들어 있을 것이다. 술 술
  • 36. 4개일 때 • 3 사람이 각각 1개씩 맛본다면 술 술 술 술 • 그런데 2사람으로 줄일 수는 없을까?
  • 37. 4개일 때 • 철수의 제안: 2 사람이 각각 1 단지씩 맛보게 해보자. ? 술 술 ? 술 술 • 2 사람이 맛보지 않은 나머지 2개의 단지 중 하나에 독이 들어 있으면, 일주일 후 두 사람을 살아있을 것이고, 나머지 2개의 단지 중 어느 하나에 독이 들어 있는지를 알 수 없다.
  • 38. • 광수의 제안: 4개의 단지를 2개의 그룹으로 나누어, 각 그룹에 한 사람씩 할당한다. • 이 경우는 맨 처음 고려했었던 술 단지의 수가 2인 경우가 2개가 생긴 셈이다. • 과연 답을 찾을 수 있을까? 술 술 술 술
  • 39. 광수의 제안을 어떻게 보완해야 할까? • 다시 한 번 문제를 살펴보자. • 혹시 문제에서 간과한 점이 있나, 아니면 문제에 없는 조건을 우리 마음대로 만들었는지를 생각해 보자. • 대부분의 경우에 한 명의 신하가 반드시 하나의 단 지의 술만 맛보아야 하는 것으로 생각하기 쉽다. 문제에는 이러한 조건이 주어지지 않았다.
  • 40. • 광수의 제안에서 총 4개의 단지 중에서, 시음하지 않은 2개의 단지가 있다. 이 2개의 단지 중에 하나를 두 신하에게 동시에 맛을 보게 하자. 술 술 술 A B 술 A B
  • 41. • 이렇게 하면 아래와 같이 4가지의 결과가 생긴다. 두 신하를 각각 A와 B라고 하자. 1. 아무도 시음하지 않은 단지에 독이 있으면, 일주 일 후에 두 신하 둘 다 살아있다. 2. A가 혼자 시음한 단지에 독이 있으면, 일주일 후 에 A만 죽는다. 3. B가 혼자 시음한 단지에 독이 있으면, 일주일 후 에 B만 죽는다. 4. A와 B 둘 다 시음한 단지에 독이 있으면, 일주일 후에 둘 다 죽는다.
  • 42. 알고리즘 • 각 단지에 2진수를 0부터 부여하고, 각 신하가 술 맛을 보면 1 안보면 0으로 하여, 아래와 같이 단지와 신하를 짝지어 보는 것이다. 00 01 A 10 B 11 A B
  • 44. 단지 수가 n일 때 • 희생자 수: 0  log2n명 • 8 개의 술단지에 대해 7명을 사용하는 경우, 기대값은? – 7/8 명 – (n-1)/n • 8 개의 술단지에 대해 3명을 사용하는 경우, 기대값은? – 12/8 = 3/2 명 - ? (심화 문제)
  • 45. 제로 리스크 편향(zero risk bias) • 모든 위험을 완벽하게 제거할 수 있다는 환상 • 6개의 탄알이 들어갈 수 있는 회전 탄창을 가진 러시안 룰렛을 생각해 보자. • (1) 4 개의 탄알이 남아있을 때, 그 중 2 개를 제거하기 위해 돈을 얼마나 지불할 수 있나? • (2) 1 개의 탄알이 남아있을 때, 그 1 개를 제거하기 위해 돈을 얼마나 지불할 수 있나? • 대부분의 사람들은 (2)의 경우에 더 많은 돈을 지불함 • (1)은 1/3의 확률 제거, (2)는 1/6의 확률 제거
  • 46. 요약 • 순차탐색 (Sequential Search): 주어진 순서에 따라 차례로 탐색한다. • 이진탐색 (Binary Search): 정렬된 데이터에 대해서 중간에 있는 데이터를 비교하여 그 결과에 따라 같 으면 탐색을 마치고, 다르면 작은 데이터가 있는 쪽 또는 큰 데이터가 있는 쪽을 같은 방식으로 탐 색한다. • 동전 거스름돈 문제에서 가장 액면이 높은 동전을 항상 선택 (그리디하게 선택)한다. 그리디 (Greedy) 알고 리즘(4장)
  • 47. • 한붓그리기 문제는 오일러 서킷 (Euler Circuit) 문 제와 같다. 알고리즘의 핵심은 현재 점에서 다음으 로 이동 가능한 점을 선택할 때에는 반드시 사이클 이 존재하여야 한다. • 가짜 동전 찾기에서 동전더미를 반으로 분할하여 저울에 달고, 가짜 동전이 있는 더미를 계속해서 반으로 나누어 저울에 단다. 이는 분할 정복 (Divide-and-Conquer) 알고리즘의 일종:분할 정복 알 고리즘(3장) • 독이든 술 단지 문제는 2진수를 활용하여 그 해를 찾는다.
  • 48. 연습 문제 • 순차 탐색의 기대값은? 만일 반드시 하나가 있다는 것을 고려하는 경우의 기대값은? • 이진 탐색의 기대값은? • 미로에 대한 확장 우수법을 프로그램으로 구현해 보라. 어떤 자료 구조로 구현해야 할까? • 가짜 동전 문제에서 철수의 생각에 대한 기대값은? • 가짜 동전 문제에서 영희의 생각에 대한 기대값은? • 자루 안의 가짜 동전 문제의 해법은? • n 개의 술단지에 대해 n-1 명을 사용하는 경우의 기대값은? • n 개의 술단지에 대해 log 2 𝑛명을 사용하는 경우의 기대값은?