SlideShare a Scribd company logo
1 of 46
Download to read offline
서울시립대 알고리즘 소모임
그리디 알고리즘
1학기 3주차
강의자 소개
2021 AL林 정기 세미나 2
이름 최문기
소속 서울시립대 컴퓨터과학부(16학번)
핸들 iknoom1107(BOJ) IKnoom(Codeforces) IKnoom(AtCoder)
ICPC 팀 (팀명 미정)
- 김정현, 오규민, 최문기
2021 AL林 정기 세미나 3
그리디 알고리즘 개론
그리디 알고리즘(Greedy Algorithm)
2021 AL林 정기 세미나 4
- 눈앞의 이익만 우선 추구하는 알고리즘 설계 패러다임
- 해를 구하는 각 단계에서 당장 가장 좋은 방법만 선택한다.
do{
현재 가장 좋은 선택을 한다;
} until (전체 해 구성 완료)
그리디 알고리즘(Greedy Algorithm)
2021 AL林 정기 세미나 5
탐욕적 기법 또는 탐욕법이라고도 한다.
한국어로 번역하면 욕심쟁이 알고리즘
그리디 알고리즘(Greedy Algorithm)
2021 AL林 정기 세미나 6
“문제를 효율적으로 해결하기 위한 알고리즘 설계 패러다임”
공통점: 우리가 원하는 답을 여러 개의 조각으로 쪼개고 각 단계마다 답을 만들어간다.
완전 탐색
각 단계마다 모든 선택지를 고려해보고
그 중 전체의 답이 가장 좋은 것을 찾는다.
그리디 알고리즘
각 단계마다 지금 당장 가장 좋은 방법만을 선택한다.
동전 교환 문제
2021 AL林 정기 세미나 7
“거스름돈을 최소 개수의 동전으로 교환”
25
10
5
1
쿼터
다임
니켈
페니
동전 교환 문제(희망편)
2021 AL林 정기 세미나 8
거스름 돈은 가장 큰 동전부터 교환하면 최소!
동전 교환 문제(희망편)
2021 AL林 정기 세미나 9
💻
Q = int(input())
for _ in range(Q):
N = int(input())
Quarter = N // 25
N %= 25
Dime = N // 10
N %= 10
Nickel = N // 5
N %= 5
Penny = N
print(Quarter, Dime, Nickel, Penny)
동전 교환 문제(희망편)
2021 AL林 정기 세미나 10
또 다른 동전 교환 문제
2021 AL林 정기 세미나 11
또 다른 동전 교환 문제(절망편)
2021 AL林 정기 세미나 12
거스름 돈은 가장 큰 동전부터 교환하면 최소!
또 다른 동전 교환 문제(절망편)
2021 AL林 정기 세미나 13
💻
n, k = map(int, input().split())
coins = [int(input()) for _ in range(n)]
# 역순으로 정렬
coins.sort(reverse=True)
answer = 0
for coin in coins:
answer += k // coin
k %= coin
if k != 0:
print(-1)
else:
print(answer)
또 다른 동전 교환 문제(절망편)
2021 AL林 정기 세미나 14
제출하기 전에 예제 입력은 돌려 보셨나요?
2021 AL林 정기 세미나 15
12 1 1 1
15 = ( )
5 5 5 (최적해)
15 =
뒤로감기 ⏪
2021 AL林 정기 세미나 16
이제 풀이가 의심되기 시작합니다.
왜 맞았을까요? .
최적해가 보장되는 정당성
2021 AL林 정기 세미나 17
동전의 종류가 1, 5, 10, 25일 때
거스름돈을 가장 큰 동전부터 교환하면
동전의 수가 최소이다.
25
10
5
1
쿼터
다임
니켈
페니
최적해가 보장되는 정당성
2021 AL林 정기 세미나 18
보조정리
1
쿼터, 다임, 니켈, 페니를 가장 적게 사용해서 교환한 n센트(n > 0)는
최대 2개의 다임, 최대 1개의 니켈, 최대 4개의 페니를 가지고
2개의 다임과 1개의 니켈을 같이 가질 수 없다.
따라서 다임, 니켈, 페니로 교환한 금액은 24센트를 넘길 수 없다.
증명
(귀류법) 만약 동전을 가장 적게 교환했다고 가정할 때,
다임 3개, 니켈 2개, 페니 5개, 다임 2개와 니켈 1개를 가지고 있다고 가정하면 각각의 경
우는 더 적은 동전으로 교환된다. 따라서 모순이다.
최적해가 보장되는 정당성
2021 AL林 정기 세미나 19
정리 그리디 알고리즘(큰 것부터 교환)은 가능한 가장 적은 동전을 사용한다.
증명
그리디 알고리즘을 사용한 쿼터의 개수를 q라고 할 때,
q보다 작은 q’이 있다고 가정할 때, q’이 q보다 작기 위해서는
쿼터가 아닌 다른 동전을 사용해야한다. 이는 [보조정리1]에 의해 최적이 아니다.
같은 방법으로 [보조정리1]에 의해 최대 1개의 니켈, 최대 4개의 페니를 사용 가능하므로
니켈과 페니로 교환한 금액의 최대는 9이다. 따라서 다임을 최대한 사용해야한다.
페니로 교환한 금액의 최대는 4이다. 따라서 니켈을 최대한 사용해야한다.
정리
2021 AL林 정기 세미나 20
①
- 그리디 알고리즘은 눈앞의 이익만 우선 추구하는 알고리즘 설계 패러다임이다.
- 관찰을 통해 탐색 범위를 좁혀 문제를 효율적으로 해결 할 수 있다.
②
- “이렇게 하면 될거 같은데..”와 같은 직관으로 문제를 풀다가는 망할 수도 있다.
- 그리디 알고리즘이 최적해를 보장하는지는 정당성을 증명해야한다.
2021 AL林 정기 세미나 21
그리디 알고리즘이
최적해가 보장되지 않는 예
냅색 문제(knapsack problem)
2021 AL林 정기 세미나 22
부피가 K인 보따리(냅색)와 N개의 물건이 있다.
각 물건은 부피가 𝑊𝑖, 가치가 𝑉𝑖이다.
보따리에 물건을 넣을 때 그 가치의 최대값을 구하시오.
냅색 문제(knapsack problem)
2021 AL林 정기 세미나 23
예제 입력 : N = 4
K(배낭) = 7
W(부피) = [ 6, 4, 3, 5 ],
V(가치) = [ 13, 8, 6, 12 ]
예제 출력 : 14
냅색 문제(knapsack problem)
2021 AL林 정기 세미나 24
생각해 볼 수 있는 그리디 풀이
① 가장 부피가 작은 것 부터
② 가장 가치가 큰 것부터
③ 단위 부피 당 가치(가치/부피)가 큰 것부터
...
냅색 문제(knapsack problem)
2021 AL林 정기 세미나 25
W = 6, V = (greedy)
W = 7, V = + (optimal)
13
8 6
→ 동적 프로그래밍(10주차)으로 해결
그리디 알고리즘이 최적해가 보장되지 않는 예
2021 AL林 정기 세미나 26
사실 그리디 알고리즘은 대부분 최적해를 보장하지 않습니다.
= 너무 함부로 그리디 알고리즘 쓰지 맙시다.
(발표자의 생각) 그리디 알고리즘 설계는 정말 어려운 일!
직관적으로 맞을 것 같지만 틀린 경우가 대다수입니다.
의심 또 의심해봅시다.
그리디 알고리즘이 최적해가 보장되지 않는 예
2021 AL林 정기 세미나 27
Starting from A,
a greedy algorithm that
tries to find the maximum by
following the greatest slope
will find the local maximum
at "m", oblivious to the
global maximum at "M".
2021 AL林 정기 세미나 28
그리디 알고리즘이
최적해가 보장되는 예
회의실 배정 문제
2021 AL林 정기 세미나 29
회의실이 1개 있을 때, n개의 회의 중에 선택할 수 있는 최대 회의 수를 구하시오.
회의실 배정 문제
2021 AL林 정기 세미나 30
생각해 볼 수 있는 그리디 풀이
① 가장 시간이 짧은 것 부터
② 가장 시작 시간이 빠른 것 부터
③ 가장 종료 시간이 빠른 것 부터
...
회의실 배정 문제
2021 AL林 정기 세미나 31
정답은?
회의의 집합을 S라 할 때,
while( S의 크기 > 0){
1. 회의 중 가장 일찍 끝나는 회의 smin을 선택한다.
2. smin과 겹치는 회의를 S에서 모두 지운다.
}
회의실 배정 문제 – 최적해가 보장되는 정당성
2021 AL林 정기 세미나 32
명제 가장 종료 시간이 빠른 회의(smin)를 포함하는 최적해가 반드시 존재한다.
증명
최적해 중에 smin을 포함하지 않는 답이 있다고 가정하자.
이 답에서 첫 번째로 개최되는 회의를 지우고 smin을 넣을 수 있다.
왜냐하면 smin는 가장 일찍 끝나는 회의이기 때문에
지워진 회의는 smin보다 일찍 끝날 수 없고 따라서 두 번째 회의와 smin은 겹칠 수 없다.
따라서 새로 만든 목록도 최적해 중 하나가 된다.
즉, smin을 포함하는 최적해는 항상 존재한다.
(참고) 하프만 코드
2021 AL林 정기 세미나 33
✓ 하프만 코드
원문의 각 글자를 가변 길이의 비트 패턴으로 바꾸는 것(가변 길이 인코딩)
[위키디피아 설명]
https://ko.wikipedia.org/wiki/%ED%97%88%ED%94%84%EB%A8%BC_%EB%B6%80%ED%98%B8%ED%99%94
https://en.wikipedia.org/wiki/Huffman_coding
(참고) 하프만 코드
2021 AL林 정기 세미나 34
"this is an example of a huffman tree"
(참고) 하프만 코드
2021 AL林 정기 세미나 35
- 최적해가 보장되는 그리디 알고리즘
자주 출현하는 글자는 더 짧은 패턴으로, 가끔 출현하는 글자는 긴 패턴으로 배당
- 정당성 (위 알고리즘이 쉽고 당연해보이나요?? 정당성 증명 정말 어렵습니다.)
https://opendsa-server.cs.vt.edu/ODSA/Books/CS3/html/HuffProof.html
알고리즘 문제해결 전략 384쪽
“출현 빈도가 주어질 때 전체 길이를 최소화하는 비트 패턴을 구하시오.”
(참고) 하프만 코드
2021 AL林 정기 세미나 36
백준에서 풀어보기 (주의 : 우선순위 큐를 알아야합니다.)
https://www.acmicpc.net/problem/1715
https://www.acmicpc.net/problem/13975
그리디 알고리즘이 최적해가 보장되는 예
2021 AL林 정기 세미나 37
• 다익스트라 알고리즘(2학기)
양의 가중치에서의 최단경로
• 프림 알고리즘, 크루스칼 알고리즘(2학기)
최소 신장 트리(Minimum Spanning Tree)
2021 AL林 정기 세미나 38
정리
정리
2021 AL林 정기 세미나 39
그리디 알고리즘은 눈앞의 이익만 우선 추구하는 알고리즘 설계 패러다임이다.
- 관찰을 통해 탐색 범위를 좁혀 문제를 효율적으로 해결 할 수 있다.
- 그리디 알고리즘이 최적해를 보장하는지는 정당성을 증명해야한다.
정리
2021 AL林 정기 세미나 40
그리디 알고리즘으로 최적해를 구하지 못하는 예를 살펴봤다.
- 대부분의 경우 그리디 알고리즘으로 최적해를 못 구한다.
그리디 알고리즘으로 최적해를 구하는 대표적인 예를 살펴봤다.
- 동전 문제, 회의실 배정, 하프만 코드
- 그리디 알고리즘으로 구한 해가 최적인지 정당성을 증명하는 것은 어렵다.
알고리즘 대회에서 그리디 알고리즘
2021 AL林 정기 세미나 41
그리디인지 알고 푸는 것과 아닌 것에 차이가 정말 큽니다. 그건 지금 알려드릴 수 없고 직접 다양한 문제해결을 경험해봐야 압니다.
① 그리디인걸 알면 쉽습니다. 하지만 문제의 정해가 그리디인지 모르면 그리디인지 파악하기 어렵고 증명하기도 어렵습니다.
② 반대로 그리디가 아닌데 그리디로 풀 수 있다고 착각하기도 쉽습니다.
이건 다양한 문제를 풀면서 연습이 많이 되어야합니다.
이상적인 전략
짧은 대회 시간 내에 증명 후 코드에 옮긴다.
일반적인 전략
증명을 못하겠으면 일단 건너뛰고 시간이 남으면 증명 생략하고 코드에 옮긴다. 제출 후 기도한다.
코딩테스트에서 그리디 알고리즘
2021 AL林 정기 세미나 42
(발표자의 생각입니다.)
보통 위에 제시한 정도의 학부 수준으로 나올 것입니다.
생소하고 어려운 그리디 알고리즘을 풀어보기보다는
알려진 그리디 알고리즘을 잘 이해하고 사용하는 연습을 하는게 더 좋다고 생각합니다.
아니면 앞에서 말씀드린 것과 같이 믿음으로 제출해보고 틀리면 그 회사를 욕합시다.
(근데 이런 경우에는 여러분이 틀리면 다른 분들도 틀릴겁니다.)
연습문제
2021 AL林 정기 세미나 43
그리디 알고리즘
기본 문제
2720 세탁소 사장 동혁
1931 회의실 배정
2839 설탕 배달
연습 문제
(문제풀이 스터디 발표)
1026 보물
11399 ATM
13305 주유소
1449 수리공 항승
2217 로프
연습문제
2021 AL林 정기 세미나 44
그리디 알고리즘
도전 문제
2212 센서
1946 신입 사원
15903 카드 합체 놀이
1339 단어 수학
2437 저울
더 공부해볼 것
2021 AL林 정기 세미나 45
- knapsack problem은 0-1 knapsack problem과 fractional knapsack problem이 있습니다.
- 0-1 knapsack problem은 위에서 살펴봤습니다. 동적 프로그래밍으로 풀 수 있습니다.
- fractional knapsack problem은 위 문제에서 주어진 물품을 쪼갤 수 있는 조건이 추가됩니다. 이 문제는 그리
디 알고리즘으로 풀립니다. https://www.geeksforgeeks.org/fractional-knapsack-problem/
- (다음 내용은 어려워서 발표자도 전혀 전혀 모릅니다.) 매트로이드(Matroid)는 독립성이라는 성질을 만족하는 수학적
공간이다. 어떤 문제의 공간이 매트로이드를 이루면 이 문제를 위한 최적해를 보장하는 그리디 알고리즘이 존재한다.
반대로 그리디 알고리즘으로 최적해가 보장되는 모든 문제가 매트로이드 구조는 아니다. 크루스칼 알고리즘이 다루는
트리의 집합은 매트로이드에 속하고 매트로이드 이론의 관점에서도 최적해가 보장된다.
참고 및 출처
2021 AL林 정기 세미나 46
https://en.wikipedia.org/wiki/Greedy_algorithm
https://en.wikipedia.org/wiki/Huffman_coding
https://algo.ics.hawaii.edu/~nodari/teaching/f15/Notes/Topic-13.html
https://blog.naver.com/PostView.nhn?blogId=kks227&logNo=220775134486&parentCategoryNo=&categoryNo=299&viewDate=&isShow
PopularPosts=true&from=search
https://blog.encrypted.gg/755
https://blog.encrypted.gg/975
구종만, 프로그래밍 대회에서 배우는 알고리즘 문제해결전략, 인사이트(2012)
문병로, 쉽게 배우는 알고리즘, 한빛 아카데미(2018)
Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford, Introduction to Algorithms (3rd ed.). MIT Press and McGraw-
Hill(1990). ISBN 0-262-03384-4. 5 printings up to 2016

More Related Content

Similar to 2021 1학기 정기 세미나 3주차

Algorithm & data structures lec1
Algorithm & data structures lec1Algorithm & data structures lec1
Algorithm & data structures lec1
Abdul Khan
 

Similar to 2021 1학기 정기 세미나 3주차 (20)

2020 1학기 정기스터디 1주차
2020 1학기 정기스터디 1주차2020 1학기 정기스터디 1주차
2020 1학기 정기스터디 1주차
 
Algorithms Design Patterns
Algorithms Design PatternsAlgorithms Design Patterns
Algorithms Design Patterns
 
Becoming a better problem solver: a CS perspective
Becoming a better problem solver: a CS perspectiveBecoming a better problem solver: a CS perspective
Becoming a better problem solver: a CS perspective
 
36 greedy
36 greedy36 greedy
36 greedy
 
Simple Code
Simple CodeSimple Code
Simple Code
 
2021 04-01-dalle
2021 04-01-dalle2021 04-01-dalle
2021 04-01-dalle
 
A greedy algorithms
A greedy algorithmsA greedy algorithms
A greedy algorithms
 
Rsa example
Rsa exampleRsa example
Rsa example
 
How to avoid bugs using modern C++
How to avoid bugs using modern C++How to avoid bugs using modern C++
How to avoid bugs using modern C++
 
2020 겨울방학 정기스터디 3주차
2020 겨울방학 정기스터디 3주차2020 겨울방학 정기스터디 3주차
2020 겨울방학 정기스터디 3주차
 
Assignment 2 (1) (1).docx
Assignment 2 (1) (1).docxAssignment 2 (1) (1).docx
Assignment 2 (1) (1).docx
 
Writing algorithms
Writing algorithmsWriting algorithms
Writing algorithms
 
Clean code
Clean codeClean code
Clean code
 
#GDC15 Code Clinic
#GDC15 Code Clinic#GDC15 Code Clinic
#GDC15 Code Clinic
 
Introduction to Algorithms
Introduction to AlgorithmsIntroduction to Algorithms
Introduction to Algorithms
 
Linear Programming- Leacture-16-lp1.pptx
Linear Programming- Leacture-16-lp1.pptxLinear Programming- Leacture-16-lp1.pptx
Linear Programming- Leacture-16-lp1.pptx
 
19IS402_LP1_LM_22-23.pdf
19IS402_LP1_LM_22-23.pdf19IS402_LP1_LM_22-23.pdf
19IS402_LP1_LM_22-23.pdf
 
GPars
GParsGPars
GPars
 
Algorithm & data structures lec1
Algorithm & data structures lec1Algorithm & data structures lec1
Algorithm & data structures lec1
 
Alex WANG - What is the most effective cryptosystem for public-key encryption?
Alex WANG - What is the most effective cryptosystem for public-key encryption?Alex WANG - What is the most effective cryptosystem for public-key encryption?
Alex WANG - What is the most effective cryptosystem for public-key encryption?
 

More from Moonki Choi

More from Moonki Choi (13)

2021 2학기 정기 세미나 5주차
2021 2학기 정기 세미나 5주차2021 2학기 정기 세미나 5주차
2021 2학기 정기 세미나 5주차
 
2021 2학기 정기 세미나 4주차
2021 2학기 정기 세미나 4주차2021 2학기 정기 세미나 4주차
2021 2학기 정기 세미나 4주차
 
2021 여름방학 정기 세미나 3주차
2021 여름방학 정기 세미나 3주차2021 여름방학 정기 세미나 3주차
2021 여름방학 정기 세미나 3주차
 
2021 여름방학 정기 세미나 1주차
2021 여름방학 정기 세미나 1주차2021 여름방학 정기 세미나 1주차
2021 여름방학 정기 세미나 1주차
 
2021 알림 오세요
2021 알림 오세요2021 알림 오세요
2021 알림 오세요
 
2021 1학기 정기 세미나 6주차
2021 1학기 정기 세미나 6주차2021 1학기 정기 세미나 6주차
2021 1학기 정기 세미나 6주차
 
2020 여름방학 정기스터디 6주차
2020 여름방학 정기스터디 6주차2020 여름방학 정기스터디 6주차
2020 여름방학 정기스터디 6주차
 
2020 여름방학 정기스터디 5주차
2020 여름방학 정기스터디 5주차2020 여름방학 정기스터디 5주차
2020 여름방학 정기스터디 5주차
 
2020 겨울방학 정기스터디 2주차
2020 겨울방학 정기스터디 2주차2020 겨울방학 정기스터디 2주차
2020 겨울방학 정기스터디 2주차
 
2020 2학기 정기스터디 8주차
2020 2학기 정기스터디 8주차2020 2학기 정기스터디 8주차
2020 2학기 정기스터디 8주차
 
2020 2학기 정기스터디 2주차
2020 2학기 정기스터디 2주차2020 2학기 정기스터디 2주차
2020 2학기 정기스터디 2주차
 
2020 2학기 정기스터디 1주차
2020 2학기 정기스터디 1주차2020 2학기 정기스터디 1주차
2020 2학기 정기스터디 1주차
 
2020 1학기 정기스터디 2주차
2020 1학기 정기스터디 2주차2020 1학기 정기스터디 2주차
2020 1학기 정기스터디 2주차
 

Recently uploaded

"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments""Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
mphochane1998
 
Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
Epec Engineered Technologies
 
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
AldoGarca30
 
scipt v1.pptxcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
scipt v1.pptxcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...scipt v1.pptxcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
scipt v1.pptxcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
HenryBriggs2
 
Query optimization and processing for advanced database systems
Query optimization and processing for advanced database systemsQuery optimization and processing for advanced database systems
Query optimization and processing for advanced database systems
meharikiros2
 

Recently uploaded (20)

Hostel management system project report..pdf
Hostel management system project report..pdfHostel management system project report..pdf
Hostel management system project report..pdf
 
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments""Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
 
HAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKAR
HAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKARHAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKAR
HAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKAR
 
Augmented Reality (AR) with Augin Software.pptx
Augmented Reality (AR) with Augin Software.pptxAugmented Reality (AR) with Augin Software.pptx
Augmented Reality (AR) with Augin Software.pptx
 
Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
 
School management system project Report.pdf
School management system project Report.pdfSchool management system project Report.pdf
School management system project Report.pdf
 
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
 
Computer Graphics Introduction To Curves
Computer Graphics Introduction To CurvesComputer Graphics Introduction To Curves
Computer Graphics Introduction To Curves
 
Max. shear stress theory-Maximum Shear Stress Theory ​ Maximum Distortional ...
Max. shear stress theory-Maximum Shear Stress Theory ​  Maximum Distortional ...Max. shear stress theory-Maximum Shear Stress Theory ​  Maximum Distortional ...
Max. shear stress theory-Maximum Shear Stress Theory ​ Maximum Distortional ...
 
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptxS1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
 
Introduction to Geographic Information Systems
Introduction to Geographic Information SystemsIntroduction to Geographic Information Systems
Introduction to Geographic Information Systems
 
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
COST-EFFETIVE  and Energy Efficient BUILDINGS ptxCOST-EFFETIVE  and Energy Efficient BUILDINGS ptx
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
 
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
 
Linux Systems Programming: Inter Process Communication (IPC) using Pipes
Linux Systems Programming: Inter Process Communication (IPC) using PipesLinux Systems Programming: Inter Process Communication (IPC) using Pipes
Linux Systems Programming: Inter Process Communication (IPC) using Pipes
 
Theory of Time 2024 (Universal Theory for Everything)
Theory of Time 2024 (Universal Theory for Everything)Theory of Time 2024 (Universal Theory for Everything)
Theory of Time 2024 (Universal Theory for Everything)
 
scipt v1.pptxcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
scipt v1.pptxcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...scipt v1.pptxcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
scipt v1.pptxcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
 
8th International Conference on Soft Computing, Mathematics and Control (SMC ...
8th International Conference on Soft Computing, Mathematics and Control (SMC ...8th International Conference on Soft Computing, Mathematics and Control (SMC ...
8th International Conference on Soft Computing, Mathematics and Control (SMC ...
 
8086 Microprocessor Architecture: 16-bit microprocessor
8086 Microprocessor Architecture: 16-bit microprocessor8086 Microprocessor Architecture: 16-bit microprocessor
8086 Microprocessor Architecture: 16-bit microprocessor
 
Query optimization and processing for advanced database systems
Query optimization and processing for advanced database systemsQuery optimization and processing for advanced database systems
Query optimization and processing for advanced database systems
 
Ground Improvement Technique: Earth Reinforcement
Ground Improvement Technique: Earth ReinforcementGround Improvement Technique: Earth Reinforcement
Ground Improvement Technique: Earth Reinforcement
 

2021 1학기 정기 세미나 3주차

  • 2. 강의자 소개 2021 AL林 정기 세미나 2 이름 최문기 소속 서울시립대 컴퓨터과학부(16학번) 핸들 iknoom1107(BOJ) IKnoom(Codeforces) IKnoom(AtCoder) ICPC 팀 (팀명 미정) - 김정현, 오규민, 최문기
  • 3. 2021 AL林 정기 세미나 3 그리디 알고리즘 개론
  • 4. 그리디 알고리즘(Greedy Algorithm) 2021 AL林 정기 세미나 4 - 눈앞의 이익만 우선 추구하는 알고리즘 설계 패러다임 - 해를 구하는 각 단계에서 당장 가장 좋은 방법만 선택한다. do{ 현재 가장 좋은 선택을 한다; } until (전체 해 구성 완료)
  • 5. 그리디 알고리즘(Greedy Algorithm) 2021 AL林 정기 세미나 5 탐욕적 기법 또는 탐욕법이라고도 한다. 한국어로 번역하면 욕심쟁이 알고리즘
  • 6. 그리디 알고리즘(Greedy Algorithm) 2021 AL林 정기 세미나 6 “문제를 효율적으로 해결하기 위한 알고리즘 설계 패러다임” 공통점: 우리가 원하는 답을 여러 개의 조각으로 쪼개고 각 단계마다 답을 만들어간다. 완전 탐색 각 단계마다 모든 선택지를 고려해보고 그 중 전체의 답이 가장 좋은 것을 찾는다. 그리디 알고리즘 각 단계마다 지금 당장 가장 좋은 방법만을 선택한다.
  • 7. 동전 교환 문제 2021 AL林 정기 세미나 7 “거스름돈을 최소 개수의 동전으로 교환” 25 10 5 1 쿼터 다임 니켈 페니
  • 8. 동전 교환 문제(희망편) 2021 AL林 정기 세미나 8 거스름 돈은 가장 큰 동전부터 교환하면 최소!
  • 9. 동전 교환 문제(희망편) 2021 AL林 정기 세미나 9 💻 Q = int(input()) for _ in range(Q): N = int(input()) Quarter = N // 25 N %= 25 Dime = N // 10 N %= 10 Nickel = N // 5 N %= 5 Penny = N print(Quarter, Dime, Nickel, Penny)
  • 10. 동전 교환 문제(희망편) 2021 AL林 정기 세미나 10
  • 11. 또 다른 동전 교환 문제 2021 AL林 정기 세미나 11
  • 12. 또 다른 동전 교환 문제(절망편) 2021 AL林 정기 세미나 12 거스름 돈은 가장 큰 동전부터 교환하면 최소!
  • 13. 또 다른 동전 교환 문제(절망편) 2021 AL林 정기 세미나 13 💻 n, k = map(int, input().split()) coins = [int(input()) for _ in range(n)] # 역순으로 정렬 coins.sort(reverse=True) answer = 0 for coin in coins: answer += k // coin k %= coin if k != 0: print(-1) else: print(answer)
  • 14. 또 다른 동전 교환 문제(절망편) 2021 AL林 정기 세미나 14
  • 15. 제출하기 전에 예제 입력은 돌려 보셨나요? 2021 AL林 정기 세미나 15 12 1 1 1 15 = ( ) 5 5 5 (최적해) 15 =
  • 16. 뒤로감기 ⏪ 2021 AL林 정기 세미나 16 이제 풀이가 의심되기 시작합니다. 왜 맞았을까요? .
  • 17. 최적해가 보장되는 정당성 2021 AL林 정기 세미나 17 동전의 종류가 1, 5, 10, 25일 때 거스름돈을 가장 큰 동전부터 교환하면 동전의 수가 최소이다. 25 10 5 1 쿼터 다임 니켈 페니
  • 18. 최적해가 보장되는 정당성 2021 AL林 정기 세미나 18 보조정리 1 쿼터, 다임, 니켈, 페니를 가장 적게 사용해서 교환한 n센트(n > 0)는 최대 2개의 다임, 최대 1개의 니켈, 최대 4개의 페니를 가지고 2개의 다임과 1개의 니켈을 같이 가질 수 없다. 따라서 다임, 니켈, 페니로 교환한 금액은 24센트를 넘길 수 없다. 증명 (귀류법) 만약 동전을 가장 적게 교환했다고 가정할 때, 다임 3개, 니켈 2개, 페니 5개, 다임 2개와 니켈 1개를 가지고 있다고 가정하면 각각의 경 우는 더 적은 동전으로 교환된다. 따라서 모순이다.
  • 19. 최적해가 보장되는 정당성 2021 AL林 정기 세미나 19 정리 그리디 알고리즘(큰 것부터 교환)은 가능한 가장 적은 동전을 사용한다. 증명 그리디 알고리즘을 사용한 쿼터의 개수를 q라고 할 때, q보다 작은 q’이 있다고 가정할 때, q’이 q보다 작기 위해서는 쿼터가 아닌 다른 동전을 사용해야한다. 이는 [보조정리1]에 의해 최적이 아니다. 같은 방법으로 [보조정리1]에 의해 최대 1개의 니켈, 최대 4개의 페니를 사용 가능하므로 니켈과 페니로 교환한 금액의 최대는 9이다. 따라서 다임을 최대한 사용해야한다. 페니로 교환한 금액의 최대는 4이다. 따라서 니켈을 최대한 사용해야한다.
  • 20. 정리 2021 AL林 정기 세미나 20 ① - 그리디 알고리즘은 눈앞의 이익만 우선 추구하는 알고리즘 설계 패러다임이다. - 관찰을 통해 탐색 범위를 좁혀 문제를 효율적으로 해결 할 수 있다. ② - “이렇게 하면 될거 같은데..”와 같은 직관으로 문제를 풀다가는 망할 수도 있다. - 그리디 알고리즘이 최적해를 보장하는지는 정당성을 증명해야한다.
  • 21. 2021 AL林 정기 세미나 21 그리디 알고리즘이 최적해가 보장되지 않는 예
  • 22. 냅색 문제(knapsack problem) 2021 AL林 정기 세미나 22 부피가 K인 보따리(냅색)와 N개의 물건이 있다. 각 물건은 부피가 𝑊𝑖, 가치가 𝑉𝑖이다. 보따리에 물건을 넣을 때 그 가치의 최대값을 구하시오.
  • 23. 냅색 문제(knapsack problem) 2021 AL林 정기 세미나 23 예제 입력 : N = 4 K(배낭) = 7 W(부피) = [ 6, 4, 3, 5 ], V(가치) = [ 13, 8, 6, 12 ] 예제 출력 : 14
  • 24. 냅색 문제(knapsack problem) 2021 AL林 정기 세미나 24 생각해 볼 수 있는 그리디 풀이 ① 가장 부피가 작은 것 부터 ② 가장 가치가 큰 것부터 ③ 단위 부피 당 가치(가치/부피)가 큰 것부터 ...
  • 25. 냅색 문제(knapsack problem) 2021 AL林 정기 세미나 25 W = 6, V = (greedy) W = 7, V = + (optimal) 13 8 6 → 동적 프로그래밍(10주차)으로 해결
  • 26. 그리디 알고리즘이 최적해가 보장되지 않는 예 2021 AL林 정기 세미나 26 사실 그리디 알고리즘은 대부분 최적해를 보장하지 않습니다. = 너무 함부로 그리디 알고리즘 쓰지 맙시다. (발표자의 생각) 그리디 알고리즘 설계는 정말 어려운 일! 직관적으로 맞을 것 같지만 틀린 경우가 대다수입니다. 의심 또 의심해봅시다.
  • 27. 그리디 알고리즘이 최적해가 보장되지 않는 예 2021 AL林 정기 세미나 27 Starting from A, a greedy algorithm that tries to find the maximum by following the greatest slope will find the local maximum at "m", oblivious to the global maximum at "M".
  • 28. 2021 AL林 정기 세미나 28 그리디 알고리즘이 최적해가 보장되는 예
  • 29. 회의실 배정 문제 2021 AL林 정기 세미나 29 회의실이 1개 있을 때, n개의 회의 중에 선택할 수 있는 최대 회의 수를 구하시오.
  • 30. 회의실 배정 문제 2021 AL林 정기 세미나 30 생각해 볼 수 있는 그리디 풀이 ① 가장 시간이 짧은 것 부터 ② 가장 시작 시간이 빠른 것 부터 ③ 가장 종료 시간이 빠른 것 부터 ...
  • 31. 회의실 배정 문제 2021 AL林 정기 세미나 31 정답은? 회의의 집합을 S라 할 때, while( S의 크기 > 0){ 1. 회의 중 가장 일찍 끝나는 회의 smin을 선택한다. 2. smin과 겹치는 회의를 S에서 모두 지운다. }
  • 32. 회의실 배정 문제 – 최적해가 보장되는 정당성 2021 AL林 정기 세미나 32 명제 가장 종료 시간이 빠른 회의(smin)를 포함하는 최적해가 반드시 존재한다. 증명 최적해 중에 smin을 포함하지 않는 답이 있다고 가정하자. 이 답에서 첫 번째로 개최되는 회의를 지우고 smin을 넣을 수 있다. 왜냐하면 smin는 가장 일찍 끝나는 회의이기 때문에 지워진 회의는 smin보다 일찍 끝날 수 없고 따라서 두 번째 회의와 smin은 겹칠 수 없다. 따라서 새로 만든 목록도 최적해 중 하나가 된다. 즉, smin을 포함하는 최적해는 항상 존재한다.
  • 33. (참고) 하프만 코드 2021 AL林 정기 세미나 33 ✓ 하프만 코드 원문의 각 글자를 가변 길이의 비트 패턴으로 바꾸는 것(가변 길이 인코딩) [위키디피아 설명] https://ko.wikipedia.org/wiki/%ED%97%88%ED%94%84%EB%A8%BC_%EB%B6%80%ED%98%B8%ED%99%94 https://en.wikipedia.org/wiki/Huffman_coding
  • 34. (참고) 하프만 코드 2021 AL林 정기 세미나 34 "this is an example of a huffman tree"
  • 35. (참고) 하프만 코드 2021 AL林 정기 세미나 35 - 최적해가 보장되는 그리디 알고리즘 자주 출현하는 글자는 더 짧은 패턴으로, 가끔 출현하는 글자는 긴 패턴으로 배당 - 정당성 (위 알고리즘이 쉽고 당연해보이나요?? 정당성 증명 정말 어렵습니다.) https://opendsa-server.cs.vt.edu/ODSA/Books/CS3/html/HuffProof.html 알고리즘 문제해결 전략 384쪽 “출현 빈도가 주어질 때 전체 길이를 최소화하는 비트 패턴을 구하시오.”
  • 36. (참고) 하프만 코드 2021 AL林 정기 세미나 36 백준에서 풀어보기 (주의 : 우선순위 큐를 알아야합니다.) https://www.acmicpc.net/problem/1715 https://www.acmicpc.net/problem/13975
  • 37. 그리디 알고리즘이 최적해가 보장되는 예 2021 AL林 정기 세미나 37 • 다익스트라 알고리즘(2학기) 양의 가중치에서의 최단경로 • 프림 알고리즘, 크루스칼 알고리즘(2학기) 최소 신장 트리(Minimum Spanning Tree)
  • 38. 2021 AL林 정기 세미나 38 정리
  • 39. 정리 2021 AL林 정기 세미나 39 그리디 알고리즘은 눈앞의 이익만 우선 추구하는 알고리즘 설계 패러다임이다. - 관찰을 통해 탐색 범위를 좁혀 문제를 효율적으로 해결 할 수 있다. - 그리디 알고리즘이 최적해를 보장하는지는 정당성을 증명해야한다.
  • 40. 정리 2021 AL林 정기 세미나 40 그리디 알고리즘으로 최적해를 구하지 못하는 예를 살펴봤다. - 대부분의 경우 그리디 알고리즘으로 최적해를 못 구한다. 그리디 알고리즘으로 최적해를 구하는 대표적인 예를 살펴봤다. - 동전 문제, 회의실 배정, 하프만 코드 - 그리디 알고리즘으로 구한 해가 최적인지 정당성을 증명하는 것은 어렵다.
  • 41. 알고리즘 대회에서 그리디 알고리즘 2021 AL林 정기 세미나 41 그리디인지 알고 푸는 것과 아닌 것에 차이가 정말 큽니다. 그건 지금 알려드릴 수 없고 직접 다양한 문제해결을 경험해봐야 압니다. ① 그리디인걸 알면 쉽습니다. 하지만 문제의 정해가 그리디인지 모르면 그리디인지 파악하기 어렵고 증명하기도 어렵습니다. ② 반대로 그리디가 아닌데 그리디로 풀 수 있다고 착각하기도 쉽습니다. 이건 다양한 문제를 풀면서 연습이 많이 되어야합니다. 이상적인 전략 짧은 대회 시간 내에 증명 후 코드에 옮긴다. 일반적인 전략 증명을 못하겠으면 일단 건너뛰고 시간이 남으면 증명 생략하고 코드에 옮긴다. 제출 후 기도한다.
  • 42. 코딩테스트에서 그리디 알고리즘 2021 AL林 정기 세미나 42 (발표자의 생각입니다.) 보통 위에 제시한 정도의 학부 수준으로 나올 것입니다. 생소하고 어려운 그리디 알고리즘을 풀어보기보다는 알려진 그리디 알고리즘을 잘 이해하고 사용하는 연습을 하는게 더 좋다고 생각합니다. 아니면 앞에서 말씀드린 것과 같이 믿음으로 제출해보고 틀리면 그 회사를 욕합시다. (근데 이런 경우에는 여러분이 틀리면 다른 분들도 틀릴겁니다.)
  • 43. 연습문제 2021 AL林 정기 세미나 43 그리디 알고리즘 기본 문제 2720 세탁소 사장 동혁 1931 회의실 배정 2839 설탕 배달 연습 문제 (문제풀이 스터디 발표) 1026 보물 11399 ATM 13305 주유소 1449 수리공 항승 2217 로프
  • 44. 연습문제 2021 AL林 정기 세미나 44 그리디 알고리즘 도전 문제 2212 센서 1946 신입 사원 15903 카드 합체 놀이 1339 단어 수학 2437 저울
  • 45. 더 공부해볼 것 2021 AL林 정기 세미나 45 - knapsack problem은 0-1 knapsack problem과 fractional knapsack problem이 있습니다. - 0-1 knapsack problem은 위에서 살펴봤습니다. 동적 프로그래밍으로 풀 수 있습니다. - fractional knapsack problem은 위 문제에서 주어진 물품을 쪼갤 수 있는 조건이 추가됩니다. 이 문제는 그리 디 알고리즘으로 풀립니다. https://www.geeksforgeeks.org/fractional-knapsack-problem/ - (다음 내용은 어려워서 발표자도 전혀 전혀 모릅니다.) 매트로이드(Matroid)는 독립성이라는 성질을 만족하는 수학적 공간이다. 어떤 문제의 공간이 매트로이드를 이루면 이 문제를 위한 최적해를 보장하는 그리디 알고리즘이 존재한다. 반대로 그리디 알고리즘으로 최적해가 보장되는 모든 문제가 매트로이드 구조는 아니다. 크루스칼 알고리즘이 다루는 트리의 집합은 매트로이드에 속하고 매트로이드 이론의 관점에서도 최적해가 보장된다.
  • 46. 참고 및 출처 2021 AL林 정기 세미나 46 https://en.wikipedia.org/wiki/Greedy_algorithm https://en.wikipedia.org/wiki/Huffman_coding https://algo.ics.hawaii.edu/~nodari/teaching/f15/Notes/Topic-13.html https://blog.naver.com/PostView.nhn?blogId=kks227&logNo=220775134486&parentCategoryNo=&categoryNo=299&viewDate=&isShow PopularPosts=true&from=search https://blog.encrypted.gg/755 https://blog.encrypted.gg/975 구종만, 프로그래밍 대회에서 배우는 알고리즘 문제해결전략, 인사이트(2012) 문병로, 쉽게 배우는 알고리즘, 한빛 아카데미(2018) Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford, Introduction to Algorithms (3rd ed.). MIT Press and McGraw- Hill(1990). ISBN 0-262-03384-4. 5 printings up to 2016