การออกแบบขั้นตอนวิธี

advertisement
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) =
mn
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
Download