Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

0

Share

Download to read offline

알고리즘2

Download to read offline

코딩 소림사 알고리즘 스터디 #2

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

알고리즘2

  1. 1. 알고리즘 문제해결전략 #2 분할 정복
  2. 2. 지난 시간 숙제 recursion 과 stack overflow • Iteration vs recursion • Fibonacci f(n) = f(n-1) + f(n-2) • Recursion 으로 푸는 편이 자연스럽다. 하지만… • 자라나는 stack 의 속도 : 2n • Stack overflow 발생 • Tail call recursion? • Function 자신을 return하면 stack이 linear 하게 자라남 • Compiler가 지원해주면 stack이 자라나지 않을수도(!) 있음 • Tail call optimization 이라고 한다.
  3. 3. 지난 시간 숙제 recursion 과 stack overflow • Trampoline • Coding 은 recursion 으로 • 수행은 iteration 처럼 • 값이 evaluation 될 때 까지 call stack 이 자라나지 않음
  4. 4. 지난 시간 숙제 recursion 과 stack overflow • Java 의 tail call optimization 지원 계획은? • https://blogs.oracle.com/jrose/entry/tail_calls_in_the_vm • http://openjdk.java.net/projects/mlvm/subprojects.html#TailCall • 딱히 지원해 줄 것 같지는 않아 보인다. • 다른 언어는? • golang, scala, ECMA6 … : 지원 또는 부분 지원 • 그밖에 다른 언어는 직접 알아보도록
  5. 5. Divide and conquer • 큰 문제를 작은 문제로 나눈다. • 작은 문제를 해결한다. • 병합한다. 출처 : http://kugistory.net/76
  6. 6. 카라츠바 알고리즘 • 매우 큰 수에 대한 곱셈 연산 • 매우 큰 수를 다음과 같이 int[] 로 저장해보자 • 100000 : {0,0,0,0,0,1} • O(𝑛2 ) 방법 • 일반적으로 노트에 적어가며 푸는 방식과 동일 • 카라츠바 알고리즘 • 이항연산의 규칙을 이용하여 연산의 횟수를 줄임 • 큰 곱셈 문제를 작은 곱셈 여러 번으로 나누어 이 규칙을 적용 1234 x 5678 9872 8638 ….
  7. 7. 카라츠바 알고리즘
  8. 8. • 시간복잡도 분석 • n 자릿수 곱셈에 대하여, n = 2 𝑘 라 할 때 • k 개의 Karatsuba 연산으로 분할 • 그런데 1개의 Karatsuba 연산에 3 번의 곱셈(=Karatsuba)이 발생하므로 • 𝑎1 × 𝑏1 • 𝑎0 × 𝑏0 • 𝑎0 + 𝑎1 × 𝑏0 + 𝑏1 • 시간복잡도 = O(3 𝑘 ) • 그런데, n = 2 𝑘 이므로 양변에 밑이 2인 로그를 취하면 • 𝑙𝑜𝑔2 𝑛 = 𝑘 𝑙𝑜𝑔22 • 𝑙𝑜𝑔2 𝑛 = 𝑘 • O(3 𝑘 ) = O(3𝑙𝑜𝑔2 𝑛 ) • 3𝑙𝑜𝑔2 𝑛 = 𝑥 라 할 때 • 𝑙𝑜𝑔23𝑙𝑜𝑔2 𝑛 = 𝑙𝑜𝑔2 𝑥 • 𝑙𝑜𝑔2 𝑛 × 𝑙𝑜𝑔23 = 𝑙𝑜𝑔2 𝑥 • 𝑙𝑜𝑔2 𝑛𝑙𝑜𝑔23 = 𝑙𝑜𝑔2 𝑥 • 𝑛 𝑙𝑜𝑔23 = 𝑥 • 따라서, 3𝑙𝑜𝑔2 𝑛 = 𝑛 𝑙𝑜𝑔23 • O(3𝑙𝑜𝑔2 𝑛 ) = O(𝑛𝑙𝑜𝑔23 ) 카라츠바 알고리즘

코딩 소림사 알고리즘 스터디 #2

Views

Total views

6,067

On Slideshare

0

From embeds

0

Number of embeds

5,559

Actions

Downloads

7

Shares

0

Comments

0

Likes

0

×