โครงสร้างข้อมูลและอัลกอริทึม (Data Structure and Algorithm) รหัส 05-411-206 หน่วยกิต 3(3-0-6) วิชาบังคับก่อน : 05-411-203 การเขียนโปรแกรมคอมพิวเตอร์ 1 คำอธิบายรายวิชา รูปแบบของโครงสร้างข้อมูล อาร์เรย์ สแตก คิว ลิงลิสท์ ไบนารีทรี อัลกอริทึมพื้นฐานที่ใช้กับโครงสร้างข้อมูล เทคนิคการเรียงลำดับข้อมูลในหน่วยความจำหลักแบบต่าง ๆ การพัฒนาอัลกอริทึมและการวิเคราะห์อัลกอริทึมอย่างง่าย และการเขียนโปรแกรมเพื่อจัดการกับโครงสร้างแบบต่าง ๆ
ผู้สอน ผศ.กรกนก โภคสวัสดิ์ การเก็บคะแนน กลางภาค 35 คะแนน ผู้สอน ผศ.กรกนก โภคสวัสดิ์ การเก็บคะแนน กลางภาค 35 คะแนน ปลายภาค 35 คะแนน งานที่มอบหมาย 20 คะแนน ประกอบด้วยงานแบบฝึกหัด 10 คะแนน งานรูปเล่มรายงาน 10 คะแนน จิตพิสัย 10 คะแนน 25 June 2006 12.00 AM Week 02a - Introduction to Data Structure II
Chapter 1 : แนวคิดเกี่ยวกับอัลกอริทึม อัลกอริทึม หมายถึง ชุดของขั้นตอนการกระทำที่มีลำดับ มีความชัดเจน สามารถทำงานได้จริง และมีจุดเริ่มต้น และ จุดสิ้นสุดการทำงาน อัลกอริทึมหนึ่งๆ สามารถสื่อออกมาด้วยภาษาใดๆ ก็ได้ เช่น ภาษาพูด (Natural Language) เช่น ภาษาไทย อังกฤษ จีน ญี่ปุ่น เกาหลีฯลฯ ภาษาโปรแกรม (Programming Language) เช่น C/C++, Java ฯลฯ Week 02a - Introduction to Data Structure II
แนวคิดเกี่ยวกับอัลกอริทึม คุณสมบัติของอัลกอริทึม ประกอบด้วยชุดของขั้นตอน ที่มีลำดับการทำงานชัดเจน มีโครงสร้างที่ดีและสมบูรณ์ อัลกอริทึมประกอบด้วยขั้นตอนที่สามารถทำงานได้จริง เพื่อให้อัลกอริทึมนั้นๆ ทำงานได้ อัลกอริทึมประกอบด้วยขั้นตอนที่ชัดเจน ไม่คลุมเครือ อัลกอริทึมมีจุดเริ่มต้น และ จุดสิ้นสุด ในการทำงานที่ชัดเจน 25 June 2006 12.00 AM Week 02a - Introduction to Data Structure II
แนวคิดเกี่ยวกับอัลกอริทึม โปรแกรมคอมพิวเตอร์ส่วนใหญ่ล้วนสร้างขึ้นมาจากอัลกอริทึม ยกเว้นโปรแกรมประยุกต์ที่เกิดขึ้นจากปัญญาประดิษฐ์ ซึ่งไม่มีอัลกอริทึมที่ชัดเจนแต่อาศัยการเรียนรู้จากข้อมูลอินพุต ที่เคยได้รับ สำหรับอัลกอริทึมที่ดีจะต้องไม่ซับซ้อน มีจำนวนขั้นตอนชัดเจน มีขั้นตอนในการทำงานน้อยที่สุดเท่าที่จะเป็นไปได้ และมีประสิทธิภาพในการทำงานสูง 25 June 2006 12.00 AM Week 02a - Introduction to Data Structure II
การแสดงอัลกอริทึม Flowchart ซึ่งปกติแล้วมักถูกใช้ในการแสดงกระบวนการทำงานต่างๆ ผ่านภาพกราฟิก ประกอบด้วยภาพสัญลักษณ์ ที่ความหมายเฉพาะตามจุดประสงค์การใช้งาน และมีลูกศรเป็นตัวแสดงทิศทาง เริ่มต้น/สิ้นสุด ทำงานปกติ ตัดสินใจ อินพุท/เอาพุท 25 June 2006 12.00 AM Week 02a - Introduction to Data Structure II
การแสดงอัลกอริทึม Flowchart ของอัลกอริทึมที่ใช้ในการคำนวณเกรด ซึ่งพิจารณาจากคะแนน 25 June 2006 12.00 AM Week 02a - Introduction to Data Structure II
การแสดงอัลกอริทึม Pseudocode เป็นภาษาคอมพิวเตอร์ที่ไม่เป็นทางการ สมมติขึ้นเพื่อใช้ในการอธิบายและพัฒนาอัลกอริทึม Pseudocode มีลักษณะคล้ายกับภาษาอังกฤษที่ใช้เป็นภาษาพูดทั่วไป ผสมกับภาษาคอมพิวเตอร์ Pseudocode ไม่สามารถกระทำการ (Execute) บนเครื่องคอมพิวเตอร์ได้ การใช้งานต้องแปลงเป็นภาษาคอมพิวเตอร์ให้หมดเสียก่อน 25 June 2006 12.00 AM Week 02a - Introduction to Data Structure II
การแสดงอัลกอริทึม Pseudocode แสดงอัลกอริทึมของการ Search ข้อมูลใน List Algorithm procedure SearchList(list, value) list – the list on which to perform the search value – target value of the search firstEntry – the first entry in the list testEntry – current entry being tested Begin if (list is Empty) (Show error search failure) else { testEntry = firstEntry While (value>testEntry and there are some more entry to be considered) Do (Select next entry as testEntry) if (value equals testEntry) (Show value is found in the List) else (Show value is not found) } End Pseudocode แสดงอัลกอริทึมของการ Search ข้อมูลใน List 25 June 2006 12.00 AM Week 02a - Introduction to Data Structure II
โครงสร้างข้อมูล โครงสร้างข้อมูล หมายถึง รูปแบบการจัดเรียงข้อมูลในหน่วยความจำของระบบคอมพิวเตอร์ หน่วยความจำในที่นี้หมายรวมถึง หน่วยความจำหลัก (Memory) และ หน่วยความจำสำรอง (Harddisk) เพื่อให้ผู้ใช้จัดการข้อมูลในรูปแบบนามธรรม (Abstract Organization) แทนที่การจัดการข้อมูลในรูปแบบจริงที่เกิดขึ้นในคอมพิวเตอร์ 25 June 2006 12.00 AM Week 02a - Introduction to Data Structure II
พื้นฐานของโครงสร้างข้อมูล โครงสร้างข้อมูลเป็นเพียงนามธรรมเท่านั้น เราต้องสามารถแยกระดับความเป็นนามธรรมของโครงสร้างข้อมูลได้ รวมไปถึงวิธีการอ้างอิงไปยังโครงสร้างข้อมูลเหล่านั้น เพื่อให้ง่ายต่อการศึกษาโครงสร้างข้อมูล เรามองหน่วยความจำหลักมีลักษณะดังนี้ จัดการหน่วยความจำให้เป็นลักษณะเซลล์เดี่ยว กำหนดให้เซลล์ของหน่วยความจำมีตำแหน่งที่อยู่ต่อเนื่องกันไป ให้มองว่าการจัดการบนหน่วยความจำเป็นการจัดการที่กระทำต่อเซลล์นั้น 25 June 2006 12.00 AM Week 02a - Introduction to Data Structure II
พื้นฐานของโครงสร้างข้อมูล 0FFF 1000 1002 1003 1004 1005 1006 1007 Cell 0 Cell 1 Cell 3 Cell 4 ADT 25 June 2006 12.00 AM Week 02a - Introduction to Data Structure II
ระดับความเป็นนามธรรมของข้อมูล 25 June 2006 12.00 AM Week 02a - Introduction to Data Structure II
ระดับความเป็นนามธรรมของข้อมูล โครงสร้างข้อมูลระดับบนสุดประกอบด้วย Abstract Data Types (ADT) ประเภทต่างๆ เช่น ลิสต์ สแตก คิว ต้นไม้ ADT แต่ละอันอาจสร้างมาจากชนิดข้อมูล 2 ประเภทได้แก่ ข้อมูลแถวลำดับ (Sequential Representation) ข้อมูลแบบเชื่อมโยง (Linked Representation) ข้อมูลแถวลำดับสร้างมาจากข้อมูลประเภทอาร์เรย์ ในขณะที่ข้อมูลแบบเชื่อมโยงสร้างมาจากตัวแปรอ้างอิง 25 June 2006 12.00 AM Week 02a - Introduction to Data Structure II
ระดับความเป็นนามธรรมของข้อมูล โครงสร้างข้อมูลแบบคงที่ โครงสร้างข้อมูลคงที่ไม่สามารถเปลี่ยนขนาดและรูปร่างของโครงสร้างข้อมูลได้ โครงสร้างข้อมูลประเภทนี้ส่วนใหญ่ใช้อาร์เรย์ในการสร้าง โครงสร้างข้อมูลแบบพลวัติ โครงสร้างไม่คงที่ขนาดและรูปร่างของโครงสร้างข้อมูลสามารถเปลี่ยนแปลงได้ โครงสร้างข้อมูลประเภทนี้ส่วนใหญ่ใช้ตัวแปรอ้างอิงในการสร้าง 25 June 2006 12.00 AM Week 02a - Introduction to Data Structure II
สรุปแนวคิดของอัลกอริทึม และโครงสร้างข้อมูล อัลกอริทึม หมายถึง ขั้นตอนวิธี กระบวนการในการทำงานหรือแก้ปัญหาอย่างใดอย่างหนึ่ง อัลกอริทึมมีความเป็นนามธรรม ดังนั้นต้องนำเสนอผ่านตัวแทน เช่น ผังงาน หรือ รหัสเทียม โครงสร้างข้อมูลเป็นรูปแบบข้อมูลที่ถูกจัดเก็บอยู่ในหน่วยความจำของคอมพิวเตอร์ เพื่อให้การจัดการง่ายและมีประสิทธิภาพ 25 June 2006 12.00 AM Week 02a - Introduction to Data Structure II
การบ้าน Week 01 ให้นักศึกษาเขียนอัลกอริทึมในการตัดสินใจเรียนต่อ ให้นักศึกษาเขียน Flowchart ในการหาค่าที่น้อยที่สุดในจำนวน 3 ค่า ให้นักศึกษาเขียนอัลกอริทึมในการคำนวณภาษีมูลค่าเพิ่ม 7% ให้นักศึกษาหาโจทย์การเขียนโปรแกรม และอัลกอริทึม และเขียนเป็น Flowchart จำนวน 100 ข้อ (ส่งก่อนสอบกลางภาค) 25 June 2006 12.00 AM Week 02a - Introduction to Data Structure II