Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 12 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
12
Dung lượng
1,11 MB
Nội dung
Design and Analysis of Algorithms I Introduction on Why Study Algorithms? Why Study Algorithms? • important for all other branches of computer science Nextcore AI Gopal Shangari WHY STUDY ALGORITHMS? • important for all other branches of computer science • plays a key role in modern technological innovation Nextcore AI Gopal Shangari WHY STUDY ALGORITHMS? • important for all other branches of computer science • plays a key role in modern technological innova t i on – “Everyone knows Moore’s Law – a prediction made in 1965 by Intel co-‐ founder Gordon Moore that the density of transistors in integrated circuits would cont i nue to double every to years….in many areas, performance gains due to improvements in algorithms have vastly exceeded even the drama t i c performance gains due to increased processor speed.” • Excerpt from Report to the President and Congress: Designing a Digital Future, December 2010 (page 71) Nextcore AI Gopal Shangari WHY STUDY ALGORITHMS? • important for all other branches of computer science • plays a key role in modern technological innova t i on • provides novel “lens” on processes outside of computer science and technology – quantum mechanics, economic markets, evolution Nextcore AI Gopal Shangari WHY STUDY ALGORITHMS? • important for all other branches of computer science • plays a key role in modern technological innova t i on • provides novel “lens” on processes outside of computer science and technology • challenging Nextcore AI Gopal Shangari WHY STUDY ALGORITHMS? • important for all other branches of computer science • plays a key role in modern technological innova t i on • provides novel “lens” on processes outside of computer science and technology • challenging • fun Nextcore AI Gopal Shangari INTEGER MUTLIPLICATION Input : n digit numbers x and y Output : product x*y “Primitive Opera t i on” -‐ add or multiply single digit numbers Nextcore AI Gopal Shangari THE GRADE-‐SCHOOL ALGORITHM Roughly n opera t i ons per row up to a constant # of opera t i ons overall ~ constant* Nextcore AI Gopal Shangari THE ALGORITHM DESIGNER’S MANTRA “Perhaps the most important principle for the good algorithm designer is to refuse to be content.” -‐Ullman, The Design and Analysis of Computer Algorithms, 1974 CAN WE DO BETTER ? [ than the “obvious” method] Nextcore AI Gopal Shangari Recursive algorithm Write and Where a,b,c,d are n/2-‐ digit numbers [example: a=56, b=78, c=12, d=34] Then Idea : recursively compute ac, ad, bc, bd, then compute (* in the obvious way Nextcore AI Gopal Shangari Karatsuba Multiplication Recursively compute ac Recursively compute bd Recursively compute (a+b)(c+d) = ac+bd+ad+bc Gauss’ Trick : (3) – (1) – (2) = ad + bc Upshot : Only need recursive multiplications (and some additions) Q: which is the fastest algorithm ? Nextcore AI Gopal Shangari ... made in 19 65 by Intel co-‐ founder Gordon Moore that the density of transistors in integrated circuits would cont i nue to double every to years….in many areas, performance gains due to improvements... drama t i c performance gains due to increased processor speed.” • Excerpt from Report to the President and Congress: Designing a Digital Future, December 2 010 (page 71) Nextcore AI Gopal Shangari... up to a constant # of opera t i ons overall ~ constant* Nextcore AI Gopal Shangari THE ALGORITHM DESIGNER’S MANTRA “Perhaps the most important principle for the good algorithm designer is to