งานคอม ชลธิดา ประยูร ม.5

2,243 views
2,179 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,243
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

งานคอม ชลธิดา ประยูร ม.5

  1. 1. หนวยการเรียนรูที่ 1 เทคโนโลยีการสื่อสาร การเรียนรูที่ 1วัตถุประสงคของการจัดการขอมูล หนวยขอมูลและเขต ขอมูลคีย . วัตถุประสงคในการจัดการขอมูล 1. การเก็บขอมูล ตองเก็บขอมูลเพื่อใหสามารถนํากลับมาใชไดในภายหลัง 2. การจัดขอมูล ตองจัดขอมูลใหอยูในรูปแบบที่สามารถเรียกใชงานได อยางมีประสิทธิภาพ 3. การปรับปรุงขอมูล ตองปรับขอมูลใหมีความถูกตองสมบูรณอยูเสมอ 4. การปกปองขอมูล ตองปกปองขอมูลจากการทําลาย ลักลอบใช หรือ แกไขโดยมิชอบ รวมทั้งปกปองขอมูลจากอุบัติเหตุที่อาจเกิดจากวินาศภัย หรือ ความบกพรองภายในระบบคอมพิวเตอร หนวยขอมูล (DATA UNITS)
  2. 2. หนวยของขอมูลคอมพิวเตอรสามารถจัดเรียงเปน ลําดับชั้นเล็กไปขนาดใหญไดดังนี้ 1.บิต (bit) เลขฐาน 2 หนึ่งหลักซึ่งมีคาเปน 0 หรือ 1 2.ตัวอักษร (charecter) กลุมของบิตสามารถแทนคาตัวอักษรได ในชุดอักขระ ASCII 1 ไบต ( 8 บิต) แทนตัวอักษรตัว 1 ตัว เชน 01000001 แทนตัวอักษร A ในปจจุบันมี ชุดอักขระที่ใชเลขฐานสอง 16 บิต แทนคาตัวอักษร คือ รหัส Unicode เชน 0000 0000 1110 0110 แทนอักษรตัว ? 3.เขตขอมูล (Field) ซึ่งประกอบดวยกลุมตัวอักษรที่แทนขอเท็จจริง 4.ระเบียน (Record) ระเบียน คือโครงสรางขอมูลที่แทนตัววัตถุชิ้นหนึ่ง เชน ระเบียนขอมูล นักศึกษาเลขทะเบียน 431999999
  3. 3. 5.แฟม (file) ตารางที่เปนกลุมของระเบียนที่มีโครงสรางเดียวกัน เชน ตารางการ สั่งซื้อสินคาของลูกคา 6.ฐานขอมูล (Database) กลุมของตาราง (และความสัมพันธ) การเรียงลําดับชั้นของหนวยขอมูลดังนี้ เขตขอมูลคีย (Key field) คือเขตขอมูลที่ใชสําหรับระบุระเบียนขอมูลอยาง เฉพาะเจาะจงขอมูลที่อยูในเขตขอมูลนี้จะไมซ้ํากับระเบียนอื่น ๆ เชน แฟมขอมูลพนักงานอาจใชเลขที่พนักงานเปนตัวระบุระเบียบ
  4. 4. การเรียนรูที่ 2 ชนิดขอมูลและประเภทของแฟมขอมูล ชนิดของขอมูล ขอมูลที่ตองการจัดเก็บนั้นอาจจะมีรูปแบบไดหลายอยาง รูปแบบสําคัญ ๆ ไดแก 3.1 ขอมูลแบบรูปแบบ (formatted data) เปนขอมูลที่รวมอักขระซึ่งอาจ หมายถึงตัวอักษร ตัวเลข ซึ่งเปนรูปแบบที่แนนอน ในแตละระเบียน ทุกระเบียนที่อยูใน แฟมขอมูลจะมีรูปแบบที่เหมือนกันหมด ขอมูลที่เก็บนั้นอาจเก็บในรูปของรหัสโดยเมื่ออาน ขอมูลออกมาอาจจะตองนํารหัสนั้นมาตีความหมายอีกครั้ง เชน แฟมขอมูลประวัตินักศึกษา 3.2 ขอมูลแบบขอความ (text)เปนขอมูลที่เปนอักขระในแบบขอความ ซึงอาจ หมายถึงตัวอักษร ตัวเลข สมการฯ แตไมรวมภาพตาง ๆ นํามารวมกันโดยไมมีรูปแบบที่ แนนอนในแตละระเบียน เชน ระบบการจัดเก็บขอความตาง ๆ ลักษณะการจัดเก็บแบบนี้จะ ไมตองนําขอมูลที่เก็บมาตีความหมายอีก ความหมายจะถูกกําหนดแลวในขอความ 3.3 ขอมูลแบบภาพลักษณ (images) เปนขอมูลที่เปนภาพ ซึ่งอาจเปนภาพ กราฟที่ถูกสรางขึ้นจากขอมูลแบบรูปแบบรูปภาพ หรือภาพวาด คอมพิวเตอรสามารถเก็บ ภาพและจัดสงภาพเหลานี้ไปยังคอมพิวเตอรอื่นได เหมือนกับการสงขอความ โดย คอมพิวเตอรจะทําการแปลงภาพเหลานี้ ซึ่งจะทําใหคอมพิวเตอรสามารถที่จะปรับขยาย ภาพและเคลื่อนยายภาพเหลานั้นไดเหมือนกับขอมูลแบบขอความ
  5. 5. 3.4 ขอมูลแบบเสียง (audio) เปนขอมูลที่เปนเสียง ลักษณะ ของการจัดเก็บก็จะเหมือนกับการจัดเก็บขอมูลแบบภาพ คือ คอมพิวเตอรจะทําการแปลงเสียงเหลานี้ใหคอมพิวเตอรสามารถนําไป เก็บได ตัวอยางไดแก การตรวจคลื่นหัวใจ จะเก็บเสียงเตนของหัวใจ 3.5 ขอมูลแบบภาพและเสียง (video) เปนขอมูลที่เปนเสียง และรูปภาพ ที่ถูกจัดเก็บไวดวยกัน เปนการผสมผสานรูปภาพและเสียง เขาดวยกัน ลักษณะของการจัดเก็บขอมูล คอมพิวเตอรจะทําการแปลง เสียงและรูปภาพนี้ เชนเดียวกับขอมูลแบบเสียงและขอมูลแบบภาพ ลักษณะซึ่งจะนํามารวมเก็บไวในแฟมขอมูลเดียวกัน
  6. 6. ประเภทของแฟมขอมูล ประเภทของแฟมขอมูลจําแนกตามลักษณะของการใชงานไดดังนี้ 6.1แฟมขอมูลหลัก (master file)แฟมขอมูลหลักเปนแฟมขอมูลที่บรรจุ ขอมูลพื้นฐานที่จําเปนสําหรับระบบงาน และเปนขอมูลหลักที่เก็บไวใชประโยชน ขอมูลเฉพาะเรื่องไมมีรายการเปลี่ยนแปลงในชวงปจจุบัน มีสภาพคอนขางคงที่ไม เปลี่ยนแปลงหรือเคลื่อนไหวบอยแตจะถูกเปลี่ยนแปลงเมื่อมีการสิ้นสุดของขอมูล เปนขอมูลที่สําคัญที่เก็บไวใชประโยชน ตัวอยาง เชน แฟมขอมูลหลักของ นักศึกษาจะแสดงรายละเอียดของนักศึกษา ซึ่งมี ชื่อนามสกุล ที่อยู ผลการศึกษา แฟมขอมูลหลักของลูกคาในแตละระเบียนของแฟมขอมูลนี้จะแสดงรายละเอียด ของลูกคา เชน ชื่อสกุล ที่อยู หรือ ประเภทของลูกคา 6.2 แฟมขอมูลรายการเปลี่ยนแปลง (transaction file)แฟมขอมูล รายการเปลี่ยนแปลงเปนแฟมขอมูลที่ประกอบดวยระเบียนขอมูลที่มีการเคลื่อนไหว ซึ่งจะถูกรวบรวมเปนแฟมขอมูลรายการเปลี่ยนแปลงที่เกิดขึ้นในแตละงวดในสวนที่ เกี่ยวของกับขอมูลนั้น แฟมขอมูลรายการเปลี่ยนแปลงนี้จะนําไปปรับรายการใน แฟมขอมูลหลัก ใหไดยอดปจจุบัน ตัวอยางเชน แฟมขอมูลลงทะเบียนเรียนของ นักศึกษา
  7. 7. 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) จากแฟมขอมูลตาราง
  8. 8. การจัดแฟมขอมูลแบบนี้จะทําใหประหยัดเนื้อที่ในอุปกรณเก็บขอมูล ของแฟมขอมูลหลัก กลาวคือในแฟมขอมูลหลักไมตองมี 2 ฟลด คือ ฟลด รายการสินคาและฟลดราคาสินคา มีแตเพียงฟลดรหัสสินคาก็เพียงพอแลว เมื่อใดที่ตองการใชฟลดรายการสินคาในการแสดงผลก็อานคาออกมาจาก แฟมขอมูลตารางได นอกจากนั้นยังเปนการลดความซ้ําซอนของขอมูลและเมื่อ ผูใชระบบตองการเปลี่ยนแปลงรายการสินคาหรือราคาสินคาก็จะเปลี่ยนใน แฟมขอมูลตารางทีเดียว โดยไมตองไปเปลี่ยนแปลงในแฟมขอมูลอื่น 6.4 แฟมขอมูลเรียงลําดับ (sort file)แฟมขอมูลเรียงลําดับเปนการ จัดเรียงระเบียนที่จะบรรจุในแฟมขอมูลนั้นใหม โดยเรียงตามลําดับคาของฟลด ขอมูลหรือคาของขอมูลคาใดคาหนึ่งในระเบียนนั้นก็ได เชน จัดเรียงลําดับตาม วันเดือนป ตามลําดับตัวอักขระเรียงลําดับจากมากไปหานอยหรือจากนอยไปหา มาก เปนตน แฟมขอมูลรายงาน (report file)เปนแฟมขอมูลที่ถูกจัดเรียงระเบียบ ตามรูปแบบของรายงานที่ตองการแลวจัดเก็บไวในรูปของแฟมขอมูล ตัวอยาง เชน แฟมขอมูลรายงานควบคุมการปรับเปลี่ยนขอมูลที่เกิดขึ้นในขณะปฏิบัติงาน แตละวัน
  9. 9. การเรียนรูที่ 3 ลักษณะการประมวลผลขอมูล ขอมูลและการประมวลผลขอมูล ขอมูล คือขอเท็จจริงที่เราสนใจ สวน สารสนเทศ คือขอมูลที่ผานการ ประมวลผลดวยวิธีการที่เหมาะสมถูกตอง จนไดรูปแบบผลลัพธ ตรงความตองการของ ผูใช ขอมูลที่จะนํามาประมวลผลใหเปนสารสนเทศ จะตองมีคุณสมบัติพื้นฐานดังตอไปนี้ ความถูกตอง หากมีการเก็บรวบรวมขอมูลและขอมูลเหลานั้นเชื่อถือไมได จะทําให เกิดผลเสียหายมาก ผูใชจะไมกลาอางอิงหรือนําเอาไปใชประโยชน ซึ่งเปนเหตุใหการ ตัดสินใจของผูบริหารขาดความแมนยํา และมีโอกาสผิดพลาดได โครงสรางขอมูลที่ ออกแบบตองคํานึงถึงกรรมวิธีการดําเนินงานเพื่อใหไดความถูกตองแมนยํามากที่สุด โดย ปกติความผิดพลาดของการประมวลผลสวนใหญ มาจากขอมูลที่ไมมีความถูกตองซึ่งมี สาเหตุมาจากคนหรือเครื่องจักร การออกแบบระบบจึงตองคํานึงถึงในเรื่องนี้ ความรวดเร็วและเปนปจจุบัน การไดมาของขอมูลจําเปนตองใหทันตอความตองการ ของผูใช มีการตอบสนองตอผูใชไดเร็ว ตีความหมายสารสนเทศไดทันตอเหตุการณหรือ ความตองการ มีการออกแบบระบบการเรียกคนและรายงาน ตามความตองการของผูใช ความสมบูรณ ความสมบูรณของสารสนเทศขึ้นกับการรวบรวมและวิธีการทางปฏิบัติ ใน การดําเนินการจัดทําสารสนเทศ ตองสํารวจและสอบถามความตองการของผูใช เพื่อให ไดขอมูลที่มีความสมบูรณเหมาะสม
  10. 10. ความชัดเจนกะทัดรัด การจัดเก็บขอมูลตองใชพื้นที่ในการจัดเก็บขอมูลมาก จึง จําเปนตองออกแบบโครงสรางขอมูลใหกะทัดรัด สื่อความหมายได มีการใชรหัสหรือยอขอมูล ใหเหมาะสม เพื่อที่จะจัดเก็บเขาไวในระบบคอมพิวเตอร ความสอดคลอง ความตองการเปนเรื่องสําคัญ ดังนั้นจึงตองมีการสํารวจเพื่อหาความ ตองการของหนวยงานและองคการ ดูสภาพการใชขอมูล ความลึกหรือความกวางของ ขอบเขตขอมูล ที่สอดคลองกับความตองการ ในการนําขอมูลไปใชประโยชน หรือการทําขอมูลใหเปนสารสนเทศ ที่จะนําไปใช ประโยชนได จําเปนตองมีการประมวลผลขอมูลกอน การประมวลผลขอมูล เปนกระบวนการที่ มีกระบวนการยอยหลายอยาง ประกอบกันคือ การรวบรวมขอมูล การแยกแยะ การตรวจสอบความถูกตอง การคํานวณ การจัดลําดับหรือการเรียงลําดับ การรายงานผล การสื่อสารขอมูลหรือการแจกจายขอมูลนั้น การประมวลผลขอมูล จึงเปนกิจกรรมที่มีความสําคัญ เพราะขอมูลที่มีอยู รอบๆ ตัวเรามีเปน จํานวนมากในการใชงานจึงตองมีการประมวลผล เพื่อใหเกิดประโยชน กิจกรรมหลักของการ ใหไดมาซึ่งสารสนเทศ จึงประกอบดวยกิจกรรมการ เก็บรวบรวมขอมูล ซึ่งตองมีการตรวจสอบ ความถูกตองดวย กิจกรรมการประมวลผลซึ่งอาจจะเปนการแบงแยกขอมูล การจัดเรียงขอมูล การคํานวณ และกิจกรรมการเก็บรักษาขอมูลซึ่งอาจตอง มีการทําสําเนา ทํารายงาน เพื่อ แจกจาย
  11. 11. วิธีการประมวลผล มี 2 ลักษณะ คือ (1) การประมวลผลแบบเชื่อมตรง (online processing) หมายถึง การทํางานในขณะที่ขอมูลวิ่งไปบนสายสัญญาณเชื่อมตอจากเครื่อง ปลายทาง (terminal) ไปยังฐานขอมูลของเครื่องหลักที่ใชในการประมวลผล การประมวลผลแบบเชื่อมตรงจึงเปนการประมวลผลโดยทันทีทันใด เชน การ จองตั๋วเครื่องบิน การซื้อสินคาในหางสรรพสินคา การฝากถอนเงินเอทีเอ็ม การ ประมวลผลแบบเชื่อมตรงจึงเปนวิธีที่ใชกันมากวิธีหนึ่ง (2) การประมวลผลแบบกลุม (batch processing) หมายถึง การประมวลผลในเรื่องที่สนใจเปนครั้งๆ เชน เมื่อตองการทราบขอมูล ผลสํารวจความนิยมของประชาชนตอการเลือกตั้งสมาชิกสภาผูแทน หรือที่ เรียกวา โพล (poll) ก็มีการสํารวจขอมูลเพื่อเก็บรวบรวมขอมูล เมื่อเก็บรวบรวม ขอมูลไดแลวก็นํามาปอนเขาเครื่องคอมพิวเตอร แลวนําขอมูล นั้นมาประมวลผล ตามโปรแกรมที่ไดกําหนดไว เพื่อรายงานหรือสรุปผลหาคําตอบ กรณีการ ประมวลผลแบบกลุมจึงกระทําในลักษณะเปนครั้งๆ เพื่อใหไดผลลัพธโดย จะตองมีการรวบรวมขอมูลไวกอน
  12. 12. การเรียนรูที่ 4 แฟมโปรแกรมและแฟมขอมูล แฟมโปรแกรมและแฟมขอมูล ถาจะแบงประเภทของแฟมในคอมพิวเตอรอีกนัยหนึ่ง อาจแบงเปนแฟม โปรแกรม และ แฟมขอมูล แฟมโปรแกรมประกอบดวยชุดคําสั่งตางๆ ที่ทํางานอยาง ใดอยางหนึ่งเชน โปรแกรมประมวลคํา (word processor) ใชสําหรับพิมพเอกสาร และจัดรูปแบบขอความ และโปรแกรมบีบอัดขอมูล (compression utility) ใช สําหรับบีบอัดขอมูลที่มีขนาดเล็กลง เปนตน แฟมที่จัดเก็บหรือบันทึกโดยโปรแกรมเหลานี้ จัดเปนประเภทแฟมขอมูล ซึ่ง ตามปกติจะมีสวนขยาย (file extension) เปนตัวบอกประเภทเชน เอกสารที่สราง ดวยโปรแกรมประมวลคํา Microsoft Word จะมีสวนขยายหลักเปน .doc สวน แฟมขอมูลที่สรางดวยโปรแกรมบีบอัดขอมูล Winzip จะมีสวนขยายเปน .zip เปน ตน ที่กลาววาสวนขยายหลักหมายความวา โปรแกรมหนึ่งอาจสรางแฟมขอมูลที่มี สวนขยายไดหลายหยาง ตัวอยางโปรแกรมลักษณะนี้ไดแก Microsoft Word2000 ซึ่งสามารถสรางแฟมขอมูลที่มีสวนขยายเปน .doc .htm .html .rtf .txt .mcw และ .wps แต จะเปนสวนขยายหลักเปน .doc
  13. 13. แฟมขอมูลบางประเภทสรางและเปดดวยโปรแกรมใดโปรแกรมหนึ่งโดยเฉพาะ เชนแฟมที่สรางดวยโปรแกรมแตงภาพ 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
  14. 14. หนวยการเรียนรูที่ 2 โครงสรางขอมูล การเรียนรูที่ 5 ชนิดของโครงสรางขอมูล ประเภทของโครงสรางขอมูล แบงออกเปน 2 ประเภท คือ - โครงสรางขอมูลทางกายภาพ (Physical Data Structure)
  15. 15. เปนโครงสรางขอมูลที่ใชโดยทั่วไปในภาษาคอมพิวเตอร แบงออกเปน 2 ประเภท 1.ขอมูลเบื้องตน (Primitive Data Types) - จํานวนเต็ม (Integer) - จํานวนทศนิยม (Floating point) - ขอมูลบูลีน (Boolean) - จํานวนจริง (Real) - ขอมูลอักขระ (Character) 2.ขอมูลโครงสราง (Structure Data Types) - แถวลําดับ (Array) - ระเบียนขอมูล (Record) - แฟมขอมูล (File)
  16. 16. - โครงสรางขอมูลทางตรรกะ (Logical Data Structure) เปนโครงสรางขอมูลที่เกิดจากการจินตนาการของผูใช เพื่อใชในการแกปญหาใน โปรแกรมที่สรางขึ้น แบงเปน 2 ประเภท 1. โครงสรางขอมูลแบบเชิงเสน (Linear Data Structure) ความสัมพันธของขอมูลจะเรียงตอเนื่องกัน - ลิสต (List) - สแตก (Stack) - คิว (Queue) - สตริง (String) 2. โครงสรางขอมูลแบบไมเชิงเสน (Non-Linear Data Structure) ขอมูลแตละตัวสามารถมีความสัมพันธกับขอมูลอื่นไดหลายตัว - ทรี (Tree) - กราฟ (Graph)
  17. 17. 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)
  18. 18. 5. ลักษณะของโปรแกรมแบบที่มีโครงสรางที่ดี 5.1 โครงสรางโปรแกรมแบบคําสั่งตามลําดับ เปน โครงสรางพื้นฐานที่ประกอบดวยคําสั่งทั่วๆไป เปนโครงสรางที่มีลักษณะการ ทํางานแบบเรียงลําดับ คือ จะทํางานตั้งแตตนจนจบโดยไมมีการขามขั้นตอนใดๆ 5.2 โครงสรางโปรแกรมแบบมีการตัดสินใจ (Decision) มี การตรวจสอบเงื่อนไข เพื่อตัดสินใจวาจะทําการประมวลผลสวนใด โดยผลลัพธ ของเงื่อนไขจะมีคาของความเปนไปไดอยู 2 ลักษณะ คือ จริงและเท็จ เทานั้น 5.3 โครงสรางโปรแกรมแบบเปนวงจรปด (Loop) มีลักษณะการทํางานซ้ําๆกัน อยูในสวนใดสวนหนึ่งของโปรแกรม 6. อัลกอริทึม (Algorithm) อัลกอรึทึม คือ วิธีการแกปญหาตางๆ อยางมีระบบ มีลําดับขั้นตอนตั้งแตตนจน ไดผลลัพธ สามารถเขียนไดหลายแบบ การเลือกใชตองเลือกใชขั้นตอนวิธีที่เหมาะสม กระชับ และรัดกุม อัลกอริทึมที่นิยมใชกันมาก ไดแก 1. อัลกอริทึมแบบแตกยอย (Divide and conquer) 2. อัลกอริทึมแบบเคลื่อนที่ (Dynamic Programming) 3. อัลกอริทึมแบบทางเลือก (Greedy Algorithm)
  19. 19. การเขียนผังงาน (Flowchart) Flow Chart เปนการอธิบายขั้นตอนการประมวลผลโดยใชสัญลักษณในการ แสดงความหมาย การใชกรอบรูปสัญลักษณที่สื่อความหมาย อธิบายขั้นตอนการ ทํางาน การเขียนรหัสเทียม (Pseudo Code) Pseudo Code การอธิบายขั้นตอนการประมวลผลโดยใชวลีภาษาอังกฤษในการ แสดงอธิบาย ใชคําสั้นๆ กะทัดรัด อธิบายขั้นตอนการทํางานของโปรแกรม พัฒนาการของภาษาโปรแกรม - ภาษาเครื่อง (Machine Language) - ภาษาแอสเซมบลี (Assembly Language) - ภาษาระดับสูง (High Level Language) - ภาษายุคที่ 4 (Fourth Generation Language หรือ 4GL) การบํารุงรักษาโปรแกรม (Program Maintenance) หมาย ถึง การแกไขขอผิดพลาดที่พบระหวางการทดสอบหรือระหวางการใชงาน ซึ่งอาจเปนการเปลี่ยนขอมูลที่ตองการใชใหมการปรับปรุงขอมูล ใหทันเหตุการณอยู เสมอ การปรับเปลี่ยนโครงสรางบนหนาจอ เปนตน
  20. 20. การเรียนรูที่ 6 ลักษณะของขอมูล ลักษณะของขอมูลที่ดี ขอมูลที่ดีควรเปนขอมูลที่มีคุณลักษณะดังตอไปนี้ • ขอมูลที่มีความถูกตองและเชื่อถือได (accuracy) ขอมูลจะมีความถูกตองและเชื่อถืไดมาก นอยเพียงใดนั้น ขึ้นกับวิธีการที่ใชในการควบคุมขอมูลนําเขา และการควบคุมการประมวลผล การควบคุมขอมูลนําเขาเปนการกระทําเพื่อใหเกิดความมั่นใจวาขอมูลนําเขามีความถูกตอง เชื่อถือได เพราะถาขอมูลนําเขาไมมีความถูกตองแลวถึงแมจะใชวิธีการวิเคราะหและ ประมวลผลขอมูลที่ดีเพียงใด ผลลัพธที่ไดก็จะไมมีความถูกตอง หรือนําไปใชไมได ขอมูล นําเขาจะตองเปนขอมูลที่ผานการตรวจสอบวาถูกตองแลว ขอมูลบางอยางอาจตองแปลงใหอยู ในรูปแบบที่เครื่องคอมพิวเตอรสามารถเขาใจไดอยางถูกตอง ซึ่งอาจตองพิมพขอมูลมา ตรวจเช็คดวยมือกอน การประมวลผลถึงแมวาจะมีการตรวจสอบขอมูลนําเขาแลวก็ตาม ก็อาจ ทําใหไดขอมูลที่ผิดพลาดได เชน เกิดจากการเขียนโปรแกรมหรือใชสูตรคํานวณผิดพลาดได ดังนั้นจึงควรกําหนดวิธีการควบคุมการประมวลผลซึ่งไดแก การตรวจเช็คยอดรวมที่ไดจากการ ประมวลผลแตละครั้ง หรือการตรวจสอบผลลัพธที่ไดจากการประมวลผลดวยเครื่อง คอมพิวเตอรกับขอมูลสมมติที่มีการคํานวณดวยวามีความถูกตองตรงกันหรือไม • ขอมูลตรงตามความตองการของผูใช (relevancy) ไดแก การเก็บเฉพาะขอมูลที่ผูใช ตองการเทานั้น ไมควร เก็บขอมูลอื่น ๆ ที่ไมจําเปนหรือไมเกี่ยวของกับการใชงาน เพราะจะทํา ใหเสียเวลาและเสียเนื้อที่ในหนวยเก็บขอมูล แตทั้งนี้ขอมูลที่เก็บจะตองมีความครบถวน สมบูรณดวย • ขอมูลมีความทันสมัย (timeliness) ขอมูลที่ดีนั้นนอกจากจะเปนขอมูลที่มีความถูกตอง เชื่อถือไดแลวจะ ตองเปนขอมูลที่ทันสมัย ทั้งนี้เพื่อใหผูใชสามารถนําเอาผลลัพธที่ไดไปใชได ทันเวลา นั่นคือจะตองเก็บขอมูลไดรวดเร็วเพื่อทันความตองการของผูใช
  21. 21. การเรียนรูที่ 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
  22. 22. 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 คาในการเปรียบเทียบที่นอยที่สุดหรือมากที่สุด จะลอยขึ้นขางบน เหมือนกับฟองอากาศ
  23. 23. 4. การรียงลําดับแบบเชลล(shell sort) เปนรูปแบบของการ sort ขอมูลโดยการนําเอาขอดีของการคนหาขอมูลแบบ แทรกและ แบบเลือกและหลีกเลี่ยง การเกิดปญหาของทั้งแบบแทรกและแบบเลือก ซึ่งการ เปรียบเทียบขอมูลในการเรียงลําดับแบบแทรก โดยการเปรียบเทียบ ขอมูลที่อยูไกล ออกไป ซึ่งจะทําใหเราสามารถเรียงดับขอมูลในตําแหนงที่อยูไกลออกไปหลังจากนั้นก็ จะเรียงลําดับขอมูล ที่อยูใกลกันเขามา(กวาในครั้งแรก) และความหางของขอมูลที่ เปรียบเทียบก็จะนอยลงจนเหลือ 1 วิธีนี้คิดคนเมื่อป ค.ศ.1959 โดย ดี.แอล.เชลล(D.L.SHELL) เรียกวา การเรียงลําดับ แบบเชลล(shell sort) 5. การเรียงลําดับโดยการใชฐานเลข(radix sort) การเรียงลําดับแบบนี้การเรียงลําดับ จะอยูบนพื้นฐานของการแทนตําแหนงของตัว เลขที่ตองการนํามาเรียงลําดับ จะเริ่มจากตัวที่มีเลขนัยสําคัญสูงที่สุด ดําเนินจนกระทั่ง ถึงตัวเลขที่มีเลขนัยสําคัญต่ําสุด การเรียงลําดับในวิธีนี้การเรียงลําดับ จะเรียงจากตัว เลขที่มีนัยสําคัญนอยที่สุดกอน เมื่อตัวเลขทั้งหมดถูกนํามาเรียงลําดับตามเลข นัยสําคัญที่สูงขึ้น ตัวเลขที่เหมือนกัน ในตําแหนงนน จะตางกันในตําแหนงของเลข นัยสําคัญที่นอยกวา การประมวลผลแบบนี้จะประมวลผลกับขอมูลทั้งหมดได โดยที่ไม ตองมีการแบงขอมูลแบบกลุมยอย
  24. 24. 6. การเรียงลําดับอยางเร็ว(quick sort) ถูกสรางและตั้งชื่อโดย ซี.เอ.อาร.ฮารเวร (C.A.R HOARE) การเรียงลําดับอยางเร็ว จะ แบงขอมูลเปนสองกลุม โดยใน การจัดเรียงจะเลือกขอมุลตัวใดตัวหนึ่งออกมา ซึ่งจะ เปนตัวที่แบงขอมูลออกเปนสองกลุม โดยกลุมแรกจะตองมีขอมูลนอยกวา ตัวแบง และ กลุมที่มีขอมูลนอยกวาตัวแบง และอีกกลุมจะมีขอมูลที่มากกวาตัวแบง ซึ่งเราเรียกตัว แบงวา ตัวหลัก(pivot) ในการเลือกตัวหลักจะมีอิสระในการเลือกขอมูลตัวใดก็ไดที่เรา ตองการ การเรียงลําดับแบบเร็วเหมาะกับขอมูลที่มีการเรียกซ้ํา 7.การเรียงลําดับฮีพ(heapsort) เปนการเรียงลําดับที่อยูบนพื้นฐานบนพื้นฐานของโครงสรางแบบไบนารี จะดําเนินการ 2 ขั้นตอน คือ 1. การจัดขอมูลในอะเรยใหสอดคลองกับความตองการของฮีพ 2. การขจัดหนือการเคลื่อนยายขอมูลในตําแหนงสูงสุดหรือตําแหนงยอดของของฮี พออกไปและสนับสนุนขอมูลขอมูล ตัวอื่นไปแทนตําแหนงนั้น
  25. 25. การเรียนรูที่ 8 การคนหาขอมูล การคนหาขอมูล (searching) การคนหาคําตอบ หรือการคนหาขอมูลในทางคอมพิวเตอรมักจะกระทําบน โครงสรางขอมูลแบบตนไม และกราฟ ทั้งนี้เพราะโครงสรางขอมูลในลักษณะนี้ สามารถทําใหการคนหาทําไดสะดวกและสามารถพลิกแพลงการคนหาไดงาย ใน ความเปนจริงแลว การคนหาขอมูลบางครั้งสามารถกระทําบนโครงสรางขอมูลชนิด อื่นก็ไดเชน อาเรย แสตก และคิว แตการจัดขอมูลในโครงสรางเชนนี้ มีขอจํากัดใน การคนหาขอมูลมาก การคนหาทําไดแบบเรียงลําดับ(Sequencial Search) เทานั้น ซึ่งใชไดกับขอมูลที่มีขนาดเล็ก ดังนั้นในการคนหาขอมูลที่มีขนาดใหญ กอนการ คนหา หรือระหวางการคนหา ขอมูลที่จะถูกคนจะตองถูกจัดใหอยูในรูปแบบของ ตนไม หรือกราฟเทานั้น การคนหาขอมูลบนโครงสรางตนไมและกราฟสามารถจํ าแนกได 2 แบบคือ การคนหาแบบไบลด(Blind Search) และการคนหาแบบฮิวริ สติก(Heuristic Search)
  26. 26. การคนหาแบบไบลด(Blind Search) การคนหาแบบไบลด(Blind search) เปนการคนหาแบบที่เดินทางจากโหนดหนึ่งไปยัง อีกโหนดหนึ่ง โดยอาศัยทิศทางเปนตัวกําหนดการคนหา ไมตองมีขอมูลอะไรมาชวยเสริม การตัดสินใจวาจะเดินทางตอไปอยางไร หรือกลาวอยางงาย ๆ คือการจะหยิบขอมูลใดมา ชวยในการคนหาตอไป ไมตองอาศัยขอมูลใด ๆ ทั้งสิ้น นอกจากทิศทางซึ่งเปนรูปแบบ ตายตัว การคนหาแบบไบลดสามารถแบงยอยไดดังนี้ คือ การคนหาทั้หมด และการคนหา บางสวน - การคนหาทั้งหมด(exhaustive search) คือ การคนหาทั้งหมดของปริภูมิสถานะ - การคนหาบางสวน (partial search) การคนหาเพียงบางสวนของปริภูมิสถานะ ซึ่งใน ความเปนจริงการคนหาสวนมากใชการคนหาเฉพาะบางสวนเทานั้นเนื่องจากปริภูมิสถานะมัก มีขนาดใหญ เทาใหไมสามารถคนหาไดทั้งหมด ดังนั้นจึงมีความเปนไปไดวาคําตอบที่ได อาจไมใชคําตอบที่ดีที่สุด การคนหาแบบนี้สามารถแบงไดเปน 2 ประเภทคือ การคนหาแบบ ลึกกอน(Depth first search) และการคนหาแบบกวางกอน (Breadth first search) การคนหาแบบลึกกอน(Depth first search) การคนหาแบบลึกกอนเปนการคนหาทีกําหนดทิศทางจากรูปของโครงสรางตนไม ที่ ่ เริ่มตนจากโหนดราก(Root node) ที่อยูบนสุด แลวเดินลงมาใหลึกที่สุด เมื่อถึงโหนดลางสุด (Terminal node) ใหยอนขึ้นมาที่จุดสูงสุดของกิ่งเดี่ยวกันที่มีกิ่งแยกและยังไมไดเดินผาน แลวเริ่มเดินลงจนถึงโหนดลึกสุดอีก ทําเชนนี้สลับไปเรื่อยจนพบโหนดที่ตองการหาหรือ สํารวจครบทุกโหนดแลวตามรูปที่ 1 การคนหาแบบลึกกอนจะมีลําดับการเดินตามโหนดดัง ตัวเลขทีกํากับไวในแตละโหนด ่
  27. 27. รูปที่ 1 ลําดับการเดินทางบนโหนดของการคนหาแบบลึกกอนบนโครงสรางตนไม ดังทีไดกลาวมาแลววา โครงสรางขอมูลที่ใชสําหรับการคนหานี้สามารถใชกับ ่ โครงสรางกราฟไดดวย โดยอาศัยหลักการเดียวกัน แตสําหรับการเดินทางบนกราฟนั้นจะ ไมมีโหนดลึกสุดดังนั้นการเดินทางบนกราฟจะตองปรับวิธีการเปนดังนี้ โดยเริ่มจาก โหนดเริ่มตน จากนั้นใหนําโหนดที่อยูติดกับโหนดที่กําลังสํารวจอยู(ที่ยังไมไดทําการ สํารวจและยังไมไดอยูในแสต็กมาใสแสต็ก) มาเก็บไวในสแต็กเมื่อสํารวจโหนดนั้นเสร็จ ให พอพ(pop) ตัวบนสุดของโหนดออกมาทําการสํารวจ แลวนําโหนดขางเคียงทั้งหมดที่ยัง ไมไดสํารวจมาตอทายแสต็ก แลวพอพตัวบนสุดออกมาสํารวจ ทําเชนนี้เรื่อย ๆ จนกระทั้ง พบโหนดที่ตองการ หรือสํารวจครบทุดโหนด
  28. 28. รูปที่ 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 ลําดับการคนหาแบบลึกกอน
  29. 29. ในการคนหาขอมูลแบบนี้บนโครงสรางของกราฟ มีขอที่นาสังเกตุคือ โหนดที่เริ่มตน การสํารวจจะตองมีการกําหนดมาใหวาโหนดใดเปนโหนดเริ่มตน และขอสังเกตุอีกประการ หนึ่งคือวิธีการคนหาแบบลึกกอนที่ใชสําหรับโครงสรางขอมูลแบบกราฟ สามารถใชกับ โครงสรางขอมูลแบบตนไมไดดวย การคนหาแบบกวางกอน (Breadth first search) การคนหาแบบกวางกอนเปนการกําหนดทิศทางการคนหาแบบที่ละระดับของ โครงสรางตนไมโดยเริ่มจากโหนดราก(ระดับที่ 0) แลวลงมาระดับที่ 1 จากซายไปขวา เมื่อ เสร็จระดับที่ 1 ไประดับที่ 2จากซายไปขวาเชนกัน ทําเชนนี้เรื่อย ๆ จนพบโหนดที่ตองการ ตามรูปที่ 3 ลําดับการเดินทางของโหนดเปนไปตามหมายเลขทีกํากับไวบนโหนด ่ รูปที่ 3 ลําดับการคนหาแบบกวางกอนบนโครงสรางตนไม
  30. 30. สําหรับการคนหาแบบกวางกอนบนโครงสรางตนไม จะอาศัยโครงสรางขอมูลแบบคิว (Queue)มาชวย และดวยวิธีการเชนเดียวกับการคนหาแบบลึกกอนคือ ใหเริ่มตนสํารวจที่ โหนดเริ่มตน แลวนําโหนดขางเคียงเก็บไวในคิว เมื่อสํารวจโหนดเริ่มตนเสร็จ ใหนําขอมูล ในคิวออกมาสํารวจ แลวนําโหนดขางเคียงที่ยังไมไดสํารวจและไมไดอยูในคิวใสคิวไว ทําเชนนี้ไปเรื่อย ๆ จนพบโหนดที่ตองการ หรือเมื่อสํารวจครบทุกโหนด รูปที่ 4 โครงสรางขอมูลแบบกราฟ
  31. 31. การสํารวจเริ่มตนที่ A นําโหนดขางเคียง B C ไวในคิว เมื่อสํารวจ A เสร็จ นําขอมูลในคิว คือ Bออกมาสํารวจ แลวนําขอมูลขางเคียงคือ D E ใสคิว ตอนนี้คิวจะมี B D E อยู แลว นํา B ออกมาสํารวจทําเชนนี้เรื่อย ๆ จะไดลําดับการสํารวจขอมูลคือ (A B C D E F G H) ตามตารางที่ 2 ตาราง 2 ลําดับการคนหาแบบกวางกอน เชนเดียวกับการคนหาแบบลึกกอน การคนหาแบบกวางกอนโดยใชโครงสรางขอมูลคิว มาชวยตองมีการกําหนดโหนดเริ่มตน และวิธีการนี้สามารถใชไดกับขอมูลบนโครงสราง แบบตนไมดวย
  32. 32. ตารางเปรียบเทียบ การคนหาแนวลึกกอนและแนวกวางกอน การคนหาแนวลึกกอน การคนหาแนวกวางกอน 1.ใชหนวยความจํานอยกวา 1.ใชหนวยความจํามากเพราะ เพราะวาสถานะในเสนทางคนหา ตองเก็บสถานะไวทุกตัวเพื่อ ปจจุบันเทานั้นที่ถูกเก็บ(ในขณะ หาเสนทางจากสถานะเริ่มตน ใดๆ จะเก็บเสนทางเดียว พอจะ ไปหาคําตอบ ไปเสนทางอื่นเสนทางที่ผานมาก็ ไมจําเปนตองเก็บ) 2. อาจจะติดเสนทางที่ลึกมาก 2. จําไมติดเสนทางที่ลึกมาก โดยไมพบคําตอบ เชนในกรณีที่ ๆ โดยไมพบคําตอบ เสนทางนั้นไมมีคําตอบและเปน เสนทางที่ยาวไมสิ้นสุด จะทําไม สามารถไปเสนทางอื่นได 3. ถาคําตอบอยูในระดับ n+1 3. ถาคําตอบอยูในระดับ สถานะอื่นทุกตัวที่ระดับ 1ถึง n+1 สถานะทุกตัวที่ระดับ 1 ระดับ n ไมจําเปนตองถูกกระจาย ถึงระดับ n จะตองถูกกระจาย จนหมด จนหมด ทําใหมีสถานะที่ไม จําเปนในเสนทางที่จะไปสู คําตอบถูกกระจายออกดวย 4. เมื่อพบคําตอบไมสามารถ 4. ถามีคําตอบจะรับประกันได รับประกันไดวาเสนที่ไดเปน วาจะพบคําตอบแน ๆ และจะ เสนทางที่สั้นที่สุดหรือไม ไดเสนทางสั้นที่สุดดวย
  33. 33. การคนหาแบบฮิวริสติก(Heuristic Search) การคนหาคําตอบอาศัยวิธีการทางฮิวริสติก (heuristic search) มีความความ แตกตางจากการคนหาขอมูลแบบธรรมดาและแบบฮิวริสติกนั้นอยูที่การคนหาขอมูล ธรรมดา ผูททําการคนขอมูลจะตองตรวจสอบขอมูลทีละตัวทุกตัวจนครบ แตฮิวริสติกจะ ี่ ไมลงไปดู ขอมูลทุกตัว วิธีการนี้จะเลือกไดคําตอบที่เหมาะสมใหกับการคนหา ซึ่งมีขอดี คือ สามารถทําการ คนหาคําตอบจาก ขอมูลที่มีขนาดใหญมาก ๆ ได แตมีขอเสียคือ คําตอบที่ไดเปนเพียงคําตอบที่ดี เทานั้นไมแนวาจะดีที่สุด แตเนื่องจากวาปญหาในบาง ลักษณะนั้นใหญมาก และเปนไปไมไดที่จะทํา การคนหาดวยวิธี ธรรมดากระบวนการของ ฮิวริสติกจึงเปนสิ่งที่จําเปนในเรื่องของฮิวริสติกนั้น นอกจากจะมีการคนหาแบบฮิวริสติก แลว ยังมีอีกสิ่งหนึ่งที่สําคัญคือ ฮิวริสติกฟงกชัน (heuristic function) ซึ่งหมายถึง ฟงกชันทีทําหนาที่ในการวัดขนาดของความเปน ไปไดในการแกปญหาซึ่งจะแสดงดวย ่ ตัวเลข วิธีการดังกลาวจะกระทํ าไดโดยการพิจารณาถึงวิธีการ (aspects) ตาง ๆ ที่ใช ในการแกปญหา ณ สถานะหนึ่งวาจะสามารถแกปญหาไดตามที่ตองการหรือไม โดย กําหนดเปนนํ้าหนักที่ใหกับการแกปญหาของแตละวิธี นํ้าหนักเหลานี้จะถูกแสดงดวยตัว เลขที่กํากับไวกับโหนดตาง ๆ ในกระบวนการ คนหา และคาเหลานี้จะเปนตัวที่ใชในการ ประมาณความเปนไปไดวาเสนทางที่ผานโหนดนั้นจะมี ความเปนไปไดในการนําไปสู หนทางการแกปญหาไดมากนอยแคไหน
  34. 34. จุดประสงคที่แทจริงของฮิวริสติก ฟงกชันก็คือ การกํากับทิศทางของกระบวนการ คนหา เพื่อใหอยูในทิศทางที่ไดประโยชนสูงสุด โดยการบอกวาเราควรเลือกเดินเสน ทางไหนกอน ในกรณีที่มีเสน ทางมากกวาหนึ่งเสนทางตองเลือกกระบวนการคนหา แบบฮิวริสติก โดยปกติแลวจะตองอาศัยฮิวริสติกฟงกชัน ทําใหการแกปญหาหนึ่ง ๆ จะดีหรือไม ก็ขึ้นอยูกับฮิวริสติกฟงกชันดังนั้นการคนหาแบบนี้จึงไมมีอะไรเปน หลักประกันวาจะไดสิ่งที่ไมดีออกมาดวยเหตุนี้เอง เราจึงเรียกการ คนหาแบบฮิวริสติก นี้วา Weak Methods หรือจะกลาวอีกนัยหนึ่งคือ Weak Methodsเปนกระบวนการ ควบคุมโดยทั่วไป (general-purpose control stategies) ซึ่งการคนหาแบบนี้ สามารถแบงไดเปน
  35. 35. การคนหาแบบปนเขา(Hill climbing) ฟงกชันฮิวริสติกสามารถนํามาชวยในกระบวนการคนหาเพื่อใหไดคําตอบอยางรวดเร็ว และมีประสิทธิภาพ วิธีการที่จะนําฟงกชันฮิวริสติกมาใชมีหลายวิธีดวยกันขึ้นอยูกับวาจะใช ในลักษณะใด เชนเลือกสถานะที่มคาฮิวริสติกดีขึ้น แลวเดินไปยังสถานะนั้นเลยโดยไม ี ตองสนใจสถานะที่มีคาฮิวริสติกแยกวาสถานะปจจุบันหรือวาจะเก็บสถานะทุกตัวไวแมวา คาฮิวริสติกจะแยลงแลวพิจารณาสถานะเหลานี้ทีหลัง เปนตน ในสวนตอไปนี้จะกลาวถึง อัลกอริทึมตาง ๆ ที่นําฟงกชันฮิวริสติกมาชวยในการคนหาคําตอบ โดยเริ่มจากอัลกอริทึม ปนเขา (Hill climbing algorithm) รูปที่ 5 แสดงลักษณะการคนหาแบบ Hill climbing การคนหาแบบฮิลไคลบิง(Hill climbing) เปนวิธีการคนหาขอมูลที่มีลักษณะคลายกับ การปนภูเขา การที่นักปนภูเขาจะเดินทางไปถึงยอดภูเขา นักปนเขาจะตองมองกอนวายอด เขาอยูที่ใด แลวนักปนเขาจะตองพยายามไปจุดนั้นใหได ลองนึกภาพของการปนภูเขาโลน ที่มองเห็นแตยอด และนักปเขากําลังปนภูเขาอยูเบื้องลางที่มีเสนทางเต็มไปหมด เพื่อที่จะ เดินทางไปถึงยอดภูเขาโดยเร็วที่สุด นักปน เขาจะมองไปที่ยอดเขาแลวสังเกตวาทิศทางใดที่เมื่อปนแลวจะยิ่งใกลยอดเขา และ หลีกเลี่ยงทิศทางที่เมื่อไปแลวจะทําใหตัวเองหางจากยอดเขา นักปนเขาจะตองทําเชนนี้ไป เรื่อย ๆ จนกระทั่งถึงยอดเขา
  36. 36. ตัวอยางการใชฟงกชันฮิวริสติก โดยอัลกอริทึมปนเขาอยางงายโดยปญหาโลกของ บลอก รูปที่ 6 การคนหาแบบ Hill climbing
  37. 37. ตัวเลข 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)
  38. 38. การคนหาดีสุดกอน(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 คะแนนตามลํ าดับ ทําเชนนี้ เรื่อย ๆ จนพบคําตอบหรือจนไมสามารถ สรางโหนดตอไปไดอีก
  39. 39. รูปที่ 7 ขั้นตอนของการคนหาแบบดีที่สุดกอน รูปที่ 8 การคนหาแบบดีสุดกอน
  40. 40. อัลกอริธึม: การคนหาแบบดีที่สุดกอน 1. เริ่มดวย OPEN ที่มีเพียงโหนดเริ่มตน 2. ทําจนกวาจะพบเปาหมาย หรือวาไมมีโหนดเหลืออยูใน OPEN � เลือกโหนดที่ดีที่สุดใน OPEN � สรางโหนดลูกใหกับโหนดที่ดีที่สุดนั้น � สําหรับโหนดลูกแตละตัวใหทําดังตอไปนี้ i) ถาโหนดนั้นยังไมเคยถูกสรางมากอนหนานั้น ใหตรวจสอบคาของมันโดย ใชฮิวริสติกฟงชัน แลวเพิ่มเขาไปใน OPEN แลวบันทึกวาเปนโหนดแม ii) ถาโหนดนั้นถูกสรางมากอนหนานี้แลว ใหเปลี่ยนโหนดแมของมัน ถาเสน ทางใหมที่ไดดีกวาโหนดแมตัวเดิม ในกรณีนี้ ใหปรับเปลี่ยนคาตามเสน ทางที่อาจจะเกิดขึ้น
  41. 41. การคนหาแบบ Greedy (Greedy Algorithm) กรีดีอัลกอริธึม เปนการคนหาแบบดีที่สุดกอน(Best first search) ที่งายที่สุด หลักการ ของการคนหาแบบนี้คือ การเลือกโหนดที่ดีที่สุดตลอดเวลาอัลกอริธึม กรีดี 1. เลือกโหนดเริ่มตนมาหนึ่งโหนด 2. ใหโหนดที่เลือกมานี้เปนสถานะปจจุบัน 3. ใหทําตามขบวนการขางลางนี้จนกวาจะไมสามารถสรางโหนดลูกไดอีก 3.1 สรางสถานะใหมที่เปนโหนดลูกที่เปนไปไดทั้งหมดจากสถานะปจจุบัน 3.2 จากสถานะใหมที่สรางขึ้นมาทั้งหมด ใหเลือกสถานะ หรือ โหนดลูก ที่ดีที่สุด ออกมาเพียงโหนดเดียว 4. กลับไปที่ขึ้นตอนที่ 2 ตัวอยาง จากเรื่องการเดินทางของเซลแมนที่จะตองเดินทางไปยังเมือง A B C D ซึ่งมี ระยะทางตามตารางที่ 3 เราจะแกปญหานี้ดวยวิธีการของกรีดีบาง รูปที่ 9 การแกปญหาการ เดินทางของเซลแมนดวยกรีดี อัลกอริธึม
  42. 42. จากรูปที่ 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 ขอมูลในรูปแบบกราฟ
  43. 43. ตาราง 3 การคนหาแบบกรีดี
  44. 44. การคนหาแบบ 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' คือฟงกชันฮิวริสติกที่ เราเคยใชในการคนหาอื่น ๆ กอนหนานี้เชนอัลกอริทึมปนเขา อัลกอริทึมดีสุดกอน เปนตน
  45. 45. ในที่นี้เราใสเครื่องหมาย ' เพื่อแสดงวาฟงกชันนี้เปนฟงกชันประมาณของฟงกชันจริงที่ไม รู (เราทําไดแคประมาณวา h' คือตนทุนจากสถานะปจจุบันไปยังคําตอบ เราจะรูตนทุนจริง ก็ตอเมื่อเราไดทําการคนหาจริงจนไปถึงคําตอบแลว) สวน g เปนฟงกชันที่คํานวณ ตนทุนจริงจากสถานะเริ่มตนมายังสถานะปจจุบัน (จึงไมไดใสเครื่51

×