SlideShare a Scribd company logo
1 of 47
Download to read offline
หน่วยการเรียนรู้ที่ 1 เทคโนโลยีการสื่อสาร
การเรียนรู้ที่ 1วัตถุประสงค์ของการจัดการข้อมูล หน่วยข้อมูลและเขตข้อมูลคีย์ .
วัตถุประสงค์ในการจัดการข้อมูล
1. การเก็บข้อมูล ต้องเก็บข้อมูลเพื่อให้สามารถนากลับมาใช้ได้ในภายหลัง
2. การจัดข้อมูล ต้องจัดข้อมูลให้อยู่ในรูปแบบที่สามารถเรียกใช้งานได้อย่างมี
ประสิทธิภาพ
3. การปรับปรุงข้อมูล ต้องปรับข้อมูลให้มีความถูกต้องสมบูรณ์อยู่เสมอ
4. การปกป้องข้อมูล ต้องปกป้องข้อมูลจากการทาลาย ลักลอบใช้ หรือแก้ไขโดยมิ
ชอบ รวมทั้งปกป้องข้อมูลจากอุบัติเหตุที่อาจเกิดจากวินาศภัย หรือความบกพร่องภายใน
ระบบคอมพิวเตอร์
หน่วยข้อมูล (DATA UNITS)
หน่วยของข้อมูลคอมพิวเตอร์สามารถจัดเรียงเป็น
ลาดับชั้นเล็กไปขนาดใหญ่ได้ดังนี้
1.บิต (bit)
เลขฐาน 2 หนึ่งหลักซึ่งมีค่าเป็น 0 หรือ 1
2.ตัวอักษร (charecter)
กลุ่มของบิตสามารถแทนค่าตัวอักษรได้ ในชุดอักขระ ASCII 1 ไบต์ (
8 บิต) แทนตัวอักษรตัว 1 ตัว เช่น 01000001 แทนตัวอักษร A ในปัจจุบันมี
ชุดอักขระที่ใช้เลขฐานสอง 16 บิต แทนค่าตัวอักษร คือ รหัส Unicode เช่น
0000 0000 1110 0110 แทนอักษรตัว ?
3.เขตข้อมูล (Field)
ซึ่งประกอบด้วยกลุ่มตัวอักษรที่แทนข้อเท็จจริง
4.ระเบียน (Record)
ระเบียน คือโครงสร้างข้อมูลที่แทนตัววัตถุชิ้นหนึ่ง เช่น ระเบียนข้อมูล
นักศึกษาเลขทะเบียน 431999999
5.แฟ้ม (file)
ตารางที่เป็นกลุ่มของระเบียนที่มีโครงสร้างเดียวกัน เช่น ตารางการ
สั่งซื้อสินค้าของลูกค้า
6.ฐานข้อมูล (Database)
กลุ่มของตาราง (และความสัมพันธ์)
การเรียงลาดับชั้นของหน่วยข้อมูลดังนี้
เขตข้อมูลคีย์ (Key field) คือเขตข้อมูลที่ใช้สาหรับระบุระเบียนข้อมูลอย่าง
เฉพาะเจาะจงข้อมูลที่อยู่ในเขตข้อมูลนี้จะไม่ซ้ากับระเบียนอื่น ๆ เช่น
แฟ้มข้อมูลพนักงานอาจใช้เลขที่พนักงานเป็นตัวระบุระเบียบ
การเรียนรู้ที่ 2 ชนิดข้อมูลและประเภทของแฟ้มข้อมูล
ชนิดของข้อมูล
ข้อมูลที่ต้องการจัดเก็บนั้นอาจจะมีรูปแบบได้หลายอย่าง รูปแบบสาคัญ ๆ ได้แก่
3.1 ข้อมูลแบบรูปแบบ (formatted data) เป็นข้อมูลที่รวมอักขระซึ่งอาจ
หมายถึงตัวอักษร ตัวเลข ซึ่งเป็นรูปแบบที่แน่นอน ในแต่ละระเบียน ทุกระเบียนที่อยู่ใน
แฟ้มข้อมูลจะมีรูปแบบที่เหมือนกันหมด ข้อมูลที่เก็บนั้นอาจเก็บในรูปของรหัสโดยเมื่ออ่าน
ข้อมูลออกมาอาจจะต้องนารหัสนั้นมาตีความหมายอีกครั้ง เช่น แฟ้มข้อมูลประวัตินักศึกษา
3.2 ข้อมูลแบบข้อความ (text)เป็นข้อมูลที่เป็นอักขระในแบบข้อความ ซึงอาจ
หมายถึงตัวอักษร ตัวเลข สมการฯ แต่ไม่รวมภาพต่าง ๆ นามารวมกันโดยไม่มีรูปแบบที่
แน่นอนในแต่ละระเบียน เช่น ระบบการจัดเก็บข้อความต่าง ๆ ลักษณะการจัดเก็บแบบนี้จะ
ไม่ต้องนาข้อมูลที่เก็บมาตีความหมายอีก ความหมายจะถูกกาหนดแล้วในข้อความ
3.3 ข้อมูลแบบภาพลักษณ์ (images) เป็นข้อมูลที่เป็นภาพ ซึ่งอาจเป็นภาพ
กราฟที่ถูกสร้างขึ้นจากข้อมูลแบบรูปแบบรูปภาพ หรือภาพวาด คอมพิวเตอร์สามารถเก็บ
ภาพและจัดส่งภาพเหล่านี้ไปยังคอมพิวเตอร์อื่นได้ เหมือนกับการส่งข้อความ โดย
คอมพิวเตอร์จะทาการแปลงภาพเหล่านี้ ซึ่งจะทาให้คอมพิวเตอร์สามารถที่จะปรับขยาย
ภาพและเคลื่อนย้ายภาพเหล่านั้นได้เหมือนกับข้อมูลแบบข้อความ
3.4 ข้อมูลแบบเสียง (audio) เป็นข้อมูลที่เป็นเสียง ลักษณะ
ของการจัดเก็บก็จะเหมือนกับการจัดเก็บข้อมูลแบบภาพ คือ
คอมพิวเตอร์จะทาการแปลงเสียงเหล่านี้ให้คอมพิวเตอร์สามารถนาไป
เก็บได้ ตัวอย่างได้แก่ การตรวจคลื่นหัวใจ จะเก็บเสียงเต้นของหัวใจ
3.5 ข้อมูลแบบภาพและเสียง (video) เป็นข้อมูลที่เป็นเสียง
และรูปภาพ ที่ถูกจัดเก็บไว้ด้วยกัน เป็นการผสมผสานรูปภาพและเสียง
เข้าด้วยกัน ลักษณะของการจัดเก็บข้อมูล คอมพิวเตอร์จะทาการแปลง
เสียงและรูปภาพนี้ เช่นเดียวกับข้อมูลแบบเสียงและข้อมูลแบบภาพ
ลักษณะซึ่งจะนามารวมเก็บไว้ในแฟ้มข้อมูลเดียวกัน
ประเภทของแฟ้มข้อมูล
ประเภทของแฟ้มข้อมูลจาแนกตามลักษณะของการใช้งานได้ดังนี้
6.1แฟ้มข้อมูลหลัก (master file)แฟ้มข้อมูลหลักเป็นแฟ้มข้อมูลที่บรรจุ
ข้อมูลพื้นฐานที่จาเป็นสาหรับระบบงาน และเป็นข้อมูลหลักที่เก็บไว้ใช้ประโยชน์
ข้อมูลเฉพาะเรื่องไม่มีรายการเปลี่ยนแปลงในช่วงปัจจุบัน มีสภาพค่อนข้างคงที่ไม่
เปลี่ยนแปลงหรือเคลื่อนไหวบ่อยแต่จะถูกเปลี่ยนแปลงเมื่อมีการสิ้นสุดของข้อมูล
เป็นข้อมูลที่สาคัญที่เก็บไว้ใช้ประโยชน์ ตัวอย่าง เช่น แฟ้มข้อมูลหลักของ
นักศึกษาจะแสดงรายละเอียดของนักศึกษา ซึ่งมี ชื่อนามสกุล ที่อยู่ ผลการศึกษา
แฟ้มข้อมูลหลักของลูกค้าในแต่ละระเบียนของแฟ้มข้อมูลนี้จะแสดงรายละเอียด
ของลูกค้า เช่น ชื่อสกุล ที่อยู่ หรือ ประเภทของลูกค้า
6.2 แฟ้มข้อมูลรายการเปลี่ยนแปลง (transaction file)แฟ้มข้อมูล
รายการเปลี่ยนแปลงเป็นแฟ้มข้อมูลที่ประกอบด้วยระเบียนข้อมูลที่มีการเคลื่อนไหว
ซึ่งจะถูกรวบรวมเป็นแฟ้มข้อมูลรายการเปลี่ยนแปลงที่เกิดขึ้นในแต่ละงวดในส่วนที่
เกี่ยวข้องกับข้อมูลนั้น แฟ้มข้อมูลรายการเปลี่ยนแปลงนี้จะนาไปปรับรายการใน
แฟ้มข้อมูลหลัก ให้ได้ยอดปัจจุบัน ตัวอย่างเช่น แฟ้มข้อมูลลงทะเบียนเรียนของ
นักศึกษา
6.3 แฟ้มข้อมูลตาราง (table file)แฟ้มข้อมูลตารางเป็นแฟ้มข้อมูลที่มีค่าคงที่ ซึ่ง
ประกอบด้วยตารางที่เป็นข้อมูลหรือชุดของข้อมูลที่มีความเกี่ยวข้องกันและถูกจัดให้อยู่
รวมกันอย่างมีระเบียบ โดยแฟ้มข้อมูลตารางนี้จะถูกใช้ในการประมวลผลกับแฟ้มข้อมูลอื่น
เป็นประจาอยู่เสมอ เช่น ตารางอัตราภาษี ตารางราคาสินค้า
ตัวอย่างเช่น ตารางราคาสินค้าของบริษัทขายอะไหล่เครื่องคอมพิวเตอร์ดังนี้
รหัสสินค้า รายชื่อสินค้า ราคา
51 จอภาพ 4,500
52 แป้นพิมพ์ 1,200
53 แรม 4 M 4,500
54 แรม 8 M 7,000
55 กระดาษต่อเนื่อง 500
56 แฟ้มคอมพิวเตอร์ 200
ในแฟ้มข้อมูลนี้จะประกอบด้วยระเบียนแฟ้มข้อมูลตารางของสินค้าที่มีฟิลด์ต่างๆ ได้แก่
รหัสสินค้า รายชื่อ สินค้า และราคาสินค้าต่อหน่วย แฟ้มข้อมูลตารางรายการสินค้า จะใช้
ร่วมกับแฟ้มข้อมูลหลายแฟ้มข้อมูลในระบบสินค้า ได้แก่ แฟ้มข้อมูลคลังสินค้า (inventory
master file) แฟ้มข้อมูลใบสั่งซื้อของลูกค้า (customer order master file) และแฟ้มข้อมูล
รายการสิตค้าของฝ่ายผลิต (production master file) มีข้อควรสังเกตว่าแฟ้มข้อมูลตาราง
แฟ้มข้อมูลรายการเปลี่ยนแปลง และแฟ้มข้อมูลหลัก ทั้ง 3 แฟ้ม จะมีฟิลด์ที่เกี่ยวกับตัว
สินค้าร่วมกัน คือ ฟิลด์รหัสสินค้า (product code) ฟิลด์ร่วมกันนี้จะเป็นตัวเชื่องโยงระหว่าง
แฟ้มข้อมูลตารางกับแฟ้มข้อมูลอื่น ๆ ทั้งหมดที่ต้องการจะใช้ค่าของฟิดล์รายชื่อสินค้า
(product description) และราคาสินค้า (product price) จากแฟ้มข้อมูลตาราง
การจัดแฟ้มข้อมูลแบบนี้จะทาให้ประหยัดเนื้อที่ในอุปกรณ์เก็บข้อมูล
ของแฟ้มข้อมูลหลัก กล่าวคือในแฟ้มข้อมูลหลักไม่ต้องมี 2 ฟิลด์ คือ ฟิลด์
รายการสินค้าและฟิลด์ราคาสินค้า มีแต่เพียงฟิลด์รหัสสินค้าก็เพียงพอแล้ว
เมื่อใดที่ต้องการใช้ฟิลด์รายการสินค้าในการแสดงผลก็อ่านค่าออกมาจาก
แฟ้มข้อมูลตารางได้ นอกจากนั้นยังเป็นการลดความซ้าซ้อนของข้อมูลและเมื่อ
ผู้ใช้ระบบต้องการเปลี่ยนแปลงรายการสินค้าหรือราคาสินค้าก็จะเปลี่ยนใน
แฟ้มข้อมูลตารางทีเดียว โดยไม่ต้องไปเปลี่ยนแปลงในแฟ้มข้อมูลอื่น
6.4 แฟ้มข้อมูลเรียงลาดับ (sort file)แฟ้มข้อมูลเรียงลาดับเป็นการ
จัดเรียงระเบียนที่จะบรรจุในแฟ้มข้อมูลนั้นใหม่ โดยเรียงตามลาดับค่าของฟิลด์
ข้อมูลหรือค่าของข้อมูลค่าใดค่าหนึ่งในระเบียนนั้นก็ได้ เช่น จัดเรียงลาดับตาม
วันเดือนปี ตามลาดับตัวอักขระเรียงลาดับจากมากไปหาน้อยหรือจากน้อยไปหา
มาก เป็นต้น
แฟ้มข้อมูลรายงาน (report file)เป็นแฟ้มข้อมูลที่ถูกจัดเรียงระเบียบ
ตามรูปแบบของรายงานที่ต้องการแล้วจัดเก็บไว้ในรูปของแฟ้มข้อมูล ตัวอย่าง
เช่น แฟ้มข้อมูลรายงานควบคุมการปรับเปลี่ยนข้อมูลที่เกิดขึ้นในขณะปฏิบัติงาน
แต่ละวัน
การเรียนรู้ที่ 3 ลักษณะการประมวลผลข้อมูล
ข้อมูลและการประมวลผลข้อมูล
ข้อมูล คือข้อเท็จจริงที่เราสนใจ ส่วน สารสนเทศ คือข้อมูลที่ผ่านการ
ประมวลผลด้วยวิธีการที่เหมาะสมถูกต้อง จนได้รูปแบบผลลัพธ์ ตรงความต้องการของ
ผู้ใช้
ข้อมูลที่จะนามาประมวลผลให้เป็นสารสนเทศ จะต้องมีคุณสมบัติพื้นฐานดังต่อไปนี้
ความถูกต้อง หากมีการเก็บรวบรวมข้อมูลและข้อมูลเหล่านั้นเชื่อถือไม่ได้ จะทาให้
เกิดผลเสียหายมาก ผู้ใช้จะไม่กล้าอ้างอิงหรือนาเอาไปใช้ประโยชน์ ซึ่งเป็นเหตุให้การ
ตัดสินใจของผู้บริหารขาดความแม่นยา และมีโอกาสผิดพลาดได้ โครงสร้างข้อมูลที่
ออกแบบต้องคานึงถึงกรรมวิธีการดาเนินงานเพื่อให้ได้ความถูกต้องแม่นยามากที่สุด โดย
ปกติความผิดพลาดของการประมวลผลส่วนใหญ่ มาจากข้อมูลที่ไม่มีความถูกต้องซึ่งมี
สาเหตุมาจากคนหรือเครื่องจักร การออกแบบระบบจึงต้องคานึงถึงในเรื่องนี้
ความรวดเร็วและเป็นปัจจุบัน การได้มาของข้อมูลจาเป็นต้องให้ทันต่อความต้องการ
ของผู้ใช้ มีการตอบสนองต่อผู้ใช้ได้เร็ว ตีความหมายสารสนเทศได้ทันต่อเหตุการณ์หรือ
ความต้องการ มีการออกแบบระบบการเรียกค้นและรายงาน ตามความต้องการของผู้ใช้
ความสมบูรณ์ ความสมบูรณ์ของสารสนเทศขึ้นกับการรวบรวมและวิธีการทางปฏิบัติ ใน
การดาเนินการจัดทาสารสนเทศ ต้องสารวจและสอบถามความต้องการของผู้ใช้ เพื่อให้
ได้ข้อมูลที่มีความสมบูรณ์เหมาะสม
ความชัดเจนกะทัดรัด การจัดเก็บข้อมูลต้องใช้พื้นที่ในการจัดเก็บข้อมูลมาก จึง
จาเป็นต้องออกแบบโครงสร้างข้อมูลให้กะทัดรัด สื่อความหมายได้ มีการใช้รหัสหรือย่อข้อมูล
ให้เหมาะสม เพื่อที่จะจัดเก็บเข้าไว้ในระบบคอมพิวเตอร์
ความสอดคล้อง ความต้องการเป็นเรื่องสาคัญ ดังนั้นจึงต้องมีการสารวจเพื่อหาความ
ต้องการของหน่วยงานและองค์การ ดูสภาพการใช้ข้อมูล ความลึกหรือความกว้างของ
ขอบเขตข้อมูล ที่สอดคล้องกับความต้องการ
ในการนาข้อมูลไปใช้ประโยชน์ หรือการทาข้อมูลให้เป็นสารสนเทศ ที่จะนาไปใช้
ประโยชน์ได้ จาเป็นต้องมีการประมวลผลข้อมูลก่อน การประมวลผลข้อมูล เป็นกระบวนการที่
มีกระบวนการย่อยหลายอย่าง ประกอบกันคือ
การรวบรวมข้อมูล
การแยกแยะ
การตรวจสอบความถูกต้อง
การคานวณ
การจัดลาดับหรือการเรียงลาดับ
การรายงานผล
การสื่อสารข้อมูลหรือการแจกจ่ายข้อมูลนั้น
การประมวลผลข้อมูล จึงเป็นกิจกรรมที่มีความสาคัญ เพราะข้อมูลที่มีอยู่ รอบๆ ตัวเรามีเป็น
จานวนมากในการใช้งานจึงต้องมีการประมวลผล เพื่อให้เกิดประโยชน์ กิจกรรมหลักของการ
ให้ได้มาซึ่งสารสนเทศ จึงประกอบด้วยกิจกรรมการ เก็บรวบรวมข้อมูล ซึ่งต้องมีการตรวจสอบ
ความถูกต้องด้วย กิจกรรมการประมวลผลซึ่งอาจจะเป็นการแบ่งแยกข้อมูล การจัดเรียงข้อมูล
การคานวณ และกิจกรรมการเก็บรักษาข้อมูลซึ่งอาจต้อง มีการทาสาเนา ทารายงาน เพื่อ
แจกจ่าย
วิธีการประมวลผล มี 2 ลักษณะ คือ
(1) การประมวลผลแบบเชื่อมตรง (online processing)
หมายถึง การทางานในขณะที่ข้อมูลวิ่งไปบนสายสัญญาณเชื่อมต่อจากเครื่อง
ปลายทาง (terminal) ไปยังฐานข้อมูลของเครื่องหลักที่ใช้ในการประมวลผล
การประมวลผลแบบเชื่อมตรงจึงเป็นการประมวลผลโดยทันทีทันใด เช่น การ
จองตั๋วเครื่องบิน การซื้อสินค้าในห้างสรรพสินค้า การฝากถอนเงินเอทีเอ็ม การ
ประมวลผลแบบเชื่อมตรงจึงเป็นวิธีที่ใช้กันมากวิธีหนึ่ง
(2) การประมวลผลแบบกลุ่ม (batch processing)
หมายถึง การประมวลผลในเรื่องที่สนใจเป็นครั้งๆ เช่น เมื่อต้องการทราบข้อมูล
ผลสารวจความนิยมของประชาชนต่อการเลือกตั้งสมาชิกสภาผู้แทน หรือที่
เรียกว่า โพล (poll) ก็มีการสารวจข้อมูลเพื่อเก็บรวบรวมข้อมูล เมื่อเก็บรวบรวม
ข้อมูลได้แล้วก็นามาป้อนเข้าเครื่องคอมพิวเตอร์ แล้วนาข้อมูล นั้นมาประมวลผล
ตามโปรแกรมที่ได้กาหนดไว้ เพื่อรายงานหรือสรุปผลหาคาตอบ กรณีการ
ประมวลผลแบบกลุ่มจึงกระทาในลักษณะเป็นครั้งๆ เพื่อให้ได้ผลลัพธ์โดย
จะต้องมีการรวบรวมข้อมูลไว้ก่อน
การเรียนรู้ที่ 4 แฟ้มโปรแกรมและแฟ้มข้อมูล
แฟ้มโปรแกรมและแฟ้มข้อมูล
ถ้าจะแบ่งประเภทของแฟ้มในคอมพิวเตอร์อีกนัยหนึ่ง อาจแบ่งเป็นแฟ้ม
โปรแกรม และ แฟ้มข้อมูล แฟ้มโปรแกรมประกอบด้วยชุดคาสั่งต่างๆ ที่ทางานอย่าง
ใดอย่างหนึ่งเช่น โปรแกรมประมวลคา (word processor) ใช้สาหรับพิมพ์เอกสาร
และจัดรูปแบบข้อความ และโปรแกรมบีบอัดข้อมูล (compression utility) ใช้
สาหรับบีบอัดข้อมูลที่มีขนาดเล็กลง เป็นต้น
แฟ้มที่จัดเก็บหรือบันทึกโดยโปรแกรมเหล่านี้ จัดเป็นประเภทแฟ้มข้อมูล ซึ่ง
ตามปกติจะมีส่วนขยาย (file extension) เป็นตัวบอกประเภทเช่น เอกสารที่สร้าง
ด้วยโปรแกรมประมวลคา Microsoft Word จะมีส่วนขยายหลักเป็น .doc ส่วน
แฟ้มข้อมูลที่สร้างด้วยโปรแกรมบีบอัดข้อมูล Winzip จะมีส่วนขยายเป็น .zip เป็น
ต้น ที่กล่าวว่าส่วนขยายหลักหมายความว่า โปรแกรมหนึ่งอาจสร้างแฟ้มข้อมูลที่มี
ส่วนขยายได้หลายหย่าง ตัวอย่างโปรแกรมลักษณะนี้ได้แก่ Microsoft Word2000
ซึ่งสามารถสร้างแฟ้มข้อมูลที่มีส่วนขยายเป็น .doc .htm .html .rtf .txt .mcw และ
.wps แต่ จะเป็นส่วนขยายหลักเป็น .doc
แฟ้มข้อมูลบางประเภทสร้างและเปิดด้วยโปรแกรมใดโปรแกรมหนึ่งโดยเฉพาะ
เช่นแฟ้มที่สร้างด้วยโปรแกรมแต่งภาพ Adobe Photoshop ซึ่งมีส่วนขยายเป็น .psd
ในขณะที่แฟ้มข้อมูลบางประเภทเป็นประเภทที่มีรูปแบบมาตรฐานที่สามารถสร้างและเปิด
ได้โดยโปรแกรมต่างๆ เช่น ประเภทแฟ้ม Bitmap ( BMP) Graphics Interchange
Format (GIF) และ Joint Photographic Experts Group (JPEG) สามารถสร้างและเปิด
แก้ไขได้โดย Windows PaintBrush , Adobe Photoshop หรือ Microsoft Photo Editor
ก็ได้ แฟ้มที่มีรูปแบบมาตรฐานเหล่านี้มีประโยชน์มากในการแลกเปลี่ยนข้อมูลระหว่าง
โปรแกรมต่างๆ
แฟ้มโปรคแกรมที่ประกอบด้วยชุดคาสั่งที่ทางานได้ ได้แก่ประเภท .exe , .com ,
.bat , .dll
หน่วยการเรียนรู้ที่ 2 โครงสร้างข้อมูล
การเรียนรู้ที่ 5 ชนิดของโครงสร้างข้อมูล
ประเภทของโครงสร้างข้อมูล
แบ่งออกเป็น 2 ประเภท คือ
- โครงสร้างข้อมูลทางกายภาพ (Physical Data Structure)
เป็นโครงสร้างข้อมูลที่ใช้โดยทั่วไปในภาษาคอมพิวเตอร์ แบ่งออกเป็น 2 ประเภท
1.ข้อมูลเบื้องต้น (Primitive Data Types)
- จานวนเต็ม (Integer)
- จานวนทศนิยม (Floating point)
- ข้อมูลบูลีน (Boolean)
- จานวนจริง (Real)
- ข้อมูลอักขระ (Character)
2.ข้อมูลโครงสร้าง (Structure Data Types)
- แถวลาดับ (Array)
- ระเบียนข้อมูล (Record)
- แฟ้มข้อมูล (File)
- โครงสร้างข้อมูลทางตรรกะ (Logical Data Structure)
เป็นโครงสร้างข้อมูลที่เกิดจากการจินตนาการของผู้ใช้ เพื่อใช้ในการแก้ปัญหาใน
โปรแกรมที่สร้างขึ้น แบ่งเป็น 2 ประเภท
1. โครงสร้างข้อมูลแบบเชิงเส้น (Linear Data Structure)
ความสัมพันธ์ของข้อมูลจะเรียงต่อเนื่องกัน
- ลิสต์ (List)
- สแตก (Stack)
- คิว (Queue)
- สตริง (String)
2. โครงสร้างข้อมูลแบบไม่เชิงเส้น (Non-Linear Data Structure)
ข้อมูลแต่ละตัวสามารถมีความสัมพันธ์กับข้อมูลอื่นได้หลายตัว
- ทรี (Tree)
- กราฟ (Graph)
3. การดาเนินการกับโครงสร้างข้อมูล(Data Structure Operation)
วิธีดาเนินการกับข้อมูลที่นิยมใช้กันมากมี 4 แบบ คือ
1. การเข้าถึงเรคคอร์ด (Traversing)
2. การค้นหา (Searching)
3. การเพิ่ม (Inserting)
4. การลบ (Deleting)
ยังมีการจัดการกับข้อมูลอีก 2 อย่าง คือ
1. การเรียงข้อมูล (Sorting)
2. การรวมข้อมูล (Merging)
4. การแทนที่ข้อมูลในหน่วยความจา
มีอยู่ 2 วิธี คือ
การแทนที่ข้อมูลแบบสแตติก (Static Memory Representation)
เป็น การแทนที่ข้อมูลที่มีการจองเนื้อที่แบบคงที่แน่นอน ต้องมีการกาหนดขนาดก่อน
การใช้งาน แต่มีข้อเสีย คือ ไม่สามารถปรับขนาดให้เพิ่มขึ้นหรือลดลงได้ โครงสร้างข้อมูลที่
มีการแทนที่หน่วยความจาหลักแบบสแตติก คือแถวลาดับ (Array)
การแทนทีข้อมูลแบบไดนามิก (Dynamic Memory Representation)
เป็น การแทนที่ข้อมูลที่ไม่ต้องจองเนื้อที่ ขนาดของเนื้อที่ยืดหยุ่นได้ ตามความต้องการ
ของผู้ใช้ โครงสร้างข้อมูลที่มีการแทนที่หน่วยความจาหลักแบบไดนามิก คือ ตัวชี้หรือพอย
เตอร์ (Pointer)
5. ลักษณะของโปรแกรมแบบที่มีโครงสร้างที่ดี
5.1 โครงสร้างโปรแกรมแบบคาสั่งตามลาดับ
เป็น โครงสร้างพื้นฐานที่ประกอบด้วยคาสั่งทั่วๆไป เป็นโครงสร้างที่มีลักษณะการ
ทางานแบบเรียงลาดับ คือ จะทางานตั้งแต่ต้นจนจบโดยไม่มีการข้ามขั้นตอนใดๆ
5.2 โครงสร้างโปรแกรมแบบมีการตัดสินใจ (Decision)
มี การตรวจสอบเงื่อนไข เพื่อตัดสินใจว่าจะทาการประมวลผลส่วนใด โดยผลลัพธ์
ของเงื่อนไขจะมีค่าของความเป็นไปได้อยู่ 2 ลักษณะ คือ จริงและเท็จ เท่านั้น
5.3 โครงสร้างโปรแกรมแบบเป็นวงจรปิด (Loop)
มีลักษณะการทางานซ้าๆกัน อยู่ในส่วนใดส่วนหนึ่งของโปรแกรม
6. อัลกอริทึม (Algorithm)
อัลกอรึทึม คือ วิธีการแก้ปัญหาต่างๆ อย่างมีระบบ มีลาดับขั้นตอนตั้งแต่ต้นจน
ได้ผลลัพธ์ สามารถเขียนได้หลายแบบ การเลือกใช้ต้องเลือกใช้ขั้นตอนวิธีที่เหมาะสม
กระชับ และรัดกุม
อัลกอริทึมที่นิยมใช้กันมาก ได้แก่
1. อัลกอริทึมแบบแตกย่อย (Divide and conquer)
2. อัลกอริทึมแบบเคลื่อนที่ (Dynamic Programming)
3. อัลกอริทึมแบบทางเลือก (Greedy Algorithm)
การเขียนผังงาน (Flowchart)
Flow Chart เป็นการอธิบายขั้นตอนการประมวลผลโดยใช้สัญลักษณ์ในการ
แสดงความหมาย การใช้กรอบรูปสัญลักษณ์ที่สื่อความหมาย อธิบายขั้นตอนการ
ทางาน
การเขียนรหัสเทียม (Pseudo Code)
Pseudo Code การอธิบายขั้นตอนการประมวลผลโดยใช้วลีภาษาอังกฤษในการ
แสดงอธิบาย ใช้คาสั้นๆ กะทัดรัด อธิบายขั้นตอนการทางานของโปรแกรม
พัฒนาการของภาษาโปรแกรม
- ภาษาเครื่อง (Machine Language)
- ภาษาแอสเซมบลี (Assembly Language)
- ภาษาระดับสูง (High Level Language)
- ภาษายุคที่ 4 (Fourth Generation Language หรือ 4GL)
การบารุงรักษาโปรแกรม (Program Maintenance)
หมาย ถึง การแก้ไขข้อผิดพลาดที่พบระหว่างการทดสอบหรือระหว่างการใช้งาน
ซึ่งอาจเป็นการเปลี่ยนข้อมูลที่ต้องการใช้ใหม่การปรับปรุงข้อมูล ให้ทันเหตุการณ์อยู่
เสมอ การปรับเปลี่ยนโครงสร้างบนหน้าจอ เป็นต้น
การเรียนรู้ที่ 6 ลักษณะของข้อมูล
ลักษณะของข้อมูลที่ดี
ข้อมูลที่ดีควรเป็นข้อมูลที่มีคุณลักษณะดังต่อไปนี้
• ข้อมูลที่มีความถูกต้องและเชื่อถือได้ (accuracy) ข้อมูลจะมีความถูกต้องและเชื่อถืได้มาก
น้อยเพียงใดนั้น ขึ้นกับวิธีการที่ใช้ในการควบคุมข้อมูลนาเข้า และการควบคุมการประมวลผล
การควบคุมข้อมูลนาเข้าเป็นการกระทาเพื่อให้เกิดความมั่นใจว่าข้อมูลนาเข้ามีความถูกต้อง
เชื่อถือได้ เพราะถ้าข้อมูลนาเข้าไม่มีความถูกต้องแล้วถึงแม้จะใช้วิธีการวิเคราะห์และ
ประมวลผลข้อมูลที่ดีเพียงใด ผลลัพธ์ที่ได้ก็จะไม่มีความถูกต้อง หรือนาไปใช้ไม่ได้ ข้อมูล
นาเข้าจะต้องเป็นข้อมูลที่ผ่านการตรวจสอบว่าถูกต้องแล้ว ข้อมูลบางอย่างอาจต้องแปลงให้อยู่
ในรูปแบบที่เครื่องคอมพิวเตอร์สามารถเข้าใจได้อย่างถูกต้อง ซึ่งอาจต้องพิมพ์ข้อมูลมา
ตรวจเช็คด้วยมือก่อน การประมวลผลถึงแม้ว่าจะมีการตรวจสอบข้อมูลนาเข้าแล้วก็ตาม ก็อาจ
ทาให้ได้ข้อมูลที่ผิดพลาดได้ เช่น เกิดจากการเขียนโปรแกรมหรือใช้สูตรคานวณผิดพลาดได้
ดังนั้นจึงควรกาหนดวิธีการควบคุมการประมวลผลซึ่งได้แก่ การตรวจเช็คยอดรวมที่ได้จากการ
ประมวลผลแต่ละครั้ง หรือการตรวจสอบผลลัพธ์ที่ได้จากการประมวลผลด้วยเครื่อง
คอมพิวเตอร์กับข้อมูลสมมติที่มีการคานวณด้วยว่ามีความถูกต้องตรงกันหรือไม่
• ข้อมูลตรงตามความต้องการของผู้ใช้ (relevancy) ได้แก่ การเก็บเฉพาะข้อมูลที่ผู้ใช้
ต้องการเท่านั้น ไม่ควร เก็บข้อมูลอื่น ๆ ที่ไม่จาเป็นหรือไม่เกี่ยวข้องกับการใช้งาน เพราะจะทา
ให้เสียเวลาและเสียเนื้อที่ในหน่วยเก็บข้อมูล แต่ทั้งนี้ข้อมูลที่เก็บจะต้องมีความครบถ้วน
สมบูรณ์ด้วย
• ข้อมูลมีความทันสมัย (timeliness) ข้อมูลที่ดีนั้นนอกจากจะเป็นข้อมูลที่มีความถูกต้อง
เชื่อถือได้แล้วจะ ต้องเป็นข้อมูลที่ทันสมัย ทั้งนี้เพื่อให้ผู้ใช้สามารถนาเอาผลลัพธ์ที่ได้ไปใช้ได้
ทันเวลา นั่นคือจะต้องเก็บข้อมูลได้รวดเร็วเพื่อทันความต้องการของผู้ใช้
การเรียนรู้ที่ 7 การเรียงลาดับข้อมูล
การเรียงลาดับข้อมูล
การเรียงลาดับข้อมูลเป็นเรื่องสาคัญมากเรื่องหนึ่งเนื่องจากทาให้ผู้ต้องการใช้ข้อมุลเช่น ผู้
บริหาร,ผู้ปฏิบัติงาน (พนักงาน) สามารถทาความเข้าใจกับข้อมูลหรือทาการค้นหาข้อมูลได้
ง่ายและเร็วยิ่งขึ้นตามที่ต้องการ
ประเภทของการจัดการจัดเรียงข้อมูลในระบบคอมพิวเตอร์ แบ่งเป็น 2 ประเภทคือ
1. Internal Sorting คือ การเรียงลาดับข้อมูลโดยเก็บไว้ในหน่วยความจาหลัก และ
ข้อมูลของสมาชิกจะถูกเก็บ อยู่ในโครงสร้างอะเรย์
2. External Sorting คือ การเรียงลาดับข้อมูลโดยเก็บไว้ในหน่วยความจาสารอง ข้อมูล
ส่วนใหญ่มีจานวนมาก จึงไม่ สามารถเก็บไว้ในหน่วยความจาหลักได้ทั้งหมด
ในหัวข้อการเรียงลาดับ นี้จะอธิบายวิธีการเรียงลาดับข้อมูลในแต่ละวิธีโดยสรุปอย่างย่อ ๆ
เพื่อใช้เป็นแนวทางในการศึกษาใน ระดับชั้นสูงขึ้นไป คงจะไม่ได้กล่าวถึงวิธีการขั้นตอนใน
การจัดเรียงอย่างละเอียดแต่จะพยายามชี้ให้เห็นถึงจุดเด่นต่าง ๆ ของการจัด เรียงลาดับใน
แต่ละวิธี
วิธีหรือชนิดของการเรียงลาดับ มีวิธีต่าง ๆ ที่มักจะได้พบโดยทั่วไปดังนี้
1. SELECTION SORT
2. INSERTION SORT / LINEAR INSERTION SORT
3. BUBBLE SORT
4. SHELL SORT
5. BUCKET SORT /RADIX SORT
6. QUICK SORT
7. HEAP SORT / TREE SORT
1. การเรียงลาดับแบบเลือก (Selection Sort)
เป็นวิธีที่ง่ายที่สุดในการเรียงลาดับข้อมูล โดยเริ่มจาก
- หาตาแหน่งของข้อมูลที่มีค่าน้อยที่สุดแล้วสลับค่าของตาแหน่งข้อมูลนั้นกับค่าข้อมูลใน
ตาแหน่ง A(1) จะได้ A(1) มีค่าน้อยที่สุด
- หาตาแหน่งของข้อมูลที่มีค่าน้อยที่สุดในกลุ่ม A(2), A(3),....,A(n) แล้วทากับสลับค่า
ข้อมูลในตาแหน่ง A(2) อย่างนี้เรื่อยไปจน กระทั่งไม่เกิน N-1 รอบ ก็จะได้ข้อมูลที่เรียงลาดับ
จากน้อยไปมาก
2. การเรียงลาดับแบบแทรก (Insertion Sort)
หลักการ คือ
1. อ่านข้อมุลที่ต้องการเรียงลาดับเข้ามาทีละตัวโดยเริ่มจากตัวแรกก่อน และหาตาแหน่ง
ของข้อมูลที่ควรจะอยู่
2. หาที่ว่างสาหรับข้อ 1.
3. Insert หรือแทรกข้อมูล ณ ตาแหน่งในข้อ 2.
3. การเรียงลาดับแบบบับเบิล (Bubble Sort)
วิธัการเรียงลาดับแบบบับเบิลจะทาการเปรียบเทียบข้อมูลที่อยู่ในตาแหน่งที่ติดกัน ถ้าข้อมูล
ไม่อยู่ใลาดับที่ถูกต้อง ก็จะทาการสลับตาแหน่งของข้อมูลที่เปรียบเทียบโดยที่การ
เปรียบเทียบจะเริ่มที่ตาแหน่งที่ 1 กับตาแหน่งที่ 2 ก่อน ต่อไปนี้เทียบกับ ตาแหน่งที่ 2 และ
ตาแหน่งที่ 3 จนถึงตาแหน่งที่จัดเรียงแล้ว จากนั้นจะกลับไปเริ่มต้นการเปรียบเทียบอีก
จนกระทั่งจัดเรียง เรียบร้อยหมดทุกตาแหน่ง
ในวิธีแบบ Bubble Sort ค่าในการเปรียบเทียบที่น้อยที่สุดหรือมากที่สุด จะลอยขึ้นข้างบน
เหมือนกับฟองอากาศ
4. การรียงลาดับแบบเชลล์(shell sort)
เป็นรูปแบบของการ sort ข้อมูลโดยการนาเอาข้อดีของการค้นหาข้อมูลแบบ แทรกและ
แบบเลือกและหลีกเลี่ยง การเกิดปัญหาของทั้งแบบแทรกและแบบเลือก ซึ่งการ
เปรียบเทียบข้อมูลในการเรียงลาดับแบบแทรก โดยการเปรียบเทียบ ข้อมูลที่อยู่ไกล
ออกไป ซึ่งจะทาให้เราสามารถเรียงดับข้อมูลในตาแหน่งที่อยู่ไกลออกไปหลังจากนั้นก็
จะเรียงลาดับข้อมูล ที่อยู่ใกล้กันเข้ามา(กว่าในครั้งแรก) และความห่างของข้อมูลที่
เปรียบเทียบก็จะน้อยลงจนเหลือ 1
วิธีนี้คิดค้นเมื่อปี ค.ศ.1959 โดย ดี.แอล.เชลล์(D.L.SHELL) เรียกว่า การเรียงลาดับ
แบบเชลล์(shell sort)
5. การเรียงลาดับโดยการใช้ฐานเลข(radix sort)
การเรียงลาดับแบบนี้การเรียงลาดับ จะอยู่บนพื้นฐานของการแทนตาแหน่งของตัว
เลขที่ต้องการนามาเรียงลาดับ จะเริ่มจากตัวที่มีเลขนัยสาคัญสูงที่สุด ดาเนินจนกระทั่ง
ถึงตัวเลขที่มีเลขนัยสาคัญต่าสุด การเรียงลาดับในวิธีนี้การเรียงลาดับ จะเรียงจากตัว
เลขที่มีนัยสาคัญน้อยที่สุดก่อน เมื่อตัวเลขทั้งหมดถูกนามาเรียงลาดับตามเลข
นัยสาคัญที่สูงขึ้น ตัวเลขที่เหมือนกัน ในตาแหน่งน้น จะต่างกันในตาแหน่งของเลข
นัยสาคัญที่น้อยกว่า การประมวลผลแบบนี้จะประมวลผลกับข้อมูลทั้งหมดได้ โดยที่ไม่
ต้องมีการแบ่งข้อมูลแบบกลุ่มย่อย
6. การเรียงลาดับอย่างเร็ว(quick sort)
ถูกสร้างและตั้งชื่อโดย ซี.เอ.อาร์.ฮาร์เวร์ (C.A.R HOARE) การเรียงลาดับอย่างเร็ว จะ
แบ่งข้อมูลเป็นสองกลุ่ม โดยใน การจัดเรียงจะเลือกข้อมุลตัวใดตัวหนึ่งออกมา ซึ่งจะ
เป็นตัวที่แบ่งข้อมูลออกเป็นสองกลุ่ม โดยกลุ่มแรกจะต้องมีข้อมูลน้อยกว่า ตัวแบ่ง และ
กลุ่มที่มีข้อมูลน้อยกว่าตัวแบ่ง และอีกกลุ่มจะมีข้อมูลที่มากกว่าตัวแบ่ง ซึ่งเราเรียกตัว
แบ่งว่า ตัวหลัก(pivot) ในการเลือกตัวหลักจะมีอิสระในการเลือกข้อมูลตัวใดก็ได้ที่เรา
ต้องการ การเรียงลาดับแบบเร็วเหมาะกับข้อมูลที่มีการเรียกซ้า
7.การเรียงลาดับฮีพ(heapsort)
เป็นการเรียงลาดับที่อยู่บนพื้นฐานบนพื้นฐานของโครงสร้างแบบไบนารี จะดาเนินการ
2 ขั้นตอน คือ
1. การจัดข้อมูลในอะเรย์ให้สอดคล้องกับความต้องการของฮีพ
2. การขจัดหนือการเคลื่อนย้ายข้อมูลในตาแหน่งสูงสุดหรือตาแหน่งยอดของของฮี
พออกไปและสนับสนุนข้อมูลข้อมูล ตัวอื่นไปแทนตาแหน่งนั้น
การเรียนรู้ที่ 8 การค้นหาข้อมูล
การค้นหาข้อมูล (searching)
การค้นหาคาตอบ หรือการค้นหาข้อมูลในทางคอมพิวเตอร์มักจะกระทาบน
โครงสร้างข้อมูลแบบต้นไม้ และกราฟ ทั้งนี้เพราะโครงสร้างข้อมูลในลักษณะนี้
สามารถทาให้การค้นหาทาได้สะดวกและสามารถพลิกแพลงการค้นหาได้ง่าย ใน
ความเป็นจริงแล้ว การค้นหาข้อมูลบางครั้งสามารถกระทาบนโครงสร้างข้อมูลชนิด
อื่นก็ได้เช่น อาเรย์ แสตก และคิว แต่การจัดข้อมูลในโครงสร้างเช่นนี้ มีข้อจากัดใน
การค้นหาข้อมูลมาก การค้นหาทาได้แบบเรียงลาดับ(Sequencial Search) เท่านั้น
ซึ่งใช้ได้กับข้อมูลที่มีขนาดเล็ก ดังนั้นในการค้นหาข้อมูลที่มีขนาดใหญ่ ก่อนการ
ค้นหา หรือระหว่างการค้นหา ข้อมูลที่จะถูกค้นจะต้องถูกจัดให้อยู่ในรูปแบบของ
ต้นไม้ หรือกราฟเท่านั้น การค้นหาข้อมูลบนโครงสร้างต้นไม้และกราฟสามารถจ
าแนกได้ 2 แบบคือ การค้นหาแบบไบล์ด(Blind Search) และการค้นหาแบบฮิวริ
สติก(Heuristic Search)
การค้นหาแบบไบล์ด(Blind Search)
การค้นหาแบบไบล์ด(Blind search) เป็นการค้นหาแบบที่เดินทางจากโหนดหนึ่งไปยัง
อีกโหนดหนึ่ง โดยอาศัยทิศทางเป็นตัวกาหนดการค้นหา ไม่ต้องมีข้อมูลอะไรมาช่วยเสริม
การตัดสินใจว่าจะเดินทางต่อไปอย่างไร หรือกล่าวอย่างง่าย ๆ คือการจะหยิบข้อมูลใดมา
ช่วยในการค้นหาต่อไป ไม่ต้องอาศัยข้อมูลใด ๆ ทั้งสิ้น นอกจากทิศทางซึ่งเป็นรูปแบบ
ตายตัว การค้นหาแบบไบล์ดสามารถแบ่งย่อยได้ดังนี้ คือ การค้นหาทั้หมด และการค้นหา
บางส่วน
- การค้นหาทั้งหมด(exhaustive search) คือ การค้นหาทั้งหมดของปริภูมิสถานะ
- การค้นหาบางส่วน (partial search) การค้นหาเพียงบางส่วนของปริภูมิสถานะ ซึ่งใน
ความเป็นจริงการค้นหาส่วนมากใช้การค้นหาเฉพาะบางส่วนเท่านั้นเนื่องจากปริภูมิสถานะมัก
มีขนาดใหญ่ เท่าให้ไม่สามารถค้นหาได้ทั้งหมด ดังนั้นจึงมีความเป็นไปได้ว่าคาตอบที่ได้
อาจไม่ใช่คาตอบที่ดีที่สุด การค้นหาแบบนี้สามารถแบ่งได้เป็น 2 ประเภทคือ การค้นหาแบบ
ลึกก่อน(Depth first search) และการค้นหาแบบกว้างก่อน (Breadth first search)
การค้นหาแบบลึกก่อน(Depth first search)
การค้นหาแบบลึกก่อนเป็นการค้นหาที่กาหนดทิศทางจากรูปของโครงสร้างต้นไม้ ที่
เริ่มต้นจากโหนดราก(Root node) ที่อยู่บนสุด แล้วเดินลงมาให้ลึกที่สุด เมื่อถึงโหนดล่างสุด
(Terminal node) ให้ย้อนขึ้นมาที่จุดสูงสุดของกิ่งเดี่ยวกันที่มีกิ่งแยกและยังไม่ได้เดินผ่าน
แล้วเริ่มเดินลงจนถึงโหนดลึกสุดอีก ทาเช่นนี้สลับไปเรื่อยจนพบโหนดที่ต้องการหาหรือ
สารวจครบทุกโหนดแล้วตามรูปที่ 1 การค้นหาแบบลึกก่อนจะมีลาดับการเดินตามโหนดดัง
ตัวเลขที่กากับไว้ในแต่ละโหนด
รูปที่ 1 ลาดับการเดินทางบนโหนดของการค้นหาแบบลึกก่อนบนโครงสร้างต้นไม้
ดังที่ได้กล่าวมาแล้วว่า โครงสร้างข้อมูลที่ใช้สาหรับการค้นหานี้สามารถใช้กับ
โครงสร้างกราฟได้ด้วย โดยอาศัยหลักการเดียวกัน แต่สาหรับการเดินทางบนกราฟนั้นจะ
ไม่มีโหนดลึกสุดดังนั้นการเดินทางบนกราฟจะต้องปรับวิธีการเป็นดังนี้ โดยเริ่มจาก
โหนดเริ่มต้น จากนั้นให้นาโหนดที่อยู่ติดกับโหนดที่กาลังสารวจอยู่(ที่ยังไม่ได้ทาการ
สารวจและยังไม่ได้อยู่ในแสต็กมาใส่แสต็ก) มาเก็บไว้ในสแต็กเมื่อสารวจโหนดนั้นเสร็จ ให้
พอพ(pop) ตัวบนสุดของโหนดออกมาทาการสารวจ แล้วนาโหนดข้างเคียงทั้งหมดที่ยัง
ไม่ได้สารวจมาต่อท้ายแสต็ก แล้วพอพตัวบนสุดออกมาสารวจ ทาเช่นนี้เรื่อย ๆ จนกระทั้ง
พบโหนดที่ต้องการ หรือสารวจครบทุดโหนด
รูปที่ 2 โครงสร้างข้อมูลแบบกราฟ
การสารวจจะเริ่มต้นที่ A และนาโหนดข้างเคียง B และ C มาเก็บไว้ในแสต็ก เมื่อสารวจ A
เสร็จพอพข้อมูลจากแสต็กออกมาได้ C ทาการสารวจ C และนาโหนดข้างเคียงกับ C ที่ยัง
ไม่ได้ทาการสารวจและยังไม่ได้อยู่ในแสต็กมาใส่แสต็ก Dและ F
พุช(Push) ใส่แสต็ก ดังนั้นในแสต็กตอนนี้มี B D F อยู่ เมื่อสารวจ C เสร็จพอพFออกมาทา
การสารวจ แล้วนาโหนดข้างเคียงที่ยังไม่ได้สารวจและยังไม่ได้อยู่ในแสต็กมาใส่แสต็ก ซึ่งก็
คือ G ดังนั้นข้อมูลในแสต็กจะเป็น B D G ท าเช่นนี้ไปเรื่อย ๆ จนจบการทางานก็จะได้ลาดับ
การสารวจคือ (A C F G H E D B) ตามตาราง 1 ดังต่อไปนี้
ตารางที่ 1 ลาดับการค้นหาแบบลึกก่อน
ในการค้นหาข้อมูลแบบนี้บนโครงสร้างของกราฟ มีข้อที่น่าสังเกตุคือ โหนดที่เริ่มต้น
การสารวจจะต้องมีการกาหนดมาให้ว่าโหนดใดเป็นโหนดเริ่มต้น และข้อสังเกตุอีกประการ
หนึ่งคือวิธีการค้นหาแบบลึกก่อนที่ใช้สาหรับโครงสร้างข้อมูลแบบกราฟ สามารถใช้กับ
โครงสร้างข้อมูลแบบต้นไม้ได้ด้วย
การค้นหาแบบกว้างก่อน (Breadth first search)
การค้นหาแบบกว้างก่อนเป็นการกาหนดทิศทางการค้นหาแบบที่ละระดับของ
โครงสร้างต้นไม้โดยเริ่มจากโหนดราก(ระดับที่ 0) แล้วลงมาระดับที่ 1 จากซ้ายไปขวา เมื่อ
เสร็จระดับที่ 1 ไประดับที่ 2จากซ้ายไปขวาเช่นกัน ทาเช่นนี้เรื่อย ๆ จนพบโหนดที่ต้องการ
ตามรูปที่ 3 ลาดับการเดินทางของโหนดเป็นไปตามหมายเลขที่กากับไว้บนโหนด
รูปที่ 3 ลาดับการค้นหาแบบกว้างก่อนบนโครงสร้างต้นไม้
สาหรับการค้นหาแบบกว้างก่อนบนโครงสร้างต้นไม้ จะอาศัยโครงสร้างข้อมูลแบบคิว
(Queue)มาช่วย และด้วยวิธีการเช่นเดียวกับการค้นหาแบบลึกก่อนคือ ให้เริ่มต้นสารวจที่
โหนดเริ่มต้น แล้วนาโหนดข้างเคียงเก็บไว้ในคิว เมื่อสารวจโหนดเริ่มต้นเสร็จ ให้นาข้อมูล
ในคิวออกมาสารวจ แล้วนาโหนดข้างเคียงที่ยังไม่ได้สารวจและไม่ได้อยู่ในคิวใส่คิวไว้
ทาเช่นนี้ไปเรื่อย ๆ จนพบโหนดที่ต้องการ หรือเมื่อสารวจครบทุกโหนด
รูปที่ 4 โครงสร้างข้อมูลแบบกราฟ
การสารวจเริ่มต้นที่ A นาโหนดข้างเคียง B C ไว้ในคิว เมื่อสารวจ A เสร็จ นาข้อมูลในคิว
คือ Bออกมาสารวจ แล้วนาข้อมูลข้างเคียงคือ D E ใส่คิว ตอนนี้คิวจะมี B D E อยู่ แล้ว
นา B ออกมาสารวจทาเช่นนี้เรื่อย ๆ จะได้ลาดับการสารวจข้อมูลคือ (A B C D E F G
H) ตามตารางที่ 2
ตาราง 2 ลาดับการค้นหาแบบกว้างก่อน
เช่นเดียวกับการค้นหาแบบลึกก่อน การค้นหาแบบกว้างก่อนโดยใช้โครงสร้างข้อมูลคิว
มาช่วยต้องมีการกาหนดโหนดเริ่มต้น และวิธีการนี้สามารถใช้ได้กับข้อมูลบนโครงสร้าง
แบบต้นไม้ด้วย
ตารางเปรียบเทียบ การค้นหาแนวลึกก่อนและแนวกว้างก่อน
การค้นหาแนวลึกก่อน การค้นหาแนวกว้างก่อน
1.ใช้หน่วยความจาน้อยกว่า
เพราะว่าสถานะในเส้นทางค้นหา
ปัจจุบันเท่านั้นที่ถูกเก็บ(ในขณะ
ใดๆ จะเก็บเส้นทางเดียว พอจะ
ไปเส้นทางอื่นเส้นทางที่ผ่านมาก็
ไม่จาเป็นต้องเก็บ)
1.ใช้หน่วยความจามากเพราะ
ต้องเก็บสถานะไว้ทุกตัวเพื่อ
หาเส้นทางจากสถานะเริ่มต้น
ไปหาคาตอบ
2. อาจจะติดเส้นทางที่ลึกมาก
โดยไม่พบคาตอบ เช่นในกรณีที่
เส้นทางนั้นไม่มีคาตอบและเป็น
เส้นทางที่ยาวไม่สิ้นสุด จะทาไม่
สามารถไปเส้นทางอื่นได้
2. จาไม่ติดเส้นทางที่ลึกมาก
ๆ โดยไม่พบคาตอบ
3. ถ้าคาตอบอยู่ในระดับ n+1
สถานะอื่นทุกตัวที่ระดับ 1ถึง
ระดับ n ไม่จาเป็นต้องถูกกระจาย
จนหมด
3. ถ้าคาตอบอยู่ในระดับ
n+1 สถานะทุกตัวที่ระดับ 1
ถึงระดับ n จะต้องถูกกระจาย
จนหมด ทาให้มีสถานะที่ไม่
จาเป็นในเส้นทางที่จะไปสู่
คาตอบถูกกระจายออกด้วย
4. เมื่อพบคาตอบไม่สามารถ
รับประกันได้ว่าเส้นที่ได้เป็น
เส้นทางที่สั้นที่สุดหรือไม่
4. ถ้ามีคาตอบจะรับประกันได้
ว่าจะพบคาตอบแน่ ๆ และจะ
ได้เส้นทางสั้นที่สุดด้วย
การค้นหาแบบฮิวริสติก(Heuristic Search)
การค้นหาคาตอบอาศัยวิธีการทางฮิวริสติก (heuristic search) มีความความ
แตกต่างจากการค้นหาข้อมูลแบบธรรมดาและแบบฮิวริสติกนั้นอยู่ที่การค้นหาข้อมูล
ธรรมดา ผู้ที่ทาการค้นข้อมูลจะต้องตรวจสอบข้อมูลทีละตัวทุกตัวจนครบ แต่ฮิวริสติกจะ
ไม่ลงไปดู ข้อมูลทุกตัว วิธีการนี้จะเลือกได้คาตอบที่เหมาะสมให้กับการค้นหา ซึ่งมีข้อดี
คือ สามารถทาการ ค้นหาคาตอบจาก ข้อมูลที่มีขนาดใหญ่มาก ๆ ได้ แต่มีข้อเสียคือ
คาตอบที่ได้เป็นเพียงคาตอบที่ดี เท่านั้นไม่แน่ว่าจะดีที่สุด แต่เนื่องจากว่าปัญหาในบาง
ลักษณะนั้นใหญ่มาก และเป็นไปไม่ได้ที่จะทา การค้นหาด้วยวิธี ธรรมดากระบวนการของ
ฮิวริสติกจึงเป็นสิ่งที่จาเป็นในเรื่องของฮิวริสติกนั้น นอกจากจะมีการค้นหาแบบฮิวริสติก
แล้ว ยังมีอีกสิ่งหนึ่งที่สาคัญคือ ฮิวริสติกฟังก์ชัน (heuristic function) ซึ่งหมายถึง
ฟังก์ชันที่ทาหน้าที่ในการวัดขนาดของความเป็น ไปได้ในการแก้ปัญหาซึ่งจะแสดงด้วย
ตัวเลข วิธีการดังกล่าวจะกระท าได้โดยการพิจารณาถึงวิธีการ (aspects) ต่าง ๆ ที่ใช้
ในการแก้ปัญหา ณ สถานะหนึ่งว่าจะสามารถแก้ปัญหาได้ตามที่ต้องการหรือไม่ โดย
กาหนดเป็นน้าหนักที่ให้กับการแก้ปัญหาของแต่ละวิธี น้าหนักเหล่านี้จะถูกแสดงด้วยตัว
เลขที่กากับไว้กับโหนดต่าง ๆ ในกระบวนการ ค้นหา และค่าเหล่านี้จะเป็นตัวที่ใช้ในการ
ประมาณความเป็นไปได้ว่าเส้นทางที่ผ่านโหนดนั้นจะมี ความเป็นไปได้ในการนาไปสู่
หนทางการแก้ปัญหาได้มากน้อยแค่ไหน
จุดประสงค์ที่แท้จริงของฮิวริสติก ฟังก์ชันก็คือ การกากับทิศทางของกระบวนการ
ค้นหา เพื่อให้อยู่ในทิศทางที่ได้ประโยชน์สูงสุด โดยการบอกว่าเราควรเลือกเดินเส้น
ทางไหนก่อน ในกรณีที่มีเส้น ทางมากกว่าหนึ่งเส้นทางต้องเลือกกระบวนการค้นหา
แบบฮิวริสติก โดยปกติแล้วจะต้องอาศัยฮิวริสติกฟังก์ชัน ทาให้การแก้ปัญหาหนึ่ง ๆ
จะดีหรือไม่ ก็ขึ้นอยู่กับฮิวริสติกฟังก์ชันดังนั้นการค้นหาแบบนี้จึงไม่มีอะไรเป็น
หลักประกันว่าจะได้สิ่งที่ไม่ดีออกมาด้วยเหตุนี้เอง เราจึงเรียกการ ค้นหาแบบฮิวริสติก
นี้ว่า Weak Methods หรือจะกล่าวอีกนัยหนึ่งคือ Weak Methodsเป็นกระบวนการ
ควบคุมโดยทั่วไป (general-purpose control stategies) ซึ่งการค้นหาแบบนี้
สามารถแบ่งได้เป็น
การค้นหาแบบปีนเขา(Hill climbing)
ฟังก์ชันฮิวริสติกสามารถนามาช่วยในกระบวนการค้นหาเพื่อให้ได้คาตอบอย่างรวดเร็ว
และมีประสิทธิภาพ วิธีการที่จะนาฟังก์ชันฮิวริสติกมาใช้มีหลายวิธีด้วยกันขึ้นอยู่กับว่าจะใช้
ในลักษณะใด เช่นเลือกสถานะที่มีค่าฮิวริสติกดีขึ้น แล้วเดินไปยังสถานะนั้นเลยโดยไม่
ต้องสนใจสถานะที่มีค่าฮิวริสติกแย่กว่าสถานะปัจจุบันหรือว่าจะเก็บสถานะทุกตัวไว้แม้ว่า
ค่าฮิวริสติกจะแย่ลงแล้วพิจารณาสถานะเหล่านี้ทีหลัง เป็นต้น ในส่วนต่อไปนี้จะกล่าวถึง
อัลกอริทึมต่าง ๆ ที่นาฟังก์ชันฮิวริสติกมาช่วยในการค้นหาคาตอบ โดยเริ่มจากอัลกอริทึม
ปีนเข้า (Hill climbing algorithm)
รูปที่ 5 แสดงลักษณะการค้นหาแบบ Hill climbing
การค้นหาแบบฮิลไคลบิง(Hill climbing) เป็นวิธีการค้นหาข้อมูลที่มีลักษณะคล้ายกับ
การปีนภูเขา การที่นักปีนภูเขาจะเดินทางไปถึงยอดภูเขา นักปีนเขาจะต้องมองก่อนว่ายอด
เขาอยู่ที่ใด แล้วนักปีนเขาจะต้องพยายามไปจุดนั้นให้ได้ ลองนึกภาพของการปีนภูเขาโล้น
ที่มองเห็นแต่ยอด และนักปีเขากาลังปีนภูเขาอยู่เบื้องล่างที่มีเส้นทางเต็มไปหมด เพื่อที่จะ
เดินทางไปถึงยอดภูเขาโดยเร็วที่สุด นักปีน
เขาจะมองไปที่ยอดเขาแล้วสังเกตว่าทิศทางใดที่เมื่อปีนแล้วจะยิ่งใกล้ยอดเขา และ
หลีกเลี่ยงทิศทางที่เมื่อไปแล้วจะทาให้ตัวเองห่างจากยอดเขา นักปีนเขาจะต้องทาเช่นนี้ไป
เรื่อย ๆ จนกระทั่งถึงยอดเขา
ตัวอย่างการใช้ฟังก์ชันฮิวริสติก โดยอัลกอริทึมปีนเขาอย่างง่ายโดยปัญหาโลกของ
บล๊อก
รูปที่ 6 การค้นหาแบบ Hill climbing
ตัวเลข h(i) ในรูปแสดงว่า สถานะที่ i มีค่าฮิวริสติกเท่ากับ h จากรู้จะเห็นได้ว่า
เริ่มต้นจากสถานะที่ 1 ที่มีค่าฮิวริสติกเท่ากับ -1 อัลกอริทึมปีนเขาใช้ตัวกระทาการเพื่อ
สร้างสถานะลูกตัวแรกของสถานะที่ 1 แล้ววัดค่าฮิวริสติกได้ 0 ซึ่งมีค่าดีขึ้น ถ้าสังเกตจาก
รูปที่ จะพบว่าสถานะที่ 1 มีสถานะลูกทั้งหมด 3 ตัว แต่ในกรณีของอัลกอริทึมปีนเขานี้
เมื่อได้สถานะลูกตัวแรกซึ่งมีค่าอิวริสติกดีขึ้น อัลกอริทึมจะไม่สร้างสถานะลูกที่เหลืออีก 2
ตัว และจะไม่ย้อนกลับมาที่สถานะลูกทั้ง 2 นี้ แม้ว่าหลังจากนี้อัลกอริทึมจะค้นไม่พบ
คาตอบกล่าวคือเป็นการตัดทางเลือกทิ้ง ซึ่งการทาเช่นนี้แม้ว่าจะมีโอกาสไม่พบคาตอบแต่
ก็มีข้อดีที่เป็นการช่วยลดเวลาอย่างมาก จากนั้นอัลกอริทึมมาสถานะที่ 2 แล้วเริ่มสร้าง
สถานะลูกได้สถานะที่ 3 ที่มีค่าฮิวริสติก -1 ซึ่งแย่ลงในกรณีที่แย่ลงเช่นนี้ อัลกอริทึมจะไม่
ไปยังสถานะลูกตัวนี้และสร้างสถานะลูกตัวต่อไปโดยใช้ตัวกระทาการที่เหลือได้สถานะที่ 4
มีค่าฮิวริสติกเท่ากับ -1 ไม่ดีขึ้นเช่นกันจึงสร้างสถานะลูกตัวถัดไป เป็นสถานะที่5 มีค่าฮิวริ
สติกเท่ากับ 1 เป็นค่าที่ดีขึ้น อัลกอริทึมจะมายังสถานะนี้และค้นพบคาตอบในที่สุด
อัลกอริทึมปีนเขานี้จะมีประสิทธิภาพมากดังเช่นแสดงในตัวอย่างนี้ซึ่งกระจาย
สถานะทั้งสิ้นเพียง 6 ตัวแล้วพบคาตอบ เปรียบเทียบกับอัลกอริทึมการค้นหาแนวกว้าง
ก่อนซึ่งใช้สถานะทั้งสิ้นถึง 11 ตัว อย่างไรก็ดีอัลกอริทึมนี้จะมีประสิทธิภาพมาก ถ้าใช้
ฟังก์ชันฮิวริสติกที่ดีมาก ๆ ในกรณีที่ฟังก์ชันฮิวริสติกไม่ดีนัก อัลกอริทึมนี้ก็อาจหลง
เส้นทางได้ และอาจไม่พบคาตอบแม้ว่าปริภูมิที่กาลังค้นหามีคาตอบอยู่ด้วยก็ตาม สาเหตุ
การหลงเส้นทางประการหนึ่งมาจากการเลือกสถานะลูก ซึ่งอัลกอริทึมจะไม่ได้พิจารณา
สถานะลูกทุกตัวโดยเมื่อพบสถานะลูกตัวใดที่ดีขึ้นก็จะเลือกทางนั้น อัลกอริทึมนี้สามารถ
ดัดแปลงเล็กน้อยให้พิจารณาสถานะลูกทุกตัวให้ครบก่อน แล้วเลือกสถานะลูกตัวที่มีค่าฮิว
ริสติกสูงสุด เมื่อทาเช่นนี้ก็จะทาให้อัลกอริทึมได้พิจารณาเส้นทางที่ดีที่สุด ณ ขณะหนึ่ง ๆ
ได้ดีขึ้นเราเรียกอัลกอริทึมที่ดัดแปลงนี้ว่าอัลกอริทึมปีนเขาชันสุด (Steepest ascent hill
climbing)
การค้นหาดีสุดก่อน(Best-first search)
เป็นกระบวนการค้นหาข้อมูลที่ได้นาเอาข้อดีของทั้งการค้นหาแบบลึกก่อน(Depth
firstsearch) และการค้นหาแบบกว้างก่อน(Breadth first search) มารวมกันเป็นวิธีการ
เดียว โดยที่แต่ละขั้นของการค้นหาในโหนดลูกนั้น การค้นหาแบบดีที่ดีก่อนจะเลือกเอา
โหนดที่ดีที่สุด (most promising)และการที่จะทราบว่าโหนดใดดีที่สุดนี้สามารถทาได้
โดยอาศัยฮิวริสติกฟังก์ชัน ซึ่งฮิวริสติก ฟังก์ชันนี้จะทาหน้าที่เหมือนตัววัดผล และให้ผล
ของการวัดนี้ออกมาเป็นคะแนน รูปที่ 2.7 เป็นตัวอย่างของการค้นหาแบบดีที่สุดก่อน
ขั้นตอนนี้เริ่มจากตอน 1 สร้างโหนดราก(root node) ในขั้นตอน 2สร้างโหนดลูก
B และ C แล้วตรวจสอบโหนด B และ C ด้วยฮิวริสติกฟังก์ชัน ได้ผลออกมาเป็นคะแนน
คือ 3 และ 1ตามล าดับ จากนั้นให้เลือกโหนด C เป็นโหนดต่อไปที่เราสนใจ เพราะมีค่า
น้อยกว่า (หมายเหตุ ในการเลือกนี้จะเลือกค่ามากสุด หรือน้อยสุดก็ได้ ขึ้นอยู่กับลักษณะ
ของปัญหา) แล้วสร้างโหนด ลูกให้กับโหนด C ในขั้นตอน 3 ได้โหนด D และ Eแล้ว
ตรวจสอบคะแนนได้ 4 และ 6 ตามล าดับ จากนั้นท าการเปรียบเทียบค่าของโหนด
ท้ายสุด หรือเทอร์มินอล โหนด(terminal node) ทุกโหนด ว่าโหนด ใดมีค่าดีที่สุด ในที่นี้
จะต้องเลือกโหนด B เพราะมีคะแนนเพียง 3 (เลือกคะแนนต่าสุด) แล้วสร้างโหนด ลูกตาม
ขั้นตอน 4 ได้ F และ G แล้วตรวจ สอบคะแนนได้ 6 และ 5 คะแนนตามล าดับ ทาเช่นนี้
เรื่อย ๆ จนพบคาตอบหรือจนไม่สามารถ สร้างโหนดต่อไปได้อีก
รูปที่ 7 ขั้นตอนของการค้นหาแบบดีที่สุดก่อน
รูปที่ 8 การค้นหาแบบดีสุดก่อน
อัลกอริธึม: การค้นหาแบบดีที่สุดก่อน
1. เริ่มด้วย OPEN ที่มีเพียงโหนดเริ่มต้น
2. ทาจนกว่าจะพบเป้าหมาย หรือว่าไม่มีโหนดเหลืออยู่ใน OPEN
� เลือกโหนดที่ดีที่สุดใน OPEN
� สร้างโหนดลูกให้กับโหนดที่ดีที่สุดนั้น
� สาหรับโหนดลูกแต่ละตัวให้ทาดังต่อไปนี้
i) ถ้าโหนดนั้นยังไม่เคยถูกสร้างมาก่อนหน้านั้น ให้ตรวจสอบค่าของมันโดย
ใช้ฮิวริสติกฟังชัน แล้วเพิ่มเข้าไปใน OPEN แล้วบันทึกว่าเป็นโหนดแม่
ii) ถ้าโหนดนั้นถูกสร้างมาก่อนหน้านี้แล้ว ให้เปลี่ยนโหนดแม่ของมัน ถ้าเส้น
ทางใหม่ที่ได้ดีกว่าโหนดแม่ตัวเดิม ในกรณีนี้ ให้ปรับเปลี่ยนค่าตามเส้น
ทางที่อาจจะเกิดขึ้น
การค้นหาแบบ Greedy (Greedy Algorithm)
กรีดีอัลกอริธึม เป็นการค้นหาแบบดีที่สุดก่อน(Best first search) ที่ง่ายที่สุด หลักการ
ของการค้นหาแบบนี้คือ การเลือกโหนดที่ดีที่สุดตลอดเวลาอัลกอริธึม กรีดี
1. เลือกโหนดเริ่มต้นมาหนึ่งโหนด
2. ให้โหนดที่เลือกมานี้เป็นสถานะปัจจุบัน
3. ให้ทาตามขบวนการข้างล่างนี้จนกว่าจะไม่สามารถสร้างโหนดลูกได้อีก
3.1 สร้างสถานะใหม่ที่เป็นโหนดลูกที่เป็นไปได้ทั้งหมดจากสถานะปัจจุบัน
3.2 จากสถานะใหม่ที่สร้างขึ้นมาทั้งหมด ให้เลือกสถานะ หรือ โหนดลูก ที่ดีที่สุด
ออกมาเพียงโหนดเดียว
4. กลับไปที่ขึ้นตอนที่ 2
ตัวอย่าง จากเรื่องการเดินทางของเซลแมนที่จะต้องเดินทางไปยังเมือง A B C D ซึ่งมี
ระยะทางตามตารางที่ 3 เราจะแก้ปัญหานี้ด้วยวิธีการของกรีดีบ้าง
รูปที่ 9 การแก้ปัญหาการ
เดินทางของเซลแมนด้วยกรีดี
อัลกอริธึม
จากรูปที่ 9 การแก้ปัญหาเริ่มจาก การเลือก A เป็นเมืองเริ่มแรก จากนั้นทาการสร้าง
โหนดลูกB C และ D หารระยะทางระหว่าง A ถึงเมืองเหล่านี้ได้ 20
30 และ 50 ตามลาดับ เลือก B เป็นเมืองที่จะเดินทางต่อมา จากนั้นสร้างโหนดลูกของ
B ได้ C และ D และได้ระยะทางเท่ากับ 15 และ 20 ตามลาดับ เลือก C เป็นเมืองที่จะ
เดินทางต่อไป จากนั้นสร้างโหนดลูกให้ C ได้ D มีค่าเท่ากับ 10 เลือกเดินมาที่ D เป็น
เมืองสุดท้ายก่อนกลับไป A รวมระยะทางเท่ากับ 20 + 15 + 10 + 50 = 95
รูปที่ 10 ข้อมูลในรูปแบบกราฟ
ตาราง 3 การค้นหาแบบกรีดี
การค้นหาแบบ A*
การค้นหาแบบ A* เป็นอีกแบบของการค้นหาแบบดีที่สุดก่อน วิธีการเลือกโหนดที่จะใช้
ในการดาเนินการต่อจะพิจารณาจากโหนดที่ดีที่สุด แต่ในกรณีของ A* นี้จะมีลักษณะพิเศษ
กว่าคือ ในส่วนของฮิวริสติกฟังก์ชัน ในกรณีของการค้นหาแบบดีที่สุดก่อนนั้น ค่าที่ได้จากฮิว
ริสติก ฟังก์ชัน จะเป็นค่าที่วัดจาก โหนดปัจจุบัน แต่ในกรณีของ A* ค่าของฮิวริสติก ฟังก์ชัน
จะวัดจากค่า 2 ค่าคือ ค่าที่วัดจากโหนดปัจจุบันไปยังโหนดราก และจากโหนดปัจจุบันไปยัง
โหนดเป้าหมาย ถ้าเราให้ตัวแปร f แทนค่าของฮิวริสติก ฟังก์ชัน g เป็นฟังก์ชันที่ใช้วัด
ค่า cost จากสถานะเริ่มต้นจนถึงสถานะปัจจุบัน h' เป็นฟังก์ชันที่ใช้วัดค่า cost จาก
สถานะปัจจุบันถึงสถานะเป้าหมาย ดังนั้น
f = g + h’
อัลกอริทึม A* (A* Search) เป็นการขยายอัลกอริทึมดีสุดก่อนโดยพิจารณาเพิ่มเติมถึง
ต้นทุนจากสถานะเริ่มต้นมายังสถานะปัจจุบันเพื่อใช้คานวณค่าฮิวริสติกด้วย ในกรณีของ
อัลกอริทึม A* เราต้องการหาค่าต่าสุดของฟังก์ชัน f'ของสถานะ s นิยามดังนี้
f'(s)=g(s)+h'(s)
โดยที่ g คือฟังก์ชันที่คานวณต้นทุนจากสถานะเริ่มต้นมายังสถานะปัจจุบัน h' คือฟังก์ชันที่
ประมาณต้นทุนจากสถานะปัจจุบันไปยังคาตอบ ดังนั้น f' จึงเป็นฟังก์ชันที่ประมาณต้นทุน
จากสถานะเริ่มต้นไปยังคาตอบ (ยิ่งน้อยยิ่งดี) เรามองได้ว่าฟังก์ชัน h' คือฟังก์ชันฮิวริสติกที่
เราเคยใช้ในการค้นหาอื่น ๆ ก่อนหน้านี้เช่นอัลกอริทึมปีนเขา อัลกอริทึมดีสุดก่อน เป็นต้น
ในที่นี้เราใส่เครื่องหมาย ' เพื่อแสดงว่าฟังก์ชันนี้เป็นฟังก์ชันประมาณของฟังก์ชันจริงที่ไม่
รู้ (เราทาได้แค่ประมาณว่า h' คือต้นทุนจากสถานะปัจจุบันไปยังคาตอบ เราจะรู้ต้นทุนจริง
ก็ต่อเมื่อเราได้ทาการค้นหาจริงจนไปถึงคาตอบแล้ว) ส่วน g เป็นฟังก์ชันที่คานวณ
ต้นทุนจริงจากสถานะเริ่มต้นมายังสถานะปัจจุบัน (จึงไม่ได้ใส่เครื่องหมาย ' ) เพราะเรา
สามารถหาต้นทุนจริงได้เนื่องจากได้ค้นหาจากสถานะเริ่มต้นจนมาถึงสถานะปัจจุบันแล้ว
ส่วน f' ก็เป็นเพียงแค่ฟังก์ชันประมาณโดยการรวมต้นทุนทั้งสอง คือ h' กับ g
อัลกอริทึม A* จะทาการค้นหาโดยวิธีเดียวกันกับอัลกอริทึมดีสุดก่อนทุกประการ
ยกเว้น ฟังก์ชันฮิวริสติกที่ใช้เปลี่ยนมาเป็น f' (ต่างจากอัลกอริทึมดีสุดก่อนที่ใช้ h') โดย
การใช้ f' อัลกอริทึม A* จึงให้ความสาคัญกับสถานะหนึ่ง ๆ 2 ประการ คือ (1) สถานะที่
ดีต้องมี h' ดีคือต้นทุนเพื่อจะนาไปสู่คาตอบหลังจากนี้ต้องน้อย และ (2) ต้นทุนที่จ่ายไป
แล้วกว่าจะถึงสถานะนี้ (g) ต้องน้อยด้วย เราจึงได้ว่า A* จะค้นหาเส้นทางที่ให้ต้นทุน
โดยรวมน้อยที่สุดตามค่า f' ซึ่งต่างจากอัลกอริทึมดีสุดก่อน ที่เน้นความสาคัญของ
สถานะที่ต้นทุนหลังจากนี้ที่จะนาไปสู่คาตอบต้องน้อย โดยไม่สนใจว่าต้นทุนที่จ่ายไปแล้ว
กว่าจะนามาถึงสถานะนี้ต้องเสียไปเท่าไหร่
นาย ณัฐพงษ์  สุดก้องไพร

More Related Content

What's hot

นวลลออ ถาวรโรจน์เสถียร เลขที่20 ม.5
นวลลออ ถาวรโรจน์เสถียร เลขที่20 ม.5นวลลออ ถาวรโรจน์เสถียร เลขที่20 ม.5
นวลลออ ถาวรโรจน์เสถียร เลขที่20 ม.5Nuanlaor Nuan
 
การใช้โปรแกรม Access เบื้องต้น
การใช้โปรแกรม Access เบื้องต้นการใช้โปรแกรม Access เบื้องต้น
การใช้โปรแกรม Access เบื้องต้นtechno UCH
 
2. ใบความรู้ที่ 1
2. ใบความรู้ที่ 12. ใบความรู้ที่ 1
2. ใบความรู้ที่ 1ครูเพชร
 
หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา ปาโจด ม.5
หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา  ปาโจด ม.5หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา  ปาโจด ม.5
หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา ปาโจด ม.5สิรินยา ปาโจด
 
ข้อมูลและการจัดการข้อมูล
ข้อมูลและการจัดการข้อมูลข้อมูลและการจัดการข้อมูล
ข้อมูลและการจัดการข้อมูลssuseraa96d2
 
ข้อมูลและการจัดการข้อมูล
ข้อมูลและการจัดการข้อมูลข้อมูลและการจัดการข้อมูล
ข้อมูลและการจัดการข้อมูลssuseraa96d2
 
หน่วยที่ 1
หน่วยที่ 1หน่วยที่ 1
หน่วยที่ 1palmyZommanow
 
หน่วยที่ 1เรื่อง การจัดการข้อมูล ธนพงษ์ น่านกร ม.5
หน่วยที่ 1เรื่อง การจัดการข้อมูล ธนพงษ์  น่านกร ม.5หน่วยที่ 1เรื่อง การจัดการข้อมูล ธนพงษ์  น่านกร ม.5
หน่วยที่ 1เรื่อง การจัดการข้อมูล ธนพงษ์ น่านกร ม.5palmyZommanow
 
ความรู้ทั่วไปเกี่ยวกับระบบฐานข้อมูล
ความรู้ทั่วไปเกี่ยวกับระบบฐานข้อมูลความรู้ทั่วไปเกี่ยวกับระบบฐานข้อมูล
ความรู้ทั่วไปเกี่ยวกับระบบฐานข้อมูลKhanpetz'Kao Boreds
 
สารสนเทศเพื่อประกอบการตัดสินใจ
สารสนเทศเพื่อประกอบการตัดสินใจ สารสนเทศเพื่อประกอบการตัดสินใจ
สารสนเทศเพื่อประกอบการตัดสินใจ Tiger Tanatat
 
หน่วยที่ 3 ระบบฐานข้อมูลเชิงสัมพันธ์
หน่วยที่ 3 ระบบฐานข้อมูลเชิงสัมพันธ์หน่วยที่ 3 ระบบฐานข้อมูลเชิงสัมพันธ์
หน่วยที่ 3 ระบบฐานข้อมูลเชิงสัมพันธ์Kochakorn Noiket
 
บทที่ 8
บทที่ 8บทที่ 8
บทที่ 8nunzaza
 

What's hot (16)

นวลลออ ถาวรโรจน์เสถียร เลขที่20 ม.5
นวลลออ ถาวรโรจน์เสถียร เลขที่20 ม.5นวลลออ ถาวรโรจน์เสถียร เลขที่20 ม.5
นวลลออ ถาวรโรจน์เสถียร เลขที่20 ม.5
 
การใช้โปรแกรม Access เบื้องต้น
การใช้โปรแกรม Access เบื้องต้นการใช้โปรแกรม Access เบื้องต้น
การใช้โปรแกรม Access เบื้องต้น
 
2. ใบความรู้ที่ 1
2. ใบความรู้ที่ 12. ใบความรู้ที่ 1
2. ใบความรู้ที่ 1
 
หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา ปาโจด ม.5
หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา  ปาโจด ม.5หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา  ปาโจด ม.5
หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา ปาโจด ม.5
 
ข้อมูลและการจัดการข้อมูล
ข้อมูลและการจัดการข้อมูลข้อมูลและการจัดการข้อมูล
ข้อมูลและการจัดการข้อมูล
 
Data management pub
Data management pubData management pub
Data management pub
 
ข้อมูลและการจัดการข้อมูล
ข้อมูลและการจัดการข้อมูลข้อมูลและการจัดการข้อมูล
ข้อมูลและการจัดการข้อมูล
 
หน่วยที่ 1
หน่วยที่ 1หน่วยที่ 1
หน่วยที่ 1
 
หน่วยที่ 1เรื่อง การจัดการข้อมูล ธนพงษ์ น่านกร ม.5
หน่วยที่ 1เรื่อง การจัดการข้อมูล ธนพงษ์  น่านกร ม.5หน่วยที่ 1เรื่อง การจัดการข้อมูล ธนพงษ์  น่านกร ม.5
หน่วยที่ 1เรื่อง การจัดการข้อมูล ธนพงษ์ น่านกร ม.5
 
ความรู้ทั่วไปเกี่ยวกับระบบฐานข้อมูล
ความรู้ทั่วไปเกี่ยวกับระบบฐานข้อมูลความรู้ทั่วไปเกี่ยวกับระบบฐานข้อมูล
ความรู้ทั่วไปเกี่ยวกับระบบฐานข้อมูล
 
แนวการสอบ ม.4
แนวการสอบ ม.4แนวการสอบ ม.4
แนวการสอบ ม.4
 
สารสนเทศเพื่อประกอบการตัดสินใจ
สารสนเทศเพื่อประกอบการตัดสินใจ สารสนเทศเพื่อประกอบการตัดสินใจ
สารสนเทศเพื่อประกอบการตัดสินใจ
 
Chapter1
Chapter1Chapter1
Chapter1
 
หน่วยที่ 3 ระบบฐานข้อมูลเชิงสัมพันธ์
หน่วยที่ 3 ระบบฐานข้อมูลเชิงสัมพันธ์หน่วยที่ 3 ระบบฐานข้อมูลเชิงสัมพันธ์
หน่วยที่ 3 ระบบฐานข้อมูลเชิงสัมพันธ์
 
บทที่ 8
บทที่ 8บทที่ 8
บทที่ 8
 
Lesson 1
Lesson 1Lesson 1
Lesson 1
 

Similar to นาย ณัฐพงษ์ สุดก้องไพร

ระบบฐานข้อมูล
ระบบฐานข้อมูลระบบฐานข้อมูล
ระบบฐานข้อมูลchanoot29
 
นางสาว หัทยา เชื้อสมเกียรติ ม.5
นางสาว หัทยา เชื้อสมเกียรติ ม.5นางสาว หัทยา เชื้อสมเกียรติ ม.5
นางสาว หัทยา เชื้อสมเกียรติ ม.5hattayagif
 
นางสาว อรอนงค์ สุขาวรรณ
นางสาว อรอนงค์ สุขาวรรณนางสาว อรอนงค์ สุขาวรรณ
นางสาว อรอนงค์ สุขาวรรณlovelovejung
 
งานนำเสนอ การจัดการฐานข้อมุล
งานนำเสนอ การจัดการฐานข้อมุลงานนำเสนอ การจัดการฐานข้อมุล
งานนำเสนอ การจัดการฐานข้อมุลchanoot29
 
นางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 com
นางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 comนางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 com
นางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 comlovelovejung
 
นางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 com
นางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 comนางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 com
นางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 comLuckfon Fonew
 
นางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 com
นางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 comนางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 com
นางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 comlovelovejung
 
การจัดการฐานข้อมูล
การจัดการฐานข้อมูลการจัดการฐานข้อมูล
การจัดการฐานข้อมูลYongyut Nintakan
 
การจัดการฐานข้อมูล
การจัดการฐานข้อมูลการจัดการฐานข้อมูล
การจัดการฐานข้อมูลYongyut Nintakan
 
หน่วยการเรียนรู้ที่ 1 ข้อมูลและระบบฐานข้อมูลวิชา การจัดการฐานข้อมูล
หน่วยการเรียนรู้ที่ 1 ข้อมูลและระบบฐานข้อมูลวิชา การจัดการฐานข้อมูลหน่วยการเรียนรู้ที่ 1 ข้อมูลและระบบฐานข้อมูลวิชา การจัดการฐานข้อมูล
หน่วยการเรียนรู้ที่ 1 ข้อมูลและระบบฐานข้อมูลวิชา การจัดการฐานข้อมูลchaiwat vichianchai
 
หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา ปาโจด ม.5
หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา  ปาโจด ม.5หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา  ปาโจด ม.5
หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา ปาโจด ม.5สิรินยา ปาโจด
 
นาย ทศพล จอมใจ
นาย  ทศพล    จอมใจนาย  ทศพล    จอมใจ
นาย ทศพล จอมใจtaltan
 
นาย ทศพล จอมใจ
นาย  ทศพล    จอมใจนาย  ทศพล    จอมใจ
นาย ทศพล จอมใจtaltan
 
นาย ทศพล จอมใจ
นาย  ทศพล    จอมใจนาย  ทศพล    จอมใจ
นาย ทศพล จอมใจtaltan
 
นาย ทศพล จอมใจ
นาย  ทศพล    จอมใจนาย  ทศพล    จอมใจ
นาย ทศพล จอมใจtaltan
 
การจัดการข้อมูลด้วยระบบการจัดการฐานข้อมูล
การจัดการข้อมูลด้วยระบบการจัดการฐานข้อมูลการจัดการข้อมูลด้วยระบบการจัดการฐานข้อมูล
การจัดการข้อมูลด้วยระบบการจัดการฐานข้อมูลchanoot29
 
งาคอม
งาคอมงาคอม
งาคอมlookpair
 
งานคอม หน่วยที่1
งานคอม หน่วยที่1งานคอม หน่วยที่1
งานคอม หน่วยที่1Ruttikan Munkhan
 
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูลความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูลIsareeya Keatwuttikan
 

Similar to นาย ณัฐพงษ์ สุดก้องไพร (20)

ระบบฐานข้อมูล
ระบบฐานข้อมูลระบบฐานข้อมูล
ระบบฐานข้อมูล
 
นางสาว หัทยา เชื้อสมเกียรติ ม.5
นางสาว หัทยา เชื้อสมเกียรติ ม.5นางสาว หัทยา เชื้อสมเกียรติ ม.5
นางสาว หัทยา เชื้อสมเกียรติ ม.5
 
นางสาว อรอนงค์ สุขาวรรณ
นางสาว อรอนงค์ สุขาวรรณนางสาว อรอนงค์ สุขาวรรณ
นางสาว อรอนงค์ สุขาวรรณ
 
งานนำเสนอ การจัดการฐานข้อมุล
งานนำเสนอ การจัดการฐานข้อมุลงานนำเสนอ การจัดการฐานข้อมุล
งานนำเสนอ การจัดการฐานข้อมุล
 
นางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 com
นางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 comนางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 com
นางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 com
 
นางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 com
นางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 comนางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 com
นางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 com
 
นางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 com
นางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 comนางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 com
นางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 com
 
การจัดการฐานข้อมูล
การจัดการฐานข้อมูลการจัดการฐานข้อมูล
การจัดการฐานข้อมูล
 
การจัดการฐานข้อมูล
การจัดการฐานข้อมูลการจัดการฐานข้อมูล
การจัดการฐานข้อมูล
 
หน่วยการเรียนรู้ที่ 1 ข้อมูลและระบบฐานข้อมูลวิชา การจัดการฐานข้อมูล
หน่วยการเรียนรู้ที่ 1 ข้อมูลและระบบฐานข้อมูลวิชา การจัดการฐานข้อมูลหน่วยการเรียนรู้ที่ 1 ข้อมูลและระบบฐานข้อมูลวิชา การจัดการฐานข้อมูล
หน่วยการเรียนรู้ที่ 1 ข้อมูลและระบบฐานข้อมูลวิชา การจัดการฐานข้อมูล
 
หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา ปาโจด ม.5
หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา  ปาโจด ม.5หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา  ปาโจด ม.5
หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา ปาโจด ม.5
 
นาย ทศพล จอมใจ
นาย  ทศพล    จอมใจนาย  ทศพล    จอมใจ
นาย ทศพล จอมใจ
 
นาย ทศพล จอมใจ
นาย  ทศพล    จอมใจนาย  ทศพล    จอมใจ
นาย ทศพล จอมใจ
 
นาย ทศพล จอมใจ
นาย  ทศพล    จอมใจนาย  ทศพล    จอมใจ
นาย ทศพล จอมใจ
 
นาย ทศพล จอมใจ
นาย  ทศพล    จอมใจนาย  ทศพล    จอมใจ
นาย ทศพล จอมใจ
 
การจัดการข้อมูลด้วยระบบการจัดการฐานข้อมูล
การจัดการข้อมูลด้วยระบบการจัดการฐานข้อมูลการจัดการข้อมูลด้วยระบบการจัดการฐานข้อมูล
การจัดการข้อมูลด้วยระบบการจัดการฐานข้อมูล
 
งาคอม
งาคอมงาคอม
งาคอม
 
งานคอม หน่วยที่1
งานคอม หน่วยที่1งานคอม หน่วยที่1
งานคอม หน่วยที่1
 
บท1
บท1บท1
บท1
 
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูลความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
 

นาย ณัฐพงษ์ สุดก้องไพร

  • 1.
  • 2. หน่วยการเรียนรู้ที่ 1 เทคโนโลยีการสื่อสาร การเรียนรู้ที่ 1วัตถุประสงค์ของการจัดการข้อมูล หน่วยข้อมูลและเขตข้อมูลคีย์ . วัตถุประสงค์ในการจัดการข้อมูล 1. การเก็บข้อมูล ต้องเก็บข้อมูลเพื่อให้สามารถนากลับมาใช้ได้ในภายหลัง 2. การจัดข้อมูล ต้องจัดข้อมูลให้อยู่ในรูปแบบที่สามารถเรียกใช้งานได้อย่างมี ประสิทธิภาพ 3. การปรับปรุงข้อมูล ต้องปรับข้อมูลให้มีความถูกต้องสมบูรณ์อยู่เสมอ 4. การปกป้องข้อมูล ต้องปกป้องข้อมูลจากการทาลาย ลักลอบใช้ หรือแก้ไขโดยมิ ชอบ รวมทั้งปกป้องข้อมูลจากอุบัติเหตุที่อาจเกิดจากวินาศภัย หรือความบกพร่องภายใน ระบบคอมพิวเตอร์ หน่วยข้อมูล (DATA UNITS)
  • 3. หน่วยของข้อมูลคอมพิวเตอร์สามารถจัดเรียงเป็น ลาดับชั้นเล็กไปขนาดใหญ่ได้ดังนี้ 1.บิต (bit) เลขฐาน 2 หนึ่งหลักซึ่งมีค่าเป็น 0 หรือ 1 2.ตัวอักษร (charecter) กลุ่มของบิตสามารถแทนค่าตัวอักษรได้ ในชุดอักขระ ASCII 1 ไบต์ ( 8 บิต) แทนตัวอักษรตัว 1 ตัว เช่น 01000001 แทนตัวอักษร A ในปัจจุบันมี ชุดอักขระที่ใช้เลขฐานสอง 16 บิต แทนค่าตัวอักษร คือ รหัส Unicode เช่น 0000 0000 1110 0110 แทนอักษรตัว ? 3.เขตข้อมูล (Field) ซึ่งประกอบด้วยกลุ่มตัวอักษรที่แทนข้อเท็จจริง 4.ระเบียน (Record) ระเบียน คือโครงสร้างข้อมูลที่แทนตัววัตถุชิ้นหนึ่ง เช่น ระเบียนข้อมูล นักศึกษาเลขทะเบียน 431999999
  • 4. 5.แฟ้ม (file) ตารางที่เป็นกลุ่มของระเบียนที่มีโครงสร้างเดียวกัน เช่น ตารางการ สั่งซื้อสินค้าของลูกค้า 6.ฐานข้อมูล (Database) กลุ่มของตาราง (และความสัมพันธ์) การเรียงลาดับชั้นของหน่วยข้อมูลดังนี้ เขตข้อมูลคีย์ (Key field) คือเขตข้อมูลที่ใช้สาหรับระบุระเบียนข้อมูลอย่าง เฉพาะเจาะจงข้อมูลที่อยู่ในเขตข้อมูลนี้จะไม่ซ้ากับระเบียนอื่น ๆ เช่น แฟ้มข้อมูลพนักงานอาจใช้เลขที่พนักงานเป็นตัวระบุระเบียบ
  • 5. การเรียนรู้ที่ 2 ชนิดข้อมูลและประเภทของแฟ้มข้อมูล ชนิดของข้อมูล ข้อมูลที่ต้องการจัดเก็บนั้นอาจจะมีรูปแบบได้หลายอย่าง รูปแบบสาคัญ ๆ ได้แก่ 3.1 ข้อมูลแบบรูปแบบ (formatted data) เป็นข้อมูลที่รวมอักขระซึ่งอาจ หมายถึงตัวอักษร ตัวเลข ซึ่งเป็นรูปแบบที่แน่นอน ในแต่ละระเบียน ทุกระเบียนที่อยู่ใน แฟ้มข้อมูลจะมีรูปแบบที่เหมือนกันหมด ข้อมูลที่เก็บนั้นอาจเก็บในรูปของรหัสโดยเมื่ออ่าน ข้อมูลออกมาอาจจะต้องนารหัสนั้นมาตีความหมายอีกครั้ง เช่น แฟ้มข้อมูลประวัตินักศึกษา 3.2 ข้อมูลแบบข้อความ (text)เป็นข้อมูลที่เป็นอักขระในแบบข้อความ ซึงอาจ หมายถึงตัวอักษร ตัวเลข สมการฯ แต่ไม่รวมภาพต่าง ๆ นามารวมกันโดยไม่มีรูปแบบที่ แน่นอนในแต่ละระเบียน เช่น ระบบการจัดเก็บข้อความต่าง ๆ ลักษณะการจัดเก็บแบบนี้จะ ไม่ต้องนาข้อมูลที่เก็บมาตีความหมายอีก ความหมายจะถูกกาหนดแล้วในข้อความ 3.3 ข้อมูลแบบภาพลักษณ์ (images) เป็นข้อมูลที่เป็นภาพ ซึ่งอาจเป็นภาพ กราฟที่ถูกสร้างขึ้นจากข้อมูลแบบรูปแบบรูปภาพ หรือภาพวาด คอมพิวเตอร์สามารถเก็บ ภาพและจัดส่งภาพเหล่านี้ไปยังคอมพิวเตอร์อื่นได้ เหมือนกับการส่งข้อความ โดย คอมพิวเตอร์จะทาการแปลงภาพเหล่านี้ ซึ่งจะทาให้คอมพิวเตอร์สามารถที่จะปรับขยาย ภาพและเคลื่อนย้ายภาพเหล่านั้นได้เหมือนกับข้อมูลแบบข้อความ
  • 6. 3.4 ข้อมูลแบบเสียง (audio) เป็นข้อมูลที่เป็นเสียง ลักษณะ ของการจัดเก็บก็จะเหมือนกับการจัดเก็บข้อมูลแบบภาพ คือ คอมพิวเตอร์จะทาการแปลงเสียงเหล่านี้ให้คอมพิวเตอร์สามารถนาไป เก็บได้ ตัวอย่างได้แก่ การตรวจคลื่นหัวใจ จะเก็บเสียงเต้นของหัวใจ 3.5 ข้อมูลแบบภาพและเสียง (video) เป็นข้อมูลที่เป็นเสียง และรูปภาพ ที่ถูกจัดเก็บไว้ด้วยกัน เป็นการผสมผสานรูปภาพและเสียง เข้าด้วยกัน ลักษณะของการจัดเก็บข้อมูล คอมพิวเตอร์จะทาการแปลง เสียงและรูปภาพนี้ เช่นเดียวกับข้อมูลแบบเสียงและข้อมูลแบบภาพ ลักษณะซึ่งจะนามารวมเก็บไว้ในแฟ้มข้อมูลเดียวกัน
  • 7. ประเภทของแฟ้มข้อมูล ประเภทของแฟ้มข้อมูลจาแนกตามลักษณะของการใช้งานได้ดังนี้ 6.1แฟ้มข้อมูลหลัก (master file)แฟ้มข้อมูลหลักเป็นแฟ้มข้อมูลที่บรรจุ ข้อมูลพื้นฐานที่จาเป็นสาหรับระบบงาน และเป็นข้อมูลหลักที่เก็บไว้ใช้ประโยชน์ ข้อมูลเฉพาะเรื่องไม่มีรายการเปลี่ยนแปลงในช่วงปัจจุบัน มีสภาพค่อนข้างคงที่ไม่ เปลี่ยนแปลงหรือเคลื่อนไหวบ่อยแต่จะถูกเปลี่ยนแปลงเมื่อมีการสิ้นสุดของข้อมูล เป็นข้อมูลที่สาคัญที่เก็บไว้ใช้ประโยชน์ ตัวอย่าง เช่น แฟ้มข้อมูลหลักของ นักศึกษาจะแสดงรายละเอียดของนักศึกษา ซึ่งมี ชื่อนามสกุล ที่อยู่ ผลการศึกษา แฟ้มข้อมูลหลักของลูกค้าในแต่ละระเบียนของแฟ้มข้อมูลนี้จะแสดงรายละเอียด ของลูกค้า เช่น ชื่อสกุล ที่อยู่ หรือ ประเภทของลูกค้า 6.2 แฟ้มข้อมูลรายการเปลี่ยนแปลง (transaction file)แฟ้มข้อมูล รายการเปลี่ยนแปลงเป็นแฟ้มข้อมูลที่ประกอบด้วยระเบียนข้อมูลที่มีการเคลื่อนไหว ซึ่งจะถูกรวบรวมเป็นแฟ้มข้อมูลรายการเปลี่ยนแปลงที่เกิดขึ้นในแต่ละงวดในส่วนที่ เกี่ยวข้องกับข้อมูลนั้น แฟ้มข้อมูลรายการเปลี่ยนแปลงนี้จะนาไปปรับรายการใน แฟ้มข้อมูลหลัก ให้ได้ยอดปัจจุบัน ตัวอย่างเช่น แฟ้มข้อมูลลงทะเบียนเรียนของ นักศึกษา
  • 8. 6.3 แฟ้มข้อมูลตาราง (table file)แฟ้มข้อมูลตารางเป็นแฟ้มข้อมูลที่มีค่าคงที่ ซึ่ง ประกอบด้วยตารางที่เป็นข้อมูลหรือชุดของข้อมูลที่มีความเกี่ยวข้องกันและถูกจัดให้อยู่ รวมกันอย่างมีระเบียบ โดยแฟ้มข้อมูลตารางนี้จะถูกใช้ในการประมวลผลกับแฟ้มข้อมูลอื่น เป็นประจาอยู่เสมอ เช่น ตารางอัตราภาษี ตารางราคาสินค้า ตัวอย่างเช่น ตารางราคาสินค้าของบริษัทขายอะไหล่เครื่องคอมพิวเตอร์ดังนี้ รหัสสินค้า รายชื่อสินค้า ราคา 51 จอภาพ 4,500 52 แป้นพิมพ์ 1,200 53 แรม 4 M 4,500 54 แรม 8 M 7,000 55 กระดาษต่อเนื่อง 500 56 แฟ้มคอมพิวเตอร์ 200 ในแฟ้มข้อมูลนี้จะประกอบด้วยระเบียนแฟ้มข้อมูลตารางของสินค้าที่มีฟิลด์ต่างๆ ได้แก่ รหัสสินค้า รายชื่อ สินค้า และราคาสินค้าต่อหน่วย แฟ้มข้อมูลตารางรายการสินค้า จะใช้ ร่วมกับแฟ้มข้อมูลหลายแฟ้มข้อมูลในระบบสินค้า ได้แก่ แฟ้มข้อมูลคลังสินค้า (inventory master file) แฟ้มข้อมูลใบสั่งซื้อของลูกค้า (customer order master file) และแฟ้มข้อมูล รายการสิตค้าของฝ่ายผลิต (production master file) มีข้อควรสังเกตว่าแฟ้มข้อมูลตาราง แฟ้มข้อมูลรายการเปลี่ยนแปลง และแฟ้มข้อมูลหลัก ทั้ง 3 แฟ้ม จะมีฟิลด์ที่เกี่ยวกับตัว สินค้าร่วมกัน คือ ฟิลด์รหัสสินค้า (product code) ฟิลด์ร่วมกันนี้จะเป็นตัวเชื่องโยงระหว่าง แฟ้มข้อมูลตารางกับแฟ้มข้อมูลอื่น ๆ ทั้งหมดที่ต้องการจะใช้ค่าของฟิดล์รายชื่อสินค้า (product description) และราคาสินค้า (product price) จากแฟ้มข้อมูลตาราง
  • 9. การจัดแฟ้มข้อมูลแบบนี้จะทาให้ประหยัดเนื้อที่ในอุปกรณ์เก็บข้อมูล ของแฟ้มข้อมูลหลัก กล่าวคือในแฟ้มข้อมูลหลักไม่ต้องมี 2 ฟิลด์ คือ ฟิลด์ รายการสินค้าและฟิลด์ราคาสินค้า มีแต่เพียงฟิลด์รหัสสินค้าก็เพียงพอแล้ว เมื่อใดที่ต้องการใช้ฟิลด์รายการสินค้าในการแสดงผลก็อ่านค่าออกมาจาก แฟ้มข้อมูลตารางได้ นอกจากนั้นยังเป็นการลดความซ้าซ้อนของข้อมูลและเมื่อ ผู้ใช้ระบบต้องการเปลี่ยนแปลงรายการสินค้าหรือราคาสินค้าก็จะเปลี่ยนใน แฟ้มข้อมูลตารางทีเดียว โดยไม่ต้องไปเปลี่ยนแปลงในแฟ้มข้อมูลอื่น 6.4 แฟ้มข้อมูลเรียงลาดับ (sort file)แฟ้มข้อมูลเรียงลาดับเป็นการ จัดเรียงระเบียนที่จะบรรจุในแฟ้มข้อมูลนั้นใหม่ โดยเรียงตามลาดับค่าของฟิลด์ ข้อมูลหรือค่าของข้อมูลค่าใดค่าหนึ่งในระเบียนนั้นก็ได้ เช่น จัดเรียงลาดับตาม วันเดือนปี ตามลาดับตัวอักขระเรียงลาดับจากมากไปหาน้อยหรือจากน้อยไปหา มาก เป็นต้น แฟ้มข้อมูลรายงาน (report file)เป็นแฟ้มข้อมูลที่ถูกจัดเรียงระเบียบ ตามรูปแบบของรายงานที่ต้องการแล้วจัดเก็บไว้ในรูปของแฟ้มข้อมูล ตัวอย่าง เช่น แฟ้มข้อมูลรายงานควบคุมการปรับเปลี่ยนข้อมูลที่เกิดขึ้นในขณะปฏิบัติงาน แต่ละวัน
  • 10. การเรียนรู้ที่ 3 ลักษณะการประมวลผลข้อมูล ข้อมูลและการประมวลผลข้อมูล ข้อมูล คือข้อเท็จจริงที่เราสนใจ ส่วน สารสนเทศ คือข้อมูลที่ผ่านการ ประมวลผลด้วยวิธีการที่เหมาะสมถูกต้อง จนได้รูปแบบผลลัพธ์ ตรงความต้องการของ ผู้ใช้ ข้อมูลที่จะนามาประมวลผลให้เป็นสารสนเทศ จะต้องมีคุณสมบัติพื้นฐานดังต่อไปนี้ ความถูกต้อง หากมีการเก็บรวบรวมข้อมูลและข้อมูลเหล่านั้นเชื่อถือไม่ได้ จะทาให้ เกิดผลเสียหายมาก ผู้ใช้จะไม่กล้าอ้างอิงหรือนาเอาไปใช้ประโยชน์ ซึ่งเป็นเหตุให้การ ตัดสินใจของผู้บริหารขาดความแม่นยา และมีโอกาสผิดพลาดได้ โครงสร้างข้อมูลที่ ออกแบบต้องคานึงถึงกรรมวิธีการดาเนินงานเพื่อให้ได้ความถูกต้องแม่นยามากที่สุด โดย ปกติความผิดพลาดของการประมวลผลส่วนใหญ่ มาจากข้อมูลที่ไม่มีความถูกต้องซึ่งมี สาเหตุมาจากคนหรือเครื่องจักร การออกแบบระบบจึงต้องคานึงถึงในเรื่องนี้ ความรวดเร็วและเป็นปัจจุบัน การได้มาของข้อมูลจาเป็นต้องให้ทันต่อความต้องการ ของผู้ใช้ มีการตอบสนองต่อผู้ใช้ได้เร็ว ตีความหมายสารสนเทศได้ทันต่อเหตุการณ์หรือ ความต้องการ มีการออกแบบระบบการเรียกค้นและรายงาน ตามความต้องการของผู้ใช้ ความสมบูรณ์ ความสมบูรณ์ของสารสนเทศขึ้นกับการรวบรวมและวิธีการทางปฏิบัติ ใน การดาเนินการจัดทาสารสนเทศ ต้องสารวจและสอบถามความต้องการของผู้ใช้ เพื่อให้ ได้ข้อมูลที่มีความสมบูรณ์เหมาะสม
  • 11. ความชัดเจนกะทัดรัด การจัดเก็บข้อมูลต้องใช้พื้นที่ในการจัดเก็บข้อมูลมาก จึง จาเป็นต้องออกแบบโครงสร้างข้อมูลให้กะทัดรัด สื่อความหมายได้ มีการใช้รหัสหรือย่อข้อมูล ให้เหมาะสม เพื่อที่จะจัดเก็บเข้าไว้ในระบบคอมพิวเตอร์ ความสอดคล้อง ความต้องการเป็นเรื่องสาคัญ ดังนั้นจึงต้องมีการสารวจเพื่อหาความ ต้องการของหน่วยงานและองค์การ ดูสภาพการใช้ข้อมูล ความลึกหรือความกว้างของ ขอบเขตข้อมูล ที่สอดคล้องกับความต้องการ ในการนาข้อมูลไปใช้ประโยชน์ หรือการทาข้อมูลให้เป็นสารสนเทศ ที่จะนาไปใช้ ประโยชน์ได้ จาเป็นต้องมีการประมวลผลข้อมูลก่อน การประมวลผลข้อมูล เป็นกระบวนการที่ มีกระบวนการย่อยหลายอย่าง ประกอบกันคือ การรวบรวมข้อมูล การแยกแยะ การตรวจสอบความถูกต้อง การคานวณ การจัดลาดับหรือการเรียงลาดับ การรายงานผล การสื่อสารข้อมูลหรือการแจกจ่ายข้อมูลนั้น การประมวลผลข้อมูล จึงเป็นกิจกรรมที่มีความสาคัญ เพราะข้อมูลที่มีอยู่ รอบๆ ตัวเรามีเป็น จานวนมากในการใช้งานจึงต้องมีการประมวลผล เพื่อให้เกิดประโยชน์ กิจกรรมหลักของการ ให้ได้มาซึ่งสารสนเทศ จึงประกอบด้วยกิจกรรมการ เก็บรวบรวมข้อมูล ซึ่งต้องมีการตรวจสอบ ความถูกต้องด้วย กิจกรรมการประมวลผลซึ่งอาจจะเป็นการแบ่งแยกข้อมูล การจัดเรียงข้อมูล การคานวณ และกิจกรรมการเก็บรักษาข้อมูลซึ่งอาจต้อง มีการทาสาเนา ทารายงาน เพื่อ แจกจ่าย
  • 12. วิธีการประมวลผล มี 2 ลักษณะ คือ (1) การประมวลผลแบบเชื่อมตรง (online processing) หมายถึง การทางานในขณะที่ข้อมูลวิ่งไปบนสายสัญญาณเชื่อมต่อจากเครื่อง ปลายทาง (terminal) ไปยังฐานข้อมูลของเครื่องหลักที่ใช้ในการประมวลผล การประมวลผลแบบเชื่อมตรงจึงเป็นการประมวลผลโดยทันทีทันใด เช่น การ จองตั๋วเครื่องบิน การซื้อสินค้าในห้างสรรพสินค้า การฝากถอนเงินเอทีเอ็ม การ ประมวลผลแบบเชื่อมตรงจึงเป็นวิธีที่ใช้กันมากวิธีหนึ่ง (2) การประมวลผลแบบกลุ่ม (batch processing) หมายถึง การประมวลผลในเรื่องที่สนใจเป็นครั้งๆ เช่น เมื่อต้องการทราบข้อมูล ผลสารวจความนิยมของประชาชนต่อการเลือกตั้งสมาชิกสภาผู้แทน หรือที่ เรียกว่า โพล (poll) ก็มีการสารวจข้อมูลเพื่อเก็บรวบรวมข้อมูล เมื่อเก็บรวบรวม ข้อมูลได้แล้วก็นามาป้อนเข้าเครื่องคอมพิวเตอร์ แล้วนาข้อมูล นั้นมาประมวลผล ตามโปรแกรมที่ได้กาหนดไว้ เพื่อรายงานหรือสรุปผลหาคาตอบ กรณีการ ประมวลผลแบบกลุ่มจึงกระทาในลักษณะเป็นครั้งๆ เพื่อให้ได้ผลลัพธ์โดย จะต้องมีการรวบรวมข้อมูลไว้ก่อน
  • 13. การเรียนรู้ที่ 4 แฟ้มโปรแกรมและแฟ้มข้อมูล แฟ้มโปรแกรมและแฟ้มข้อมูล ถ้าจะแบ่งประเภทของแฟ้มในคอมพิวเตอร์อีกนัยหนึ่ง อาจแบ่งเป็นแฟ้ม โปรแกรม และ แฟ้มข้อมูล แฟ้มโปรแกรมประกอบด้วยชุดคาสั่งต่างๆ ที่ทางานอย่าง ใดอย่างหนึ่งเช่น โปรแกรมประมวลคา (word processor) ใช้สาหรับพิมพ์เอกสาร และจัดรูปแบบข้อความ และโปรแกรมบีบอัดข้อมูล (compression utility) ใช้ สาหรับบีบอัดข้อมูลที่มีขนาดเล็กลง เป็นต้น แฟ้มที่จัดเก็บหรือบันทึกโดยโปรแกรมเหล่านี้ จัดเป็นประเภทแฟ้มข้อมูล ซึ่ง ตามปกติจะมีส่วนขยาย (file extension) เป็นตัวบอกประเภทเช่น เอกสารที่สร้าง ด้วยโปรแกรมประมวลคา Microsoft Word จะมีส่วนขยายหลักเป็น .doc ส่วน แฟ้มข้อมูลที่สร้างด้วยโปรแกรมบีบอัดข้อมูล Winzip จะมีส่วนขยายเป็น .zip เป็น ต้น ที่กล่าวว่าส่วนขยายหลักหมายความว่า โปรแกรมหนึ่งอาจสร้างแฟ้มข้อมูลที่มี ส่วนขยายได้หลายหย่าง ตัวอย่างโปรแกรมลักษณะนี้ได้แก่ Microsoft Word2000 ซึ่งสามารถสร้างแฟ้มข้อมูลที่มีส่วนขยายเป็น .doc .htm .html .rtf .txt .mcw และ .wps แต่ จะเป็นส่วนขยายหลักเป็น .doc
  • 14. แฟ้มข้อมูลบางประเภทสร้างและเปิดด้วยโปรแกรมใดโปรแกรมหนึ่งโดยเฉพาะ เช่นแฟ้มที่สร้างด้วยโปรแกรมแต่งภาพ Adobe Photoshop ซึ่งมีส่วนขยายเป็น .psd ในขณะที่แฟ้มข้อมูลบางประเภทเป็นประเภทที่มีรูปแบบมาตรฐานที่สามารถสร้างและเปิด ได้โดยโปรแกรมต่างๆ เช่น ประเภทแฟ้ม Bitmap ( BMP) Graphics Interchange Format (GIF) และ Joint Photographic Experts Group (JPEG) สามารถสร้างและเปิด แก้ไขได้โดย Windows PaintBrush , Adobe Photoshop หรือ Microsoft Photo Editor ก็ได้ แฟ้มที่มีรูปแบบมาตรฐานเหล่านี้มีประโยชน์มากในการแลกเปลี่ยนข้อมูลระหว่าง โปรแกรมต่างๆ แฟ้มโปรคแกรมที่ประกอบด้วยชุดคาสั่งที่ทางานได้ ได้แก่ประเภท .exe , .com , .bat , .dll
  • 15. หน่วยการเรียนรู้ที่ 2 โครงสร้างข้อมูล การเรียนรู้ที่ 5 ชนิดของโครงสร้างข้อมูล ประเภทของโครงสร้างข้อมูล แบ่งออกเป็น 2 ประเภท คือ - โครงสร้างข้อมูลทางกายภาพ (Physical Data Structure)
  • 16. เป็นโครงสร้างข้อมูลที่ใช้โดยทั่วไปในภาษาคอมพิวเตอร์ แบ่งออกเป็น 2 ประเภท 1.ข้อมูลเบื้องต้น (Primitive Data Types) - จานวนเต็ม (Integer) - จานวนทศนิยม (Floating point) - ข้อมูลบูลีน (Boolean) - จานวนจริง (Real) - ข้อมูลอักขระ (Character) 2.ข้อมูลโครงสร้าง (Structure Data Types) - แถวลาดับ (Array) - ระเบียนข้อมูล (Record) - แฟ้มข้อมูล (File)
  • 17. - โครงสร้างข้อมูลทางตรรกะ (Logical Data Structure) เป็นโครงสร้างข้อมูลที่เกิดจากการจินตนาการของผู้ใช้ เพื่อใช้ในการแก้ปัญหาใน โปรแกรมที่สร้างขึ้น แบ่งเป็น 2 ประเภท 1. โครงสร้างข้อมูลแบบเชิงเส้น (Linear Data Structure) ความสัมพันธ์ของข้อมูลจะเรียงต่อเนื่องกัน - ลิสต์ (List) - สแตก (Stack) - คิว (Queue) - สตริง (String) 2. โครงสร้างข้อมูลแบบไม่เชิงเส้น (Non-Linear Data Structure) ข้อมูลแต่ละตัวสามารถมีความสัมพันธ์กับข้อมูลอื่นได้หลายตัว - ทรี (Tree) - กราฟ (Graph)
  • 18. 3. การดาเนินการกับโครงสร้างข้อมูล(Data Structure Operation) วิธีดาเนินการกับข้อมูลที่นิยมใช้กันมากมี 4 แบบ คือ 1. การเข้าถึงเรคคอร์ด (Traversing) 2. การค้นหา (Searching) 3. การเพิ่ม (Inserting) 4. การลบ (Deleting) ยังมีการจัดการกับข้อมูลอีก 2 อย่าง คือ 1. การเรียงข้อมูล (Sorting) 2. การรวมข้อมูล (Merging) 4. การแทนที่ข้อมูลในหน่วยความจา มีอยู่ 2 วิธี คือ การแทนที่ข้อมูลแบบสแตติก (Static Memory Representation) เป็น การแทนที่ข้อมูลที่มีการจองเนื้อที่แบบคงที่แน่นอน ต้องมีการกาหนดขนาดก่อน การใช้งาน แต่มีข้อเสีย คือ ไม่สามารถปรับขนาดให้เพิ่มขึ้นหรือลดลงได้ โครงสร้างข้อมูลที่ มีการแทนที่หน่วยความจาหลักแบบสแตติก คือแถวลาดับ (Array) การแทนทีข้อมูลแบบไดนามิก (Dynamic Memory Representation) เป็น การแทนที่ข้อมูลที่ไม่ต้องจองเนื้อที่ ขนาดของเนื้อที่ยืดหยุ่นได้ ตามความต้องการ ของผู้ใช้ โครงสร้างข้อมูลที่มีการแทนที่หน่วยความจาหลักแบบไดนามิก คือ ตัวชี้หรือพอย เตอร์ (Pointer)
  • 19. 5. ลักษณะของโปรแกรมแบบที่มีโครงสร้างที่ดี 5.1 โครงสร้างโปรแกรมแบบคาสั่งตามลาดับ เป็น โครงสร้างพื้นฐานที่ประกอบด้วยคาสั่งทั่วๆไป เป็นโครงสร้างที่มีลักษณะการ ทางานแบบเรียงลาดับ คือ จะทางานตั้งแต่ต้นจนจบโดยไม่มีการข้ามขั้นตอนใดๆ 5.2 โครงสร้างโปรแกรมแบบมีการตัดสินใจ (Decision) มี การตรวจสอบเงื่อนไข เพื่อตัดสินใจว่าจะทาการประมวลผลส่วนใด โดยผลลัพธ์ ของเงื่อนไขจะมีค่าของความเป็นไปได้อยู่ 2 ลักษณะ คือ จริงและเท็จ เท่านั้น 5.3 โครงสร้างโปรแกรมแบบเป็นวงจรปิด (Loop) มีลักษณะการทางานซ้าๆกัน อยู่ในส่วนใดส่วนหนึ่งของโปรแกรม 6. อัลกอริทึม (Algorithm) อัลกอรึทึม คือ วิธีการแก้ปัญหาต่างๆ อย่างมีระบบ มีลาดับขั้นตอนตั้งแต่ต้นจน ได้ผลลัพธ์ สามารถเขียนได้หลายแบบ การเลือกใช้ต้องเลือกใช้ขั้นตอนวิธีที่เหมาะสม กระชับ และรัดกุม อัลกอริทึมที่นิยมใช้กันมาก ได้แก่ 1. อัลกอริทึมแบบแตกย่อย (Divide and conquer) 2. อัลกอริทึมแบบเคลื่อนที่ (Dynamic Programming) 3. อัลกอริทึมแบบทางเลือก (Greedy Algorithm)
  • 20. การเขียนผังงาน (Flowchart) Flow Chart เป็นการอธิบายขั้นตอนการประมวลผลโดยใช้สัญลักษณ์ในการ แสดงความหมาย การใช้กรอบรูปสัญลักษณ์ที่สื่อความหมาย อธิบายขั้นตอนการ ทางาน การเขียนรหัสเทียม (Pseudo Code) Pseudo Code การอธิบายขั้นตอนการประมวลผลโดยใช้วลีภาษาอังกฤษในการ แสดงอธิบาย ใช้คาสั้นๆ กะทัดรัด อธิบายขั้นตอนการทางานของโปรแกรม พัฒนาการของภาษาโปรแกรม - ภาษาเครื่อง (Machine Language) - ภาษาแอสเซมบลี (Assembly Language) - ภาษาระดับสูง (High Level Language) - ภาษายุคที่ 4 (Fourth Generation Language หรือ 4GL) การบารุงรักษาโปรแกรม (Program Maintenance) หมาย ถึง การแก้ไขข้อผิดพลาดที่พบระหว่างการทดสอบหรือระหว่างการใช้งาน ซึ่งอาจเป็นการเปลี่ยนข้อมูลที่ต้องการใช้ใหม่การปรับปรุงข้อมูล ให้ทันเหตุการณ์อยู่ เสมอ การปรับเปลี่ยนโครงสร้างบนหน้าจอ เป็นต้น
  • 21. การเรียนรู้ที่ 6 ลักษณะของข้อมูล ลักษณะของข้อมูลที่ดี ข้อมูลที่ดีควรเป็นข้อมูลที่มีคุณลักษณะดังต่อไปนี้ • ข้อมูลที่มีความถูกต้องและเชื่อถือได้ (accuracy) ข้อมูลจะมีความถูกต้องและเชื่อถืได้มาก น้อยเพียงใดนั้น ขึ้นกับวิธีการที่ใช้ในการควบคุมข้อมูลนาเข้า และการควบคุมการประมวลผล การควบคุมข้อมูลนาเข้าเป็นการกระทาเพื่อให้เกิดความมั่นใจว่าข้อมูลนาเข้ามีความถูกต้อง เชื่อถือได้ เพราะถ้าข้อมูลนาเข้าไม่มีความถูกต้องแล้วถึงแม้จะใช้วิธีการวิเคราะห์และ ประมวลผลข้อมูลที่ดีเพียงใด ผลลัพธ์ที่ได้ก็จะไม่มีความถูกต้อง หรือนาไปใช้ไม่ได้ ข้อมูล นาเข้าจะต้องเป็นข้อมูลที่ผ่านการตรวจสอบว่าถูกต้องแล้ว ข้อมูลบางอย่างอาจต้องแปลงให้อยู่ ในรูปแบบที่เครื่องคอมพิวเตอร์สามารถเข้าใจได้อย่างถูกต้อง ซึ่งอาจต้องพิมพ์ข้อมูลมา ตรวจเช็คด้วยมือก่อน การประมวลผลถึงแม้ว่าจะมีการตรวจสอบข้อมูลนาเข้าแล้วก็ตาม ก็อาจ ทาให้ได้ข้อมูลที่ผิดพลาดได้ เช่น เกิดจากการเขียนโปรแกรมหรือใช้สูตรคานวณผิดพลาดได้ ดังนั้นจึงควรกาหนดวิธีการควบคุมการประมวลผลซึ่งได้แก่ การตรวจเช็คยอดรวมที่ได้จากการ ประมวลผลแต่ละครั้ง หรือการตรวจสอบผลลัพธ์ที่ได้จากการประมวลผลด้วยเครื่อง คอมพิวเตอร์กับข้อมูลสมมติที่มีการคานวณด้วยว่ามีความถูกต้องตรงกันหรือไม่ • ข้อมูลตรงตามความต้องการของผู้ใช้ (relevancy) ได้แก่ การเก็บเฉพาะข้อมูลที่ผู้ใช้ ต้องการเท่านั้น ไม่ควร เก็บข้อมูลอื่น ๆ ที่ไม่จาเป็นหรือไม่เกี่ยวข้องกับการใช้งาน เพราะจะทา ให้เสียเวลาและเสียเนื้อที่ในหน่วยเก็บข้อมูล แต่ทั้งนี้ข้อมูลที่เก็บจะต้องมีความครบถ้วน สมบูรณ์ด้วย • ข้อมูลมีความทันสมัย (timeliness) ข้อมูลที่ดีนั้นนอกจากจะเป็นข้อมูลที่มีความถูกต้อง เชื่อถือได้แล้วจะ ต้องเป็นข้อมูลที่ทันสมัย ทั้งนี้เพื่อให้ผู้ใช้สามารถนาเอาผลลัพธ์ที่ได้ไปใช้ได้ ทันเวลา นั่นคือจะต้องเก็บข้อมูลได้รวดเร็วเพื่อทันความต้องการของผู้ใช้
  • 22. การเรียนรู้ที่ 7 การเรียงลาดับข้อมูล การเรียงลาดับข้อมูล การเรียงลาดับข้อมูลเป็นเรื่องสาคัญมากเรื่องหนึ่งเนื่องจากทาให้ผู้ต้องการใช้ข้อมุลเช่น ผู้ บริหาร,ผู้ปฏิบัติงาน (พนักงาน) สามารถทาความเข้าใจกับข้อมูลหรือทาการค้นหาข้อมูลได้ ง่ายและเร็วยิ่งขึ้นตามที่ต้องการ ประเภทของการจัดการจัดเรียงข้อมูลในระบบคอมพิวเตอร์ แบ่งเป็น 2 ประเภทคือ 1. Internal Sorting คือ การเรียงลาดับข้อมูลโดยเก็บไว้ในหน่วยความจาหลัก และ ข้อมูลของสมาชิกจะถูกเก็บ อยู่ในโครงสร้างอะเรย์ 2. External Sorting คือ การเรียงลาดับข้อมูลโดยเก็บไว้ในหน่วยความจาสารอง ข้อมูล ส่วนใหญ่มีจานวนมาก จึงไม่ สามารถเก็บไว้ในหน่วยความจาหลักได้ทั้งหมด ในหัวข้อการเรียงลาดับ นี้จะอธิบายวิธีการเรียงลาดับข้อมูลในแต่ละวิธีโดยสรุปอย่างย่อ ๆ เพื่อใช้เป็นแนวทางในการศึกษาใน ระดับชั้นสูงขึ้นไป คงจะไม่ได้กล่าวถึงวิธีการขั้นตอนใน การจัดเรียงอย่างละเอียดแต่จะพยายามชี้ให้เห็นถึงจุดเด่นต่าง ๆ ของการจัด เรียงลาดับใน แต่ละวิธี วิธีหรือชนิดของการเรียงลาดับ มีวิธีต่าง ๆ ที่มักจะได้พบโดยทั่วไปดังนี้ 1. SELECTION SORT 2. INSERTION SORT / LINEAR INSERTION SORT 3. BUBBLE SORT 4. SHELL SORT 5. BUCKET SORT /RADIX SORT 6. QUICK SORT 7. HEAP SORT / TREE SORT
  • 23. 1. การเรียงลาดับแบบเลือก (Selection Sort) เป็นวิธีที่ง่ายที่สุดในการเรียงลาดับข้อมูล โดยเริ่มจาก - หาตาแหน่งของข้อมูลที่มีค่าน้อยที่สุดแล้วสลับค่าของตาแหน่งข้อมูลนั้นกับค่าข้อมูลใน ตาแหน่ง A(1) จะได้ A(1) มีค่าน้อยที่สุด - หาตาแหน่งของข้อมูลที่มีค่าน้อยที่สุดในกลุ่ม A(2), A(3),....,A(n) แล้วทากับสลับค่า ข้อมูลในตาแหน่ง A(2) อย่างนี้เรื่อยไปจน กระทั่งไม่เกิน N-1 รอบ ก็จะได้ข้อมูลที่เรียงลาดับ จากน้อยไปมาก 2. การเรียงลาดับแบบแทรก (Insertion Sort) หลักการ คือ 1. อ่านข้อมุลที่ต้องการเรียงลาดับเข้ามาทีละตัวโดยเริ่มจากตัวแรกก่อน และหาตาแหน่ง ของข้อมูลที่ควรจะอยู่ 2. หาที่ว่างสาหรับข้อ 1. 3. Insert หรือแทรกข้อมูล ณ ตาแหน่งในข้อ 2. 3. การเรียงลาดับแบบบับเบิล (Bubble Sort) วิธัการเรียงลาดับแบบบับเบิลจะทาการเปรียบเทียบข้อมูลที่อยู่ในตาแหน่งที่ติดกัน ถ้าข้อมูล ไม่อยู่ใลาดับที่ถูกต้อง ก็จะทาการสลับตาแหน่งของข้อมูลที่เปรียบเทียบโดยที่การ เปรียบเทียบจะเริ่มที่ตาแหน่งที่ 1 กับตาแหน่งที่ 2 ก่อน ต่อไปนี้เทียบกับ ตาแหน่งที่ 2 และ ตาแหน่งที่ 3 จนถึงตาแหน่งที่จัดเรียงแล้ว จากนั้นจะกลับไปเริ่มต้นการเปรียบเทียบอีก จนกระทั่งจัดเรียง เรียบร้อยหมดทุกตาแหน่ง ในวิธีแบบ Bubble Sort ค่าในการเปรียบเทียบที่น้อยที่สุดหรือมากที่สุด จะลอยขึ้นข้างบน เหมือนกับฟองอากาศ
  • 24. 4. การรียงลาดับแบบเชลล์(shell sort) เป็นรูปแบบของการ sort ข้อมูลโดยการนาเอาข้อดีของการค้นหาข้อมูลแบบ แทรกและ แบบเลือกและหลีกเลี่ยง การเกิดปัญหาของทั้งแบบแทรกและแบบเลือก ซึ่งการ เปรียบเทียบข้อมูลในการเรียงลาดับแบบแทรก โดยการเปรียบเทียบ ข้อมูลที่อยู่ไกล ออกไป ซึ่งจะทาให้เราสามารถเรียงดับข้อมูลในตาแหน่งที่อยู่ไกลออกไปหลังจากนั้นก็ จะเรียงลาดับข้อมูล ที่อยู่ใกล้กันเข้ามา(กว่าในครั้งแรก) และความห่างของข้อมูลที่ เปรียบเทียบก็จะน้อยลงจนเหลือ 1 วิธีนี้คิดค้นเมื่อปี ค.ศ.1959 โดย ดี.แอล.เชลล์(D.L.SHELL) เรียกว่า การเรียงลาดับ แบบเชลล์(shell sort) 5. การเรียงลาดับโดยการใช้ฐานเลข(radix sort) การเรียงลาดับแบบนี้การเรียงลาดับ จะอยู่บนพื้นฐานของการแทนตาแหน่งของตัว เลขที่ต้องการนามาเรียงลาดับ จะเริ่มจากตัวที่มีเลขนัยสาคัญสูงที่สุด ดาเนินจนกระทั่ง ถึงตัวเลขที่มีเลขนัยสาคัญต่าสุด การเรียงลาดับในวิธีนี้การเรียงลาดับ จะเรียงจากตัว เลขที่มีนัยสาคัญน้อยที่สุดก่อน เมื่อตัวเลขทั้งหมดถูกนามาเรียงลาดับตามเลข นัยสาคัญที่สูงขึ้น ตัวเลขที่เหมือนกัน ในตาแหน่งน้น จะต่างกันในตาแหน่งของเลข นัยสาคัญที่น้อยกว่า การประมวลผลแบบนี้จะประมวลผลกับข้อมูลทั้งหมดได้ โดยที่ไม่ ต้องมีการแบ่งข้อมูลแบบกลุ่มย่อย
  • 25. 6. การเรียงลาดับอย่างเร็ว(quick sort) ถูกสร้างและตั้งชื่อโดย ซี.เอ.อาร์.ฮาร์เวร์ (C.A.R HOARE) การเรียงลาดับอย่างเร็ว จะ แบ่งข้อมูลเป็นสองกลุ่ม โดยใน การจัดเรียงจะเลือกข้อมุลตัวใดตัวหนึ่งออกมา ซึ่งจะ เป็นตัวที่แบ่งข้อมูลออกเป็นสองกลุ่ม โดยกลุ่มแรกจะต้องมีข้อมูลน้อยกว่า ตัวแบ่ง และ กลุ่มที่มีข้อมูลน้อยกว่าตัวแบ่ง และอีกกลุ่มจะมีข้อมูลที่มากกว่าตัวแบ่ง ซึ่งเราเรียกตัว แบ่งว่า ตัวหลัก(pivot) ในการเลือกตัวหลักจะมีอิสระในการเลือกข้อมูลตัวใดก็ได้ที่เรา ต้องการ การเรียงลาดับแบบเร็วเหมาะกับข้อมูลที่มีการเรียกซ้า 7.การเรียงลาดับฮีพ(heapsort) เป็นการเรียงลาดับที่อยู่บนพื้นฐานบนพื้นฐานของโครงสร้างแบบไบนารี จะดาเนินการ 2 ขั้นตอน คือ 1. การจัดข้อมูลในอะเรย์ให้สอดคล้องกับความต้องการของฮีพ 2. การขจัดหนือการเคลื่อนย้ายข้อมูลในตาแหน่งสูงสุดหรือตาแหน่งยอดของของฮี พออกไปและสนับสนุนข้อมูลข้อมูล ตัวอื่นไปแทนตาแหน่งนั้น
  • 26. การเรียนรู้ที่ 8 การค้นหาข้อมูล การค้นหาข้อมูล (searching) การค้นหาคาตอบ หรือการค้นหาข้อมูลในทางคอมพิวเตอร์มักจะกระทาบน โครงสร้างข้อมูลแบบต้นไม้ และกราฟ ทั้งนี้เพราะโครงสร้างข้อมูลในลักษณะนี้ สามารถทาให้การค้นหาทาได้สะดวกและสามารถพลิกแพลงการค้นหาได้ง่าย ใน ความเป็นจริงแล้ว การค้นหาข้อมูลบางครั้งสามารถกระทาบนโครงสร้างข้อมูลชนิด อื่นก็ได้เช่น อาเรย์ แสตก และคิว แต่การจัดข้อมูลในโครงสร้างเช่นนี้ มีข้อจากัดใน การค้นหาข้อมูลมาก การค้นหาทาได้แบบเรียงลาดับ(Sequencial Search) เท่านั้น ซึ่งใช้ได้กับข้อมูลที่มีขนาดเล็ก ดังนั้นในการค้นหาข้อมูลที่มีขนาดใหญ่ ก่อนการ ค้นหา หรือระหว่างการค้นหา ข้อมูลที่จะถูกค้นจะต้องถูกจัดให้อยู่ในรูปแบบของ ต้นไม้ หรือกราฟเท่านั้น การค้นหาข้อมูลบนโครงสร้างต้นไม้และกราฟสามารถจ าแนกได้ 2 แบบคือ การค้นหาแบบไบล์ด(Blind Search) และการค้นหาแบบฮิวริ สติก(Heuristic Search)
  • 27. การค้นหาแบบไบล์ด(Blind Search) การค้นหาแบบไบล์ด(Blind search) เป็นการค้นหาแบบที่เดินทางจากโหนดหนึ่งไปยัง อีกโหนดหนึ่ง โดยอาศัยทิศทางเป็นตัวกาหนดการค้นหา ไม่ต้องมีข้อมูลอะไรมาช่วยเสริม การตัดสินใจว่าจะเดินทางต่อไปอย่างไร หรือกล่าวอย่างง่าย ๆ คือการจะหยิบข้อมูลใดมา ช่วยในการค้นหาต่อไป ไม่ต้องอาศัยข้อมูลใด ๆ ทั้งสิ้น นอกจากทิศทางซึ่งเป็นรูปแบบ ตายตัว การค้นหาแบบไบล์ดสามารถแบ่งย่อยได้ดังนี้ คือ การค้นหาทั้หมด และการค้นหา บางส่วน - การค้นหาทั้งหมด(exhaustive search) คือ การค้นหาทั้งหมดของปริภูมิสถานะ - การค้นหาบางส่วน (partial search) การค้นหาเพียงบางส่วนของปริภูมิสถานะ ซึ่งใน ความเป็นจริงการค้นหาส่วนมากใช้การค้นหาเฉพาะบางส่วนเท่านั้นเนื่องจากปริภูมิสถานะมัก มีขนาดใหญ่ เท่าให้ไม่สามารถค้นหาได้ทั้งหมด ดังนั้นจึงมีความเป็นไปได้ว่าคาตอบที่ได้ อาจไม่ใช่คาตอบที่ดีที่สุด การค้นหาแบบนี้สามารถแบ่งได้เป็น 2 ประเภทคือ การค้นหาแบบ ลึกก่อน(Depth first search) และการค้นหาแบบกว้างก่อน (Breadth first search) การค้นหาแบบลึกก่อน(Depth first search) การค้นหาแบบลึกก่อนเป็นการค้นหาที่กาหนดทิศทางจากรูปของโครงสร้างต้นไม้ ที่ เริ่มต้นจากโหนดราก(Root node) ที่อยู่บนสุด แล้วเดินลงมาให้ลึกที่สุด เมื่อถึงโหนดล่างสุด (Terminal node) ให้ย้อนขึ้นมาที่จุดสูงสุดของกิ่งเดี่ยวกันที่มีกิ่งแยกและยังไม่ได้เดินผ่าน แล้วเริ่มเดินลงจนถึงโหนดลึกสุดอีก ทาเช่นนี้สลับไปเรื่อยจนพบโหนดที่ต้องการหาหรือ สารวจครบทุกโหนดแล้วตามรูปที่ 1 การค้นหาแบบลึกก่อนจะมีลาดับการเดินตามโหนดดัง ตัวเลขที่กากับไว้ในแต่ละโหนด
  • 28. รูปที่ 1 ลาดับการเดินทางบนโหนดของการค้นหาแบบลึกก่อนบนโครงสร้างต้นไม้ ดังที่ได้กล่าวมาแล้วว่า โครงสร้างข้อมูลที่ใช้สาหรับการค้นหานี้สามารถใช้กับ โครงสร้างกราฟได้ด้วย โดยอาศัยหลักการเดียวกัน แต่สาหรับการเดินทางบนกราฟนั้นจะ ไม่มีโหนดลึกสุดดังนั้นการเดินทางบนกราฟจะต้องปรับวิธีการเป็นดังนี้ โดยเริ่มจาก โหนดเริ่มต้น จากนั้นให้นาโหนดที่อยู่ติดกับโหนดที่กาลังสารวจอยู่(ที่ยังไม่ได้ทาการ สารวจและยังไม่ได้อยู่ในแสต็กมาใส่แสต็ก) มาเก็บไว้ในสแต็กเมื่อสารวจโหนดนั้นเสร็จ ให้ พอพ(pop) ตัวบนสุดของโหนดออกมาทาการสารวจ แล้วนาโหนดข้างเคียงทั้งหมดที่ยัง ไม่ได้สารวจมาต่อท้ายแสต็ก แล้วพอพตัวบนสุดออกมาสารวจ ทาเช่นนี้เรื่อย ๆ จนกระทั้ง พบโหนดที่ต้องการ หรือสารวจครบทุดโหนด
  • 29. รูปที่ 2 โครงสร้างข้อมูลแบบกราฟ การสารวจจะเริ่มต้นที่ A และนาโหนดข้างเคียง B และ C มาเก็บไว้ในแสต็ก เมื่อสารวจ A เสร็จพอพข้อมูลจากแสต็กออกมาได้ C ทาการสารวจ C และนาโหนดข้างเคียงกับ C ที่ยัง ไม่ได้ทาการสารวจและยังไม่ได้อยู่ในแสต็กมาใส่แสต็ก Dและ F พุช(Push) ใส่แสต็ก ดังนั้นในแสต็กตอนนี้มี B D F อยู่ เมื่อสารวจ C เสร็จพอพFออกมาทา การสารวจ แล้วนาโหนดข้างเคียงที่ยังไม่ได้สารวจและยังไม่ได้อยู่ในแสต็กมาใส่แสต็ก ซึ่งก็ คือ G ดังนั้นข้อมูลในแสต็กจะเป็น B D G ท าเช่นนี้ไปเรื่อย ๆ จนจบการทางานก็จะได้ลาดับ การสารวจคือ (A C F G H E D B) ตามตาราง 1 ดังต่อไปนี้ ตารางที่ 1 ลาดับการค้นหาแบบลึกก่อน
  • 30. ในการค้นหาข้อมูลแบบนี้บนโครงสร้างของกราฟ มีข้อที่น่าสังเกตุคือ โหนดที่เริ่มต้น การสารวจจะต้องมีการกาหนดมาให้ว่าโหนดใดเป็นโหนดเริ่มต้น และข้อสังเกตุอีกประการ หนึ่งคือวิธีการค้นหาแบบลึกก่อนที่ใช้สาหรับโครงสร้างข้อมูลแบบกราฟ สามารถใช้กับ โครงสร้างข้อมูลแบบต้นไม้ได้ด้วย การค้นหาแบบกว้างก่อน (Breadth first search) การค้นหาแบบกว้างก่อนเป็นการกาหนดทิศทางการค้นหาแบบที่ละระดับของ โครงสร้างต้นไม้โดยเริ่มจากโหนดราก(ระดับที่ 0) แล้วลงมาระดับที่ 1 จากซ้ายไปขวา เมื่อ เสร็จระดับที่ 1 ไประดับที่ 2จากซ้ายไปขวาเช่นกัน ทาเช่นนี้เรื่อย ๆ จนพบโหนดที่ต้องการ ตามรูปที่ 3 ลาดับการเดินทางของโหนดเป็นไปตามหมายเลขที่กากับไว้บนโหนด รูปที่ 3 ลาดับการค้นหาแบบกว้างก่อนบนโครงสร้างต้นไม้
  • 31. สาหรับการค้นหาแบบกว้างก่อนบนโครงสร้างต้นไม้ จะอาศัยโครงสร้างข้อมูลแบบคิว (Queue)มาช่วย และด้วยวิธีการเช่นเดียวกับการค้นหาแบบลึกก่อนคือ ให้เริ่มต้นสารวจที่ โหนดเริ่มต้น แล้วนาโหนดข้างเคียงเก็บไว้ในคิว เมื่อสารวจโหนดเริ่มต้นเสร็จ ให้นาข้อมูล ในคิวออกมาสารวจ แล้วนาโหนดข้างเคียงที่ยังไม่ได้สารวจและไม่ได้อยู่ในคิวใส่คิวไว้ ทาเช่นนี้ไปเรื่อย ๆ จนพบโหนดที่ต้องการ หรือเมื่อสารวจครบทุกโหนด รูปที่ 4 โครงสร้างข้อมูลแบบกราฟ
  • 32. การสารวจเริ่มต้นที่ A นาโหนดข้างเคียง B C ไว้ในคิว เมื่อสารวจ A เสร็จ นาข้อมูลในคิว คือ Bออกมาสารวจ แล้วนาข้อมูลข้างเคียงคือ D E ใส่คิว ตอนนี้คิวจะมี B D E อยู่ แล้ว นา B ออกมาสารวจทาเช่นนี้เรื่อย ๆ จะได้ลาดับการสารวจข้อมูลคือ (A B C D E F G H) ตามตารางที่ 2 ตาราง 2 ลาดับการค้นหาแบบกว้างก่อน เช่นเดียวกับการค้นหาแบบลึกก่อน การค้นหาแบบกว้างก่อนโดยใช้โครงสร้างข้อมูลคิว มาช่วยต้องมีการกาหนดโหนดเริ่มต้น และวิธีการนี้สามารถใช้ได้กับข้อมูลบนโครงสร้าง แบบต้นไม้ด้วย
  • 33. ตารางเปรียบเทียบ การค้นหาแนวลึกก่อนและแนวกว้างก่อน การค้นหาแนวลึกก่อน การค้นหาแนวกว้างก่อน 1.ใช้หน่วยความจาน้อยกว่า เพราะว่าสถานะในเส้นทางค้นหา ปัจจุบันเท่านั้นที่ถูกเก็บ(ในขณะ ใดๆ จะเก็บเส้นทางเดียว พอจะ ไปเส้นทางอื่นเส้นทางที่ผ่านมาก็ ไม่จาเป็นต้องเก็บ) 1.ใช้หน่วยความจามากเพราะ ต้องเก็บสถานะไว้ทุกตัวเพื่อ หาเส้นทางจากสถานะเริ่มต้น ไปหาคาตอบ 2. อาจจะติดเส้นทางที่ลึกมาก โดยไม่พบคาตอบ เช่นในกรณีที่ เส้นทางนั้นไม่มีคาตอบและเป็น เส้นทางที่ยาวไม่สิ้นสุด จะทาไม่ สามารถไปเส้นทางอื่นได้ 2. จาไม่ติดเส้นทางที่ลึกมาก ๆ โดยไม่พบคาตอบ 3. ถ้าคาตอบอยู่ในระดับ n+1 สถานะอื่นทุกตัวที่ระดับ 1ถึง ระดับ n ไม่จาเป็นต้องถูกกระจาย จนหมด 3. ถ้าคาตอบอยู่ในระดับ n+1 สถานะทุกตัวที่ระดับ 1 ถึงระดับ n จะต้องถูกกระจาย จนหมด ทาให้มีสถานะที่ไม่ จาเป็นในเส้นทางที่จะไปสู่ คาตอบถูกกระจายออกด้วย 4. เมื่อพบคาตอบไม่สามารถ รับประกันได้ว่าเส้นที่ได้เป็น เส้นทางที่สั้นที่สุดหรือไม่ 4. ถ้ามีคาตอบจะรับประกันได้ ว่าจะพบคาตอบแน่ ๆ และจะ ได้เส้นทางสั้นที่สุดด้วย
  • 34. การค้นหาแบบฮิวริสติก(Heuristic Search) การค้นหาคาตอบอาศัยวิธีการทางฮิวริสติก (heuristic search) มีความความ แตกต่างจากการค้นหาข้อมูลแบบธรรมดาและแบบฮิวริสติกนั้นอยู่ที่การค้นหาข้อมูล ธรรมดา ผู้ที่ทาการค้นข้อมูลจะต้องตรวจสอบข้อมูลทีละตัวทุกตัวจนครบ แต่ฮิวริสติกจะ ไม่ลงไปดู ข้อมูลทุกตัว วิธีการนี้จะเลือกได้คาตอบที่เหมาะสมให้กับการค้นหา ซึ่งมีข้อดี คือ สามารถทาการ ค้นหาคาตอบจาก ข้อมูลที่มีขนาดใหญ่มาก ๆ ได้ แต่มีข้อเสียคือ คาตอบที่ได้เป็นเพียงคาตอบที่ดี เท่านั้นไม่แน่ว่าจะดีที่สุด แต่เนื่องจากว่าปัญหาในบาง ลักษณะนั้นใหญ่มาก และเป็นไปไม่ได้ที่จะทา การค้นหาด้วยวิธี ธรรมดากระบวนการของ ฮิวริสติกจึงเป็นสิ่งที่จาเป็นในเรื่องของฮิวริสติกนั้น นอกจากจะมีการค้นหาแบบฮิวริสติก แล้ว ยังมีอีกสิ่งหนึ่งที่สาคัญคือ ฮิวริสติกฟังก์ชัน (heuristic function) ซึ่งหมายถึง ฟังก์ชันที่ทาหน้าที่ในการวัดขนาดของความเป็น ไปได้ในการแก้ปัญหาซึ่งจะแสดงด้วย ตัวเลข วิธีการดังกล่าวจะกระท าได้โดยการพิจารณาถึงวิธีการ (aspects) ต่าง ๆ ที่ใช้ ในการแก้ปัญหา ณ สถานะหนึ่งว่าจะสามารถแก้ปัญหาได้ตามที่ต้องการหรือไม่ โดย กาหนดเป็นน้าหนักที่ให้กับการแก้ปัญหาของแต่ละวิธี น้าหนักเหล่านี้จะถูกแสดงด้วยตัว เลขที่กากับไว้กับโหนดต่าง ๆ ในกระบวนการ ค้นหา และค่าเหล่านี้จะเป็นตัวที่ใช้ในการ ประมาณความเป็นไปได้ว่าเส้นทางที่ผ่านโหนดนั้นจะมี ความเป็นไปได้ในการนาไปสู่ หนทางการแก้ปัญหาได้มากน้อยแค่ไหน
  • 35. จุดประสงค์ที่แท้จริงของฮิวริสติก ฟังก์ชันก็คือ การกากับทิศทางของกระบวนการ ค้นหา เพื่อให้อยู่ในทิศทางที่ได้ประโยชน์สูงสุด โดยการบอกว่าเราควรเลือกเดินเส้น ทางไหนก่อน ในกรณีที่มีเส้น ทางมากกว่าหนึ่งเส้นทางต้องเลือกกระบวนการค้นหา แบบฮิวริสติก โดยปกติแล้วจะต้องอาศัยฮิวริสติกฟังก์ชัน ทาให้การแก้ปัญหาหนึ่ง ๆ จะดีหรือไม่ ก็ขึ้นอยู่กับฮิวริสติกฟังก์ชันดังนั้นการค้นหาแบบนี้จึงไม่มีอะไรเป็น หลักประกันว่าจะได้สิ่งที่ไม่ดีออกมาด้วยเหตุนี้เอง เราจึงเรียกการ ค้นหาแบบฮิวริสติก นี้ว่า Weak Methods หรือจะกล่าวอีกนัยหนึ่งคือ Weak Methodsเป็นกระบวนการ ควบคุมโดยทั่วไป (general-purpose control stategies) ซึ่งการค้นหาแบบนี้ สามารถแบ่งได้เป็น
  • 36. การค้นหาแบบปีนเขา(Hill climbing) ฟังก์ชันฮิวริสติกสามารถนามาช่วยในกระบวนการค้นหาเพื่อให้ได้คาตอบอย่างรวดเร็ว และมีประสิทธิภาพ วิธีการที่จะนาฟังก์ชันฮิวริสติกมาใช้มีหลายวิธีด้วยกันขึ้นอยู่กับว่าจะใช้ ในลักษณะใด เช่นเลือกสถานะที่มีค่าฮิวริสติกดีขึ้น แล้วเดินไปยังสถานะนั้นเลยโดยไม่ ต้องสนใจสถานะที่มีค่าฮิวริสติกแย่กว่าสถานะปัจจุบันหรือว่าจะเก็บสถานะทุกตัวไว้แม้ว่า ค่าฮิวริสติกจะแย่ลงแล้วพิจารณาสถานะเหล่านี้ทีหลัง เป็นต้น ในส่วนต่อไปนี้จะกล่าวถึง อัลกอริทึมต่าง ๆ ที่นาฟังก์ชันฮิวริสติกมาช่วยในการค้นหาคาตอบ โดยเริ่มจากอัลกอริทึม ปีนเข้า (Hill climbing algorithm) รูปที่ 5 แสดงลักษณะการค้นหาแบบ Hill climbing การค้นหาแบบฮิลไคลบิง(Hill climbing) เป็นวิธีการค้นหาข้อมูลที่มีลักษณะคล้ายกับ การปีนภูเขา การที่นักปีนภูเขาจะเดินทางไปถึงยอดภูเขา นักปีนเขาจะต้องมองก่อนว่ายอด เขาอยู่ที่ใด แล้วนักปีนเขาจะต้องพยายามไปจุดนั้นให้ได้ ลองนึกภาพของการปีนภูเขาโล้น ที่มองเห็นแต่ยอด และนักปีเขากาลังปีนภูเขาอยู่เบื้องล่างที่มีเส้นทางเต็มไปหมด เพื่อที่จะ เดินทางไปถึงยอดภูเขาโดยเร็วที่สุด นักปีน เขาจะมองไปที่ยอดเขาแล้วสังเกตว่าทิศทางใดที่เมื่อปีนแล้วจะยิ่งใกล้ยอดเขา และ หลีกเลี่ยงทิศทางที่เมื่อไปแล้วจะทาให้ตัวเองห่างจากยอดเขา นักปีนเขาจะต้องทาเช่นนี้ไป เรื่อย ๆ จนกระทั่งถึงยอดเขา
  • 38. ตัวเลข h(i) ในรูปแสดงว่า สถานะที่ i มีค่าฮิวริสติกเท่ากับ h จากรู้จะเห็นได้ว่า เริ่มต้นจากสถานะที่ 1 ที่มีค่าฮิวริสติกเท่ากับ -1 อัลกอริทึมปีนเขาใช้ตัวกระทาการเพื่อ สร้างสถานะลูกตัวแรกของสถานะที่ 1 แล้ววัดค่าฮิวริสติกได้ 0 ซึ่งมีค่าดีขึ้น ถ้าสังเกตจาก รูปที่ จะพบว่าสถานะที่ 1 มีสถานะลูกทั้งหมด 3 ตัว แต่ในกรณีของอัลกอริทึมปีนเขานี้ เมื่อได้สถานะลูกตัวแรกซึ่งมีค่าอิวริสติกดีขึ้น อัลกอริทึมจะไม่สร้างสถานะลูกที่เหลืออีก 2 ตัว และจะไม่ย้อนกลับมาที่สถานะลูกทั้ง 2 นี้ แม้ว่าหลังจากนี้อัลกอริทึมจะค้นไม่พบ คาตอบกล่าวคือเป็นการตัดทางเลือกทิ้ง ซึ่งการทาเช่นนี้แม้ว่าจะมีโอกาสไม่พบคาตอบแต่ ก็มีข้อดีที่เป็นการช่วยลดเวลาอย่างมาก จากนั้นอัลกอริทึมมาสถานะที่ 2 แล้วเริ่มสร้าง สถานะลูกได้สถานะที่ 3 ที่มีค่าฮิวริสติก -1 ซึ่งแย่ลงในกรณีที่แย่ลงเช่นนี้ อัลกอริทึมจะไม่ ไปยังสถานะลูกตัวนี้และสร้างสถานะลูกตัวต่อไปโดยใช้ตัวกระทาการที่เหลือได้สถานะที่ 4 มีค่าฮิวริสติกเท่ากับ -1 ไม่ดีขึ้นเช่นกันจึงสร้างสถานะลูกตัวถัดไป เป็นสถานะที่5 มีค่าฮิวริ สติกเท่ากับ 1 เป็นค่าที่ดีขึ้น อัลกอริทึมจะมายังสถานะนี้และค้นพบคาตอบในที่สุด อัลกอริทึมปีนเขานี้จะมีประสิทธิภาพมากดังเช่นแสดงในตัวอย่างนี้ซึ่งกระจาย สถานะทั้งสิ้นเพียง 6 ตัวแล้วพบคาตอบ เปรียบเทียบกับอัลกอริทึมการค้นหาแนวกว้าง ก่อนซึ่งใช้สถานะทั้งสิ้นถึง 11 ตัว อย่างไรก็ดีอัลกอริทึมนี้จะมีประสิทธิภาพมาก ถ้าใช้ ฟังก์ชันฮิวริสติกที่ดีมาก ๆ ในกรณีที่ฟังก์ชันฮิวริสติกไม่ดีนัก อัลกอริทึมนี้ก็อาจหลง เส้นทางได้ และอาจไม่พบคาตอบแม้ว่าปริภูมิที่กาลังค้นหามีคาตอบอยู่ด้วยก็ตาม สาเหตุ การหลงเส้นทางประการหนึ่งมาจากการเลือกสถานะลูก ซึ่งอัลกอริทึมจะไม่ได้พิจารณา สถานะลูกทุกตัวโดยเมื่อพบสถานะลูกตัวใดที่ดีขึ้นก็จะเลือกทางนั้น อัลกอริทึมนี้สามารถ ดัดแปลงเล็กน้อยให้พิจารณาสถานะลูกทุกตัวให้ครบก่อน แล้วเลือกสถานะลูกตัวที่มีค่าฮิว ริสติกสูงสุด เมื่อทาเช่นนี้ก็จะทาให้อัลกอริทึมได้พิจารณาเส้นทางที่ดีที่สุด ณ ขณะหนึ่ง ๆ ได้ดีขึ้นเราเรียกอัลกอริทึมที่ดัดแปลงนี้ว่าอัลกอริทึมปีนเขาชันสุด (Steepest ascent hill climbing)
  • 39. การค้นหาดีสุดก่อน(Best-first search) เป็นกระบวนการค้นหาข้อมูลที่ได้นาเอาข้อดีของทั้งการค้นหาแบบลึกก่อน(Depth firstsearch) และการค้นหาแบบกว้างก่อน(Breadth first search) มารวมกันเป็นวิธีการ เดียว โดยที่แต่ละขั้นของการค้นหาในโหนดลูกนั้น การค้นหาแบบดีที่ดีก่อนจะเลือกเอา โหนดที่ดีที่สุด (most promising)และการที่จะทราบว่าโหนดใดดีที่สุดนี้สามารถทาได้ โดยอาศัยฮิวริสติกฟังก์ชัน ซึ่งฮิวริสติก ฟังก์ชันนี้จะทาหน้าที่เหมือนตัววัดผล และให้ผล ของการวัดนี้ออกมาเป็นคะแนน รูปที่ 2.7 เป็นตัวอย่างของการค้นหาแบบดีที่สุดก่อน ขั้นตอนนี้เริ่มจากตอน 1 สร้างโหนดราก(root node) ในขั้นตอน 2สร้างโหนดลูก B และ C แล้วตรวจสอบโหนด B และ C ด้วยฮิวริสติกฟังก์ชัน ได้ผลออกมาเป็นคะแนน คือ 3 และ 1ตามล าดับ จากนั้นให้เลือกโหนด C เป็นโหนดต่อไปที่เราสนใจ เพราะมีค่า น้อยกว่า (หมายเหตุ ในการเลือกนี้จะเลือกค่ามากสุด หรือน้อยสุดก็ได้ ขึ้นอยู่กับลักษณะ ของปัญหา) แล้วสร้างโหนด ลูกให้กับโหนด C ในขั้นตอน 3 ได้โหนด D และ Eแล้ว ตรวจสอบคะแนนได้ 4 และ 6 ตามล าดับ จากนั้นท าการเปรียบเทียบค่าของโหนด ท้ายสุด หรือเทอร์มินอล โหนด(terminal node) ทุกโหนด ว่าโหนด ใดมีค่าดีที่สุด ในที่นี้ จะต้องเลือกโหนด B เพราะมีคะแนนเพียง 3 (เลือกคะแนนต่าสุด) แล้วสร้างโหนด ลูกตาม ขั้นตอน 4 ได้ F และ G แล้วตรวจ สอบคะแนนได้ 6 และ 5 คะแนนตามล าดับ ทาเช่นนี้ เรื่อย ๆ จนพบคาตอบหรือจนไม่สามารถ สร้างโหนดต่อไปได้อีก
  • 41. อัลกอริธึม: การค้นหาแบบดีที่สุดก่อน 1. เริ่มด้วย OPEN ที่มีเพียงโหนดเริ่มต้น 2. ทาจนกว่าจะพบเป้าหมาย หรือว่าไม่มีโหนดเหลืออยู่ใน OPEN � เลือกโหนดที่ดีที่สุดใน OPEN � สร้างโหนดลูกให้กับโหนดที่ดีที่สุดนั้น � สาหรับโหนดลูกแต่ละตัวให้ทาดังต่อไปนี้ i) ถ้าโหนดนั้นยังไม่เคยถูกสร้างมาก่อนหน้านั้น ให้ตรวจสอบค่าของมันโดย ใช้ฮิวริสติกฟังชัน แล้วเพิ่มเข้าไปใน OPEN แล้วบันทึกว่าเป็นโหนดแม่ ii) ถ้าโหนดนั้นถูกสร้างมาก่อนหน้านี้แล้ว ให้เปลี่ยนโหนดแม่ของมัน ถ้าเส้น ทางใหม่ที่ได้ดีกว่าโหนดแม่ตัวเดิม ในกรณีนี้ ให้ปรับเปลี่ยนค่าตามเส้น ทางที่อาจจะเกิดขึ้น
  • 42. การค้นหาแบบ Greedy (Greedy Algorithm) กรีดีอัลกอริธึม เป็นการค้นหาแบบดีที่สุดก่อน(Best first search) ที่ง่ายที่สุด หลักการ ของการค้นหาแบบนี้คือ การเลือกโหนดที่ดีที่สุดตลอดเวลาอัลกอริธึม กรีดี 1. เลือกโหนดเริ่มต้นมาหนึ่งโหนด 2. ให้โหนดที่เลือกมานี้เป็นสถานะปัจจุบัน 3. ให้ทาตามขบวนการข้างล่างนี้จนกว่าจะไม่สามารถสร้างโหนดลูกได้อีก 3.1 สร้างสถานะใหม่ที่เป็นโหนดลูกที่เป็นไปได้ทั้งหมดจากสถานะปัจจุบัน 3.2 จากสถานะใหม่ที่สร้างขึ้นมาทั้งหมด ให้เลือกสถานะ หรือ โหนดลูก ที่ดีที่สุด ออกมาเพียงโหนดเดียว 4. กลับไปที่ขึ้นตอนที่ 2 ตัวอย่าง จากเรื่องการเดินทางของเซลแมนที่จะต้องเดินทางไปยังเมือง A B C D ซึ่งมี ระยะทางตามตารางที่ 3 เราจะแก้ปัญหานี้ด้วยวิธีการของกรีดีบ้าง รูปที่ 9 การแก้ปัญหาการ เดินทางของเซลแมนด้วยกรีดี อัลกอริธึม
  • 43. จากรูปที่ 9 การแก้ปัญหาเริ่มจาก การเลือก A เป็นเมืองเริ่มแรก จากนั้นทาการสร้าง โหนดลูกB C และ D หารระยะทางระหว่าง A ถึงเมืองเหล่านี้ได้ 20 30 และ 50 ตามลาดับ เลือก B เป็นเมืองที่จะเดินทางต่อมา จากนั้นสร้างโหนดลูกของ B ได้ C และ D และได้ระยะทางเท่ากับ 15 และ 20 ตามลาดับ เลือก C เป็นเมืองที่จะ เดินทางต่อไป จากนั้นสร้างโหนดลูกให้ C ได้ D มีค่าเท่ากับ 10 เลือกเดินมาที่ D เป็น เมืองสุดท้ายก่อนกลับไป A รวมระยะทางเท่ากับ 20 + 15 + 10 + 50 = 95 รูปที่ 10 ข้อมูลในรูปแบบกราฟ
  • 45. การค้นหาแบบ A* การค้นหาแบบ A* เป็นอีกแบบของการค้นหาแบบดีที่สุดก่อน วิธีการเลือกโหนดที่จะใช้ ในการดาเนินการต่อจะพิจารณาจากโหนดที่ดีที่สุด แต่ในกรณีของ A* นี้จะมีลักษณะพิเศษ กว่าคือ ในส่วนของฮิวริสติกฟังก์ชัน ในกรณีของการค้นหาแบบดีที่สุดก่อนนั้น ค่าที่ได้จากฮิว ริสติก ฟังก์ชัน จะเป็นค่าที่วัดจาก โหนดปัจจุบัน แต่ในกรณีของ A* ค่าของฮิวริสติก ฟังก์ชัน จะวัดจากค่า 2 ค่าคือ ค่าที่วัดจากโหนดปัจจุบันไปยังโหนดราก และจากโหนดปัจจุบันไปยัง โหนดเป้าหมาย ถ้าเราให้ตัวแปร f แทนค่าของฮิวริสติก ฟังก์ชัน g เป็นฟังก์ชันที่ใช้วัด ค่า cost จากสถานะเริ่มต้นจนถึงสถานะปัจจุบัน h' เป็นฟังก์ชันที่ใช้วัดค่า cost จาก สถานะปัจจุบันถึงสถานะเป้าหมาย ดังนั้น f = g + h’ อัลกอริทึม A* (A* Search) เป็นการขยายอัลกอริทึมดีสุดก่อนโดยพิจารณาเพิ่มเติมถึง ต้นทุนจากสถานะเริ่มต้นมายังสถานะปัจจุบันเพื่อใช้คานวณค่าฮิวริสติกด้วย ในกรณีของ อัลกอริทึม A* เราต้องการหาค่าต่าสุดของฟังก์ชัน f'ของสถานะ s นิยามดังนี้ f'(s)=g(s)+h'(s) โดยที่ g คือฟังก์ชันที่คานวณต้นทุนจากสถานะเริ่มต้นมายังสถานะปัจจุบัน h' คือฟังก์ชันที่ ประมาณต้นทุนจากสถานะปัจจุบันไปยังคาตอบ ดังนั้น f' จึงเป็นฟังก์ชันที่ประมาณต้นทุน จากสถานะเริ่มต้นไปยังคาตอบ (ยิ่งน้อยยิ่งดี) เรามองได้ว่าฟังก์ชัน h' คือฟังก์ชันฮิวริสติกที่ เราเคยใช้ในการค้นหาอื่น ๆ ก่อนหน้านี้เช่นอัลกอริทึมปีนเขา อัลกอริทึมดีสุดก่อน เป็นต้น
  • 46. ในที่นี้เราใส่เครื่องหมาย ' เพื่อแสดงว่าฟังก์ชันนี้เป็นฟังก์ชันประมาณของฟังก์ชันจริงที่ไม่ รู้ (เราทาได้แค่ประมาณว่า h' คือต้นทุนจากสถานะปัจจุบันไปยังคาตอบ เราจะรู้ต้นทุนจริง ก็ต่อเมื่อเราได้ทาการค้นหาจริงจนไปถึงคาตอบแล้ว) ส่วน g เป็นฟังก์ชันที่คานวณ ต้นทุนจริงจากสถานะเริ่มต้นมายังสถานะปัจจุบัน (จึงไม่ได้ใส่เครื่องหมาย ' ) เพราะเรา สามารถหาต้นทุนจริงได้เนื่องจากได้ค้นหาจากสถานะเริ่มต้นจนมาถึงสถานะปัจจุบันแล้ว ส่วน f' ก็เป็นเพียงแค่ฟังก์ชันประมาณโดยการรวมต้นทุนทั้งสอง คือ h' กับ g อัลกอริทึม A* จะทาการค้นหาโดยวิธีเดียวกันกับอัลกอริทึมดีสุดก่อนทุกประการ ยกเว้น ฟังก์ชันฮิวริสติกที่ใช้เปลี่ยนมาเป็น f' (ต่างจากอัลกอริทึมดีสุดก่อนที่ใช้ h') โดย การใช้ f' อัลกอริทึม A* จึงให้ความสาคัญกับสถานะหนึ่ง ๆ 2 ประการ คือ (1) สถานะที่ ดีต้องมี h' ดีคือต้นทุนเพื่อจะนาไปสู่คาตอบหลังจากนี้ต้องน้อย และ (2) ต้นทุนที่จ่ายไป แล้วกว่าจะถึงสถานะนี้ (g) ต้องน้อยด้วย เราจึงได้ว่า A* จะค้นหาเส้นทางที่ให้ต้นทุน โดยรวมน้อยที่สุดตามค่า f' ซึ่งต่างจากอัลกอริทึมดีสุดก่อน ที่เน้นความสาคัญของ สถานะที่ต้นทุนหลังจากนี้ที่จะนาไปสู่คาตอบต้องน้อย โดยไม่สนใจว่าต้นทุนที่จ่ายไปแล้ว กว่าจะนามาถึงสถานะนี้ต้องเสียไปเท่าไหร่