SlideServe
Menu
Préférences
© SlideServe · v2026

Divide and Conquer

shelly avatar
29 diapositives · 540 Views · Jul 16, 2014

Pasi Fränti. Divide and Conquer. 24.9.2012. Divide and Conquer. Divide to sub-problems Solve the sub-problems Conquer the solutions. By recursion!. Stupid example. StupidExample(N) IF N=0 THEN RETURN O(1) ELSE FOR i←1 TO N DO N WRITE(‘x’); O(1)

Divide and Conquer - slide 1
01 / 29Divide and Conquer
1 / 17

Télécharger la présentation

Divide and Conquer
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. Pasi Fränti Divide and Conquer 24.9.2012

  2. Divide and Conquer • Divide to sub-problems • Solve the sub-problems • Conquer the solutions By recursion!

  3. Stupid example • StupidExample(N) • IF N=0 THEN RETURN O(1) • ELSE • FOR i←1 TO N DO N • WRITE(‘x’); O(1) • StupidExample(N-1); T(N-1) • END;

  4. Analysis by substitution method Repeat until T(0) k+…+3+2+1 → 1+2+3+…+k k=N

  5. Sorting algorithmRecursive “through the bones” Sort(A[i, j]) q  FindMin(A[i, j]); Swap(A[i],A[q]) Sort(A[i+1, j]); FindMin(A[i, j]) q  FindMin(A[i+1, j]); IF A[i]<A[q] THEN RETURN i ELSE RETURN q;

  6. Master TheoremArithmetic case Time complexity function: Solution:

  7. Master TheoremProof for arithmetic case Substitution:

  8. Master TheoremProof for arithmetic case Case 1: N/c terms

  9. Master TheoremProof for arithmetic case Case 2: Arithmetic sum

  10. Master TheoremProof for arithmetic case Case 3: Dominating term

  11. Quicksort • Quicksort(A[i, j]) • IF i < j THEN O(1) • k ← Partition(A[i, j]); O(N) • Quicksort(A[i, k]); T(N/2) • Quicksort(A[k+1, j]); T(N/2) • ELSE RETURN;

  12. Partition algorithm • Choose (any) element as pivot-value p. • Arrange all x≤p to the left side of list. • Arrange all x>p to the right side. • Time complexity O(N). 7 3 11 2 20 13 6 1 10 14 5 8 p=7 x≤7 x>7 7 3 2 6 1 5 11 20 13 10 14 8

  13. Partition algorithm x≤p x>p unprocessed Partition(A[i, j]) pivot = A[j]; r = i-1; FOR k = i TO j-1 DO IF (A[k] ≤ pivot) THEN r = r + 1; SWAP(A[r], A[k]); SWAP(A[r+1], A[j]); RETURN r+1; ∙∙∙ r ∙∙∙ k FOR increases k R increaseswhen needed Swap done when more space needed to the left side

  14. Selection in linear timeFind the kth smallest Selection(A[i, j], k) IF i=j THEN RETURN A[i]; ELSE q ← Partition(A, i, j); size ← (q-i)+1; IF k ≤ size THEN Selection(A[i, q], k); ELSE Selection(A[q+1, j], k-size);

  15. Master TheoremGeometric case Time complexity function: Solution:

  16. Master TheoremProof of geometric case p steps Extract

  17. Master TheoremProof of geometric case Case 1: Needs revisions!

  18. Master TheoremProof of geometric case Case 2: =1 Geometric sum Log N terms N

  19. Master TheoremProof of geometric case Case 3: Needs revisions! Log N terms N

  20. Merge sortMain algorithm MergeSort(A[i, j]) IF i<j THEN k := (i+j)/2; O(1) MergeSort (A[i, k]); T(N/2) MergeSort(A[k+1, j]); T(N/2) Merge(A[i, j], k); c∙N

  21. Merge sortMerge step Merge(A[i, j], k) { l←i; m←k+1; t←i; WHILE (l≤k) OR (m ≤ j) IF l>k THEN B[t]←A[m]; m←m+1; ELSEIF m>j THEN B[t]←A[l]; l←l+1; ELSEIF A[l]<A[m] THEN B[t]←A[m]; m←m+1; ELSE B[t]←A[l]; l←l+1; t←t+1; FOR t ← 1 TO j DO A[t]←B[t]; }

  22. Merge sortTime complexity Since we have b=c O(N log N)

  23. Merge sortSubstitution method

  24. Karatsuba-Ofman multiplicationMultiplication of two n-digit numbers School book algorithm: 3 6 2 4  2 3 4 5 1 8 1 2 0 1 4 4 9 6 1 0 8 7 2 7 2 4 8 8 4 9 8 2 8 0

  25. Karatsuba-Ofman multiplicationStraightforward divide-and-conquer One n-digit number divided into two n/2-digit numbers (most and least significant) 3624=36∙102+24 2345=23∙102+45 Multiplication reformulated:

  26. Karatsuba-Ofman multiplicationTime complexity analysis

  27. Karatsuba-Ofman multiplicationDivide-and-Conquer revised + 6 summations and 1.5 multiplications by kn

  28. Working space