[d2대학생세미나]lovely algrorithm

55
송기

Upload: naver-d2

Post on 15-Jan-2015

4.686 views

Category:

Technology


1 download

DESCRIPTION

[D2대학생세미나]lovely algrorithm

TRANSCRIPT

Page 1: [D2대학생세미나]lovely algrorithm

사랑 이야기

이것은

진짜로

참으로

진지하구나

송기선印

네이버랩스

Page 2: [D2대학생세미나]lovely algrorithm

슬램 덩크 , 이노우에 다케히코 , 대원씨아이 . SLAM DUNK, スラムダンク ', 井上雄彦 , 株式 社集英社会

Page 3: [D2대학생세미나]lovely algrorithm

아스코마치 ~ 아스카 공업 고교 이야기 ~, アスコーマーチ ~ 明日香工業高校物語 ~ TV 아사히

Page 4: [D2대학생세미나]lovely algrorithm
Page 5: [D2대학생세미나]lovely algrorithm
Page 6: [D2대학생세미나]lovely algrorithm

청중의

생각

도대체 이 새끼는 누구인가 ?

Page 7: [D2대학생세미나]lovely algrorithm

제 소개를 하겠습니다 .

● ...

● 알고리즘 공부가 취미 , 수학 공부가 취미

● ...

● ...

● ...

● ...

● ...

● ...

Page 8: [D2대학생세미나]lovely algrorithm

http://www.thisismoney.co.uk/money/news/article-2177769/Ride-like-Wiggins-The-best-road-bikes-500.htmlhttp://wdc2010.tistory.com/174

Page 9: [D2대학생세미나]lovely algrorithm

이 발표에서 발표자가 주장하는 바는 ...

● 알고리즘과 수학은 사랑스럽습니다 .

● 알고리즘과 수학에 대하여 알게 되면 알게 될 수록 할 수 있는 일의영역은 넓어집니다 .

● 자기 페이스에 맞게 꾸준히 공부하면 알고리즘과 수학 실력을 향상시킬 수 있습니다 .

Page 10: [D2대학생세미나]lovely algrorithm

다음과 같은 내용을 주장하지 않습니다 .!!!

● 알고리즘과 수학을 잘 해야 훌륭한 개발자입니다 .

● 알고리즘과 수학을 잘 하면 돈을 많이 벌 수 있습니다 .

● 알고리즘과 수학을 잘 하려면 재능이 필요합니다 .

Page 11: [D2대학생세미나]lovely algrorithm

여러분은 다음과 같은 의문에 답할 수 있게 됩니다 .

● 도대체 전산과에서 왜 미적분 , 선형대수 , 확률 통계를 배우나요 ?

● 얼마나 공부해야 알고리즘 고수가 되나요 ?

● 어떻게 수학 공부를 해야하는 것일까요 ?

Page 12: [D2대학생세미나]lovely algrorithm

차범근과 자전거

Page 13: [D2대학생세미나]lovely algrorithm

자전거를 잘 탄다는 것은 어떤 것일까 ?

?

Page 14: [D2대학생세미나]lovely algrorithm

호나우도 몸의 변화

Page 15: [D2대학생세미나]lovely algrorithm
Page 16: [D2대학생세미나]lovely algrorithm

각자의 학습곡선

성과

노력 투입 정도

Page 17: [D2대학생세미나]lovely algrorithm

f ' >0f (t +Δ t )>f (t)

Page 18: [D2대학생세미나]lovely algrorithm

( 프로그래머 | 컴퓨터과학자 ) 의 역량 모델

프로그램 작성 능력 정도

알고리즘 & 수학 능력 정도

시스템 아키텍처 이해 능력 정도

Page 19: [D2대학생세미나]lovely algrorithm

어떤 일을 하기 위하여 요구되는 능력 #1

프로그램 작성 능력 정도

알고리즘 & 수학 능력 정도

시스템 아키텍처 이해 능력 정도

Page 20: [D2대학생세미나]lovely algrorithm

어떤 일을 하기 위하여 요구되는 능력 #2

프로그램 작성 능력 정도

알고리즘 & 수학 능력 정도

시스템 아키텍처 이해 능력 정도

Page 21: [D2대학생세미나]lovely algrorithm

어떤 일을 하기 위하여 요구되는 능력 #3

프로그램 작성 능력 정도

알고리즘 & 수학 능력 정도

시스템 아키텍처 이해 능력 정도

Page 22: [D2대학생세미나]lovely algrorithm

모든 컴퓨터 과학 / 프로그래밍분야에서 높은 수준의 알고리즘과 수학 지식을 요구하는 것은 아니다 .

Page 23: [D2대학생세미나]lovely algrorithm

그러나 알고리즘과 수학 지식을 전혀 요구하지 않는 컴퓨터 과학 / 프로그래밍 분야는 없다 .

Page 24: [D2대학생세미나]lovely algrorithm

어떤 요구 사항● 채점 결과를 바탕으로 학점 평가를 하는 프로그램

'90 점 이상이면 A 학점 ' 이 요구 사항

if (score >= 90) { grade = Grade.A; }

● 점수가 95 점이면 A 학점인가 ?

● 점수가 85 점인데 A 학점일 수 있는가 ?

● 점수가 97 점인데 B 학점일 수 있는가 ?

Page 25: [D2대학생세미나]lovely algrorithm

Imply Truth Table

A B A B⇒

True True True

True False False

False True True

False False True

● '90 점 이상이면 A 학점 '

● 점수가 95 점이면 A 학점인가 ?

● 점수가 85 점인데 A 학점일 수 있는가 ?

● 점수가 97 점인데 B 학점일 수 있는가 ?

Page 26: [D2대학생세미나]lovely algrorithm

명제 논리 (Propositional Calculus) 는거의 모든 프로그래밍에서 필요한 것

Page 27: [D2대학생세미나]lovely algrorithm

• Sums• Recurrences• Integer functions• Elementary number theory• Binomial coefficients• Generating functions• Discrete probability• Asymptotic methods

Page 28: [D2대학생세미나]lovely algrorithm

Mathematics for Computer ScienceEric Lehman and Tom Leighton

2004

• Introduction and proofs• Induction• Strong induction • Number theory I• Number theory II • Graph theory and coloring• Matching problems• Graph theory II: minimum

spanning trees• Communication networks • Graph theory III• Relations, partial orders, and

scheduling • Sums• Sums and Asymptotics • Divide and conquer

recurrences• Linear recurrences • Counting rules I• Counting rules II • Probability introduction• Conditional probability• Independence • Random variables• Expectation I • Expectation II• Large deviations • Random walks

Page 29: [D2대학생세미나]lovely algrorithm

전체 수학 영역

컴퓨터과학 / 프로그래밍 개발에서 필요한 수학 영역

Page 30: [D2대학생세미나]lovely algrorithm

아인슈타인의 고등학교 시절 수학 성적 / 실력은 ' 우수 ' 한 정도 대학 때는 대충대충 공부

일반상대성이론 발표를 위하여 주변 수학자로부터 상당한 도움을받아야 했음

그러나 일반상대성이론 발표 이후에는 상당한 수학 지식 보유

( 시대를 바꾼 천재들 중에는 30 대 이전에는 그저 평범한 사람이었던 경우도 많다 .)

Page 31: [D2대학생세미나]lovely algrorithm

알고리즘을 얼마나 공부해야 어려운 문제들도 잘 풀 수 있게 될까 ?

“ 내게 충분한 길이의 막대기와받침목을 주시오 . 내 직접지구를 움직여 보리다 .”

- 아르키메데스 ( 허세작렬 )

http://commons.wikimedia.org/wiki/File:Archimedes_lever.png

Page 32: [D2대학생세미나]lovely algrorithm

Reduction ( 환산 )

문제 A 가 어떤 과정을 통해 문제 B 로 환산된다면 B 의 해답을 가지고 A 의 해답을 알 수 있기 때문에 , A 를 푸는 작업이 B 를 푸는 작업보다 어려울 수 없다 .

http://ko.wikipedia.org/wiki/환산_(복잡도)

● 임의로 나열된 정수열이 있다고 할 때 , 이중 가장 많은 빈도를 보이는

하나 이상의 정수 ( 들 ) 를 찾아라 . - 정수열을 정렬한 후 , 순차 검색

Page 33: [D2대학생세미나]lovely algrorithm

Convex Hull

http://staff.ustc.edu.cn/~csli/graduate/algorithms/book6/chap35.htm

http://www.voronoi.com/wiki/index.php?title=Vector_Algebra_%26_Geometry

Page 34: [D2대학생세미나]lovely algrorithm

축구 기본 기술들

http://www.dk.co.uk/nf/Book/BookDisplay/0,,9781405349925,00.html?/Football_Skills_DK_Publishing

Page 35: [D2대학생세미나]lovely algrorithm

기본 자료구조 & 알고리즘

• Array, List• Stack, Queue, Priority Queue• Sort(Insertion, Heap, Merge, Quick)• Binary Search• Union Find• Binary Search Tree, Red-Black Tree• Hash, HashTable• Huffman Codes• SubString Search• Graph• Shortest Path (Dijkstra, Bellman-Ford)• Minimum Spanning Tree (Prim, Kruskal) • Trie• Maxflow

• Divide & Conquer• Greedy Algorithm• Dynamic Algorithm• P != NP ?

Page 36: [D2대학생세미나]lovely algrorithm

운동 선수들은 지속적으로 기본기 훈련을 한다 .

악기 연주가들 또한 기본적인 스케일링 연습을 거의 매일 한다 .

알고리즘과 수학은 한번 이해하고 나면 그것으로 충분한 것일까 ?

Page 37: [D2대학생세미나]lovely algrorithm

자기만의 페이스 , 자기 수준에 맞는 학습과 기대

http://www.foxsports.com.au/olympic-games/events/ugandas-stephen-kiprotich-has-won-the-london-olympics-marathon/story-fnd7zc3y-1226448756056?nk=4b7cb839581f0c61d2ddf6c335741faahttp://article.joins.com/news/article/article.asp?total_id=3684161&cloc

Page 38: [D2대학생세미나]lovely algrorithm

하면 는다 .

Page 39: [D2대학생세미나]lovely algrorithm

이제부터

어려워 보이지만 사실 알고보면 별 것 아닌 것들을 소개합니다 .

일정 수준 이상의 프로그램 개발 능력을 가지고 있는 사람이라면능히 어렵지 않게 개발할 수 있는 것들입니다 .

Page 40: [D2대학생세미나]lovely algrorithm

Seam Carving, content aware image resizing

http://en.wikipedia.org/wiki/Seam_carving

중요한 정보인 성 모양이 왜곡된 형태로 축소되었다 .

중요한 정보인 성 모양이 유지된 형태로 , 전체 이미지의 폭이 줄어들었다 .

Page 41: [D2대학생세미나]lovely algrorithm

● The energy of pixel E(x, y) = Δx2(x, y) + Δy2(x, y)

● 인접한 픽셀의 E(x, y) 의 최종 합이 가 최소 되는경로탐색

● 개념상으로최단경로문제 , Dynamic Programming 을 가이용하면쉽게구현 능

Seam Carving, content aware image resizing

● 시각상으로 중요한 정보란 어떤 것일까 ?

● ¬ 중요한 것 = 중요하지 않은 것

● 가장 중요하지 않은 것은 어떻게 찾을까 ?

http://www.cs.princeton.edu/courses/archive/spr13/cos226/assignments/seamCarving.html

Page 42: [D2대학생세미나]lovely algrorithm

DBMS Index & Query Performance

http://cis.stvincent.edu/html/tutorials/swd/btree/btree.html

CREATE INDEX clm1_idx ON tbl(clm1);CREATE INDEX clm2_idx ON tbl(clm2);…

SELECT * FROM tbl WHERE (clm1 >= 10 AND clm1 <= 20000) AND (clm2 > 100 AND clm2 < 5000)LIMIT 2000;

Page 43: [D2대학생세미나]lovely algrorithm

DBMS Index & Query Performance

WHERE (clm1 >= 10 AND clm1 <= 20000) AND (clm2 > 100 AND clm2 < 5000)

Page 44: [D2대학생세미나]lovely algrorithm

Machine Learning

기계 학습 (machine learning) 은 인공 지능의 한 분야로 , 컴퓨터가 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야를 말한다 . 가령 , 기계 학습을 통해서 수신한 이메일이 스팸인지 아닌지를 구분할 수 있도록 훈련할 수 있다 .

http://ko.wikipedia.org/wiki/기계_학습

Page 45: [D2대학생세미나]lovely algrorithm

Machine Learning

Page 46: [D2대학생세미나]lovely algrorithm

Machine Learning

다음 글자는 2 일까요 ? 3 일까요 ?

Page 47: [D2대학생세미나]lovely algrorithm

Machine Learning

예쁜지 안 예쁜지 판단하는 프로그램을 만들어 보자 .

boolean 가예쁜 ( 사진사진객체 ) {

if(! 가눈이예쁜 (눈추출 (사진객체 )) {

if (! 가다른곳이많이예쁜 (사진객체 )) { return false; } else if (...) { if (...) { … } else if(...) { if (...) { ... } else if(...) { ... } } } else if (…) { ... } } ...

100 만개는 필요할 듯 싶은 if 중첩문 !!!!

실 tothe 패

Page 48: [D2대학생세미나]lovely algrorithm

Machine Learning

예쁜지 안 예쁜지 판단하는 기계학습 프로그램을 만들어 보자 !!!

1

1+e−h( x)

Page 49: [D2대학생세미나]lovely algrorithm

Machine Learning

예쁜지 안 예쁜지 판단하는 기계학습 프로그램을 만들어 보자 !!!

1

1+e−h( x)

김태희에 대한 결과값

제대로 만든 h(x) 가 너님을 인자로 하였을 때의 수행 결과

슈레딩거의 고양이 상태

너님이 화장실에서 너님을 거울로 볼 때

Page 50: [D2대학생세미나]lovely algrorithm

Machine Learning

어떤 기준 1

어떤 기준 2

h( x1, x2)>0

h( x1, x2)<0

Page 51: [D2대학생세미나]lovely algrorithm

Machine Learning

하지만 2 차원 정보로는 충분하지 않다 .

● 그래서 가능한 수집 / 측정할 수 있는 정보를 바탕으로 N 차원 데이터를 생성한다 .

● 이 N 차원 데이터를 대상으로 연산을 하기에는 너무나도 많은 연산량이 필요할 수 있다 .그래서 PCA( 주성분분석 , Principle Component Analysis) 같은 방법을 사용하여 N 차원 데이터를 K(K ≤ N) 차원 데이터로 줄이기도 한다 .( 대학 선형대수를 수강하였다면 , 능히 이해할 수 있는 수준의 정보이다 .)

● 이렇게 만든 K 차원의 데이터를 바탕으로 h(x) 에서 사용할 벡터 θ 를 생성한다 . 이 때선형대수 미분적분 등의 수학적 지식이 요구된다 .

● h(x) = θTx

Page 52: [D2대학생세미나]lovely algrorithm

Machine Learning

무인 운전은 어떻게 만드는가 ?

http://www.youtube.com/watch?v=jet4vwPUfh8

Page 53: [D2대학생세미나]lovely algrorithm

지금까지

설명한 사례들은 모두 학부 교과 과정을 이수하면 충분히 이해할 수 있는수준입니다 .

전산과 학부 교과 과정의 수준이 충분히 높고 , 양 또한 적지 않음을 전달하고 싶습니다 . 그리고 졸업 후 어떤 일을 하느냐에 따라 다르겠지만 , 학부 교과 과정의 내용이 모두 필요한 일을 하게 될 수도 있습니다 .

Page 54: [D2대학생세미나]lovely algrorithm

문제를 해결한다는 것은 도구가 될 수 있는 기본 지식을 바탕으로응용력을 발휘하는 것입니다 .

학부 교과 과정에 있는 데이터구조 , 알고리즘 , 전공필수 수학 과목은문제를 해결하기 위한 도구적 지식입니다 .

Page 55: [D2대학생세미나]lovely algrorithm

감사합니다 .진지하게