SlideShare a Scribd company logo
1 of 59
Download to read offline
เทคนิคอัลกอริทึมแบบ
Greedy
Advance Computer Programming
รหัสวิชา 32090207
อ. กิตตินันท์ น้1อยมณี 1
เนื้อหา
1. Introduction
2. Shortest Path (Dijkstra)
3. Knapsack Problem with Greedy Algorithm
อ. กิตตินันท์ น้1อยมณี 2
Introduction
อ. กิตตินันท์ น้3อยมณี 3
Introduction
• Greedy แปลว่า ละโมบ หรือ ความละโมบ
• Greedy Algorithm เป็นอัลกอริทึมที่ง่ายๆ ไม่มี
ความซับซ้อนอะไร แค่เลือกทางที่ดูดีที่สุดใน
ขณะนั้นๆ ก็พอ
• เช่น ได้กําไรมากที่สุดโดยที่เสียหายน้อยที่สุด
• เช่น ใช้เวลาน้อยที่สุดแต่ได้ผลลัพธ์มากที่สุด
อ. กิตตินันท์ น้1อยมณี 4
Introduction
ตัวอย่างยังคงมีมากกว่านั้น เช่น
• ปัญหาการทอนเหรียญ
• การเลือกกิจกรรม (Activity Select Problem)
• การเลือกของ Knapsack Problem
• ปัญหาการบริการลูกค้าให้มีเวลาในการรอน้อยที่สุด
• ปัญหาการจัดการตารางงานเมื่อมี Deadline
อ. กิตตินันท์ น้1อยมณี 5
Introduction
ตัวอย่างยังคงมีมากกว่านั้น เช่น
• ปัญหา Minimum Spanning Tree
• Huffman Code
• Prefix Code
• ฯลฯ
อ. กิตตินันท์ น้1อยมณี 6
อ้างอิงข้อมูลดีๆ จาก อาจารย์กรุง สินอภิรมย์สราญ
http://pioneer.netserv.chula.ac.th/~skrung/2301365/Lecture009.html
Shortest Path (Dijkstra)
อ. กิตตินันท์ น้7อยมณี 7
Shortest Path (Dijkstra)
• Dijkstra อ่านว่า ไดค์สตรา
• Shortest Path หรือ วิถีสั้นที่สุด
• มันก็คือกราฟแบบมีน้ําหนักและมีทิศทาง
• หลักการคล้ายๆ ปัญหาของนักท่องเที่ยวที่
ต้องการไปเที่ยวให้ครบทุกเมืองโดยใช้ระยะทางที่
สั้นที่สุด
อ. กิตตินันท์ น้1อยมณี 8
Shortest Path (Dijkstra)
อ. กิตตินันท์ น้1อยมณี 9
1
2
34
5
10 100
20
40
10
30
20
80
Shortest Path (Dijkstra)
อ. กิตตินันท์ น้1อยมณี 10
1
100
แทนเมืองต่างๆ
แทนระยะห่างระหว่าง
เมืองและเส้นทางที่
ต้องเดิน
Shortest Path (Dijkstra)
• ตาม Greedy Algorithm คือการเลือกทางที่ดีที่สุด
สั้นที่สุดโดยพิจารณาเฉพาะเหตุการณ์เฉพาะหน้า
เท่านั้น
อ. กิตตินันท์ น้1อยมณี 11
Shortest Path (Dijkstra)
LOOP V
0 {1} 0
อ. กิตตินันท์ น้1อยมณี 12
1 2 3 4 5
Shortest Path (Dijkstra)
LOOP V
0 {1} 0
อ. กิตตินันท์ น้1อยมณี 13
1 2 3 4 5
Shortest Path (Dijkstra)
LOOP V
0 {1} 0
0+100 0+80 0+30 0+10
อ. กิตตินันท์ น้1อยมณี 14
1 2 3 4 5
Shortest Path (Dijkstra)
LOOP V
0 {1} 0
0+100
100
0+80
80
0+30
30
0+10
10
อ. กิตตินันท์ น้1อยมณี 15
1 2 3 4 5
Shortest Path (Dijkstra)
LOOP V
0 {1} 0
0+100
100
0+80
80
0+30
30
0+10
10
1 {5} 10
อ. กิตตินันท์ น้1อยมณี 16
1 2 3 4 5
Shortest Path (Dijkstra)
อ. กิตตินันท์ น้1อยมณี 17
1
2
34
5
10 100
20
40
10
30
20
80
ระยะทางรวม = 10
Shortest Path (Dijkstra)
LOOP V
0 {1} 0
0+100
100
0+80
80
0+30
30
0+10
10
1 {5} 10
อ. กิตตินันท์ น้1อยมณี 18
1 2 3 4 5
Shortest Path (Dijkstra)
LOOP V
0 {1} 0
0+100
100
0+80
80
0+30
30
0+10
10
1 {5} 10
อ. กิตตินันท์ น้1อยมณี 19
1 2 3 4 5
Shortest Path (Dijkstra)
LOOP V
0 {1} 0
0+100
100
0+80
80
0+30
30
0+10
10
1 {5} 100 80 10
อ. กิตตินันท์ น้1อยมณี 20
1 2 3 4 5
Shortest Path (Dijkstra)
LOOP V
0 {1} 0
0+100
100
0+80
80
0+30
30
0+10
10
1 {5} 100 80
10+10
10
อ. กิตตินันท์ น้1อยมณี 21
1 2 3 4 5
Shortest Path (Dijkstra)
LOOP V
0 {1} 0
0+100
100
0+80
80
0+30
30
0+10
10
1 {5} 100 80
10+10
20
10
อ. กิตตินันท์ น้1อยมณี 22
1 2 3 4 5
Shortest Path (Dijkstra)
LOOP V
0 {1} 0
0+100
100
0+80
80
0+30
30
0+10
10
1 {5} 100 80
10+10
20
10
2 {4} 20
อ. กิตตินันท์ น้1อยมณี 23
1 2 3 4 5
Shortest Path (Dijkstra)
อ. กิตตินันท์ น้1อยมณี 24
1
2
34
5
10 100
20
40
10
30
20
80
ระยะทางรวม = 20
Shortest Path (Dijkstra)
LOOP V
0 {1} 0
0+100
100
0+80
80
0+30
30
0+10
10
1 {5} 100 80
10+10
20
10
2 {4} 20
อ. กิตตินันท์ น้1อยมณี 25
1 2 3 4 5
Shortest Path (Dijkstra)
LOOP V
0 {1} 0
0+100
100
0+80
80
0+30
30
0+10
10
1 {5} 100 80
10+10
20
10
2 {4}
20+20 20+40
20
อ. กิตตินันท์ น้1อยมณี 26
1 2 3 4 5
Shortest Path (Dijkstra)
LOOP V
0 {1} 0
0+100
100
0+80
80
0+30
30
0+10
10
1 {5} 100 80
10+10
20
10
2 {4}
20+20
40
20+40
60
20
อ. กิตตินันท์ น้1อยมณี 27
1 2 3 4 5
Shortest Path (Dijkstra)
LOOP V
0 {1} 0
0+100
100
0+80
80
0+30
30
0+10
10
1 {5} 100 80
10+10
20
10
2 {4}
20+20
40
20+40
60
20
3 {2} 40
อ. กิตตินันท์ น้1อยมณี 28
1 2 3 4 5
Shortest Path (Dijkstra)
อ. กิตตินันท์ น้1อยมณี 29
1
2
34
5
10 100
20
40
10
30
20
80
ระยะทางรวม = 40
Shortest Path (Dijkstra)
LOOP V
0 {1} 0
0+100
100
0+80
80
0+30
30
0+10
10
1 {5} 100 80
10+10
20
10
2 {4}
20+20
40
20+40
60
20
3 {2} 40
อ. กิตตินันท์ น้1อยมณี 30
1 2 3 4 5
Shortest Path (Dijkstra)
LOOP V
0 {1} 0
0+100
100
0+80
80
0+30
30
0+10
10
1 {5} 100 80
10+10
20
10
2 {4}
20+20
40
20+40
60
20
3 {2} 40
40+20
อ. กิตตินันท์ น้1อยมณี 31
1 2 3 4 5
Shortest Path (Dijkstra)
LOOP V
0 {1} 0
0+100
100
0+80
80
0+30
30
0+10
10
1 {5} 100 80
10+10
20
10
2 {4}
20+20
40
20+40
60
20
3 {2} 40
40+20
60
อ. กิตตินันท์ น้1อยมณี 32
1 2 3 4 5
Shortest Path (Dijkstra)
LOOP V
0 {1} 0
0+100
100
0+80
80
0+30
30
0+10
10
1 {5} 100 80
10+10
20
10
2 {4}
20+20
40
20+40
60
20
3 {2} 40
40+20
60
4 {3} 60
อ. กิตตินันท์ น้1อยมณี 33
1 2 3 4 5
Shortest Path (Dijkstra)
LOOP C
0 {2, 3, 4, 5} 0
0+100
100
0+80
80
0+30
30
0+10
10
1 {2, 3, 4} 100 80
10+10
20
10
2 {2, 3}
20+20
40
20+40
60
20
3 {3} 40
40+20
60
4 60
อ. กิตตินันท์ น้1อยมณี 34
1 2 3 4 5
Shortest Path (Dijkstra)
อ. กิตตินันท์ น้1อยมณี 35
1
2
34
5
10 100
20
40
10
30
20
80
ระยะทางรวม = 60
Shortest Path (Dijkstra)
• เมื่อเข้าใจวิธีคิดแล้ว ลองมาดู Pseudo Code กัน
อ. กิตตินันท์ น้1อยมณี 36
Shortest Path (Dijkstra)
Algorithm Dijkstra ( L[1…n, 1…n] ) : array[2…n]
C := {2, 3, 4, …, n}
for i := 2 to n
D[i] := L[1, i]
repeat n-2 times
v := some element of C minimizing D[v]
C := C – {v}
for each w C do
D[w] := min( D[w], D[v]+L[v, m] )
return D
End Algorithm อ. กิตตินันท์ น้1อยมณี 37
Shortest Path (Dijkstra)
Algorithm Dijkstra ( L[1…n, 1…n] ) : array[2…n]
C := {2, 3, 4, …, n}
for i := 2 to n
D[i] := L[1, i]
repeat n-2 times
v := some element of C minimizing D[v]
C := C – {v}
for each w C do
D[w] := min( D[w], D[v]+L[v, m] )
return D
End Algorithm อ. กิตตินันท์ น้1อยมณี 38
เซ็ตของเมืองที่เหลือ
ให้ D เก็บระยะทางของเมือง 1 กับ
เมืองทั้งหมด
เลือกเสร็จก็ลบเมืองนั้นไป
หาระยะทางที่น้อยที่สุด
Shortest Path (Dijkstra)
โดย
• v คือ เมืองที่เลือกไป (ที่ระยะสั้นที่สุด)
• C คือ เซ็ตของเมืองที่ยังไม่ได้ไป
• D คือ ค่าของการประมวลผลระยะทาง
อ. กิตตินันท์ น้1อยมณี 39
Shortest Path (Dijkstra)
อ. กิตตินันท์ น้1อยมณี 40
Shortest Path (Dijkstra)
อ. กิตตินันท์ น้1อยมณี 41
ลองทําด้วยตัวเองดูนะครับ
Knapsack Problem
with Greedy Algorithm
อ. กิตตินันท์ น้42อยมณี 42
Knapsack Problem with Greedy Algorithm
อ. กิตตินันท์ น้1อยมณี 43
• Knapsack อ่านว่า แน๊บ-แซ่ก (Knapsack)
• แปลว่า เป้ หรือ กระเป๋าสายพายหลัง
Knapsack Problem with Greedy Algorithm
อ. กิตตินันท์ น้1อยมณี 44
• Knapsack Problem คือปัญหาในการเลือกของเพื่อ
หยิบใส่กระเป๋า โดยกระเป๋ามีความจุจํากัด (ไม่งั้น
ขาด)
• เหมือนกับการเดินเข้าไปในถ้ําแล้วเจอเพชรเม็ดโต
Knapsack Problem with Greedy Algorithm
อ. กิตตินันท์ น้1อยมณี 45
• ตามหลักการของ Greedy Algorithm แล้ว คือการ
หยิบเพชรออกจากถ้ําโดยให้ได้มูลค่าเยอะที่สุด
• สิ่งที่ต้องระวังมากที่สุดก็คือ จะต้องระวังกระเป๋า
ขาด เพราะหยิบเพชรหนักเกินความจุของกระเป๋า
Knapsack Problem with Greedy Algorithm
อ. กิตตินันท์ น้1อยมณี 46
• สมมติว่ามีเพชรอยู่ทั้งหมด 5 ก้อน (n = 5)
• มูลค่าของเพชรทั้งหมดเรียงกันดังนี้
• น้ําหนักของเพชรทั้งหมดเรียงกันดังนี้
0 1 2 3 4
Vi 1 6 18 22 24
0 1 2 3 4
Wi 1 2 5 6 7
Knapsack Problem with Greedy Algorithm
อ. กิตตินันท์ น้1อยมณี 47
• และให้ความจุของกระเป๋าเท่ากับ 11 (wx=11)
• อัตราส่วนระหว่าง Value ต่อ Weight ได้ดังนี้
0 1 2 3 4
Vi / Wi 1 3 3.6 3.67 3.43
Knapsack Problem with Greedy Algorithm
อ. กิตตินันท์ น้1อยมณี 48
• สรุปได้ข้อมูลดังนี้
0 1 2 3 4
Vi / Wi 1 3 3.6 3.67 3.43
0 1 2 3 4
Vi 1 6 18 22 24
0 1 2 3 4
Wi 1 2 5 6 7
Knapsack Problem with Greedy Algorithm
อ. กิตตินันท์ น้1อยมณี 49
ดังนั้น การหยิบของใส่กระเป๋าก็มีวิธีการอยู่ดังนี้
(Select Function)
1. Min(Wi)
2. Max(Vi)
3. Max(Vi/Wi)
Knapsack Problem with Greedy Algorithm
อ. กิตตินันท์ น้1อยมณี 50
0 1 2 3 4
Vi / Wi 1 3 3.6 3.67 3.43
0 1 2 3 4
Vi 1 6 18 22 24
0 1 2 3 4
Wi 1 2 5 6 7
0 1 2 3 4 Value
1 1 1 0 0 25Min(Wi)
1
Knapsack Problem with Greedy Algorithm
อ. กิตตินันท์ น้1อยมณี 51
0 1 2 3 4
Vi / Wi 1 3 3.6 3.67 3.43
0 1 2 3 4
Vi 1 6 18 22 24
0 1 2 3 4
Wi 1 2 5 6 7
0 1 2 3 4 Value
1 1 0 0 1 31Max(Vi)
2
Knapsack Problem with Greedy Algorithm
อ. กิตตินันท์ น้1อยมณี 52
0 1 2 3 4
Vi / Wi 1 3 3.6 3.67 3.43
0 1 2 3 4
Vi 1 6 18 22 24
0 1 2 3 4
Wi 1 2 5 6 7
0 1 2 3 4 Value
0 0 1 1 0 40Max(Vi/Wi)
3
Knapsack Problem with Greedy Algorithm
อ. กิตตินันท์ น้1อยมณี 53
0 1 2 3 4 Value
0 0 1 1 0 40Max(Vi/Wi)
3
0 1 2 3 4 Value
1 1 0 0 1 31Max(Vi)
2
0 1 2 3 4 Value
1 1 1 0 0 25Min(Wi)
1
Knapsack Problem with Greedy Algorithm
อ. กิตตินันท์ น้1อยมณี 54
• ดังนั้นหากเลือก Max(Vi/Wi) จะทําให้ได้มูลค่ามาก
ที่สุดคือ 40 โดยที่น้ําหนักพอดีกับความจุของ
กระเป๋าพอดี
• แต่ทว่า !! Greedy Algorithm ยังไม่ใช่
กระบวนการคิดที่เหมาะกับ Knapsack
Problem
Knapsack Problem with Greedy Algorithm
อ. กิตตินันท์ น้1อยมณี 55
0 1 2 3 4
Vi / Wi 1 3 3.6 3.67 4
0 1 2 3 4
Vi 1 6 18 22 28
0 1 2 3 4
Wi 1 2 5 6 7
0 1 2 3 4 Value
Max(Vi/Wi)
3
หากเปลี่ยน V4 เป็น 28 แล้วลองใช้ Greedy Algorithm ดูอีกรอบ
Knapsack Problem with Greedy Algorithm
อ. กิตตินันท์ น้1อยมณี 56
0 1 2 3 4
Vi / Wi 1 3 3.6 3.67 4
0 1 2 3 4
Vi 1 6 18 22 28
0 1 2 3 4
Wi 1 2 5 6 7
0 1 2 3 4 Value
1 1 0 0 1 35Max(Vi/Wi)
3
ทําให้ Max(Vi/Wi) เลือก V4 เป็นอันดับแรก จึงได้ Xi = 1 1 0 0 1
Knapsack Problem with Greedy Algorithm
อ. กิตตินันท์ น้1อยมณี 57
• ด้วยเหตุนี้จึงทําให้ Greedy Algorithm อาจจะยังไม่
เหมาะสมในการแก้ปัญหา Knapsack Problem
• โดยยังคงต้องการฟังก์ชันในการเลือกวัตถุที่ดีที่สุด
ในแต่ละรอบก่อน จึงจะทําให้ได้คําตอบโดยรวมที่
ดีที่สุด
• Greedy จะไม่สนใจภาพรวมของปัญหา จะสนใจ
แต่เหตุการณ์เฉพาะหน้าเท่านั้น
อ. กิตตินันท์ น้1อยมณี 58
Algorithm KnapsackGD( w[n], v[n], wx ) : array[n]
for i := 0 to n-1
x[i] := 0
weight := 0
y := {0, 1, 2, …, n-1}
while weight < wx and y 0
i := the best remaining Object in y
if weight + w[i] wx then
x[i] := 1
weight := weight + w[i]
y := y – {i}
return x
End Algorithm
Select Function
Knapsack Problem with Greedy Algorithm
อ. กิตตินันท์ น้1อยมณี 59
ลองทําด้วยตัวเองดูนะครับ???

More Related Content

What's hot

เผยแพร่ผลงานทางวิชาการ ชุดกิจกรรมการเรียนรู้วิทยาศาสตร์ เรื่อง สารและการจำแน...
เผยแพร่ผลงานทางวิชาการ  ชุดกิจกรรมการเรียนรู้วิทยาศาสตร์ เรื่อง สารและการจำแน...เผยแพร่ผลงานทางวิชาการ  ชุดกิจกรรมการเรียนรู้วิทยาศาสตร์ เรื่อง สารและการจำแน...
เผยแพร่ผลงานทางวิชาการ ชุดกิจกรรมการเรียนรู้วิทยาศาสตร์ เรื่อง สารและการจำแน...Ketsarin Prommajun
 
เวกเตอร์_9วิชาสามัญ(55-58)
เวกเตอร์_9วิชาสามัญ(55-58)เวกเตอร์_9วิชาสามัญ(55-58)
เวกเตอร์_9วิชาสามัญ(55-58)Thanuphong Ngoapm
 
ตัวอย่างที่ 1 จงหาผลบวกของเอกนามต่อไปนี้
ตัวอย่างที่ 1  จงหาผลบวกของเอกนามต่อไปนี้ตัวอย่างที่ 1  จงหาผลบวกของเอกนามต่อไปนี้
ตัวอย่างที่ 1 จงหาผลบวกของเอกนามต่อไปนี้ทับทิม เจริญตา
 
กิจกรรมการคิดเกมค่ายนักเรียน
กิจกรรมการคิดเกมค่ายนักเรียนกิจกรรมการคิดเกมค่ายนักเรียน
กิจกรรมการคิดเกมค่ายนักเรียนWichai Likitponrak
 
ตัวอย่าง Mind map
ตัวอย่าง Mind mapตัวอย่าง Mind map
ตัวอย่าง Mind mapkrupornpana55
 
เลขยกกำลังที่มีเลขชี้กำลังเป็นจำนวนเต็ม
เลขยกกำลังที่มีเลขชี้กำลังเป็นจำนวนเต็มเลขยกกำลังที่มีเลขชี้กำลังเป็นจำนวนเต็ม
เลขยกกำลังที่มีเลขชี้กำลังเป็นจำนวนเต็มkunkrooyim
 
เคาะสัญญาณ
เคาะสัญญาณเคาะสัญญาณ
เคาะสัญญาณAui Ounjai
 
ระบบสมการกำลังสอง
ระบบสมการกำลังสองระบบสมการกำลังสอง
ระบบสมการกำลังสองRitthinarongron School
 
ระบบฐานข้อมูลสำหรับร้านค้าปลีก โดย สันติ พันไธสง
ระบบฐานข้อมูลสำหรับร้านค้าปลีก โดย สันติ พันไธสงระบบฐานข้อมูลสำหรับร้านค้าปลีก โดย สันติ พันไธสง
ระบบฐานข้อมูลสำหรับร้านค้าปลีก โดย สันติ พันไธสงUtai Sukviwatsirikul
 
เฉลย คณิตรับตรงสามัญ 7วิชา มค 55 pr4
เฉลย คณิตรับตรงสามัญ 7วิชา มค 55 pr4เฉลย คณิตรับตรงสามัญ 7วิชา มค 55 pr4
เฉลย คณิตรับตรงสามัญ 7วิชา มค 55 pr4Ge Ar
 
ทะเบียนคุมเงินทุนการศึกษาประเภทไม่ต่อเนื่อง ปีการศึกษา 2553
ทะเบียนคุมเงินทุนการศึกษาประเภทไม่ต่อเนื่อง  ปีการศึกษา 2553ทะเบียนคุมเงินทุนการศึกษาประเภทไม่ต่อเนื่อง  ปีการศึกษา 2553
ทะเบียนคุมเงินทุนการศึกษาประเภทไม่ต่อเนื่อง ปีการศึกษา 2553Yutthana Sriumnaj
 
ข้อสอบ A-NETคณิตศาสตร์
ข้อสอบ A-NETคณิตศาสตร์ข้อสอบ A-NETคณิตศาสตร์
ข้อสอบ A-NETคณิตศาสตร์Supakrit Chaiwong
 
แนวข้อสอบภาค ก. เล่มที่ 2 ความรู้ความสามารถทั่วไป
แนวข้อสอบภาค ก. เล่มที่ 2 ความรู้ความสามารถทั่วไปแนวข้อสอบภาค ก. เล่มที่ 2 ความรู้ความสามารถทั่วไป
แนวข้อสอบภาค ก. เล่มที่ 2 ความรู้ความสามารถทั่วไปประพันธ์ เวารัมย์
 
รายละเอียดโครงการ(ค่ายแสงเทียน 24)
รายละเอียดโครงการ(ค่ายแสงเทียน 24)รายละเอียดโครงการ(ค่ายแสงเทียน 24)
รายละเอียดโครงการ(ค่ายแสงเทียน 24)mahaoath พระมหาโอ๊ท
 

What's hot (20)

31201final521
31201final52131201final521
31201final521
 
ข้อสอบตรรกศาตร์ม.4
ข้อสอบตรรกศาตร์ม.4ข้อสอบตรรกศาตร์ม.4
ข้อสอบตรรกศาตร์ม.4
 
เผยแพร่ผลงานทางวิชาการ ชุดกิจกรรมการเรียนรู้วิทยาศาสตร์ เรื่อง สารและการจำแน...
เผยแพร่ผลงานทางวิชาการ  ชุดกิจกรรมการเรียนรู้วิทยาศาสตร์ เรื่อง สารและการจำแน...เผยแพร่ผลงานทางวิชาการ  ชุดกิจกรรมการเรียนรู้วิทยาศาสตร์ เรื่อง สารและการจำแน...
เผยแพร่ผลงานทางวิชาการ ชุดกิจกรรมการเรียนรู้วิทยาศาสตร์ เรื่อง สารและการจำแน...
 
เวกเตอร์_9วิชาสามัญ(55-58)
เวกเตอร์_9วิชาสามัญ(55-58)เวกเตอร์_9วิชาสามัญ(55-58)
เวกเตอร์_9วิชาสามัญ(55-58)
 
ตัวอย่างที่ 1 จงหาผลบวกของเอกนามต่อไปนี้
ตัวอย่างที่ 1  จงหาผลบวกของเอกนามต่อไปนี้ตัวอย่างที่ 1  จงหาผลบวกของเอกนามต่อไปนี้
ตัวอย่างที่ 1 จงหาผลบวกของเอกนามต่อไปนี้
 
กิจกรรมการคิดเกมค่ายนักเรียน
กิจกรรมการคิดเกมค่ายนักเรียนกิจกรรมการคิดเกมค่ายนักเรียน
กิจกรรมการคิดเกมค่ายนักเรียน
 
ตัวอย่าง Mind map
ตัวอย่าง Mind mapตัวอย่าง Mind map
ตัวอย่าง Mind map
 
เลขยกกำลังที่มีเลขชี้กำลังเป็นจำนวนเต็ม
เลขยกกำลังที่มีเลขชี้กำลังเป็นจำนวนเต็มเลขยกกำลังที่มีเลขชี้กำลังเป็นจำนวนเต็ม
เลขยกกำลังที่มีเลขชี้กำลังเป็นจำนวนเต็ม
 
เคาะสัญญาณ
เคาะสัญญาณเคาะสัญญาณ
เคาะสัญญาณ
 
ระบบสมการกำลังสอง
ระบบสมการกำลังสองระบบสมการกำลังสอง
ระบบสมการกำลังสอง
 
การเคลื่อนที่ในหนึ่งมิติ2
การเคลื่อนที่ในหนึ่งมิติ2การเคลื่อนที่ในหนึ่งมิติ2
การเคลื่อนที่ในหนึ่งมิติ2
 
กรณฑ์ที่สอง
กรณฑ์ที่สองกรณฑ์ที่สอง
กรณฑ์ที่สอง
 
ระบบฐานข้อมูลสำหรับร้านค้าปลีก โดย สันติ พันไธสง
ระบบฐานข้อมูลสำหรับร้านค้าปลีก โดย สันติ พันไธสงระบบฐานข้อมูลสำหรับร้านค้าปลีก โดย สันติ พันไธสง
ระบบฐานข้อมูลสำหรับร้านค้าปลีก โดย สันติ พันไธสง
 
เฉลย คณิตรับตรงสามัญ 7วิชา มค 55 pr4
เฉลย คณิตรับตรงสามัญ 7วิชา มค 55 pr4เฉลย คณิตรับตรงสามัญ 7วิชา มค 55 pr4
เฉลย คณิตรับตรงสามัญ 7วิชา มค 55 pr4
 
ลำดับเรขาคณิต (Geometric sequence)
ลำดับเรขาคณิต (Geometric sequence)ลำดับเรขาคณิต (Geometric sequence)
ลำดับเรขาคณิต (Geometric sequence)
 
ทะเบียนคุมเงินทุนการศึกษาประเภทไม่ต่อเนื่อง ปีการศึกษา 2553
ทะเบียนคุมเงินทุนการศึกษาประเภทไม่ต่อเนื่อง  ปีการศึกษา 2553ทะเบียนคุมเงินทุนการศึกษาประเภทไม่ต่อเนื่อง  ปีการศึกษา 2553
ทะเบียนคุมเงินทุนการศึกษาประเภทไม่ต่อเนื่อง ปีการศึกษา 2553
 
เฉลยข้อสอบ ภาษาไทย ม.1
เฉลยข้อสอบ ภาษาไทย ม.1เฉลยข้อสอบ ภาษาไทย ม.1
เฉลยข้อสอบ ภาษาไทย ม.1
 
ข้อสอบ A-NETคณิตศาสตร์
ข้อสอบ A-NETคณิตศาสตร์ข้อสอบ A-NETคณิตศาสตร์
ข้อสอบ A-NETคณิตศาสตร์
 
แนวข้อสอบภาค ก. เล่มที่ 2 ความรู้ความสามารถทั่วไป
แนวข้อสอบภาค ก. เล่มที่ 2 ความรู้ความสามารถทั่วไปแนวข้อสอบภาค ก. เล่มที่ 2 ความรู้ความสามารถทั่วไป
แนวข้อสอบภาค ก. เล่มที่ 2 ความรู้ความสามารถทั่วไป
 
รายละเอียดโครงการ(ค่ายแสงเทียน 24)
รายละเอียดโครงการ(ค่ายแสงเทียน 24)รายละเอียดโครงการ(ค่ายแสงเทียน 24)
รายละเอียดโครงการ(ค่ายแสงเทียน 24)
 

(Big One) C Language - 11 เทคนิคอัลกอริทึมแบบ greedy

  • 2. เนื้อหา 1. Introduction 2. Shortest Path (Dijkstra) 3. Knapsack Problem with Greedy Algorithm อ. กิตตินันท์ น้1อยมณี 2
  • 4. Introduction • Greedy แปลว่า ละโมบ หรือ ความละโมบ • Greedy Algorithm เป็นอัลกอริทึมที่ง่ายๆ ไม่มี ความซับซ้อนอะไร แค่เลือกทางที่ดูดีที่สุดใน ขณะนั้นๆ ก็พอ • เช่น ได้กําไรมากที่สุดโดยที่เสียหายน้อยที่สุด • เช่น ใช้เวลาน้อยที่สุดแต่ได้ผลลัพธ์มากที่สุด อ. กิตตินันท์ น้1อยมณี 4
  • 5. Introduction ตัวอย่างยังคงมีมากกว่านั้น เช่น • ปัญหาการทอนเหรียญ • การเลือกกิจกรรม (Activity Select Problem) • การเลือกของ Knapsack Problem • ปัญหาการบริการลูกค้าให้มีเวลาในการรอน้อยที่สุด • ปัญหาการจัดการตารางงานเมื่อมี Deadline อ. กิตตินันท์ น้1อยมณี 5
  • 6. Introduction ตัวอย่างยังคงมีมากกว่านั้น เช่น • ปัญหา Minimum Spanning Tree • Huffman Code • Prefix Code • ฯลฯ อ. กิตตินันท์ น้1อยมณี 6 อ้างอิงข้อมูลดีๆ จาก อาจารย์กรุง สินอภิรมย์สราญ http://pioneer.netserv.chula.ac.th/~skrung/2301365/Lecture009.html
  • 7. Shortest Path (Dijkstra) อ. กิตตินันท์ น้7อยมณี 7
  • 8. Shortest Path (Dijkstra) • Dijkstra อ่านว่า ไดค์สตรา • Shortest Path หรือ วิถีสั้นที่สุด • มันก็คือกราฟแบบมีน้ําหนักและมีทิศทาง • หลักการคล้ายๆ ปัญหาของนักท่องเที่ยวที่ ต้องการไปเที่ยวให้ครบทุกเมืองโดยใช้ระยะทางที่ สั้นที่สุด อ. กิตตินันท์ น้1อยมณี 8
  • 9. Shortest Path (Dijkstra) อ. กิตตินันท์ น้1อยมณี 9 1 2 34 5 10 100 20 40 10 30 20 80
  • 10. Shortest Path (Dijkstra) อ. กิตตินันท์ น้1อยมณี 10 1 100 แทนเมืองต่างๆ แทนระยะห่างระหว่าง เมืองและเส้นทางที่ ต้องเดิน
  • 11. Shortest Path (Dijkstra) • ตาม Greedy Algorithm คือการเลือกทางที่ดีที่สุด สั้นที่สุดโดยพิจารณาเฉพาะเหตุการณ์เฉพาะหน้า เท่านั้น อ. กิตตินันท์ น้1อยมณี 11
  • 12. Shortest Path (Dijkstra) LOOP V 0 {1} 0 อ. กิตตินันท์ น้1อยมณี 12 1 2 3 4 5
  • 13. Shortest Path (Dijkstra) LOOP V 0 {1} 0 อ. กิตตินันท์ น้1อยมณี 13 1 2 3 4 5
  • 14. Shortest Path (Dijkstra) LOOP V 0 {1} 0 0+100 0+80 0+30 0+10 อ. กิตตินันท์ น้1อยมณี 14 1 2 3 4 5
  • 15. Shortest Path (Dijkstra) LOOP V 0 {1} 0 0+100 100 0+80 80 0+30 30 0+10 10 อ. กิตตินันท์ น้1อยมณี 15 1 2 3 4 5
  • 16. Shortest Path (Dijkstra) LOOP V 0 {1} 0 0+100 100 0+80 80 0+30 30 0+10 10 1 {5} 10 อ. กิตตินันท์ น้1อยมณี 16 1 2 3 4 5
  • 17. Shortest Path (Dijkstra) อ. กิตตินันท์ น้1อยมณี 17 1 2 34 5 10 100 20 40 10 30 20 80 ระยะทางรวม = 10
  • 18. Shortest Path (Dijkstra) LOOP V 0 {1} 0 0+100 100 0+80 80 0+30 30 0+10 10 1 {5} 10 อ. กิตตินันท์ น้1อยมณี 18 1 2 3 4 5
  • 19. Shortest Path (Dijkstra) LOOP V 0 {1} 0 0+100 100 0+80 80 0+30 30 0+10 10 1 {5} 10 อ. กิตตินันท์ น้1อยมณี 19 1 2 3 4 5
  • 20. Shortest Path (Dijkstra) LOOP V 0 {1} 0 0+100 100 0+80 80 0+30 30 0+10 10 1 {5} 100 80 10 อ. กิตตินันท์ น้1อยมณี 20 1 2 3 4 5
  • 21. Shortest Path (Dijkstra) LOOP V 0 {1} 0 0+100 100 0+80 80 0+30 30 0+10 10 1 {5} 100 80 10+10 10 อ. กิตตินันท์ น้1อยมณี 21 1 2 3 4 5
  • 22. Shortest Path (Dijkstra) LOOP V 0 {1} 0 0+100 100 0+80 80 0+30 30 0+10 10 1 {5} 100 80 10+10 20 10 อ. กิตตินันท์ น้1อยมณี 22 1 2 3 4 5
  • 23. Shortest Path (Dijkstra) LOOP V 0 {1} 0 0+100 100 0+80 80 0+30 30 0+10 10 1 {5} 100 80 10+10 20 10 2 {4} 20 อ. กิตตินันท์ น้1อยมณี 23 1 2 3 4 5
  • 24. Shortest Path (Dijkstra) อ. กิตตินันท์ น้1อยมณี 24 1 2 34 5 10 100 20 40 10 30 20 80 ระยะทางรวม = 20
  • 25. Shortest Path (Dijkstra) LOOP V 0 {1} 0 0+100 100 0+80 80 0+30 30 0+10 10 1 {5} 100 80 10+10 20 10 2 {4} 20 อ. กิตตินันท์ น้1อยมณี 25 1 2 3 4 5
  • 26. Shortest Path (Dijkstra) LOOP V 0 {1} 0 0+100 100 0+80 80 0+30 30 0+10 10 1 {5} 100 80 10+10 20 10 2 {4} 20+20 20+40 20 อ. กิตตินันท์ น้1อยมณี 26 1 2 3 4 5
  • 27. Shortest Path (Dijkstra) LOOP V 0 {1} 0 0+100 100 0+80 80 0+30 30 0+10 10 1 {5} 100 80 10+10 20 10 2 {4} 20+20 40 20+40 60 20 อ. กิตตินันท์ น้1อยมณี 27 1 2 3 4 5
  • 28. Shortest Path (Dijkstra) LOOP V 0 {1} 0 0+100 100 0+80 80 0+30 30 0+10 10 1 {5} 100 80 10+10 20 10 2 {4} 20+20 40 20+40 60 20 3 {2} 40 อ. กิตตินันท์ น้1อยมณี 28 1 2 3 4 5
  • 29. Shortest Path (Dijkstra) อ. กิตตินันท์ น้1อยมณี 29 1 2 34 5 10 100 20 40 10 30 20 80 ระยะทางรวม = 40
  • 30. Shortest Path (Dijkstra) LOOP V 0 {1} 0 0+100 100 0+80 80 0+30 30 0+10 10 1 {5} 100 80 10+10 20 10 2 {4} 20+20 40 20+40 60 20 3 {2} 40 อ. กิตตินันท์ น้1อยมณี 30 1 2 3 4 5
  • 31. Shortest Path (Dijkstra) LOOP V 0 {1} 0 0+100 100 0+80 80 0+30 30 0+10 10 1 {5} 100 80 10+10 20 10 2 {4} 20+20 40 20+40 60 20 3 {2} 40 40+20 อ. กิตตินันท์ น้1อยมณี 31 1 2 3 4 5
  • 32. Shortest Path (Dijkstra) LOOP V 0 {1} 0 0+100 100 0+80 80 0+30 30 0+10 10 1 {5} 100 80 10+10 20 10 2 {4} 20+20 40 20+40 60 20 3 {2} 40 40+20 60 อ. กิตตินันท์ น้1อยมณี 32 1 2 3 4 5
  • 33. Shortest Path (Dijkstra) LOOP V 0 {1} 0 0+100 100 0+80 80 0+30 30 0+10 10 1 {5} 100 80 10+10 20 10 2 {4} 20+20 40 20+40 60 20 3 {2} 40 40+20 60 4 {3} 60 อ. กิตตินันท์ น้1อยมณี 33 1 2 3 4 5
  • 34. Shortest Path (Dijkstra) LOOP C 0 {2, 3, 4, 5} 0 0+100 100 0+80 80 0+30 30 0+10 10 1 {2, 3, 4} 100 80 10+10 20 10 2 {2, 3} 20+20 40 20+40 60 20 3 {3} 40 40+20 60 4 60 อ. กิตตินันท์ น้1อยมณี 34 1 2 3 4 5
  • 35. Shortest Path (Dijkstra) อ. กิตตินันท์ น้1อยมณี 35 1 2 34 5 10 100 20 40 10 30 20 80 ระยะทางรวม = 60
  • 36. Shortest Path (Dijkstra) • เมื่อเข้าใจวิธีคิดแล้ว ลองมาดู Pseudo Code กัน อ. กิตตินันท์ น้1อยมณี 36
  • 37. Shortest Path (Dijkstra) Algorithm Dijkstra ( L[1…n, 1…n] ) : array[2…n] C := {2, 3, 4, …, n} for i := 2 to n D[i] := L[1, i] repeat n-2 times v := some element of C minimizing D[v] C := C – {v} for each w C do D[w] := min( D[w], D[v]+L[v, m] ) return D End Algorithm อ. กิตตินันท์ น้1อยมณี 37
  • 38. Shortest Path (Dijkstra) Algorithm Dijkstra ( L[1…n, 1…n] ) : array[2…n] C := {2, 3, 4, …, n} for i := 2 to n D[i] := L[1, i] repeat n-2 times v := some element of C minimizing D[v] C := C – {v} for each w C do D[w] := min( D[w], D[v]+L[v, m] ) return D End Algorithm อ. กิตตินันท์ น้1อยมณี 38 เซ็ตของเมืองที่เหลือ ให้ D เก็บระยะทางของเมือง 1 กับ เมืองทั้งหมด เลือกเสร็จก็ลบเมืองนั้นไป หาระยะทางที่น้อยที่สุด
  • 39. Shortest Path (Dijkstra) โดย • v คือ เมืองที่เลือกไป (ที่ระยะสั้นที่สุด) • C คือ เซ็ตของเมืองที่ยังไม่ได้ไป • D คือ ค่าของการประมวลผลระยะทาง อ. กิตตินันท์ น้1อยมณี 39
  • 40. Shortest Path (Dijkstra) อ. กิตตินันท์ น้1อยมณี 40
  • 41. Shortest Path (Dijkstra) อ. กิตตินันท์ น้1อยมณี 41 ลองทําด้วยตัวเองดูนะครับ
  • 42. Knapsack Problem with Greedy Algorithm อ. กิตตินันท์ น้42อยมณี 42
  • 43. Knapsack Problem with Greedy Algorithm อ. กิตตินันท์ น้1อยมณี 43 • Knapsack อ่านว่า แน๊บ-แซ่ก (Knapsack) • แปลว่า เป้ หรือ กระเป๋าสายพายหลัง
  • 44. Knapsack Problem with Greedy Algorithm อ. กิตตินันท์ น้1อยมณี 44 • Knapsack Problem คือปัญหาในการเลือกของเพื่อ หยิบใส่กระเป๋า โดยกระเป๋ามีความจุจํากัด (ไม่งั้น ขาด) • เหมือนกับการเดินเข้าไปในถ้ําแล้วเจอเพชรเม็ดโต
  • 45. Knapsack Problem with Greedy Algorithm อ. กิตตินันท์ น้1อยมณี 45 • ตามหลักการของ Greedy Algorithm แล้ว คือการ หยิบเพชรออกจากถ้ําโดยให้ได้มูลค่าเยอะที่สุด • สิ่งที่ต้องระวังมากที่สุดก็คือ จะต้องระวังกระเป๋า ขาด เพราะหยิบเพชรหนักเกินความจุของกระเป๋า
  • 46. Knapsack Problem with Greedy Algorithm อ. กิตตินันท์ น้1อยมณี 46 • สมมติว่ามีเพชรอยู่ทั้งหมด 5 ก้อน (n = 5) • มูลค่าของเพชรทั้งหมดเรียงกันดังนี้ • น้ําหนักของเพชรทั้งหมดเรียงกันดังนี้ 0 1 2 3 4 Vi 1 6 18 22 24 0 1 2 3 4 Wi 1 2 5 6 7
  • 47. Knapsack Problem with Greedy Algorithm อ. กิตตินันท์ น้1อยมณี 47 • และให้ความจุของกระเป๋าเท่ากับ 11 (wx=11) • อัตราส่วนระหว่าง Value ต่อ Weight ได้ดังนี้ 0 1 2 3 4 Vi / Wi 1 3 3.6 3.67 3.43
  • 48. Knapsack Problem with Greedy Algorithm อ. กิตตินันท์ น้1อยมณี 48 • สรุปได้ข้อมูลดังนี้ 0 1 2 3 4 Vi / Wi 1 3 3.6 3.67 3.43 0 1 2 3 4 Vi 1 6 18 22 24 0 1 2 3 4 Wi 1 2 5 6 7
  • 49. Knapsack Problem with Greedy Algorithm อ. กิตตินันท์ น้1อยมณี 49 ดังนั้น การหยิบของใส่กระเป๋าก็มีวิธีการอยู่ดังนี้ (Select Function) 1. Min(Wi) 2. Max(Vi) 3. Max(Vi/Wi)
  • 50. Knapsack Problem with Greedy Algorithm อ. กิตตินันท์ น้1อยมณี 50 0 1 2 3 4 Vi / Wi 1 3 3.6 3.67 3.43 0 1 2 3 4 Vi 1 6 18 22 24 0 1 2 3 4 Wi 1 2 5 6 7 0 1 2 3 4 Value 1 1 1 0 0 25Min(Wi) 1
  • 51. Knapsack Problem with Greedy Algorithm อ. กิตตินันท์ น้1อยมณี 51 0 1 2 3 4 Vi / Wi 1 3 3.6 3.67 3.43 0 1 2 3 4 Vi 1 6 18 22 24 0 1 2 3 4 Wi 1 2 5 6 7 0 1 2 3 4 Value 1 1 0 0 1 31Max(Vi) 2
  • 52. Knapsack Problem with Greedy Algorithm อ. กิตตินันท์ น้1อยมณี 52 0 1 2 3 4 Vi / Wi 1 3 3.6 3.67 3.43 0 1 2 3 4 Vi 1 6 18 22 24 0 1 2 3 4 Wi 1 2 5 6 7 0 1 2 3 4 Value 0 0 1 1 0 40Max(Vi/Wi) 3
  • 53. Knapsack Problem with Greedy Algorithm อ. กิตตินันท์ น้1อยมณี 53 0 1 2 3 4 Value 0 0 1 1 0 40Max(Vi/Wi) 3 0 1 2 3 4 Value 1 1 0 0 1 31Max(Vi) 2 0 1 2 3 4 Value 1 1 1 0 0 25Min(Wi) 1
  • 54. Knapsack Problem with Greedy Algorithm อ. กิตตินันท์ น้1อยมณี 54 • ดังนั้นหากเลือก Max(Vi/Wi) จะทําให้ได้มูลค่ามาก ที่สุดคือ 40 โดยที่น้ําหนักพอดีกับความจุของ กระเป๋าพอดี • แต่ทว่า !! Greedy Algorithm ยังไม่ใช่ กระบวนการคิดที่เหมาะกับ Knapsack Problem
  • 55. Knapsack Problem with Greedy Algorithm อ. กิตตินันท์ น้1อยมณี 55 0 1 2 3 4 Vi / Wi 1 3 3.6 3.67 4 0 1 2 3 4 Vi 1 6 18 22 28 0 1 2 3 4 Wi 1 2 5 6 7 0 1 2 3 4 Value Max(Vi/Wi) 3 หากเปลี่ยน V4 เป็น 28 แล้วลองใช้ Greedy Algorithm ดูอีกรอบ
  • 56. Knapsack Problem with Greedy Algorithm อ. กิตตินันท์ น้1อยมณี 56 0 1 2 3 4 Vi / Wi 1 3 3.6 3.67 4 0 1 2 3 4 Vi 1 6 18 22 28 0 1 2 3 4 Wi 1 2 5 6 7 0 1 2 3 4 Value 1 1 0 0 1 35Max(Vi/Wi) 3 ทําให้ Max(Vi/Wi) เลือก V4 เป็นอันดับแรก จึงได้ Xi = 1 1 0 0 1
  • 57. Knapsack Problem with Greedy Algorithm อ. กิตตินันท์ น้1อยมณี 57 • ด้วยเหตุนี้จึงทําให้ Greedy Algorithm อาจจะยังไม่ เหมาะสมในการแก้ปัญหา Knapsack Problem • โดยยังคงต้องการฟังก์ชันในการเลือกวัตถุที่ดีที่สุด ในแต่ละรอบก่อน จึงจะทําให้ได้คําตอบโดยรวมที่ ดีที่สุด • Greedy จะไม่สนใจภาพรวมของปัญหา จะสนใจ แต่เหตุการณ์เฉพาะหน้าเท่านั้น
  • 58. อ. กิตตินันท์ น้1อยมณี 58 Algorithm KnapsackGD( w[n], v[n], wx ) : array[n] for i := 0 to n-1 x[i] := 0 weight := 0 y := {0, 1, 2, …, n-1} while weight < wx and y 0 i := the best remaining Object in y if weight + w[i] wx then x[i] := 1 weight := weight + w[i] y := y – {i} return x End Algorithm Select Function
  • 59. Knapsack Problem with Greedy Algorithm อ. กิตตินันท์ น้1อยมณี 59 ลองทําด้วยตัวเองดูนะครับ???