วันพุธที่ 30 ตุลาคม พ.ศ. 2556

ข้อมูลรายวิชา โครงสร้างข้อมูล

1.           ความหมายของโครงสร้างข้อมูล (Data Structure) 

1.1) คำว่า  “โครงสร้างข้อมูล” (Data structures) เกิดจากคำสองคือ “โครงสร้าง”   
และ “ข้อมูล” ซึ่งคำว่า  “โครงสร้าง”  เป็นความสัมพันธ์ระหว่างสมาชิกในกลุ่ม   ดังนั้นโครงสร้างข้อมูลจึงหมายถึงความสัมพันธ์ระหว่างข้อมูลที่อยู่ในโครงสร้างนั้น สิ่งพื้นฐานในการประมวลผลข้อมูลคอมพิวเตอร์ คือ ข้อมูล (Data) ดังนั้นการศึกษาถึงความสัมพันธ์ของข้อมูลจึงมีความสำคัญเป็นอย่างมากในศาสตร์คอมพิวเตอร์ (computer science) 

1.2) ความสัมพันธ์ระหว่างข้อมูลที่อยู่ในโครงสร้างนั้นๆ รวมทั้งกระบวนการในการจัดการข้อมูลในโครงสร้าง เช่น เพิ่ม แก้ไข ลบ ตัวอย่างของโครงสร้างข้อมูลประเภทต่างๆ ได้แก่ แถว ลำดับ ลิสต์ สแตก คิว ทรี และกราฟ เป็นต้น

                1.3) เป็นวิธีการจัดเก็บข้อมูลในคอมพิวเตอร์เพื่อให้สามารถใช้งานได้อย่างมีประสิทธิภาพ บ่อยครั้งที่การเลือกโครงสร้างข้อมูลที่เหมาะสมจะทำให้เราสามารถเลือกใช้อัลกอริทึ่มที่มีประสิทธิภาพไปพร้อมกันได้ การเลือกโครงสร้างข้อมูลนั้นโดยส่วนใหญ่แล้วจะเริ่มต้นจากการเลือกแบบชนิดข้อมูลนามธรรม โครงสร้างข้อมูลที่ออกแบบเป็นอย่างดีจะสามารถรองรับการประมวลผลที่หนักหน่วงโดยใช้ทรัพยากรที่น้อยที่สุดเท่าที่จะเป็นไปได้ ทั้งในแง่ของเวลาและหน่วยความจำ
1.4)  โครงสร้างข้อมูล (File Structure) หมายถึง ลักษณะการจัดแบ่งพิกัดต่าง ๆ ของข้อมูลสำหรับแต่ละระเบียน (Record) ในแฟ้มข้อมูลเพื่อให้คอมพิวเตอร์สามารถรับไปประมวลผลได้ ประกอบด้วยส่วนต่าง ๆ ดังนี้
(1) หน่วยข้อมูล (Data Item) หมายถึงส่วนที่เล็กที่สุดของข้อมูล เช่น ตัวเลข ตัวอักษร หรือ สัญลักษณ์พิเศษ จะยังไม่มีความหมายในตัวเอง เล่น เลข 9 อักษร ก เป็นต้น
(2)ฟิลด์ข้อมูล (Data Field) หมายถึง การนำเอาหน่วยข้อมูลที่สำคัญและต้องการศึกษามาไว้ด้วยกันเพื่อเปรียบเทียบกัน เช่น ชื่อ - สกุล คะแนนการสอบครั้งที่ 1 เงินเดือน ซึ่ง ชื่อ สกุล และเงินเดือน คือ 1 ฟิลด์
(2) เรคอร์ดข้อมูล (Data Record) หมายถึง การนำฟิลด์หลายฟิลด์มารวมกลุ่มกัน เช่น นักศึกษาแต่ละคน จะมีข้อมูล ชื่อ สกุล วันเดือนปีเกิด อายุ เพศ ข้อมูลของนักศึกษาแต่ละคนคือ 1 เรคอร์ด
(4) แฟ้มข้อมูล (Data File) เกิดจากการนำระเบียนหรือเรคอร์ด หลาย ๆ เรคอร์ดที่เกี่ยวข้องกันในด้านใดด้านหนึ่งมารวมกัน เช่น แฟ้มข้อมูลของนักเรียนห้องหนึ่งจำนวน 20 คน ทุกคนต่างก็มีข้อมูล คือ ชื่อ สกุล วันเดือนปีเกิด อายุ เพศ ศาสนา ข้อมูลของนักเรียนทั้งหมดคือ แฟ้มข้อมูล
(5) ฐานข้อมูล (Data base) เกิดจากการนำแฟ้มหลาย ๆ แฟ้มข้อมูลเข้าด้วยกันโดยที่แฟ้มข้อมูลแต่ละแฟ้มจะมีความสัมพันธ์กันหรือไม่ก็ตาม ทำให้ข้อมูลไม่ซ้ำซ้อนกัน และสะดวกรวดเร็วในการใช้งาน

                1.5) ความสัมพันธ์ระหว่างข้อมูลที่อยู่ในโครงสร้างนั้นๆ รวมทั้งกระบวนการในการจัดการข้อมูลในโครงสร้าง เช่น เพิ่ม แก้ไข ลบ
    ตัวอย่าง ของโครงสร้างข้อมูลประเภทต่างๆ ได้แก่ แถว ลำดับ ลิสต์ สแตก คิว ทรี และกราฟ เป็นต้น




2.            ความสำคัญหรือความจำเป็นของการศึกษาโครงสร้างข้อมูล
2.1) การทำงานของคอมพิวเตอร์จะมีการจัดการอย่างไรเพื่อให้ได้มาซึ่งข้อมูลข่าวสาร  และสามารถนำมาใช้งานออกมาเป็นข้อมูลข่าวสารในรูปแบบต่าง ๆ  ที่ทำความเข้าใจได้  แต่เนื่องจากคอมพิวเตอร์เป็นเพียงเครื่องจักรที่ไม่สามารถเข้าใจความหมายของข้อมูลข่าวสารได้เช่นเดียวกับคน  จึงมีการกำหนดรูปแบบที่ใช้สื่อความหมายของข้อมูลข่าวสารให้คอมพิวเตอร์กับผู้ใช้งานเข้าใจตรงกันเรียกว่า โครงสร้างข้อมูลหรือชนิดข้อมูล

2.2) ในสาขาวิทยาการคอมพิวเตอร์โครงสร้างข้อมูล (อังกฤษ: Data structure) เป็นวิธีการจัดเก็บข้อมูลในคอมพิวเตอร์เพื่อให้สามารถใช้งานได้อย่างมีประสิทธิภาพ บ่อยครั้งที่การเลือกโครงสร้างข้อมูลที่เหมาะสมจะทำให้เราสามารถเลือกใช้อัลกอริทึมที่มีประสิทธิภาพไปพร้อมกันได้ การเลือกโครงสร้างข้อมูลนั้นโดยส่วนใหญ่แล้วจะเริ่มต้นจากการเลือก แบบชนิดข้อมูลนามธรรมโครงสร้างข้อมูลที่ออกแบบเป็นอย่างดีจะสามารถรองรับการประมวลผลที่หนักหน่วงโดยใช้ทรัพยากรที่น้อยที่สุดเท่าที่จะเป็นไปได้ ทั้งในแง่ของเวลาและหน่วยความจำ

โครงสร้างข้อมูลแต่ละแบบจะเหมาะสมกับงานที่แตกต่างกัน และโครงสร้างข้อมูลบางแบบก็ออกแบบมาสำหรับบางงานโดยเฉพาะ อย่างเช่น ต้นไม้แบบบีจะเหมาะสำหรับระบบงานฐานข้อมูล

ในกระบวนการออกแบบโปรมแกรมคอมพิวเตอร์การเลือกโครงสร้างข้อมูลเป็นสิ่งสำคัญอันดับแรกที่ต้องคำนึงถึง ซึ่งจากการพัฒนาระบบงานใหญ่ๆได้แสดงให้เห็นว่า ความยากในการพัฒนาและประสิทธิภาพของระบบจะขึ้นอยู่กับโครงสร้างข้อมูลที่เลือกใช้อย่างมาก หลังจากตัดสินใจเลือกโครงสร้างข้อมูลที่จะใช้แล้วก็มักจะทราบถึงอัลกอริทึมที่ต้องใช้ได้ทันที แต่ในบางครั้งก็อาจจะกลับกัน คือ การประมวลผลที่สำคัญๆของโปรแกรมได้มีการใช้อัลกอริทึมที่ต้องใช้โครงสร้างข้อมูลบางแบบโดยเฉพาะ จึงจะทำงานได้เต็มประสิทธิภาพ ถึงอย่างไรก็ตาม ไม่ว่าจะเลือกโครงสร้างข้อมูลด้วยวิธีการใด โครงสร้างข้อมูลที่เหมาะสมก็เป็นสิ่งที่สำคัญมากอยู่ดี

แนวความคิดในเรื่องโครงสร้างข้อมูลนี้ส่งผล กับการพัฒนาวิธีการมาตรฐานต่างๆในการออกแบบและเขียนโปรแกรม หลายภาษาโปรแกรมนั้นได้พัฒนารวมเอาโครงสร้างข้อมูลนี้ไว้เป็นส่วนหนึ่งของระบบโปรแกรม เพื่อประโยชน์ในการใช้ซ้ำ

2.3) คือ รูปแบบของการจัดระเบียบของข้อมูล ซึ่งมีอยู่หลายรูปแบบ เช่น เขตข้อมูล(Field), แถวลำดับ(Array), ระเบียน(Record), ต้นไม้(Tree), ลิงค์ลิสต์(Link List) เป็นต้น
คือ รูปแบบวิธีการจัดระเบียบของข้อมูลที่ได้จากการดำเนินการทางคณิตศาสตร์ (Operations) เพื่อให้สามารถจัดการกับข้อมูลที่ใช้กับระบบคอมพิวเตอร์ได้ คือ การรวบรวมข้อมูลเป็นกลุ่มอย่างมีรูปแบบ เพื่อให้การนำข้อมูลกลับมาใช้ หรือประมวลผลอย่างมีประสิทธิภาพ ด้วยขั้นตอนวิธีที่หลากหลาย แล้วนำเสนอได้อย่างถูกต้องรวดเร็วตามลักษณะงานที่ต้องการ คือ การนำกลุ่มของข้อมูลขนาดใหญ่มาจัดรูปแบบ เพื่อให้เครื่องประมวลผลและแสดงผลอย่างมีขั้นตอน โดยเริ่มจากการรวบรวม เพิ่ม ลบ หรือเข้าถึงข้อมูลแต่ละรายการ






3.           กระบวนการทำงานของคอมพิวเตอร์
3.1) การทำงานของคอมพิวเตอร์เป็น 4 ส่วนหลักได้แก่
                1. หน่วยประมวลผลในรูปแบบข้อมูล Binary หรือที่เรียกว่า Arithmetic-Logical Unit (ALU) เปรียบเสมือนหัวใจของคอมพิวเตอร์ หน้าที่หลักของมันคือทำการประมวลผลทางคณิตศาสตร์ขั้นพื้นฐานอันได้แก่การบวกและลบ และการทำการเปรียบเทียบข้อมูลสองข้อมูลว่ามีค่าเท่ากันหรือถ้าไม่จะมีค่ามากกว่าหรือน้อยกว่า 
                2. หน่วยความจำ หรือ Memory ใช้สำหรับเก็บข้อมูล (Data) และ คำสั่ง (Instructions) โดยข้อมูลภายในหน่วยความจำจะถูกแบ่งเป็นส่วนๆเล็กๆเท่าๆกัน แต่ละส่วนมีที่อยู่(address) เพื่อใช้เข้าถึงข้อมูลที่ถูกจัดเก็บเอาไว้ 
                3. อุปกรณ์อินพุตและเอาต์พุต หรือ I/O Device เป็นส่วนที่ใช้นำข้อมูลจากโลกภายนอกเข้ามาภายในระบบคอมพิวเตอร์ เพื่อนำมาประมวลผล และเมื่อได้ผลลัพธ์ก็จะนำข้อมูลที่ได้มาแสดงผลให้โลกภายนอกคอมพิวเตอร์ได้รับทราบ 
                4. หน่วยควบคุมการทำงาน หรือ Control Unit เป็นส่วนที่ใช้เชื่อมต่อแต่ละส่วนเข้าด้วยกัน หน้าที่หลักๆคือทำการอ่านข้อมูลคำสั่งที่อยู่ภายในหน่วยความจำหรือที่ได้จากอุปกรณ์อินพุต ทำการแปลความหมายและส่งไปประมวลผลใน ALU จากนั้นนำผลที่ได้ไปจัดเก็บในหน่วยความจำหรืออุปกรณ์เอาต์พุต หน้าที่หลักอีกประการ คือควบคุมลำดับการทำงานของแต่ละขั้นตอนให้อยู่ในเวลาที่เหมาะสม




4.         ประสิทธิภาพการทำงานของคอมพิวเตอร์ขึ้นอยู่กับอะไร
4.1) ข้อมูลที่มีประสิทธิภาพการทำงานและเครื่องมือต่างๆ' 'ดัชนีการใช้งาน Windows' และ ReadyBoost ทั้งหมดนี้จะนำเสนอวิธีช่วยปรับปรุงประสิทธิภาพในการทำงานให้กับคอมพิวเตอร์ของคุณ แต่ที่เป็นปัจจัยหลักมีอยู่ไม่กี่ข้อดังนี้...
- ความเร็วสัญญาณนาฬิกา ความกว้างบัส ประสิทธิภาพ และชุดคำสั่งที่ถูกบรรจุไว้ใน CPU หากมีมากจะทำให้การประมวลผลทำได้รวดเร็วยิ่งขึ้น
- ความเร็วสัญญาณนาฬิกาและความจุของ RAM หาก RAM มีความจุมากก็เปรียบเสมือนโต๊ะทำงานที่มีขนาดใหญ่ให้คอมพิวเตอร์วางของหรือทดสิ่งต่างๆ ได้มากโดยไม่ต้องเก็บลงใต้โต๊ะ และสามารถหยิบมาใช้ได้ทันที จึงทำงานได้เร็วกว่านั่นเอง
- ความเร็วและความกว้างของช่องทางการส่งผ่านข้อมูลของ Chipset กับอุปกรณ์ต่อพ่วงต่างๆ
- ความเร็วรอบของ harddisk หากความเร็วสูง การเขียนอ่านหรือทำงานกับโปรแกรมที่ต้องเรียกข้อมูลจาก harddisk ตลอดเวลาก็จะช้าตามไปด้วย
- ระบบปฏิบัติการที่ใช้
- โปรแกรมที่เรากำลังใช้งานในขณะนั้น โดยความเร็วในการทำงานของโปรแกรมจะขึ้นกับลักษณะของ code ที่เขียนมันขึ้นมาเป็นสำคัญครับ หากโปรแกรมเขียน code มาดี ใช้ algorithm ที่ชาญฉลาด โปรแกรมก็จะทำงานได้เร็วแม้ว่าเครื่องคอมพิวเตอร์จะมีประสิทธิภาพที่ไม่สูงมาก แต่หากโปรแกรมถูกเขียน code มาไม่ดี คอมพิวเตอร์ประสิทธิภาพสูงที่ทำงานกับโปรแกรมนั้นก็อาจทำงานช้าได้เช่นกันครับ







5.           หลักการจัดเก็บข้อมูลภาพสามารถทำได้อย่างไร
-                  รูปภาพ

การประมวลผลภาพคอมพิวเตอร์กราฟิก

ภาพที่เก็บอยู่ในคอมพิวเตอร์นั้น จะมีการประมวลผลภาพอยู่ด้วยกัน 2 แบบ คือ
       1. การประมวลผลแบบ Raster หรือ Bitmap
       2. การประมวลผลแบบ Vector

1.การประมวลผลแบบ Raster
       การประมวลผลแบบ Raster หรือ แบบมิตแมป (Bitmap) หรือเรียกว่าเป็นภาพแบบ Resolution Dependent โดยหลักการทำงาน คือ จะเป็นการประมวลแบบอาศัยการอ่านค่าสีในแต่ละพิกเซล ซึ่งมีชื่อเรียกอีกอย่างหนึ่งว่า Bitmap ซึ่งจะเก็บค่าของข้อมูลเป็นค่า 0 และ 1 และในแต่ละพิกเซลจะมีการเก็บค่าสีที่เจาะจงในแต่ละตำแหน่ง ลักษณะสำคัญของภาพประเภทนี้ คือ จะประกอบขึ้นด้วยจุดสีต่างๆที่มีจำนวนคงที่ตายตัว ตามการสร้างภาพที่มีความละเอียดแตกต่างกันไป ภาพแบบบิตแมปนี้ มีข้อดี คือ เหมาะสำหรับภาพที่ต้องการระบายสี สร้างสี หรือกำหนดสีที่ต้องละเอียดและสวยงามได้ง่าย ข้อจำกัดคือ เมื่อมีพิกเซลจำนวนคงที่ นำภาพมาขยายให้ใหญ่ขึ้น ความละเอียดก็จะลดลง มองเห็นภาพเป็นแบบจุด และถ้าเพิ่มความละเอียดให้แก่ภาพ จะทำให้ไฟล์มีขนาดใหญ่ และเปลืองเนื้อที่หน่วยความจำมาก เป็นต้น
2. การประมวลผลแบบ Vector
       ภาพแบบเวกเตอร์ หรือ Object-Oriented Graphics หรือ เรียกว่า เป็นรูปภาพ Resolution-Independent เป็นภาพที่มีลักษณะของการสร้างจากคอมพิวเตอร์ที่มีการสร้างให้แต่ละส่วนของภาพเป็นอิสระต่อกัน โดยแยกชิ้นส่วนของภาพทั้งหมดออกเป็นเส้นตรง รูปทรง หรือ ส่วนโค้ง โดยอ้างอิงตามความสัมพันธ์ทางคณิตศาสตร์ หรืออาศัยการคำนวณทางคณิตศาสตร์ โดยมีสีและตำแหน่งของสีที่แน่นอน ฉะนั้นไม่ว่าจะมีการเคลื่อนย้าย หรือย่อขยายขนาดของภาพ ก็จะไม่เสียรูปทรง และความละเอียดของภาพจะไม่ลดลง จึงทำให้ภาพยังคงชัดเจนเหมือนเดิม แม้ขนาดของภาพจะมีขนาดใหญ่ขึ้นหรือเล็กลงก็ตาม แต่มีข้อเสียที่ไม่สามารถใช้เอฟเฟคในการปรับแต่งภาพได้เหมือนกับภาพแบบ Raster