Algorithm Design Algorithm Design Techniques Practice Problems 344-211 Algorithmic Process and Programming , created by Dararat Saelee 1/93 oแก้ปัญหาได้อย่างมีประสิทธิภาพ oให้คาตอบที่ถกู ต้อง oใช้เวลาในการปฏิบต ั ิ การน้ อย oชัดเจนและกะทัดรัด 2/93 o definition o requirement o strategy o techniques 3/93 o Algorithm Definition : a method to solve a problem described as a sequence of steps to be performed in a specific logical order o Several algorithms for solving the same problem may exist , based on very different ideas , performance (efficiency , cost and speed) Algorithm หมายถึง กรรมวิธที ม่ี ขี นั ้ ตอนแบบทีละขัน้ อย่างชัดเจนในการแก้ปญั หาใดปญั หาหนึ่ง เพือ่ ให้ได้ คาตอบทีถ่ ูกต้องสาหรับทุกรูปแบบข้อมูล ภายในเวลาและทรัพยากรณ์ทจ่ี ากัด 4/93 Satisfied Requirements : o unambiguousness o generality o correctness o finiteness 5/93 unambiguousness o easier to understand and to program , so contain fewer bugs. o sometimes simpler algorithm are more efficient than more complicated algorithm. 6/93 generality o easier to design an algorithm in more general terms. o handle a range of input that is natural for the problem. 7/93 correctness must be proved by 1) Mathematical Induction. 2) Testing with sample input data that possibly prove the algorithm failure or give wrong answer. 8/93 finiteness–must concern about 1) execution in finite steps. 2) termination in finite time. 9/93 oComputational Device oSolving Decision oData Structure oEfficiency 10/93 Computational Device o Von Neumann osequential algorithm o Multiprocessor o parallel algorithm o network algorithm o distributed algorithm 11/93 Solving Decision ochoose between solving the problem with approximation or exact algorithm oapproximation algorithm - square roots, integrals - shortest path 12/93 Solving Decision (cont.) ochoose to solve the problem with non- recursive or recursive algorithm orecursion is easy to program, but uses a large number of function calls that affect to execution efficiency. 13/93 Data Structure o to solve problems easier, we need to use appropriate data structure. - student id : int or string ? - matrix 10x5 : array 2D or 50 var.? - graph, tree : array or linked list ? 14/93 Efficiency otime : how fast the algor. runs ospace : how much extra memory the algor. needs oworst / best / average case - sequential search : n / 1 / n/2 15/93 Efficiency (cont.) oOrder of Growth for Input size - when input size is large, how is the run time ? - order of growth : O (big oh) - input size : n 16/93 Efficiency (cont.) - O(n2) : n = 10 running time = 100 n = 100 running time = 10,000 - O(2n) : n = 10 running time = 1,024 - O(log2n) : n = 10 running time = 3.3 n = 100 running time = 6.6 17/93 o To provide guidance for designing algorithms for new problems o To make it possible to classify algorithms according to design idea 18/91 oNo any general technique can solve all problems oe.g. Unsorted data cannot use with Binary search algorithm 19/91 An algorithm design technique (or strategy or paradigm) is a general approach to solving problems algorithmically that is applicable to a variety of problems from different areas of computing. 20/93 o Greedy Method o Divide and Conquer o Decrease and Conquer / Prune- and-Search o Transform and Conquer 21/93 o Dynamic Programming o Randomized Algorithms o Backtracking Algorithms 22/93 Motto Today เพราะแสวงหา มิใช่ เพราะรอคอย เพราะเชี่ยวชาญ มิใช่ เพราะโอกาส เพราะสามารถ มิใช่ เพราะโชคช่ วย 344-211 Algorithmic Process and Programming , created by Dararat Saelee 23/93 o “take what you can get now” o make a decision that appears to be good (close to optimal solution) o proceed by searching a sequence of choices iteratively to decide the (seem to be) best solution Greedy Algorithms หมายถึง เป็ นอัลกอริทมึ ทีจ่ ะหาคาตอบโดยการเลือกทางออกทีด่ ที ส่ี ุดทีพ่ บได้ในขณะนัน้ เพือ่ ให้ได้คาตอบ ทีด่ ที ส่ี ุด แต่ในบางครัง้ Greedy Algorithms อาจจะไม่สามารถหาคาตอบของปญั หาทีด่ ที ส่ี ุดได้เสมอไป 24/93 ตัวอย่างวิธีคิดแบบ Greedy o Coin Changing o Fractional Knapsack o Bin Packing o Task Scheduling 25/93 ตัวอย่างวิธีคิดแบบ Greedy o Prim’s graph o Kruskal’s o Dijkstra’s o Huffman Code tree 26/93 Coin Changing สมมุตวิ า่ เรามีเหรียญขนาดดังต่อไปนี้เหรียญ 10 บาท, เหรียญ 5 บาท, และเหรียญ 1 บาทและสมมุตวิ า่ เราต้องการแลกเงิน 89 บาท เราจะได้เงินเหรียญดังนี้ 10 บาท 8 เหรียญ, 5 บาท 1 เหรียญ, 1 บาท 4 เหรียญจะเห็นว่าอัลกอริทมึ ทีเ่ ราใช้ก็คอื เรา เลือกเหรียญทีม่ คี า่ มากทีส่ ดุ แต่ไม่มากกว่า 89 บาท ออกมาก่อน (เหรียญ 10 บาท 8 เหรียญ ) จากนัน้ ลบค่านี้ออกจาก 89 บาท ก็ จะเหลือ 9 บาท หลังจากนัน้ เราเลือกเหรียญทีม่ คี า่ มากที่สดุ แต่ไม่ เกิน 9 บาท นันก็ ่ คอื ได้(เหรียญ 5 บาท 1 เหรียญ) แล้วลบค่านี้ ออกจาก 9 บาท จะเหลืออยูอ่ กี 4 บาท และในทีส่ ดุ เราก็จะได้ (เหรียญ 1 บาทอีก 4 เหรียญ) 27/93 Fractional Knapsack o มีสงิ่ ของ n ประเภทซึง่ แต่ละประเภท(i) กาหนดให้ม ี จานวน xi ชิน้ มีคา่ ความสาคัญ bi และมีน้ าหนัก wi o ต้องการหาจานวนสิง่ ของแต่ละประเภทที่บรรจุล งใน เป้ทร่ี บั น้ าหนักได้ไม่เกิน W กิโลกรัม o ให้ เ ลื อ กหยิ บ สิ่ ง ของที ล ะชิ้ น ที่ ม ี ค่ า ดัช นี (vi=bi/wi) สูงสุดและทาให้น้ าหนักรวมไม่เกิน W ก่อน 28/93 o ตัวอย่างเช่น มีของ 4 ประเภทคือ oหนังสือ 4 เล่ม มี b1=10 และ w1=0.6 (v1=16.7) oขนม 2 กล่อง มี b2=7 และ w2=0.4 (v2=17.5) oน้ า 2 ขวด มี b3=5 และ w3=0.5 (v3=10) oซีดเี พลง 8 แผ่น มี b4=3 และ w4=0.2 (v4=15) o เป้รบั น้ าหนักได้ไม่เกิน 4 กิโลกรัม o เลือก ขนม 2 กล่อง หนังสือ 4 เล่ม และซีดเี พลง 4 แผ่น o ได้คา่ ความสาคัญสูงสุดและน้ าหนักไม่เกิน 4 กิโลกรัม 29/93 o Bin Packing o given N items of sizes s1 , s2 , …, sN; o while 0 < si < 1 o find a solution to pack these items in the fewest number of bins o 2 algor. versions : o on-line : an item must be placed in a bin before the next item is read o off-line : all item list are read in a bin 30/93 Optimal Bin Packing solution given an item list with sizes : 0.2 , 0.5 , 0.4 , 0.7 , 0.1 , 0.3 , 0.8 0.3 0.5 0.8 0.7 0.4 0.2 Bin 1 0.1 Bin 2 Bin 3 31/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Bin Packing strategy Next fit : fill items in a bin until the next item can’t fit , then insert a new bin (never look back) [0.2 , 0.5 , 0.4 , 0.7 , 0.1 , 0.3 , 0.8] empty empty empty 0.1 empty empty 0.5 0.8 0.7 0.2 Bin 1 0.4 Bin 2 0.3 Bin 3 Bin 4 Bin 5 32/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Bin Packing strategy First fit : fill items in a bin , but if any first previous bin can fit the next item then we can fill in until no any bin can fit , then insert a new bin [0.2 , 0.5 , 0.4 , 0.7 , 0.1 , 0.3 , 0.8] empty empty 0.1 empty empty 0.7 0.8 Bin 3 Bin 4 0.3 0.5 0.4 0.2 Bin 1 Bin 2 33/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Bin Packing strategy Best fit : fill items in a bin by trying to place the new item in the bin that left the smallest space [0.2 , 0.5 , 0.4 , 0.7 , 0.1 , 0.3 , 0.8] empty 0.1 Bin 1 empty 0.7 0.8 empty 0.5 0.2 0.3 0.4 Bin 2 Bin 3 Bin 4 34/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee o ร้านขนมเค้กแห่งหนึ่งรับทาขนมเค้กตามคาสังของลู ่ กค้า โดยการสังขนมเค้ ่ กอาจเป็ น 1 ก้อน ½ ก้อน ¼ ก้อน และขนมเค้กทีล่ กู ค้าได้รบั ต้องเป็ นขนาดก้อนทีไ่ ม่มรี อย แบ่งภายในก้อน ทัง้ นี้ในการทาขนมเค้ก ทางร้านไม่ตอ้ งการให้เหลือขนมเค้กมากจึง ต้องคานึงถึงจานวนก้อนขนมเค้กทีน่ ้อยทีส่ ดุ ทีต่ อ้ งทา o ตัวอย่าง ถ้าหากลูกค้า 5 คน มีคาสัง่ 1 ½ ¼ ½ ¼ ดังนัน้ ทางร้าน ต้องทาเค้ก 3 ก้อน o จงเขียนโปรแกรมเพือ่ อ่านข้อมูลคาสังของลู ่ กค้าจากแฟ้มและหาว่าต้องทาเค้กอย่าง น้อยทีส่ ดุ กีก่ อ้ น 35/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Task Scheduling o กาหนดงาน n งานด้วย (เวลาเริม่ ,เวลาเสร็จ) โดยให้ ทางานทีละงานบนเครื่อง และจะเอางานใดมาทาบน เครื่องเดียวกันได้ถา้ เวลางานไม่ทบั ซ้อนกัน ทัง้ นี้ตอ้ ง ใช้จานวนเครือ่ งในการทางานทัง้ หมดน้อยทีส่ ุด o ตัวอย่างงาน (1,3) , (1,4) , (2,5) , (3,7) , (4,7) , (6,9) , (7,8) จะได้ผลดังนี้ เครื่องที่ 1 : (1,3) , (3,7) , (7,8) เครื่องที่ 2 : (1,4) , (4,7) และเครือ่ งที่ 3 : (2,5) , (6,9) 36/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Job Scheduling (Uniprocessor) Job Time j1 15 j2 8 j3 3 j4 10 j1 j2 0 15 j3 23 j4 26 36 First-come-First-serve : avg. completion time = 25 avg. waiting time = 16 j3 0 j2 3 j4 11 j1 21 36 Shortest Job First : avg. completion time = 17.75 avg. waiting time = 8.75 37/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Job Scheduling (Multiprocessor) Job Time j1 3 j2 5 j3 6 j4 10 j5 11 j6 14 j7 15 j8 18 j9 20 j1 j4 0 0 13 28 j5 j8 5 16 j3 0 j7 3 j2 FCFS 34 j6 6 j9 20 40 38/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Job Scheduling (Multiprocessor) Job Optimal #1 Time j1 3 j2 5 j3 6 j4 10 j5 11 j6 14 j7 15 j8 18 j9 20 j1 0 j6 3 17 j2 0 j5 5 32 j8 16 j3 0 j7 j4 6 34 j9 16 36 39/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Job Scheduling (Multiprocessor) Job Time j1 3 j2 5 j3 6 j4 10 j5 11 j6 14 j7 15 j8 18 j9 20 j2 0 j5 j8 5 16 34 j6 j9 0 14 j1 0 j3 3 34 j4 9 j7 19 34 Optimal #2 – minimize completion time 40/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee o divide : break a given problem into subproblems o recur : try to solve each in recursive way o conquer : derive the final solution from all solutions 41/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Problem of size n Subproblem 1 of size n/m Solution to Subproblem 1 Subproblem 2 of size n/m Solution to Subproblem 2 … Subproblem m of size n/m Solution to Subproblem m Solution to the original problem 344-211 Algorithmic Process and Programming , created by Dararat Saelee 42/93 o Merge sort o Quick sort o Binary Tree Traversal o Closest-Pair and Convex-Hall o Selection problem 43/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Factorial o Fibonacci o Binary search o Strassen’s Matrix Multiplication o Big Integer Multiplication o 44/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Factorial ตัวอย่าง o n! = n * (n-1)! o (n-1)! = (n-1) * (n-2)! o… o 1! = 1 o 0! = 1 4! = ? 4! = 4 * 3! 3! = 3 * 2! 2! = 2 * 1! 1! = 1 * 0! 0! = 1 Describe with Tree structure 344-211 Algorithmic Process and Programming , created by Dararat Saelee 45/93 Fibonacci num.: 1,1,2,3,5,8,13,… o fibo (n) = fibo (n-1) + fibo (n-2) o fibo (n-1) = fibo (n-2) + fibo (n-3) o fibo (n-2) = fibo (n-3) + fibo (n-4) o… o fibo (3) = fibo (2) + fibo (1) o fibo (2) = 1 o fibo (1) = 1 344-211 Algorithmic Process and Programming , created by Dararat Saelee 46/93 Binary search 12 15 18 Search = 37 23 26 37 39 41 43 48 37 39 41 43 48 43 48 mid 12 15 18 23 26 mid 12 15 18 23 26 37 39 41 mid 47/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Strassen’s Matrix Multiplication o Z = X * Y ; matrix n x n o I K J L = A C B D x E F G H o I = AxE + BxG , J = AxF + BxH o K = CxE + DxG , L = CxF + DxH 48/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Big Integer Multiplication o multiply 2 N-digit numbers : X , Y o XY = XLYL10N + (XLYR + XRYL)10N/2 + XRYR o XLYR+XRYL = (XL-XR)(YR-YL) + XLYL + XRYR o require : 2 subtraction , 3 multiplication o D1 = XL-XR , D2 = YR-YL o XLYL , XRYR , D1D2 o D3 = D1D2 + XLYL + XRYR 49/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Big Integer Multiplication o X = 61,438,521 & Y = 94,736,407 o XL = 6143 , XR = 8521 o YL = 9473 , YR = 6407 o D1 = XL-XR = -2378, D2 = YR-YL = -3066 o XLYL = 58192639 , XRYR = 54594047 o D1D2 = 7290948 o D3 = D1D2 + XLYL + XRYR = 120077634 o XY = XLYL108 + D3104 + XRYR 50/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Motto Today ในการอยู่ร่วมกันกับผู้อนื่ ควร มองโลกในแง่ ดี และ คิดในทางสร้ างสรร มีนา้ ใจ เอาใจเขามาใส่ ใจเรา และรู้จักให้ อััย 344-211 Algorithmic Process and Programming , created by Dararat Saelee 51 o based on exploiting the relationship between a solution to a given instance of a problem and a solution to a smaller instance of the same problem. o it can be exploited either top down (recursively) or bottom up (without a recursion) . 52/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee 3 major variations : o decrease-by-a-constant o decrease-by-a-constant-factor o variable-size-decrease From Anany 53/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee o decrease-by-a-constant o the size of instance is reduced by the same constant on each iteration o decrease-by-a-constant-factor o the size of instance is reduced by the same constant factor on each iteration 54/93 o Insertion sort o Depth-First search and Breadth-First search (graph) o Topological sorting (graph) o Generating Combinatorial Objects 55/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Insertion sort o use the decrease-by-one o sorted-side unsorted-side o the size of unsorted data is reduced by 1 on each loop 56/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee 43 22 22 17 17 16 16 22 43 43 22 22 17 17 80 80 80 43 36 22 22 17 17 17 80 43 36 29 36 36 36 36 80 43 36 16 16 16 16 16 80 43 29 29 29 29 29 29 80 57/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee o Jasephus Problem o Fake-Coin problem o Multiplication à la Russe 58/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Josephus problem o to determine the survivor by eliminating every second person (stand in circle) until only one survivor is left o e.g. J(6) = 5 , J(7) = 7 , J(9) = 3 o use the decrease-by-half (=2) 59/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee use the decrease-by-half (=2) o can consider J(n) o if n is even (n=2k) , J(2k) = 2 J(k) -1 o if n is odd (n=2k+1) , o J(2k+1) = 2 J(k) +1 o o J(6) = 2 J(3) -1 , J(3) = 2 J(1) + 1 , o J(1) = 1 J(3) = 3 J(6) = 5 344-211 Algorithmic Process and Programming , created by Dararat Saelee 60/93 use the decrease-by-half (=2) can be obtained by rotate left 1 bit o o o o J(6) = J(1102) 1012 = 5 J(7) = J(1112) 1112 = 7 J(9) = J(10012) 00112 = 3 61/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee use the decrease-by-3 (=3) o eliminate every 3 person o J(6) = 1 o J(7) = 4 o J(9) = 1 62/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee 3 major variations : o decrease-by-a-constant o decrease-by-a-constant-factor o variable-size-decrease o a size reduction pattern varies from one iteration to another 63/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee o Euclid algor. o Computing a median and the selection problem o Interpolation search o Binary search tree 64/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Euclidean algor.: o finding gcd(a,b) recursively a ,if b=0 b ,if a=0 gcd (b,a%b) ,otherwise gcd(a,b) = e.g. gcd(124,40) = gcd(40,4) =4 65/91 344-211 Algorithmic Process and Programming , created by Dararat Saelee Problem’s instance Simpler instance Change representation Change to Another problem instance solution 66/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee o Horner’s Rule o Presorting o Gaussian Elimination o Balanced Search tree o Heap sort (tree) o Problem Reduction 67/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Horner’s rules o p(x) = anxn + an-1xn-1 + … + a1x1 + a0 ouse the representation change technique p(x) = (…(anx + an-1)x +…)x + a o e.g. p(x) = 2x4 – x3 + 3x2 + x – 5 = x(x(x(2x–1) +3) +1) – 5 68/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Problem Reduction o reduce the problem to another problem that solving algor. is known o Problem1 Problem2 Solution o Problem : counting paths in a graph , linear programming , the Least Common Multiple (lcm) 69/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee o the Least Common Multiple (lcm) o lcm(24,60) = 2 2 3 2 5 = 120 o 24 = 2 2 2 3 o 60 = 2 2 3 5 o lcm(11,5) = 55 70/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee o the Least Common Multiple (lcm) o lcm (m,n) = mn gcd( m, n) o lcm(24,60) = 120 gcd(24,60) = 12 o lcm(11,5) = 55 gcd(11,5) = 1 71/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Characterizing subproblems using a small set of integer indices – to allow an optimal solution to a subproblem to be defined by the combination of solutions to even smaller subproblems 72/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee o Binomial Coefficient o Warshall’s & Floyd’s Directed Graph o Optimal Binary Search tree Tree o Ordering Matrix Multiplication or Matrix Chain- Product (ABCD A(BC)D , (AB)(CD)) o All-pair Shortest Path Directed Graph 73/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee oSolving each of smaller subproblems only once and recording the results in a table from which can obtain a solution to the original problem o Using a table instead of recursion o Factorial o Fibonacci numbers 74/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee 0-1 Knapsack problem o 0-1 : reject or accept o given n items of weights w1 , w2 ,…, wn and values v1 , v2 ,…, vn and a knapsack of capacity W o find the best solution that gives maximum weight and value 75/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee o use table to fill in by applying formulas B[k-1,w] B [k,w] = , if wk > w max{B[k-1,w],B[k-1,w-wk]+bk}, else o e.g. let W = 5 and data : (item,weight,value) (1,2,12) (2,1,10) (3,3,20) (4,2,15) 76/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee capacity j (W=5) weight, value w1=2, v1=12 w2=1, v2=10 w3=3, v3=20 w4=2, v4=15 i 1 2 3 4 1 0 10 10 10 2 12 12 12 15 3 12 22 22 25 4 12 22 30 30 5 12 22 32 37 Select 1, 2, 4 77/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Ordering Matrix Multiplication or Matrix Chain-Product o find the best solution that gives minimum times of multiplication o e.g. ABCD , A(BC)D , (AB)(CD) 78/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee 79/91 o a random number is used to make a decision in some situation o e.g. giving a quiz by using a coin o a good randomized algor. has no bad inputs and no relative to the particular input , e.g. data testing 80/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Random Number Generator a method to generate true randomness is impossible to do on computer since numbers , called pseudorandom numbers, will depend on the algorithm e.g. linear congruential generator xi+1 = Axi % M , given seed (x0) value 81/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee Skip Lists (in searching & insertion) o e.g. use random number generator to determine which node to be traversed within the expected time Primality Testing o e.g. to determine a large N-digit number is prime or not by factoring into N/2-digit primes, then a random generator is needed 82/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee othere are many possibilities to try, if not succeed then step back to try another way othe elimination of a large group of possibilities in one step is known as pruning oe.g. arranging furniture in a new house , never place sofa, bed & closet in the kitchen 83/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee o n-Queens o Hamiltonian Circuit o Subset-Sum o Goal Seeking o Turnpike Reconstruction 84/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee o Games : chess n-Queens checker Tic-Tac-Toe o Minimax strategy 85/93 344-211 Algorithmic Process and Programming , created by Dararat Saelee When confronted with a problem, it is worthwhile to see if any method of algor. design can apply properly together with data structure that will lead to efficient solution. 86/91 Knapsack problem o Bin packing Greedy o Task scheduling o Strassen’s matrix multiplication Divide &conquer o Big Integer multiplication o Josephus problem Decrease&conquer n oa o 87/91 344-211 Algorithmic Process and Programming , created by Dararat Saelee o Non-recursive : Dynamic programming n o a , fibonacci o Recursive exponentiation : transform o an , Horner’s Rule o LCM & GCD – Euclid Algor. o 0-1 Knapsack Problem 88/91 344-211 Algorithmic Process and Programming , created by Dararat Saelee Motto Today ทาเดีย๋ วนี้ คือหนทางสู่ ความสาเร็จ คิดแต่ ไม่ ทา เท่ ากับไม่ ได้ คดิ 344-211 Algorithmic Process and Programming , created by Dararat Saelee 89 Fractional Knapsack : W= 5 หนังสือ 4 เล่ม มี b1=10 และ w1=0.5 ขนม 3 กล่อง มี b2=5 และ w2=0.4 น้า 2 ขวด มี b3=7 และ w3=0.5 โน้ ตบุค้ 1 เครื่อง มี b4=15 และ w4=1.8 Bin Packing : 0.25 , 0.5 , 1.0 , 0.75 , 0.125 , 0.25 , 0.5 90/93 Task Scheduling : act# start finish a1 1 4 , a2 2 5 , a3 1 5 , a4 5 8 a5 4 6 , a6 6 10 , a7 7 9 Big Integer Multiplication X = 4,123,450,732 Y = 8,159,324,570 an 1321 (decrease-by-2) Josephus Problem : J(82) decrease-by-3 91/93 Euclidean : gcd (2039,113) , gcd (1548,204) Horner’s Rule : p(x) = 7x9 + 4x6 - 3x5 - x4 + 5x2 + 9 Least Common Multiple : lcm (2039,113) , lcm (1548,204) 0-1 knapsack Problem : W = 6 , (1,2,12) (2,1,10) (3,4,20) (4,3,15) (5,2,14) 92/93