introduction to data structure and algorithm

53
Introduction to Data Structure and Algorithm บบบบบ 2 บบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบ

Upload: dean-contreras

Post on 03-Jan-2016

45 views

Category:

Documents


5 download

DESCRIPTION

Introduction to Data Structure and Algorithm. บทที่ 2 ความรู้เบื้องต้นเกี่ยวกับโครงสร้างข้อมูล และขั้นตอนวิธี. วัตถุประสงค์เพื่อ. เข้าใจหลักนามธรรมที่มุ่งเน้นการแก้ไขปัญหาด้วยการตัดทอนสิ่งซับซ้อนปลีกย่อยที่ไม่จำเป็นออกไป - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Introduction to Data Structure and Algorithm

Introduction to Data Structure and Algorithm

บทท�� 2 ความรู้�เบ �องต้�นเกี่��ยวกี่�บโครู้งสรู้�างข้�อมลและข้��นต้อนว�ธี�

Page 2: Introduction to Data Structure and Algorithm

ว�ต้ถุ�ปรู้ะสงค!เพื่ �อ• เข้�าใจหลักนามธรรมที่��ม��งเน�นการแก�ไข้ปั�ญหาด้�วยการตัด้ที่อนสิ่ �งซับซั�อนปัลั�กย�อยที่��ไม�จ#าเปั$นออกไปั

• บอกรายลัะเอ�ยด้ที่�วไปัข้องซั&โด้โค้�ด้ รวมถึ*งสิ่ามารถึเข้�ยนซั&โด้โค้�ด้ที่��ค้รบองค้+ปัระกอบได้�

• บอกค้วามหมายข้องชน ด้ข้�อม&ลันามธรรมได้�• เห-นค้วามสิ่#าค้ญตั�อการว เค้ราะห+ปัระสิ่ ที่ธ ภาพข้องอลักอร ที่*ม• บอกปัระสิ่ ที่ธ ภาพข้องลั&ปัชน ด้ตั�างๆ ที่��น#าไปัใช�งานในโปัรแกรมได้�

• เข้�าใจค้วามหายข้องสิ่ญลักษณ์+บ 3กโอ แลัะสิ่ามารถึน#าไปัปัระย�กตั+ใช�เพ4�อการว เค้ราะห+ปัระสิ่ ที่ธ ภาพข้องอลักอร ที่*ม

Page 3: Introduction to Data Structure and Algorithm

หั�วข้�อท��บรู้รู้ยาย• หลักนามธรรม• อลักอร ที่*มกบค้วามเปั$นนามธรรมโด้ยธรรมชาตั • ซั&โด้โค้�ด้• การสิ่ร�างปัระโยค้ค้#าสิ่�ง• ค้วามร& �เก��ยวกบชน ด้ข้�อม&ลันามธรรม• การวด้ผลัอลักอร ที่*ม• ปัระสิ่ ที่ธ ภาพข้องอลักอร ที่*ม• สิ่ญลักษณ์+บ 3กโอ• ตัวอย�างการว เค้ราะห+บ 3กโอ

Page 4: Introduction to Data Structure and Algorithm

1. หัล�กี่นามธีรู้รู้ม (Abstraction)

หลักนามธรรมจะที่#าให�ที่�กสิ่ �งในโลักแห�งค้วามเปั$น จร งด้&ง�ายด้ายข้*6น ด้�วยการพ จารณ์าบางสิ่ �งแยกออกจาก

ค้วามเปั$นจร งข้องสิ่ �งเหลั�าน6นโด้ยอธ บายว�าสิ่ �งสิ่ �งน6นที่#า อะไร ไม�ตั�องม��งเน�นในรายลัะเอ�ยด้ว�าตั�องที่#างานอย�างไร

ด้งน6นการค้ ด้ด้�วยหลักนามธรรมน�6 จ*งที่#าให�เราสิ่ามารถึค้ ด้ว ธ�การแก�ไข้ปั�ญหาด้�วยการตัด้ที่อนสิ่ �งที่��ซับ

ซั�อน หร4อรายลัะเอ�ยด้ปัลั�กย�อยที่��ไม�จ#าเปั$นออกไปัได้�

Grady Booch กลั�าวว�า.. “Abstraction เปั$นหน*�งในแนวที่างพ46นฐาน”ข้องมน�ษย+ที่��ใช�สิ่#าหรบจด้การกบค้วามซับซั�อน

Page 5: Introduction to Data Structure and Algorithm

2. อ�ลกี่อรู้�ท$มกี่�บความเป%นนามธีรู้รู้มโดยธีรู้รู้มชาต้�

• อลักอร ที่*มสิ่ามารถึที่#าให�เปั$นร&ปัธรรมได้�ด้�วยการผ�าน“ ต้�วแทน (Representation)” เร4�องราวในนวน ยาย ถึ4อเปั$นนามธรรม หร4อแนวค้ ด้ หนงสิ่4อ ค้4อตัวแที่นที่างกายภาพข้องนวน ยาย

• อลักอร ที่*ม ก-ค้4อกระบวนการที่��น#าไปัใช�สิ่ร�างโปัรแกรม เพ4�อที่#างานแลัะแก�ไข้ปั�ญหาตัามที่��เราตั�องการ

• ตัวแที่นก-ค้4อโปัรแกรมที่��ได้�รบการพฒนาข้*6นจากอลักอร ที่*มน6น หร4อกลั�าวอ�กนยหน*�งก-ค้4อ

โปัรแกรม ค้4อตัวแที่นข้องอลักอร ที่*ม โปัรเซัสิ่ ค้4อก จกรรมที่��เอ-กซั�ค้ วตั+อลักอร ที่*มน6น

Page 6: Introduction to Data Structure and Algorithm

3. ซูโดโค�ด (Pseudo Code)

• ซั&โด้โค้�ด้ม�ร&ปัแบบค้ลั�ายปัระโยค้ภาษาองกฤษ ที่��ใช�อธ บายรายลัะเอ�ยด้การพฒนาอลักอร ที่*ม

• ซั&โด้โค้�ด้ใช�สิ่#าหรบออกแบบการที่#างานแลัะตัรรกะ ข้องโปัรแกรมที่��สิ่ร�างข้*6น ด้งน6นซั&โด้โค้�ด้จ*งไม�

สิ่ามารถึน#าไปัเอ-กซั�ค้ วตั+บนค้อมพ วเตัอร+ได้� โด้ยตัรง แลัะจะออกแบบเพ4�อน#าไปัพฒนาเปั$น

โปัรแกรมจร งตั�อไปั• ซั&โด้โค้�ด้ไม�ข้*6นกบภาษาค้อมพ วเตัอร+ภาษาใด้ภาษา

หน*�ง แตั�สิ่ามารถึแปัลังเปั$นภาษาค้อมพ วเตัอร+ เช�น ภาษา PASCAL, C++ หร4อ JAVA ได้�ง�าย

Page 7: Introduction to Data Structure and Algorithm

3. ซูโดโค�ด (Pseudo Code)

• การเข้�ยนซั&โด้โค้�ด้จะเข้�ยนม��งเน�นปัระโยค้ก จกรรม ที่��ใช�ในการเอ-กซั�ค้ วตั+โปัรแกรมเปั$นสิ่#าค้ญ โด้ย

สิ่ามารถึสิ่ร�างปัระโยค้ค้#าสิ่�งแบบเร�ยงลั#าด้บ ก#าหนด้ที่างเลั4อก แลัะการที่#างานเปั$นรอบ

Page 8: Introduction to Data Structure and Algorithm

ต้�วอย)างซูโดโค�ดAlgorithm sample (pageNumber)This algorithm reads a file and prints a report. Pre pageNumber passed by reference Post Report Printed

pageNumber contains number of pages in report Return Number of lines printed1 Loop (not end of file) 1 read file 2 if (full page) 1 increment page number 2 write page heading 3 end if 4 write report line 5 increment line count2 end loop3 return line countend sample

Page 9: Introduction to Data Structure and Algorithm

ส)วนปรู้ะกี่อบข้องอ�ลกี่อรู้�ท$ม• สิ่�วนหวข้องอลักอร ที่*ม• จ�ด้ปัระสิ่งค้+ เง4�อนไข้ แลัะการร�เที่ ร+นค้�า• เลัข้ลั#าด้บปัระโยค้ค้#าสิ่�ง• ตัวแปัร

Page 10: Introduction to Data Structure and Algorithm

ส)วนหั�วข้องอ�ลกี่อรู้�ท$ม• เร�ยกที่บศัพที่+ว�า เฮด้เด้อร+ (Header)• ก#าหนด้ช4�ออลักอร ที่*ม• อธ บายรายลัะเอ�ยด้ข้องพาราม เตัอร+ (Parameters)• เง4�อนไข้ก�อน (Preconditions) แลัะเง4�อนไข้หลัง

(Postconditions)

Page 11: Introduction to Data Structure and Algorithm

• อธ บายเร4�องที่�วไปัข้องการปัระมวลัในอลักอร ที่*ม น6น แตั�ไม�ได้�อธ บายรายลัะเอ�ยด้ที่6งหมด้ข้อง

กระบวนการว�าที่#างานอย�างไร• ในกรณ์�ที่��ไม�ม�เง4�อนไข้ก�อน สิ่ามารถึเข้�ยนให�อย&�ใน

ร&ปัแบบ ด้งน�6

• ตัวอย�างการก#าหนด้รายลัะเอ�ยด้ในเฮด้เด้อร+

จุ�ดปรู้ะสงค! เง �อนไข้ และกี่ารู้รู้�เท�รู้!นค)า

Pre nothing

Algorithm search (list, argument, location)Search array for specific item and return index location.Pre list contains data array to be searched

argument contains data to be located in listPost location contains matching index

-or- undetermined if not foundReturn true if found, false if not found

Page 12: Introduction to Data Structure and Algorithm

เลข้ล,าด�บปรู้ะโยคค,าส��ง• ปัระโยค้ค้#าสิ่�งจะม�เลัข้ลั#าด้บก#ากบไว� ซั*�งจะใช�เลัข้

ที่ศัน ยม ด้�วยการลั#าด้บหมายเลัข้เพ �มข้*6นที่�ลัะหน*�ง ภายในโค้รงสิ่ร�างข้องบลั-อกน6นๆ

• ตัวอย�าง เช�น จากอลักอร ที่*ม Sample – เลัข้ลั#าด้บ 1.1 ค้4อปัระโยค้ค้#าสิ่�ง read file– เลัข้ลั#าด้บ 1.2.2 ค้4อปัระโยค้ค้#าสิ่�ง write page heading

Page 13: Introduction to Data Structure and Algorithm

ต้�วแปรู้ (Variables)

• ไม�ค้วรตั6งช4�อตัวแปัรด้�วยอกข้ระเพ�ยงตัวเด้�ยว เช�น A, B, C ยกเว�นตัวแปัรในการก#าหนด้ลั&ปั สิ่�วนใหญ�ใช�ตัวแปัร i แลัะ j

แตั�หากหลั�กเลั��ยงได้�ก-จะด้� เช�น– ตั�องการค้�นหาข้�อม&ลัในอาร+เรย+สิ่องม ตั โด้ยแตั�ลัะแถึวใช�แที่น

นกศั*กษา แลัะแตั�ลัะค้อลัมน+ใช�แที่นค้ะแนนที่ด้สิ่อบ ด้งน6นตัวแปัรที่�� ใช�แที่นตัวช�6ตั#าแหน�งแถึวแลัะค้อลัมน+ค้วรใช� student แลัะ score จะ

สิ่4�อค้วามหมายได้�ด้�กว�า• ไม�ค้วรใช�ค้#าที่�วไปัที่��ม�ค้วามหมายเฉพาะ (Generic Names)

เช�น count, sum, total, row, column, file เปั$นตั�น ถึ�า ตั�องการตัวแปัรที่��เก-บจ#านวนนกศั*กษา อาจก#าหนด้ตัวแปัรว�า

studentCount หร4อ numberOfStudent ด้�กว�าช4�อ count

Page 14: Introduction to Data Structure and Algorithm

ต้�วแปรู้ (Variables)

• หากจ#าเปั$นตั�องใช�ค้#าย�อก-ค้วรตั6งช4�อให�สิ่4�อค้วาม หมายได้�ด้� เช�น stdCnt ใช�แที่น studentCount หร4อ

numOfStd ใช�แที่น numberOfStudent ไม�ค้วรใช� noStd เพราะอาจตั�ค้วามหมายว�า noStudent ที่��

หมายถึ*งไม�ม�นกศั*กษา

Page 15: Introduction to Data Structure and Algorithm

4. กี่ารู้สรู้�างปรู้ะโยคค,าส��ง• แบบเร�ยงลั#าด้บ (Sequence)• แบบเลั4อกการที่#างาน (Selection)• แบบที่#างานซั#6า (Repetition/Loop)

Page 16: Introduction to Data Structure and Algorithm

ต้�วอย)างผั�งงาน

Page 17: Introduction to Data Structure and Algorithm

ต้�วอย)างผั�งงาน

Page 18: Introduction to Data Structure and Algorithm

ต้�วอย)างอ�ลกี่อรู้�ท$มAlgorithm deviation

Pre nothingPost average and numbers with their deviation printed1 loop (not end of file)

1 read number into array2 add number to total3 increment count

2 end loop3 set average to total/count4 print average5 loop (not end of array)

1 set devFromAve to array element-average2 print array element and devFromAve

6 end loopend deviation

Page 19: Introduction to Data Structure and Algorithm

5. ความรู้�เกี่��ยวกี่�บชน�ดข้�อมลนามธีรู้รู้ม

• ข้�อม&ลัเช งเด้��ยวแลัะข้�อม&ลัเช งปัระกอบ• ชน ด้ข้�อม&ลั• โค้รงสิ่ร�างข้�อม&ลั• ชน ด้ข้�อม&ลันามธรรม

Page 20: Introduction to Data Structure and Algorithm

ข้�อมลเช�งเด��ยวและข้�อมลเช�งปรู้ะกี่อบ

• ข้�อม&ลัเช งเด้��ยว (Atomic Data) ค้4อข้�อม&ลัที่��ปัระกอบด้�วยค้�าเด้�ยวที่��ไม�สิ่ามารถึแบ�งสิ่�วนข้�อม&ลัน�6

ออกไปัเพ4�อสิ่4�อค้วามหมายได้�อ�ก เช�น เลัข้จ#านวน เตั-ม 4562 เปั$นตั�น

• ข้�อม&ลัเช งปัระกอบ (Composite Data) โด้ยข้�อม&ลัเช งปัระกอบน6นสิ่ามารถึที่��จะที่#าการแตักออกเปั$น

ฟิ>ลัด้+ย�อย (Subfields) แลัะสิ่ �งที่��แตักออกไปัก-ยงม� ค้วามหมายด้�วย เช�น หมายเลัข้โที่รศัพที่+ที่��เปั$น

ตัวเลัข้ลั�วนๆ ค้4อ ตัวเลัข้ 3 ตัวแรกเปั$นรหสิ่จงหวด้ สิ่�วนที่��เหลั4อค้4อเบอร+หมายเลัข้ เปั$นตั�น

Page 21: Introduction to Data Structure and Algorithm

ชน�ดข้�อมล (Data Type)Type Values Operations

Integer ++, --, …

Floating Point …

Character

Page 22: Introduction to Data Structure and Algorithm

โครู้งสรู้�างข้�อมล (Data Structure)

• โค้รงสิ่ร�างข้�อม&ลั ค้4อการรวมกนข้องข้�อม&ลัเช งเด้��ยวแลัะข้�อม&ลัเช งปัระกอบเข้�าด้�วยกนเปั$นก

ลั��มพร�อมกบการก#าหนด้ค้วามสิ่มพนธ+ ซั*�งรวมไปั ถึ*งว ธ�การเพ �มข้�อม&ลัใหม� การน#าข้�อม&ลัที่��เก-บไว�ออก

การเด้ นสิ่#ารวจข้�อม&ลัที่��เก-บไว� แลัะการค้�นหาข้�อม&ลั• ปัระเภที่ข้องโค้รงสิ่ร�างข้�อม&ลัแยกตัามการจด้เก-บข้�อม&ลั แบบเช งเสิ่�น (Linear) แบบไม�เปั$นเช งเสิ่�น (Non Linear)

Page 23: Introduction to Data Structure and Algorithm

โครู้งสรู้�างข้�อมลแบบเช�งเส�นการจด้เก-บข้�อม&ลัเร�ยงตั�อกนไปัที่�ลัะตัวในแนว

เด้�ยวกน ให�ข้�อม&ลัที่6งหมด้เร�ยงอย&�ในแนวเสิ่�นตัรง เด้�ยวกน จากข้�อม&ลัตัวแรกไปัถึ*งข้�อม&ลัตัวสิ่�ด้ที่�าย หร4อก-ค้4อ ข้�อม&ลัแตั�ลัะตัวจะม�ข้�อม&ลัที่��อย&�ถึด้ไปัเพ�ยง

1 ตัวเที่�าน6น• อาร+เรย+ (Array)• สิ่แตัค้ (Stack)• ค้ ว (Queue)• ลั งก+ลั สิ่ตั+ (Linked List)

Page 24: Introduction to Data Structure and Algorithm

โครู้งสรู้�างข้�อมลแบบไม)เช�งเส�น• โค้รงสิ่ร�างข้�อม&ลัแบบน�6จะไม�ม�ข้�อจ#ากด้ในเร4�องการน#าข้�อม&ลัเข้�า- ออกจากโค้รงสิ่ร�างข้�อม&ลั

เน4�องจากข้�อม&ลัไม�ได้�เร�ยงตั�อกนเปั$นแนวเด้�ยวกนที่#าให�สิ่ามารถึน#าข้�อม&ลัเข้�าแลัะออกจากตั#าแหน�งใด้ๆก-ได้�– โค้รงสิ่ร�างข้�อม&ลัที่��ไม�ม�ลั#าด้บข้องข้�อม&ลั ได้�แก� เซัตั ตัารางแฮช

– โค้รงสิ่ร�างข้�อม&ลัที่��ม�ลั#าด้บข้องข้�อม&ลั ได้�แก� ที่ร� กราฟิ

Page 25: Introduction to Data Structure and Algorithm

ชน�ดข้�อมลนามธีรู้รู้ม (ADT : Abstract Data Type)

ADT ไม�ใช�โค้รงสิ่ร�างข้�อม&ลั แตั�เปั$นระด้บ แนวค้ ด้ ซั*�งเปัร�ยบเสิ่ม4อนกบภาษากลัางที่��ใช�น ยาม

โค้รงสิ่ร�างข้�อม&ลัโด้ยไม�ข้*6นกบสิ่ถึาปั�ตัยกรรมใด้ๆการน ยามด้งกลั�าวม�วตัถึ�ปัระสิ่งค้+เพ4�อถึ�ายที่อด้แลัะน#าเสิ่นอโค้รงสิ่ร�างข้�อม&ลัให�ผ&�อ4�นเก ด้ค้วามเข้�าใจตัรง

กน ปัระกอบด้�วย 2 สิ่�วนที่��สิ่#าค้ญ ค้4อ สิ่�วนที่��น ยามโค้รงสิ่ร�างข้�อม&ลั สิ่�วนน ยามฟิ�งก+ช �นที่��ใช�จด้การกบโค้รงสิ่ร�างข้�อม&ลั

Page 26: Introduction to Data Structure and Algorithm

ความส�มพื่�นธี!ข้องชน�ดข้�อมล Logical & Physical

Page 27: Introduction to Data Structure and Algorithm

กี่ารู้สรู้�าง ADT

• Declaration of data• Declaration of operations• Encapsulation of data and operations

Page 28: Introduction to Data Structure and Algorithm

พื่อยน!เต้อรู้!ท��ซู)อนกี่ารู้ท,างานอย)ภายในโครู้งสรู้�าง

Page 29: Introduction to Data Structure and Algorithm

ต้�วอย)างโครู้งสรู้�างข้�อมล Queue ADT

• ด้&ในเอกสิ่ารปัระกอบ (ไฟิลั+ปัระกอบ)

Page 30: Introduction to Data Structure and Algorithm

6. กี่ารู้ว�ดผัลอ�ลกี่อรู้�ท$ม ข้นาดข้องอ�นพื่�ต้ (Input

Size) เวลาท��ใช�ในกี่ารู้ท,างานเพื่ �อจุ�ดเรู้�ยงช�ดต้�วเลข้ (Running Time)

10 ต้�ว 2 ว�นาท�

100 ต้�ว 2.1 ว�นาท�

1,000 ต้�ว 1 นาท�

10,000 ต้�ว 15 นาท�

T(n) = จุ,านวนเวลาท��ใช�ในกี่ารู้ท,างานเพื่ �อจุ�ดเรู้�ยง ช�ดข้�อมล n ต้�ว

T(n) = O(n)

Page 31: Introduction to Data Structure and Algorithm

กี่รู้าฟเปรู้�ยบเท�ยบเวลาในกี่ารู้ท,างาน

A B C D E F G0

1

2

3

4

5

6

Column1

Worst-case

Average-case ?

Best-case

Time (T) ms

Input (n)

Page 32: Introduction to Data Structure and Algorithm

ค�ณสมบ�ต้�ข้องอ�ลกี่อรู้�ท$มท��ด�• อลักอร ที่*มที่��ด้�ตั�องม�ค้วามถึ&กตั�อง (Correctness)• อลักอร ที่*มที่��ด้�ตั�องง�ายตั�อการอ�าน (Readability)• อลักอร ที่*มที่��ด้�ตั�องสิ่ามารถึปัรบปัร�งได้�ง�ายใน

อนาค้ตั (Ease of Modification)• อลักอร ที่*มที่��ด้�สิ่ามารถึน#ากลับมาใช�ใหม�ได้�

(Reusability)• อลักอร ที่*มที่��ด้�ตั�องม�ปัระสิ่ ที่ธ ภาพ (Efficiency)

Page 33: Introduction to Data Structure and Algorithm

ป2จุจุ�ยท��ท,าใหั�อ�ลกี่อรู้�ท$มม�ปรู้ะส�ทธี�ภาพื่

• เวลัาที่��ใช�ในการที่#างาน (Running Time)• หน�วยค้วามจ#าที่��ใช�งาน (Memory Requirement)• เวลัาที่��ใช�ในการค้อมไพลั+โปัรแกรม (Compile

Time)• เวลัาที่��ใช�ในการตั ด้ตั�อสิ่4�อสิ่าร (Communication

Time)

Page 34: Introduction to Data Structure and Algorithm

ป2จุจุ�ยส)งเสรู้�มอ �นๆ• ค้วามเร-วข้องเค้ร4�องค้อมพ วเตัอร+• อลักอร ที่*มที่��ออกแบบเพ4�อใช�งานสิ่#าหรบงานน6นๆ• ปัระสิ่ ที่ธ ภาพข้องค้อมไพเลัอร+• ม�ช�ด้ค้#าสิ่�งอะไรบ�างที่��สิ่ �งให�ค้อมพ วเตัอร+ที่#า• ข้นาด้ข้องหน�วยค้วามจ#าในค้อมพ วเตัอร+• ข้นาด้ข้องอ นพ�ตัม�ปัร มาณ์มากน�อยเพ�ยงไร

Page 35: Introduction to Data Structure and Algorithm

7. ปรู้ะส�ทธี�ภาพื่ข้องอ�ลกี่อรู้�ท$ม• ปัระสิ่ ที่ธ ภาพข้องอลักอร ที่*มแที่นด้�วยฟิ�งก+ช �น

• ลั&ปัแบบเช งเสิ่�น• ลั&ปัแบบลัอการ ธม ค้• ลั&ปัแบบซั�อน• ลั&ปัแบบซั�อนชน ด้ลัอการ ธม ค้เช งเสิ่�น• ลั&ปัแบบซั�อนชน ด้ก#าลังสิ่อง• ลั&ปัแบบซั�อนก#าลังสิ่องชน ด้ข้*6นตั�อกน

f(n) = efficiency

Page 36: Introduction to Data Structure and Algorithm

ลปแบบเช�งเส�น (Linear Loops)

• เพ �มค้�าด้�วยการบวกหร4อลัด้ค้�าด้�วยการลับภายใน ลั&ปัแบบค้งที่�� จนกระที่�งค้รบจ#านวนรอบ

• f(n) = n

• f(n) = n/2

for (i = 0; i < 1000; i++) application code

for (i = 0; i < 1000; i += 2) application code

Page 37: Introduction to Data Structure and Algorithm

ลปแบบลอกี่ารู้�ธีม�ค (Logarithmic Loops)

• เพ �มค้�าหร4อลัด้ค้�าภายในลั&ปัสิ่องเที่�าตัวด้�วยการ ค้&ณ์ (เพ �มค้�าสิ่องเที่�า) หร4อการหาร (ลัด้ค้�าสิ่องเที่�า)

• multiply 2Iterations <= 1000• divide 1000/2Iterations >= 1 • f(n) = [logn] หร4อ [log2n]

Multiply Loops

for (i = 1; i <= 1000; i *= 2) application code

Divide Loops

for (i = 1000; i >= 1; i /= 2) application code

Page 38: Introduction to Data Structure and Algorithm

ลปแบบซู�อน (Nested Loops)

• ภายในลั&ปัจะม�ลั&ปัซั�อนอ�กลั&ปัหน*�ง

• สิ่ามารถึแบ�งออกเปั$น 3 ร&ปัแบบย�อย– Linear Logarithmic– Quadratic– Dependent Quadratic

Iterations = outer loop iterations x inner loop iterations

Page 39: Introduction to Data Structure and Algorithm

ลปแบบซู�อนชน�ดลอกี่ารู้�ธีม�คเช�งเส�น(Linear Logarithmic)

• ลั&ปัช6นในเพ �มค้�าเปั$นสิ่องเที่�าด้�วยการค้&ณ์ ในข้ณ์ะที่��ลั&ปัช6นนอกจะเปั$นแบบเช งเสิ่�นที่��ม�การเพ �มค้�าที่�ลัะหน*�งในลักษณ์ะค้งที่��

• 10log10• f(n) = nlogn

for (i = 0; i < 10; i++) for (j = 1; j <= 10; j *= 2) application code

Page 40: Introduction to Data Structure and Algorithm

ลปแบบซู�อนชน�ดกี่,าล�งสอง(Quadratic)

• แตั�ลัะลั&ปัจะที่#าการเอ-กซั�ค้ 6วตั+ในจ#านวนรอบที่��เที่�ากน

• f(n) = n2

for (i = 0; i < 10; i++) for (j = 1; j < 10; j++) application code

Page 41: Introduction to Data Structure and Algorithm

ลปแบบซู�อนกี่,าล�งสองชน�ดข้$�นต้)อกี่�น(Dependent Quadratic)

• จ#านวนรอบการที่#างานข้องลั&ปัช6นในจะข้*6นอย&�กบลั&ปั ช6นนอก

• 1 + 2 + 3 + … + 9 + 10 = 55•

for (i = 0; i < 10; i++) for (j = 0; j < i; j++) application code

Page 42: Introduction to Data Structure and Algorithm

8. ส�ญล�กี่ษณ!บ�6กี่โอ (Big-O Notation)

• อตัราการเตั บโตัข้องฟิ�งก+ช �น (Growth Rates) พ จารณ์าปั�จจยข้องข้นาด้

• Big-O มาจาก Order of Magnitude• อตัราการเตั บโตัข้องฟิ�งก+ช �นจะน#าไปัใช�พ จารณ์า

ค้วามซับ (Complexity) ข้องอลักอร ที่*ม โด้ยหาก จ#านวนข้�อม&ลั (n) ม�ปัร มาณ์มากแลั�ว จะสิ่�งผลัตั�อ

การเปัลั��ยนแปัลังด้�านเวลัาข้องอลักอร ที่*มน6นอย�างไร

Page 43: Introduction to Data Structure and Algorithm

ต้ารู้างแสดงความแต้กี่ต้)างข้องอ�ต้รู้ากี่ารู้เต้�บโต้ในแต้)ละฟ2งกี่!ช��น

O(f(n)) f(50) f(100)O(logn) 5.64 6.64

O(n) 50 100O(nlogn) 282 664

O(n2) 2500 10,000O(n3) 12,500 100,000O(2n) 1.126 x 1015 1.27 x 1030

O(n!) 3.0 x 1064 9.3 x 10157

Page 44: Introduction to Data Structure and Algorithm

ซูโดโค�ดกี่ารู้ค,านวณคะแนนเฉล��ย1 set sum to zero2 set i to zero3 dowhile i < n

1 add 1 to i2 add score(i) to sum

4 enddo5 compute mean = sum / n

Page 45: Introduction to Data Structure and Algorithm

แนวทางในกี่ารู้หัาบ�6กี่โอ• พ จารณ์าเพ�ยงเที่อมที่��ม�ค้�าเลัข้ยกก#าลังมากที่��สิ่�ด้

(Highest Exponent) เที่�าน6น• ตัด้เที่อมสิ่�วนที่��เปั$นค้�าค้งที่��แลัะตัวค้&ณ์ออกไปั• บ 3กโอไม�ได้�ม�จ�ด้ปัระสิ่งค้+เพ4�อวด้เวลัาการที่#างาน• บ 3กโอจะใช�อธ บายข้อบเข้ตัข้องฟิ�งก+ช �นการเตั บโตัที่างเวลัา

Page 46: Introduction to Data Structure and Algorithm

เกี่ณฑ์!ว�ดผัลปรู้ะส�ทธี�ภาพื่ข้องบ�6กี่โอกี่�บฟ2งกี่!ช��นต้)างๆ

Efficiency Big-O Iterations Running TimeLogarithmic O(logn) 14 ระด้บไมโค้รว นาที่�Linear O(n) 10,000 ระด้บว นาที่�Linear Logarithmic O(n(logn)

)140,000 ระด้บว นาที่�

Quadratic O(n2) 10,0002 ระด้บนาที่�Polynomial O(nk) 10,000k ระด้บช�วโมงExponential O(cn) 210,000 มากจนยากตั�อการ

ระบ�ได้�แน�ชด้Factorial O(n!) 10,000! มากจนยากตั�อการ

ระบ�ได้�แน�ชด้

Page 47: Introduction to Data Structure and Algorithm

แนวทางในกี่ารู้ว�ดผัลปรู้ะส�ทธี�ภาพื่• ข้นาด้ข้องอ นพ�ตั• ให�ลัะเลัยค้�าค้งที่��ที่��อย&�ในสิ่ภาพแวด้ลั�อมน6น• สิ่นใจเฉพาะกรณ์�เลัวร�ายสิ่�ด้เที่�าน6น (Worst-case)• มองข้�ามข้นาด้ข้องอ นพ�ตัที่��ม�จ#านวนน�อยๆ

Page 48: Introduction to Data Structure and Algorithm

9. ต้�วอย)างกี่ารู้ว�เครู้าะหั!บ�6กี่โอ• การบวกแมที่ร กซั+– Quadratic Loop– O(n2)

• การค้&ณ์แมที่ร กซั+– Cubic Loop– O(n3)

Page 49: Introduction to Data Structure and Algorithm

สรู้�ปท�ายบทท�� 2• กี่ารู้ค�ดด�วยหัล�กี่นามธีรู้รู้ม ที่#าให�เราสิ่ามารถึค้ ด้ว ธ�การแก�ไข้ปั�ญหาด้�วยการตัด้ที่อนสิ่ �งที่��ซับซั�อนหร4อ

รายลัะเอ�ยด้ปัลั�กย�อยที่��ไม�จ#าเปั$นออกไปั ที่#าให�ที่�กสิ่ �งในโลักแห�งค้วามเปั$นจร งด้&ง�ายด้ายข้*6นด้�วยการอธ

บายว�าสิ่ �งสิ่ �งน6นที่#าอะไร ไม�ตั�องม��งเน�นในรายลัะเอ�ยด้ว�าตั�องที่#างานอย�างไร

• ต้�วแทนในกี่ารู้น,าเสนออ�ลกี่อรู้�ท$ม ม�อย&�หลัาย ปัระเภที่ด้�วยกน เช�น ผงงาน หร4อซั&โด้โค้�ด้ แตั�ซั&โด้

โค้�ด้จด้เปั$นหน*�งในเค้ร4�องม4อที่��น ยมใช�ในการสิ่ร�า งอลักอร ที่*มมากกว�า โด้ยซั&โด้โค้�ด้ม�ร&ปัแบบค้ลั�าย ปัระโยค้ภาษาองกฤษ ม�ร&ปัแบบปัระโยค้ที่��เปั$น

โค้รงสิ่ร�างเพ4�อใช�อธ บายรายลัะเอ�ยด้การพฒนาอลักอร ที่*ม

Page 50: Introduction to Data Structure and Algorithm

สรู้�ปท�ายบทท�� 2• อ�ลกี่อรู้�ท$มค้4อข้6นตัอนว ธ�ที่��ใช�สิ่#าหรบแก�ไข้ปั�ญหาโด้ยสิ่ามารถึสิ่4�อออกมาในร&ปัแบบข้องภาษาพ&ด้หร4อ

ภาษาธรรมชาตั • กี่ารู้สรู้�างปรู้ะโยคค,าส��ง 3 ร&ปัแบบ• ข้�อมลเช�งเด��ยว ไม�สิ่ามารถึแบ�งสิ่�วนข้�อม&ลั• ข้�อมลปรู้ะกี่อบ สิ่ามารถึแตักออกเปั$นฟิ>ลัด้+ย�อยได้�• ชน�ดข้องข้�อมล ปัระกอบด้�วย 2 สิ่�วน ค้4อ กลั��ม

ข้องข้�อม&ลั แลัะโอเปัอเรช�น

Page 51: Introduction to Data Structure and Algorithm

สรู้�ปท�ายบทท�� 2• โครู้งสรู้�างข้�อมล ค้4อการรวมกนข้องข้�อม&ลัเช งเด้��ยวแลัะเช งปัระกอบเข้�าด้�วยกนเปั$นกลั��ม

พร�อมกบก#าหนด้ค้วามสิ่มพนธ+• ชน�ดข้�อมลนามธีรู้รู้ม ปัระกอบไปัด้�วยกลั��มปัระกาศัข้�อม&ลัที่��รวมกบตัวด้#าเน นการหร4อโอเปัอเรช�นเข้�าด้�วยกนที่#าให�เก ด้เปั$นร&ปัร�างข้องโค้รงสิ่ร�าง

• ปรู้ะส�ทธี�ภาพื่ข้องอ�ลกี่อรู้�ท$ม ปักตั โด้ยที่�วไปัมกถึ&กก#าหนด้มาในร&ปัแบบข้องฟิ�งก+ช �นด้�วยการพ จารณ์าจากจ#านวนข้องอ ลั เมนตั+ที่��ถึ&กโปัรเซัสิ่แลัะชน ด้ข้องลั&ปัที่��ใช�งาน

Page 52: Introduction to Data Structure and Algorithm

สรู้�ปท�ายบทท�� 2• Logarithmic Loop ค้4อ f(n) = logn• Linear Loop ค้4อ f(n) = n• Linear Logarithmic Loop ค้4อ f(n) = logn• Quadratic Loop ค้4อ f(n) = n2

• Dependent Quadratic Loop ค้4อ f(n) = n(n+1)/2• Cubic Loop ค้4อ f(n) = n3

• ปัระสิ่ ที่ธ ภาพข้องอลักอร ที่*มสิ่ามารถึเข้�ยนให�อย&�ในร&ปัแบบอย�างง�ายO(logn), O(n), O(n(logn)), O(n2), O(nk), O(cn), O(n!)

Page 53: Introduction to Data Structure and Algorithm

Any Questions ?