เรม เรมิ่ การออกแบบอัลกอรั...
TRANSCRIPT
การออกแบบอลกอรทมการออกแบบอลกอรทม
วงจรการออกแบบอลกอรทมวงจรการออกแบบอลกอรทม
เร ม
เรม
มปญหามปญหา
หาวธแกไขหาวธแกไข
Nยอมรบยอมรบ ปรบขอกาหนดYN
หมด ปรบขอกาหนดหมดได ?
Y
ยอมรบได ?
ร นของปญหาหวง?
ปรบขอกาหนดของปญหาหวง?
จบ
Y
รถโรงเรยนรถโรงเรยน การออกแบบวงจรรวมการออกแบบวงจรรวม
AB C D
VDD
X
GND
การออกแบบวงจรการออกแบบวงจร
XAB
B DX
DC
BCD
A CVDDX
DC
DDX
BAC D
X = (A+B)•(C+D)
GND
BAC
A B
DAB C D
GNDA B VDD
X
GND
ดาวมหาลย ดาวมหาลย : : สาวมาดสาวมาดหนดาวเปนลกสาวกก
จบช นม 6 โรงเรยนบานหนองใหญจบชนม.6 โรงเรยนบานหนองใหญคณแมขายไรขายนา สงดาวเขามาเรยนมหาลยมาเรยนอยในกรงเทพ ยนเวอรซต ท ทนสมยมาเรยนอยในกรงเทพ ยนเวอรซตททนสมย
ดาวสวยดาวเร ดดาวเดน คนมนสวยทาอะไรกเดนกเลยถกพรเซนตใหเปนดาวมหาลยกเลยถกพรเซนตใหเปนดาวมหาลยเพอนๆทคณะ ปลมดาวสดๆเลยนะฮะ
หน, ดาว, เปน, ลก, สาว, กก, จบ, ช น, ม 6, โรงเรยน, บาน, หนอง, ใหญ,จบ, ชน, ม 6, โรงเรยน, บาน, หนอง, ใหญ,
คณ, แม, ขาย, ไร, ขาย, นา, สง, ดาว, เขา, มา, เรยน, มหาลย, มา, เรยน, อย, ใน, กรงเทพ, ยนเวอรซต , ท, ทนสมย,มา, เรยน, อย, ใน, กรงเทพ, ยนเวอรซต, ท, ทนสมย,
ดาว, สวย, ดาว, เร ด, ดาว, เดน, คน, มน, สวย, ทา, อะไร, ก, เดน, ก, เลย, ถก, พรเซนต, ให, เปน, ดาว, มหาลย, , , , , , , , ,เพอน, ๆ, ท, คณะ, ปลม, ดาว, สด, ๆ, เลย, นะ, ฮะ,
ขอกาหนดของปญหาขอกาหนดของปญหา ลกษณะของขอมลขาเขา (input) ( p )
ผลลพธท ตองการ
ต.ย. : ปญหาตวหมมาก (majority problem) input : ขอมลจานวน n ตว input : ขอมลจานวน n ตว output : คน TRUE เมอมขอมลทมคาซากนเกน n/2
: ไมเชนนน คน FALSE: ไมเชนนน คน FALSE
1 4 3 3 3 1 3problem
ตวหมมากคอ 3 TRUEproblem instanceinput instance
1 4 7 3 3 1 2
ไมมตวหมมาก FALSE
SortingSorting
Input Outputp p
Median and SelectionMedian and Selection
k = 10
Input Outputp p
Minimum Spanning TreeMinimum Spanning Tree
Input Outputp p
Traveling Salesman ProblemTraveling Salesman Problem
Input Outputp p
Convex HullConvex Hull
Input Outputp p
Bin PackingBin Packing
Input Outputp p
Primality TestingPrimality Testing
8338169264555846052842102071 NO
Input Outputp p
FactoringFactoring
179424673 2038074743
22801763489=
8338169264555846052842102071=
8338169264555846052842102071
Input Outputp p
String MatchingString Matching
You are the fairest of your sex You are the fairest of your sexYou are the fairest of your sex,
Let me be your hero;
You are the fairest of your sex,
Let me be your hero;
I love you as one over x,
As x approaches zero.
I love you as one over x,
As x approaches zero.pp
Positively.
pp
Positively.
you
Input Outputp p
Approximate String MatchingApproximate String Matching
You are the fairest of your sex You are the fairest of your sexYou are the fairest of your sex,
Let me be your hero;
You are the fairest of your sex,
Let me be your hero;
I love you as one over x,
As x approaches zero.
I love you as one over x,
As x approaches zero.pp
Positively.
pp
Positively.
heero
Input Outputp p
SatisfiabilitySatisfiability
YES))(( yxyx ))(( yyx = true
NOxyxyx ))(( NOxyxyx ))((
Input Outputp p
HaltingHaltingx = 7
YESwhile (x > 1) {if (x is even) YES then x = x/2else x = 3x+1
}
x = 7
while (x 1) {if (x is even)
x 7
if (x is even)
then x = x/2else x = 3x+1
NO
Input Output}
p p
ขนตอนการออกแบบอลกอรทมขนตอนการออกแบบอลกอรทม
เร ม
เรม
มปญหา
หาวธแกไขหาวธแกไข
ยอมรบ หมด ปรบขอกาหนดN YN
ได ? หวง?ร นของปญหา
Y
จบ
Y
อลกอรทม อลกอรทม (Algorithm)(Algorithm) ลาดบการทางานเชงคานวณซงแปลงตวอยางขอมลขาเขาของปญหา ไปเปนผลลพธท ตองการ
n, mไปเปนผลลพธทตองการ
ข นตอนวธการแกไขปญหาดวย
m > 0คอมพวเตอร
GCD( n, m ) { t เศษของ
YGCD( n, m ) {while ( m > 0 ) {t = n mod m
t เศษของ n m
n = mm = t n m
m t}return n Euclid
Algorithm} nAlgorithm
อลกอรทมการหารากท อลกอรทมการหารากท 3 3 โดยใชเครองคดเลขถก ๆ ทมป มหารากทสอง 1
กดจานวนทตองการหารากท 3
กดปมหารากทสอง 1 คร ง ลวกดปมคณ
2x 11 กดปมหารากทสอง 1 ครง แลวกดปมคณ
กดป มหารากทสอง 2 คร ง แลวกดป มคณ
22
1121
x
กดป มหารากทสอง 4 คร ง แลวกดป มคณ
ป 8 ป
42 2
11211
21
x กดป มหารากทสอง 8 ครง แลวกดป มคณ
...
x
842 2
11211
211
21
ทาเชนนจนกระท งเมอกดป มรากทสองแลวได 1 เสมอ
ป ป
2222x
หลงกดป มคณครงสดทาย กดป มรากทสองอกครงจะไดคาตอบ 1111111111
...
21
21
21
21
23 168422
xx
ตวหมมากตวหมมาก : : นบแตละตววามกตวนบแตละตววามกตว1 4 3 3 3 1 3 นบ 1 ม 2 ตว
4 1 นบ 4 ม 1 ตวนบ 3 ม 4 ตว true
1 4 7 3 3 1 2 นบ 1 ม 2 ตวนบ 4 ม 1 ตวนบ 7 ม 1 ตวนบ 3 ม 2 ตวhasMajority( d[1..n] ) { นบ 3 ม 2 ตวนบ 3 ม 2 ตวนบ 1 ม 2 ตว
j y( [ ] ) {for (i = 1; i <= n; i++) {
c = 0;f (j 1 j < j++) นบ 1 ม 2 ตว
นบ 2 ม 1 ตว falsefor (j = 1; j <= n; j++)if (d[i] == d[j]) c++
if (c > n/2) return TRUE( / )}return FALSE
}}
อลกอรทมอลกอรทม ตองหาผลลพธท ถกตอง ในเวลาอนจากดใหกบขอมลขาเขาทกรปแบบของปญหา
เราตองการอลกอรทมท เราตองการอลกอรทมททางานถกตองทางานไดรวดเรวมประสทธภาพใช ใชหนวยความจานอย ๆทาความเขาใจไดงาย
กลวธการออกแบบอลกอรทมกลวธการออกแบบอลกอรทมBrute force
Divide and ConquerDynamic ProgrammingDynamic Programming
Greedy Algorithmy gState-Space Search
Randomized AlgorithmRandomized AlgorithmApproximation Algorithm
...
ขนตอนการออกแบบอลกอรทมขนตอนการออกแบบอลกอรทม
เร ม
เรม
มปญหา
หาวธแกไข
ยอมรบ หมด ปรบขอกาหนดN YยอมรบN
ได ? หวง?ร นของปญหา
Y
ยอมรบได ?
จบ
Y
เวลาการทางานเวลาการทางาน
รบไมได ชาไป
กรณอาเรยไมมตวหมมากกรณอาเรยไมมตวหมมาก
ตวหมมากตวหมมาก : sort + : sort + นบนบ1 4 3 3 3 1 3
นบ 1 ม 2 ตว1 1 3 3 3 3 4นบ 3 ม 4 ตว
1 1 3 3 3 3 4true
hasMajority( d[1..n] ) {sort( d );c = 0; i = 1for (j = 1; j <= n; j++)
if (d[i] == d[j]) {if (d[i] d[j]) {if (++c > n/2) return TRUE
} else {i = j; c = 1
}return FALSEreturn FALSE
}
เวลาการทางานเวลาการทางาน
แบบท 1แบบท 1
กรณอาเรยไมมตวหมมากกรณอาเรยไมมตวหมมาก
ตวหมมากตวหมมาก : sort + : sort + นบตวกลางนบตวกลางนบ 3 ม 4 ตว1 1 3 3 3 3 41 1 3 3 3 3 4
1 1 2 3 3 4 7 นบ 3 ม 2 ตว
hasMajority( d[1..n] ) {sort( d );c = 0; i = n/2; for (j = 1; j <= n; j++)for (j = 1; j <= n; j++)
if (d[i] == d[j]) c++if (c > n/2) return TRUEreturn FALSE
}
ตวหมมากตวหมมาก : sort + : sort + นบตวกลางนบตวกลางนบ 3 ม 4 ตว1 1 3 3 3 3 41 1 3 3 3 3 4
1 1 2 3 3 4 7 นบ 3 ม 2 ตว
hasMajority( d[1..n] ) {sort( d );c = 0; i = n/2for (j = i; j>=1 AND d[i]==d[j]; j--) c++for (j = i; j>=1 AND d[i]==d[j]; j--) c++for (j = i+1; j<=n AND d[i]==d[j]; j++) c++if (c > n/2) return TRUEreturn FALSE
}
ตวหมมากตวหมมาก : : สม สม + + นบนบ
สมได 4 นบ 4 ม 1 ตว1 4 7 3 3 1 2 สมได 4 นบ 4 ม 1 ตว1 4 7 3 3 1 2
1 4 3 3 3 1 3 สมได 3 นบ 3 ม 4 ตว1 4 3 3 3 1 3 สมได 3 นบ 3 ม 4 ตว
1 4 3 3 3 1 3 สมได 3 นบ 3 ม 4 ตว
1 4 3 3 3 1 3 สมได 1 นบ 1 ม 2 ตว
ตวหมมากตวหมมาก : : สม สม + + นบนบ hasMajority( d[1..n] ) {
0 i d (1 )c = 0; i = random(1, n)for (j = 1; j <= n; j++)
if (d[i] == d[j]) c++( [ ] [j]) cif (c > n/2) return TRUEreturn FALSE
} }
hasMajority( d[1 n] ) {โอกาสทของจรงมตวหมมากแตสมไมพบ < ½
hasMajority( d[1..n] ) {for (k = 1; k<=30; k++) {
c = 0; i = random(1, n)for (j = 1; j <= n; j++)if (d[i] == d[j]) c++
if (c > n/2) return TRUEif (c > n/2) return TRUE}return FALSE
} โอกาสทของจรงมตวหมมากแตสมไมพบ < (½)30
เปรยบเทยบเวลาการทางานเปรยบเทยบเวลาการทางาน
นบแตละตววามกตว
นบแตละตววามกตว
สม + นบ
กรณอาเรยมตวหมมากกรณอาเรยไมมตวหมมาก กรณอาเรยมตวหมมากกรณอาเรยไมมตวหมมาก
การวเคราะหเวลาการทางานการวเคราะหเวลาการทางาน Experimental Analysisp y
แปลงอลกอรทมเปนโปรแกรม สงทางานกบขอมลขาเขาหลาย ๆ แบบ สงทางานกบขอมลขาเขาหลาย ๆ แบบ จบเวลา วาดกราฟ หาความสมพนธของเวลากบปรมาณขอมล
Mathematical Analysis วเคราะหหาความสมพนธของจานวนคาสงททางาน วเครา หหาความสมพนธของจานวนคาสงททางานกบปรมาณขอมลทไดรบ
hasMajority( d[1 n] )
n
hasMajority( d[1..n] )for (i = 1; i <= n; i++)c = 0;
n
n
i 1
for (j = 1; j <= n; j++)if ( d[i] == d[j] ) c++
if (c > n/2) return TRUEj 1
1
i
n1
= n2
return FALSE
ขนตอนการออกแบบอลกอรทมขนตอนการออกแบบอลกอรทม
เร ม
เรม
มปญหา
หาวธแกไข
Nยอมรบ ปรบขอกาหนดYN
หมด ปรบขอกาหนดหมดได ?
Y
ร นของปญหาหวง?
ปรบขอกาหนดของปญหาหวง?
จบ
Y
Steiner TreeSteiner Treeจงวาดตนไมตอจดทงหลายใหม
ความยาวรวมของเสนเชอมทสนสด
n = 3n 3Simpson method (1750)ใชไดถามมภายใน 120o
ขอมลจานวนมาก ใชเวลานานขอมลจานวนมาก ใชเวลานาน
ใช GeoSteiner หาคาตอบของปญหาขนาด 532 ปม ใชเวลา 2.5 ชวโมง (ป ค.ศ. 1998)
http://www.diku.dk/hjemmesider/ansatte/martinz/geosteiner/
ปรบขอกาหนดปรบขอกาหนดSteiner tree Minimum Spanning tree
Steiner tree ชา
MinimumSpanning
Treeเรว
Tree
Length(MST) 2 Length(Steiner tree)
เปรยบเทยบผลเปรยบเทยบผล
ป โเปนชวโมง
สนกวา 10%
Steiner tree
เปนวนาท
Minimum Spanning Tree
ถาชา กใช ถาชา กใช CPU CPU เรวขนไมไดหรอ เรวขนไมไดหรอ ?? ได ในบางกรณ
เปลยนเครอง เปลยนภาษา เปลยน compiler เปลยนโปรแกรมแกรมเมอร กได แตไดในบางกรณเปลยนโปรแกรมแกรมเมอร กได แตไดในบางกรณ
ต.ย. t1(n) = 10-6n2 n คอปรมาณขอมล ต.ย. t1(n) 10 n n คอปรมาณขอมล
ถา CPU เรวขน 10 เทา 21
622
71122
1010
)()(
nn
ntnt
จะได t2(n) = t1(n)/10 ดวยเวลาเทาเดม CPU ใหม 12
12
10
1010
nn
nn
จะแกปญหาทมปรมาณขอมลเพมขนอก เทา
n 1000 2000 3000 4000 5000 6000 7000
16.310
n 1000 2000 3000 4000 5000 6000 7000t1(n) 10 40 90 160 250 360 490t ( ) 1 4 9 16 25 36 49t2(n) 1 4 9 16 25 36 49
ถาชา กใช ถาชา กใช CPU CPU เรวขนไมไดหรอ เรวขนไมไดหรอ ?? ต.ย. t1(n) = 10-102n n คอปรมาณขอมล1( )
ถา CPU เรวขน 32 เทา CPU ใ ป ป ดวยเวลาเทาเดม CPU ใหมจะแกปญหาทมปรมาณขอมล
เพมขนอกประมาณ 5 ตว !!!
2210
)()(
1010
1122
nn
ntnt
22
2log32log
)232(log2log1
12
n n
nn
121032
210 10
nn
n
12
222
52log32log 1
nnn
12 2322 nn n 40 45 50 55 100 200 300
t1(n) 1.11003 3.51004 1.11006 3.61007 1.31021 1.61051 2.01081
t2(n) 3.41001 1.11003 3.51004 1.11006 4.01019 5.01049 6.41079
4.01019 มลลวนาท หนงพนลานป !!!
ประสทธภาพของหนวยประมวลผลประสทธภาพของหนวยประมวลผล
Moore's Lawคอมพวเตอรแรงขน 2 เทาทก 18 เดอน
ถาชาถาชา ถา t(n) = 10-102n ( )
Moore's Law : อก 7.5 ป เรวขน 32 เทา แกปญหาไดขนาดเพมอกแค 5 !!! แกปญหาไดขนาดเพมอกแค 5 !!!
โดยท วไป ถาเวลาเปนฟงกชนแบบ exponential ของปรมาณขอมลตองเปลยนอลกอรทมตองเปลยนอลกอรทมตองเปลยนขอกาหนดของปญหา
AlAl--KhwariKhwarizzmi mi AlgorithmAlgorithm Abū Abdallāh Muḥammad ibn Mūsā al-Khwārizmīḥ
นกคณตศาสตร (ค.ศ. 780 – 850) เขยนหนงสอ "Al it i d I d " ( ) ป "Algoritmi de numero Indorum" (ภาษาลาตน) แปลวา"Al-Khwarizmi on the Hindu Art of Reckoning" (องกฤษ)
นาระบบจานวนทมเลขศนยมาใชในตะวนออกกลางและยโรป เสนอขนตอนอยางมระบบในการแกสมการเชงเสนและสมการ
กาลงสอง อนเปนทมาของพชคณต (algebra) ...
สรปสรป
เขาใจปญหาญ
รวธออกแบบอลกอรทมรวธออกแบบอลกอรทม
รวธวเคราะห