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

48
  • Upload

    -
  • Category

    Documents

  • view

    2.149
  • download

    0

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

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

หนวยการเรียนรูท่ี 1 เทคโนโลยีการส่ือสาร

การเรียนรูที่ 1วัตถุประสงคของการจัดการขอมูล หนวยขอมูลและเขตขอมูลคีย .

วัตถุประสงคในการจัดการขอมูล1. การเก็บขอมูล ตองเก็บขอมูลเพ่ือใหสามารถนํากลับมาใชไดในภายหลัง

2. การจัดขอมูล ตองจัดขอมูลใหอยูในรูปแบบที่สามารถเรียกใชงานไดอยางมีประสิทธิภาพ

3. การปรับปรุงขอมูล ตองปรับขอมูลใหมีความถูกตองสมบูรณอยูเสมอ

4. การปกปองขอมูล ตองปกปองขอมูลจากการทําลาย ลักลอบใช หรือแกไขโดยมิชอบ รวมทั้งปกปองขอมูลจากอุบัติเหตุที่อาจเกิดจากวินาศภัย หรือความบกพรองภายในระบบคอมพิวเตอรหนวยขอมูล (DATA UNITS)

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

หนวยของขอมูลคอมพิวเตอรสามารถจัดเรียงเปนลําดับชั้นเล็กไปขนาดใหญไดดังน้ี

1.บิต (bit)เลขฐาน 2 หนึ่งหลักซึ่งมีคาเปน 0 หรือ 1

2.ตัวอักษร (charecter)กลุมของบิตสามารถแทนคาตัวอักษรได ในชุดอักขระ ASCII 1 ไบต (

8 บิต) แทนตัวอักษรตัว 1 ตัว เชน 01000001 แทนตัวอักษร A ในปจจุบันมีชุดอักขระที่ใชเลขฐานสอง 16 บิต แทนคาตัวอักษร คือ รหัส Unicode เชน 0000 0000 1110 0110 แทนอักษรตัว ?

3.เขตขอมูล (Field)ซึ่งประกอบดวยกลุมตัวอักษรที่แทนขอเท็จจริง

4.ระเบียน (Record)ระเบียน คือโครงสรางขอมูลที่แทนตัววัตถุชิ้นหนึ่ง เชน ระเบียนขอมูล

นักศึกษาเลขทะเบียน 431999999

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

5.แฟม (file)ตารางที่เปนกลุมของระเบียนที่มีโครงสรางเดียวกัน เชน ตารางการ

สั่งซื้อสินคาของลูกคา

6.ฐานขอมูล (Database)กลุมของตาราง (และความสัมพันธ)

การเรียงลําดับชั้นของหนวยขอมูลดังนี้เขตขอมูลคีย (Key field) คือเขตขอมูลที่ใชสําหรับระบุระเบียนขอมูลอยางเฉพาะเจาะจงขอมูลที่อยูในเขตขอมูลนี้จะไมซ้ํากับระเบียนอื่น ๆ เชน แฟมขอมูลพนักงานอาจใชเลขที่พนักงานเปนตัวระบุระเบียบ

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

การเรียนรูท่ี 2 ชนิดขอมูลและประเภทของแฟมขอมูลชนิดของขอมูล

ขอมูลที่ตองการจัดเก็บนั้นอาจจะมีรูปแบบไดหลายอยาง รูปแบบสําคัญ ๆ ไดแก

3.1 ขอมูลแบบรูปแบบ (formatted data) เปนขอมูลที่รวมอักขระซึ่งอาจหมายถึงตัวอักษร ตัวเลข ซึ่งเปนรูปแบบที่แนนอน ในแตละระเบียน ทุกระเบียนที่อยูในแฟมขอมูลจะมีรูปแบบที่เหมือนกันหมด ขอมูลที่เก็บนั้นอาจเก็บในรูปของรหัสโดยเมื่ออานขอมูลออกมาอาจจะตองนํารหัสนั้นมาตีความหมายอีกคร้ัง เชน แฟมขอมูลประวัตินักศึกษา

3.2 ขอมูลแบบขอความ (text)เปนขอมูลที่เปนอักขระในแบบขอความ ซึงอาจหมายถึงตัวอักษร ตัวเลข สมการฯ แตไมรวมภาพตาง ๆ นํามารวมกันโดยไมมีรูปแบบที่แนนอนในแตละระเบียน เชน ระบบการจัดเก็บขอความตาง ๆ ลักษณะการจัดเก็บแบบนี้จะไมตองนําขอมูลที่เก็บมาตีความหมายอีก ความหมายจะถูกกําหนดแลวในขอความ

3.3 ขอมูลแบบภาพลักษณ (images) เปนขอมูลที่เปนภาพ ซึ่งอาจเปนภาพกราฟที่ถูกสรางขึ้นจากขอมูลแบบรูปแบบรูปภาพ หรือภาพวาด คอมพิวเตอรสามารถเก็บภาพและจัดสงภาพเหลานี้ไปยังคอมพิวเตอรอื่นได เหมือนกับการสงขอความ โดยคอมพิวเตอรจะทําการแปลงภาพเหลานี้ ซึ่งจะทําใหคอมพิวเตอรสามารถที่จะปรับขยายภาพและเคล่ือนยายภาพเหลานั้นไดเหมือนกับขอมูลแบบขอความ

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

3.4 ขอมูลแบบเสียง (audio) เปนขอมูลท่ีเปนเสียง ลักษณะของการจัดเก็บก็จะเหมือนกับการจัดเก็บขอมูลแบบภาพ คือ คอมพิวเตอรจะทําการแปลงเสียงเหลานี้ใหคอมพิวเตอรสามารถนําไปเก็บได ตัวอยางไดแก การตรวจคล่ืนหัวใจ จะเก็บเสียงเตนของหัวใจ

3.5 ขอมูลแบบภาพและเสียง (video) เปนขอมูลท่ีเปนเสียงและรูปภาพ ท่ีถูกจัดเก็บไวดวยกัน เปนการผสมผสานรูปภาพและเสียงเขาดวยกัน ลักษณะของการจัดเก็บขอมูล คอมพิวเตอรจะทําการแปลงเสียงและรูปภาพนี้ เชนเดียวกับขอมูลแบบเสียงและขอมูลแบบภาพลักษณะซ่ึงจะนํามารวมเก็บไวในแฟมขอมูลเดียวกัน

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

ประเภทของแฟมขอมูลประเภทของแฟมขอมูลจําแนกตามลักษณะของการใชงานไดดังนี้

6.1แฟมขอมูลหลัก (master file)แฟมขอมูลหลักเปนแฟมขอมูลที่บรรจุขอมูลพ้ืนฐานที่จําเปนสําหรับระบบงาน และเปนขอมูลหลักที่เก็บไวใชประโยชนขอมูลเฉพาะเร่ืองไมมีรายการเปล่ียนแปลงในชวงปจจุบัน มีสภาพคอนขางคงที่ไมเปล่ียนแปลงหรือเคล่ือนไหวบอยแตจะถูกเปล่ียนแปลงเมื่อมีการสิ้นสุดของขอมูล เปนขอมูลที่สําคัญที่เก็บไวใชประโยชน ตัวอยาง เชน แฟมขอมูลหลักของนักศึกษาจะแสดงรายละเอียดของนักศึกษา ซึ่งมี ชื่อนามสกุล ที่อยู ผลการศึกษา แฟมขอมูลหลักของลูกคาในแตละระเบียนของแฟมขอมูลนี้จะแสดงรายละเอียดของลูกคา เชน ชื่อสกุล ที่อยู หรือ ประเภทของลูกคา

6.2 แฟมขอมูลรายการเปล่ียนแปลง (transaction file)แฟมขอมูลรายการเปล่ียนแปลงเปนแฟมขอมูลที่ประกอบดวยระเบียนขอมูลที่มีการเคล่ือนไหว ซึ่งจะถูกรวบรวมเปนแฟมขอมูลรายการเปล่ียนแปลงที่เกิดขึ้นในแตละงวดในสวนที่เกี่ยวของกับขอมูลนั้น แฟมขอมูลรายการเปล่ียนแปลงนี้จะนําไปปรับรายการในแฟมขอมูลหลัก ใหไดยอดปจจุบัน ตัวอยางเชน แฟมขอมูลลงทะเบียนเรียนของนักศึกษา

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

6.3 แฟมขอมูลตาราง (table file)แฟมขอมูลตารางเปนแฟมขอมูลที่มีคาคงที่ ซึ่งประกอบดวยตารางที่เปนขอมูลหรือชุดของขอมูลที่มีความเกี่ยวของกันและถูกจัดใหอยูรวมกันอยางมีระเบียบ โดยแฟมขอมูลตารางนี้จะถูกใชในการประมวลผลกับแฟมขอมูลอื่นเปนประจําอยูเสมอ เชน ตารางอัตราภาษี ตารางราคาสินคาตัวอยางเชน ตารางราคาสินคาของบริษัทขายอะไหลเคร่ืองคอมพิวเตอรดังนี้

รหัสสินคา รายชื่อสินคา ราคา51 จอภาพ 4,50052 แปนพิมพ 1,20053 แรม 4 M 4,50054 แรม 8 M 7,00055 กระดาษตอเนื่อง 50056 แฟมคอมพิวเตอร 200

ในแฟมขอมูลนี้จะประกอบดวยระเบียนแฟมขอมูลตารางของสินคาที่มีฟลดตางๆ ไดแก รหัสสินคา รายชื่อ สินคา และราคาสินคาตอหนวย แฟมขอมูลตารางรายการสินคา จะใชรวมกับแฟมขอมูลหลายแฟมขอมูลในระบบสินคา ไดแก แฟมขอมูลคลังสินคา (inventory master file) แฟมขอมูลใบสั่งซื้อของลูกคา (customer order master file) และแฟมขอมูลรายการสิตคาของฝายผลิต (production master file) มีขอควรสังเกตวาแฟมขอมูลตาราง แฟมขอมูลรายการเปล่ียนแปลง และแฟมขอมูลหลัก ทั้ง 3 แฟม จะมีฟลดที่เกี่ยวกับตัวสินคารวมกัน คือ ฟลดรหัสสินคา (product code) ฟลดรวมกันนี้จะเปนตัวเชื่องโยงระหวางแฟมขอมูลตารางกับแฟมขอมูลอื่น ๆ ทั้งหมดที่ตองการจะใชคาของฟดลรายชื่อสินคา (product description) และราคาสินคา (product price) จากแฟมขอมูลตาราง

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

การจัดแฟมขอมูลแบบนี้จะทําใหประหยัดเนื้อที่ในอุปกรณเก็บขอมูลของแฟมขอมูลหลัก กลาวคือในแฟมขอมูลหลักไมตองมี 2 ฟลด คือ ฟลดรายการสินคาและฟลดราคาสินคา มีแตเพียงฟลดรหัสสินคาก็เพียงพอแลว เมื่อใดที่ตองการใชฟลดรายการสินคาในการแสดงผลก็อานคาออกมาจากแฟมขอมูลตารางได นอกจากนั้นยังเปนการลดความซ้ําซอนของขอมูลและเมื่อผูใชระบบตองการเปล่ียนแปลงรายการสินคาหรือราคาสินคาก็จะเปล่ียนในแฟมขอมูลตารางทีเดียว โดยไมตองไปเปล่ียนแปลงในแฟมขอมูลอื่น

6.4 แฟมขอมูลเรียงลําดับ (sort file)แฟมขอมูลเรียงลําดับเปนการจัดเรียงระเบียนที่จะบรรจุในแฟมขอมูลนั้นใหม โดยเรียงตามลําดับคาของฟลดขอมูลหรือคาของขอมูลคาใดคาหนึ่งในระเบียนนั้นก็ได เชน จัดเรียงลําดับตาม วันเดือนป ตามลําดับตัวอักขระเรียงลําดับจากมากไปหานอยหรือจากนอยไปหามาก เปนตน

แฟมขอมูลรายงาน (report file)เปนแฟมขอมูลที่ถูกจัดเรียงระเบียบตามรูปแบบของรายงานที่ตองการแลวจัดเก็บไวในรูปของแฟมขอมูล ตัวอยาง เชน แฟมขอมูลรายงานควบคุมการปรับเปล่ียนขอมูลที่เกิดขึ้นในขณะปฏิบัติงานแตละวัน

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

การเรียนรูท่ี 3 ลักษณะการประมวลผลขอมูลขอมูลและการประมวลผลขอมูล

ขอมูล คือขอเท็จจริงที่เราสนใจ สวน สารสนเทศ คือขอมูลที่ผานการประมวลผลดวยวิธีการที่เหมาะสมถูกตอง จนไดรูปแบบผลลัพธ ตรงความตองการของผูใชขอมูลที่จะนํามาประมวลผลใหเปนสารสนเทศ จะตองมีคุณสมบัติพ้ืนฐานดังตอไปนี้ ความถูกตอง หากมีการเก็บรวบรวมขอมูลและขอมูลเหลานั้นเชื่อถือไมได จะทําใหเกิดผลเสียหายมาก ผูใชจะไมกลาอางอิงหรือนําเอาไปใชประโยชน ซึ่งเปนเหตุใหการตัดสินใจของผูบริหารขาดความแมนยํา และมีโอกาสผิดพลาดได โครงสรางขอมูลที่ออกแบบตองคํานึงถึงกรรมวิธีการดําเนินงานเพ่ือใหไดความถูกตองแมนยํามากที่สุด โดยปกติความผิดพลาดของการประมวลผลสวนใหญ มาจากขอมูลที่ไมมีความถูกตองซึ่งมีสาเหตุมาจากคนหรือเคร่ืองจักร การออกแบบระบบจึงตองคํานึงถึงในเร่ืองนี้ ความรวดเร็วและเปนปจจุบัน การไดมาของขอมูลจําเปนตองใหทันตอความตองการของผูใช มีการตอบสนองตอผูใชไดเร็ว ตีความหมายสารสนเทศไดทันตอเหตุการณหรือความตองการ มีการออกแบบระบบการเรียกคนและรายงาน ตามความตองการของผูใช ความสมบูรณ ความสมบูรณของสารสนเทศขึ้นกับการรวบรวมและวิธีการทางปฏิบัติ ในการดําเนินการจัดทําสารสนเทศ ตองสํารวจและสอบถามความตองการของผูใช เพ่ือใหไดขอมูลที่มีความสมบูรณเหมาะสม

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

ความชัดเจนกะทัดรัด การจัดเก็บขอมูลตองใชพ้ืนที่ในการจัดเก็บขอมูลมาก จึงจําเปนตองออกแบบโครงสรางขอมูลใหกะทัดรัด สื่อความหมายได มีการใชรหัสหรือยอขอมูลใหเหมาะสม เพ่ือที่จะจัดเก็บเขาไวในระบบคอมพิวเตอร ความสอดคลอง ความตองการเปนเร่ืองสําคัญ ดังนั้นจึงตองมีการสํารวจเพ่ือหาความตองการของหนวยงานและองคการ ดูสภาพการใชขอมูล ความลึกหรือความกวางของขอบเขตขอมูล ที่สอดคลองกับความตองการ

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

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

วิธีการประมวลผล มี 2 ลักษณะ คือ

(1) การประมวลผลแบบเชื่อมตรง (online processing)หมายถึง การทํางานในขณะที่ขอมูลว่ิงไปบนสายสัญญาณเชื่อมตอจากเคร่ืองปลายทาง (terminal) ไปยังฐานขอมูลของเคร่ืองหลักที่ใชในการประมวลผลการประมวลผลแบบเชื่อมตรงจึงเปนการประมวลผลโดยทันทีทันใด เชน การจองต๋ัวเคร่ืองบิน การซื้อสินคาในหางสรรพสินคา การฝากถอนเงินเอทีเอ็ม การประมวลผลแบบเชื่อมตรงจึงเปนวิธีที่ใชกันมากวิธีหนึ่ง

(2) การประมวลผลแบบกลุม (batch processing)หมายถึง การประมวลผลในเร่ืองที่สนใจเปนคร้ังๆ เชน เมื่อตองการทราบขอมูลผลสํารวจความนิยมของประชาชนตอการเลือกต้ังสมาชิกสภาผูแทน หรือที่เรียกวา โพล (poll) ก็มีการสํารวจขอมูลเพ่ือเก็บรวบรวมขอมูล เมื่อเก็บรวบรวมขอมูลไดแลวก็นํามาปอนเขาเคร่ืองคอมพิวเตอร แลวนําขอมูล นั้นมาประมวลผลตามโปรแกรมที่ไดกําหนดไว เพ่ือรายงานหรือสรุปผลหาคําตอบ กรณีการประมวลผลแบบกลุมจึงกระทําในลักษณะเปนคร้ังๆ เพ่ือใหไดผลลัพธโดยจะตองมีการรวบรวมขอมูลไวกอน

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

การเรียนรูท่ี 4 แฟมโปรแกรมและแฟมขอมูล

แฟมโปรแกรมและแฟมขอมูลถาจะแบงประเภทของแฟมในคอมพิวเตอรอีกนัยหนึ่ง อาจแบงเปนแฟม

โปรแกรม และ แฟมขอมูล แฟมโปรแกรมประกอบดวยชุดคําสั่งตางๆ ที่ทํางานอยางใดอยางหนึ่งเชน โปรแกรมประมวลคํา (word processor) ใชสําหรับพิมพเอกสารและจัดรูปแบบขอความ และโปรแกรมบีบอัดขอมูล (compression utility) ใชสําหรับบีบอัดขอมูลที่มีขนาดเล็กลง เปนตน

แฟมที่จัดเก็บหรือบันทึกโดยโปรแกรมเหลานี้ จัดเปนประเภทแฟมขอมูล ซึ่งตามปกติจะมีสวนขยาย (file extension) เปนตัวบอกประเภทเชน เอกสารที่สรางดวยโปรแกรมประมวลคํา Microsoft Word จะมีสวนขยายหลักเปน .doc สวนแฟมขอมูลที่สรางดวยโปรแกรมบีบอัดขอมูล Winzip จะมีสวนขยายเปน .zip เปนตน ที่กลาววาสวนขยายหลักหมายความวา โปรแกรมหนึ่งอาจสรางแฟมขอมูลที่มีสวนขยายไดหลายหยาง ตัวอยางโปรแกรมลักษณะนี้ไดแก Microsoft Word2000 ซึ่งสามารถสรางแฟมขอมูลที่มีสวนขยายเปน .doc .htm .html .rtf .txt .mcw และ .wps แต จะเปนสวนขยายหลักเปน .doc

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

แฟมขอมูลบางประเภทสรางและเปดดวยโปรแกรมใดโปรแกรมหนึ่งโดยเฉพาะ เชนแฟมที่สรางดวยโปรแกรมแตงภาพ 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

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

หนวยการเรียนรูท่ี 2 โครงสรางขอมูล

การเรียนรูที่ 5 ชนิดของโครงสรางขอมูล

ประเภทของโครงสรางขอมูลแบงออกเปน 2 ประเภท คือ

- โครงสรางขอมูลทางกายภาพ (Physical Data Structure)

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

เปนโครงสรางขอมูลที่ใชโดยทั่วไปในภาษาคอมพิวเตอร แบงออกเปน 2 ประเภท

1.ขอมูลเบ้ืองตน (Primitive Data Types)- จํานวนเต็ม (Integer)- จํานวนทศนิยม (Floating point)- ขอมูลบูลีน (Boolean)- จํานวนจริง (Real)- ขอมูลอักขระ (Character)

2.ขอมูลโครงสราง (Structure Data Types)- แถวลําดับ (Array)- ระเบียนขอมูล (Record)- แฟมขอมูล (File)

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

- โครงสรางขอมูลทางตรรกะ (Logical Data Structure)

เปนโครงสรางขอมูลที่เกิดจากการจินตนาการของผูใช เพ่ือใชในการแกปญหาในโปรแกรมที่สรางขึ้น แบงเปน 2 ประเภท1. โครงสรางขอมูลแบบเชิงเสน (Linear Data Structure)

ความสัมพันธของขอมูลจะเรียงตอเนื่องกัน- ลิสต (List)- สแตก (Stack)- คิว (Queue)- สตริง (String)

2. โครงสรางขอมูลแบบไมเชิงเสน (Non-Linear Data Structure)ขอมูลแตละตัวสามารถมีความสัมพันธกับขอมูลอื่นไดหลายตัว

- ทรี (Tree)- กราฟ (Graph)

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

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)

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

5. ลักษณะของโปรแกรมแบบที่มีโครงสรางที่ดี5.1 โครงสรางโปรแกรมแบบคําสั่งตามลําดับ

เปน โครงสรางพ้ืนฐานที่ประกอบดวยคําสั่งทั่วๆไป เปนโครงสรางที่มีลักษณะการทํางานแบบเรียงลําดับ คือ จะทํางานต้ังแตตนจนจบโดยไมมีการขามขั้นตอนใดๆ5.2 โครงสรางโปรแกรมแบบมีการตัดสินใจ (Decision)

มี การตรวจสอบเงื่อนไข เพ่ือตัดสินใจวาจะทําการประมวลผลสวนใด โดยผลลัพธของเงื่อนไขจะมีคาของความเปนไปไดอยู 2 ลักษณะ คือ จริงและเท็จ เทานั้น5.3 โครงสรางโปรแกรมแบบเปนวงจรปด (Loop)

มีลักษณะการทํางานซ้ําๆกัน อยูในสวนใดสวนหนึ่งของโปรแกรม6. อัลกอริทึม (Algorithm)

อัลกอรึทึม คือ วิธีการแกปญหาตางๆ อยางมีระบบ มีลําดับขั้นตอนต้ังแตตนจนไดผลลัพธ สามารถเขียนไดหลายแบบ การเลือกใชตองเลือกใชขั้นตอนวิธีที่เหมาะสม กระชับ และรัดกุมอัลกอริทึมที่นิยมใชกันมาก ไดแก1. อัลกอริทึมแบบแตกยอย (Divide and conquer)2. อัลกอริทึมแบบเคล่ือนที่ (Dynamic Programming)3. อัลกอริทึมแบบทางเลือก (Greedy Algorithm)

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

การเขียนผังงาน (Flowchart)Flow Chart เปนการอธิบายขั้นตอนการประมวลผลโดยใชสัญลักษณในการ

แสดงความหมาย การใชกรอบรูปสัญลักษณที่สื่อความหมาย อธิบายขั้นตอนการทํางานการเขียนรหัสเทียม (Pseudo Code)

Pseudo Code การอธิบายขั้นตอนการประมวลผลโดยใชวลีภาษาอังกฤษในการแสดงอธิบาย ใชคําสั้นๆ กะทัดรัด อธิบายขั้นตอนการทํางานของโปรแกรม

พัฒนาการของภาษาโปรแกรม- ภาษาเคร่ือง (Machine Language)- ภาษาแอสเซมบลี (Assembly Language)- ภาษาระดับสูง (High Level Language)- ภาษายุคที่ 4 (Fourth Generation Language หรือ 4GL)การบํารุงรักษาโปรแกรม (Program Maintenance)

หมาย ถึง การแกไขขอผิดพลาดที่พบระหวางการทดสอบหรือระหวางการใชงาน ซึ่งอาจเปนการเปล่ียนขอมูลที่ตองการใชใหมการปรับปรุงขอมูล ใหทันเหตุการณอยูเสมอ การปรับเปล่ียนโครงสรางบนหนาจอ เปนตน

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

การเรียนรูที่ 6 ลักษณะของขอมูล

ลักษณะของขอมูลที่ดีขอมูลที่ดีควรเปนขอมูลที่มีคุณลักษณะดังตอไปนี้• ขอมูลที่มีความถูกตองและเชื่อถือได (accuracy) ขอมูลจะมีความถูกตองและเชื่อถืไดมากนอยเพียงใดนั้น ขึ้นกับวิธีการที่ใชในการควบคุมขอมูลนําเขา และการควบคุมการประมวลผลการควบคุมขอมูลนําเขาเปนการกระทําเพ่ือใหเกิดความมั่นใจวาขอมูลนําเขามีความถูกตองเชื่อถือได เพราะถาขอมูลนําเขาไมมีความถูกตองแลวถึงแมจะใชวิธีการวิเคราะหและประมวลผลขอมูลที่ดีเพียงใด ผลลัพธที่ไดก็จะไมมีความถูกตอง หรือนําไปใชไมได ขอมูลนําเขาจะตองเปนขอมูลที่ผานการตรวจสอบวาถูกตองแลว ขอมูลบางอยางอาจตองแปลงใหอยูในรูปแบบที่เคร่ืองคอมพิวเตอรสามารถเขาใจไดอยางถูกตอง ซึ่งอาจตองพิมพขอมูลมาตรวจเช็คดวยมือกอน การประมวลผลถึงแมวาจะมีการตรวจสอบขอมูลนําเขาแลวก็ตาม ก็อาจทําใหไดขอมูลที่ผิดพลาดได เชน เกิดจากการเขียนโปรแกรมหรือใชสูตรคํานวณผิดพลาดได ดังนั้นจึงควรกําหนดวิธีการควบคุมการประมวลผลซึ่งไดแก การตรวจเช็คยอดรวมที่ไดจากการประมวลผลแตละคร้ัง หรือการตรวจสอบผลลัพธที่ไดจากการประมวลผลดวยเคร่ืองคอมพิวเตอรกับขอมูลสมมติที่มีการคํานวณดวยวามีความถูกตองตรงกันหรือไม• ขอมูลตรงตามความตองการของผูใช (relevancy) ไดแก การเก็บเฉพาะขอมูลที่ผูใชตองการเทานั้น ไมควร เก็บขอมูลอื่น ๆ ที่ไมจําเปนหรือไมเกี่ยวของกับการใชงาน เพราะจะทําใหเสียเวลาและเสียเนื้อที่ในหนวยเก็บขอมูล แตทั้งนี้ขอมูลที่เก็บจะตองมีความครบถวนสมบูรณดวย• ขอมูลมีความทันสมัย (timeliness) ขอมูลที่ดีนั้นนอกจากจะเปนขอมูลที่มีความถูกตองเชื่อถือไดแลวจะ ตองเปนขอมูลที่ทันสมัย ทั้งนี้เพ่ือใหผูใชสามารถนําเอาผลลัพธที่ไดไปใชไดทันเวลา นั่นคือจะตองเก็บขอมูลไดรวดเร็วเพ่ือทันความตองการของผูใช

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

การเรียนรูท่ี 7 การเรียงลําดับขอมูลการเรียงลําดับขอมูลการเรียงลําดับขอมูลเปนเร่ืองสําคัญมากเร่ืองหนึ่งเนื่องจากทําใหผูตองการใชขอมุลเชน ผูบริหาร,ผูปฏิบัติงาน (พนักงาน) สามารถทําความเขาใจกับขอมูลหรือทําการคนหาขอมูลไดงายและเร็วย่ิงขึ้นตามที่ตองการประเภทของการจัดการจัดเรียงขอมูลในระบบคอมพิวเตอร แบงเปน 2 ประเภทคือ

1. Internal Sorting คือ การเรียงลําดับขอมูลโดยเก็บไวในหนวยความจําหลัก และขอมูลของสมาชิกจะถูกเก็บ อยูในโครงสรางอะเรย

2. External Sorting คือ การเรียงลําดับขอมูลโดยเก็บไวในหนวยความจําสํารอง ขอมูลสวนใหญมีจํานวนมาก จึงไม สามารถเก็บไวในหนวยความจําหลักไดทั้งหมดในหัวขอการเรียงลําดับ นี้จะอธิบายวิธีการเรียงลําดับขอมูลในแตละวิธีโดยสรุปอยางยอ ๆ เพ่ือใชเปนแนวทางในการศึกษาใน ระดับชั้นสูงขึ้นไป คงจะไมไดกลาวถึงวิธีการขั้นตอนในการจัดเรียงอยางละเอียดแตจะพยายามชี้ใหเห็นถึงจุดเดนตาง ๆ ของการจัด เรียงลําดับในแตละวิธีวิธีหรือชนิดของการเรียงลําดับ มีวิธีตาง ๆ ที่มักจะไดพบโดยทั่วไปดังนี้1. SELECTION SORT2. INSERTION SORT / LINEAR INSERTION SORT3. BUBBLE SORT4. SHELL SORT5. BUCKET SORT /RADIX SORT6. QUICK SORT7. HEAP SORT / TREE SORT

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

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 คาในการเปรียบเทียบที่นอยที่สุดหรือมากที่สุด จะลอยขึ้นขางบน เหมือนกับฟองอากาศ

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

4. การรียงลําดับแบบเชลล(shell sort)เปนรูปแบบของการ sort ขอมูลโดยการนําเอาขอดีของการคนหาขอมูลแบบ แทรกและแบบเลือกและหลีกเล่ียง การเกิดปญหาของทั้งแบบแทรกและแบบเลือก ซึ่งการเปรียบเทียบขอมูลในการเรียงลําดับแบบแทรก โดยการเปรียบเทียบ ขอมูลที่อยูไกลออกไป ซึ่งจะทําใหเราสามารถเรียงดับขอมูลในตําแหนงที่อยูไกลออกไปหลังจากนั้นก็จะเรียงลําดับขอมูล ที่อยูใกลกันเขามา(กวาในคร้ังแรก) และความหางของขอมูลที่เปรียบเทียบก็จะนอยลงจนเหลือ 1วิธีนี้คิดคนเมื่อป ค.ศ.1959 โดย ดี.แอล.เชลล(D.L.SHELL) เรียกวา การเรียงลําดับแบบเชลล(shell sort)5. การเรียงลําดับโดยการใชฐานเลข(radix sort)การเรียงลําดับแบบนี้การเรียงลําดับ จะอยูบนพ้ืนฐานของการแทนตําแหนงของตัวเลขที่ตองการนํามาเรียงลําดับ จะเร่ิมจากตัวที่มีเลขนัยสําคัญสูงที่สุด ดําเนินจนกระทั่งถึงตัวเลขที่มีเลขนัยสําคัญตํ่าสุด การเรียงลําดับในวิธีนี้การเรียงลําดับ จะเรียงจากตัวเลขที่มีนัยสําคัญนอยที่สุดกอน เมื่อตัวเลขทั้งหมดถูกนํามาเรียงลําดับตามเลขนัยสําคัญที่สูงขึ้น ตัวเลขที่เหมือนกัน ในตําแหนงนน จะตางกันในตําแหนงของเลขนัยสําคัญที่นอยกวา การประมวลผลแบบนี้จะประมวลผลกับขอมูลทั้งหมดได โดยที่ไมตองมีการแบงขอมูลแบบกลุมยอย

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

6. การเรียงลําดับอยางเร็ว(quick sort)ถูกสรางและต้ังชื่อโดย ซี.เอ.อาร.ฮารเวร (C.A.R HOARE) การเรียงลําดับอยางเร็ว จะแบงขอมูลเปนสองกลุม โดยใน การจัดเรียงจะเลือกขอมุลตัวใดตัวหนึ่งออกมา ซึ่งจะเปนตัวที่แบงขอมูลออกเปนสองกลุม โดยกลุมแรกจะตองมีขอมูลนอยกวา ตัวแบง และกลุมที่มีขอมูลนอยกวาตัวแบง และอีกกลุมจะมีขอมูลที่มากกวาตัวแบง ซึ่งเราเรียกตัวแบงวา ตัวหลัก(pivot) ในการเลือกตัวหลักจะมีอิสระในการเลือกขอมูลตัวใดก็ไดที่เราตองการ การเรียงลําดับแบบเร็วเหมาะกับขอมูลที่มีการเรียกซ้ํา

7.การเรียงลําดับฮีพ(heapsort)เปนการเรียงลําดับที่อยูบนพ้ืนฐานบนพ้ืนฐานของโครงสรางแบบไบนารี จะดําเนินการ 2 ขั้นตอน คือ1. การจัดขอมูลในอะเรยใหสอดคลองกับความตองการของฮีพ2. การขจัดหนือการเคล่ือนยายขอมูลในตําแหนงสูงสุดหรือตําแหนงยอดของของฮี

พออกไปและสนับสนุนขอมูลขอมูล ตัวอื่นไปแทนตําแหนงนั้น

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

การเรียนรูท่ี 8 การคนหาขอมูลการคนหาขอมูล (searching)

การคนหาคําตอบ หรือการคนหาขอมูลในทางคอมพิวเตอรมักจะกระทําบนโครงสรางขอมูลแบบตนไม และกราฟ ทั้งนี้เพราะโครงสรางขอมูลในลักษณะนี้สามารถทําใหการคนหาทําไดสะดวกและสามารถพลิกแพลงการคนหาไดงาย ในความเปนจริงแลว การคนหาขอมูลบางคร้ังสามารถกระทําบนโครงสรางขอมูลชนิดอื่นก็ไดเชน อาเรย แสตก และคิว แตการจัดขอมูลในโครงสรางเชนนี้ มีขอจํากัดในการคนหาขอมูลมาก การคนหาทําไดแบบเรียงลําดับ(Sequencial Search) เทานั้น ซึ่งใชไดกับขอมูลที่มีขนาดเล็ก ดังนั้นในการคนหาขอมูลที่มีขนาดใหญ กอนการคนหา หรือระหวางการคนหา ขอมูลที่จะถูกคนจะตองถูกจัดใหอยูในรูปแบบของตนไม หรือกราฟเทานั้น การคนหาขอมูลบนโครงสรางตนไมและกราฟสามารถจํ าแนกได 2 แบบคือ การคนหาแบบไบลด(Blind Search) และการคนหาแบบฮิวริสติก(Heuristic Search)

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

การคนหาแบบไบลด(Blind Search)การคนหาแบบไบลด(Blind search) เปนการคนหาแบบที่เดินทางจากโหนดหนึ่งไปยัง

อีกโหนดหนึ่ง โดยอาศัยทิศทางเปนตัวกําหนดการคนหา ไมตองมีขอมูลอะไรมาชวยเสริมการตัดสินใจวาจะเดินทางตอไปอยางไร หรือกลาวอยางงาย ๆ คือการจะหยิบขอมูลใดมาชวยในการคนหาตอไป ไมตองอาศัยขอมูลใด ๆ ทั้งสิ้น นอกจากทิศทางซึ่งเปนรูปแบบตายตัว การคนหาแบบไบลดสามารถแบงยอยไดดังนี้ คือ การคนหาทั้หมด และการคนหาบางสวน

- การคนหาทั้งหมด(exhaustive search) คือ การคนหาทั้งหมดของปริภูมิสถานะ- การคนหาบางสวน (partial search) การคนหาเพียงบางสวนของปริภูมิสถานะ ซึ่งใน

ความเปนจริงการคนหาสวนมากใชการคนหาเฉพาะบางสวนเทานั้นเนื่องจากปริภูมิสถานะมักมีขนาดใหญ เทาใหไมสามารถคนหาไดทั้งหมด ดังนั้นจึงมีความเปนไปไดวาคําตอบที่ไดอาจไมใชคําตอบที่ดีที่สุด การคนหาแบบนี้สามารถแบงไดเปน 2 ประเภทคือ การคนหาแบบลึกกอน(Depth first search) และการคนหาแบบกวางกอน (Breadth first search)

การคนหาแบบลึกกอน(Depth first search)การคนหาแบบลึกกอนเปนการคนหาทีก่ําหนดทิศทางจากรูปของโครงสรางตนไม ที่

เร่ิมตนจากโหนดราก(Root node) ที่อยูบนสุด แลวเดินลงมาใหลึกที่สุด เมื่อถึงโหนดลางสุด(Terminal node) ใหยอนขึ้นมาที่จุดสูงสุดของกิ่งเด่ียวกันที่มีกิ่งแยกและยังไมไดเดินผาน แลวเร่ิมเดินลงจนถึงโหนดลึกสุดอีก ทําเชนนี้สลับไปเร่ือยจนพบโหนดที่ตองการหาหรือสํารวจครบทุกโหนดแลวตามรูปที่ 1 การคนหาแบบลึกกอนจะมีลําดับการเดินตามโหนดดังตัวเลขทีก่ํากับไวในแตละโหนด

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

รูปที่ 1 ลําดับการเดินทางบนโหนดของการคนหาแบบลึกกอนบนโครงสรางตนไม

ดังทีไ่ดกลาวมาแลววา โครงสรางขอมูลที่ใชสําหรับการคนหานี้สามารถใชกับโครงสรางกราฟไดดวย โดยอาศัยหลักการเดียวกัน แตสําหรับการเดินทางบนกราฟนั้นจะไมมีโหนดลึกสุดดังนั้นการเดินทางบนกราฟจะตองปรับวิธีการเปนดังนี้ โดยเร่ิมจากโหนดเร่ิมตน จากนั้นใหนําโหนดที่อยูติดกับโหนดที่กําลังสํารวจอยู(ที่ยังไมไดทําการสํารวจและยังไมไดอยูในแสต็กมาใสแสต็ก) มาเก็บไวในสแต็กเมื่อสํารวจโหนดนั้นเสร็จ ใหพอพ(pop) ตัวบนสุดของโหนดออกมาทําการสํารวจ แลวนําโหนดขางเคียงทั้งหมดที่ยังไมไดสํารวจมาตอทายแสต็ก แลวพอพตัวบนสุดออกมาสํารวจ ทําเชนนี้เร่ือย ๆ จนกระทั้งพบโหนดที่ตองการ หรือสํารวจครบทุดโหนด

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

รูปที่ 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 ลําดับการคนหาแบบลึกกอน

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

ในการคนหาขอมูลแบบนี้บนโครงสรางของกราฟ มีขอที่นาสังเกตุคือ โหนดที่เร่ิมตนการสํารวจจะตองมีการกําหนดมาใหวาโหนดใดเปนโหนดเร่ิมตน และขอสังเกตุอีกประการหนึ่งคือวิธีการคนหาแบบลึกกอนที่ใชสําหรับโครงสรางขอมูลแบบกราฟ สามารถใชกับโครงสรางขอมูลแบบตนไมไดดวย

การคนหาแบบกวางกอน (Breadth first search)การคนหาแบบกวางกอนเปนการกําหนดทิศทางการคนหาแบบที่ละระดับของ

โครงสรางตนไมโดยเร่ิมจากโหนดราก(ระดับที่ 0) แลวลงมาระดับที่ 1 จากซายไปขวา เมื่อเสร็จระดับที่ 1 ไประดับที่ 2จากซายไปขวาเชนกัน ทําเชนนี้เร่ือย ๆ จนพบโหนดที่ตองการตามรูปที่ 3 ลําดับการเดินทางของโหนดเปนไปตามหมายเลขทีก่ํากับไวบนโหนด

รูปที่ 3 ลําดับการคนหาแบบกวางกอนบนโครงสรางตนไม

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

สําหรับการคนหาแบบกวางกอนบนโครงสรางตนไม จะอาศัยโครงสรางขอมูลแบบคิว(Queue)มาชวย และดวยวิธีการเชนเดียวกับการคนหาแบบลึกกอนคือ ใหเร่ิมตนสํารวจที่โหนดเร่ิมตน แลวนําโหนดขางเคียงเก็บไวในคิว เมื่อสํารวจโหนดเร่ิมตนเสร็จ ใหนําขอมูลในคิวออกมาสํารวจ แลวนําโหนดขางเคียงที่ยังไมไดสํารวจและไมไดอยูในคิวใสคิวไว ทําเชนนี้ไปเร่ือย ๆ จนพบโหนดที่ตองการ หรือเมื่อสํารวจครบทุกโหนด

รูปที่ 4 โครงสรางขอมูลแบบกราฟ

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

การสํารวจเร่ิมตนที่ A นําโหนดขางเคียง B C ไวในคิว เมื่อสํารวจ A เสร็จ นําขอมูลในคิว คือ Bออกมาสํารวจ แลวนําขอมูลขางเคียงคือ D E ใสคิว ตอนนี้คิวจะมี B D E อยู แลวนํา B ออกมาสํารวจทําเชนนี้เร่ือย ๆ จะไดลําดับการสํารวจขอมูลคือ (A B C D E F G H) ตามตารางที่ 2

ตาราง 2 ลําดับการคนหาแบบกวางกอน

เชนเดียวกับการคนหาแบบลึกกอน การคนหาแบบกวางกอนโดยใชโครงสรางขอมูลคิวมาชวยตองมีการกําหนดโหนดเร่ิมตน และวิธีการนี้สามารถใชไดกับขอมูลบนโครงสรางแบบตนไมดวย

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

ตารางเปรียบเทียบ การคนหาแนวลึกกอนและแนวกวางกอน

การคนหาแนวลึกกอน การคนหาแนวกวางกอน1.ใชหนวยความจํานอยกวา เพราะวาสถานะในเสนทางคนหาปจจุบันเทานั้นที่ถูกเก็บ(ในขณะใดๆ จะเก็บเสนทางเดียว พอจะไปเสนทางอื่นเสนทางที่ผานมาก็ไมจําเปนตองเก็บ)

1.ใชหนวยความจํามากเพราะตองเก็บสถานะไวทุกตัวเพ่ือหาเสนทางจากสถานะเริ่มตนไปหาคําตอบ

2. อาจจะติดเสนทางที่ลึกมากโดยไมพบคําตอบ เชนในกรณีที่เสนทางนั้นไมมีคําตอบและเปนเสนทางที่ยาวไมสิ้นสุด จะทําไมสามารถไปเสนทางอื่นได

2. จําไมติดเสนทางที่ลึกมาก ๆ โดยไมพบคําตอบ

3. ถาคําตอบอยูในระดับ n+1สถานะอื่นทุกตัวที่ระดับ 1ถึงระดับ n ไมจําเปนตองถูกกระจายจนหมด

3. ถาคําตอบอยูในระดับn+1 สถานะทุกตัวที่ระดับ 1ถึงระดับ n จะตองถูกกระจายจนหมด ทําใหมีสถานะที่ไมจําเปนในเสนทางที่จะไปสูคําตอบถูกกระจายออกดวย

4. เม่ือพบคําตอบไมสามารถรับประกันไดวาเสนที่ไดเปนเสนทางที่สั้นที่สุดหรือไม

4. ถามีคําตอบจะรับประกันไดวาจะพบคําตอบแน ๆ และจะไดเสนทางสั้นที่สุดดวย

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

การคนหาแบบฮิวริสติก(Heuristic Search)

การคนหาคําตอบอาศัยวิธีการทางฮิวริสติก (heuristic search) มีความความแตกตางจากการคนหาขอมูลแบบธรรมดาและแบบฮิวริสติกนั้นอยูที่การคนหาขอมูลธรรมดา ผูทีท่ําการคนขอมูลจะตองตรวจสอบขอมูลทีละตัวทุกตัวจนครบ แตฮิวริสติกจะไมลงไปดู ขอมูลทุกตัว วิธีการนี้จะเลือกไดคําตอบที่เหมาะสมใหกับการคนหา ซึ่งมีขอดีคือ สามารถทําการ คนหาคําตอบจาก ขอมูลที่มีขนาดใหญมาก ๆ ได แตมีขอเสียคือคําตอบที่ไดเปนเพียงคําตอบที่ดี เทานั้นไมแนวาจะดีที่สุด แตเนื่องจากวาปญหาในบางลักษณะนั้นใหญมาก และเปนไปไมไดที่จะทํา การคนหาดวยวิธี ธรรมดากระบวนการของฮิวริสติกจึงเปนสิ่งที่จําเปนในเร่ืองของฮิวริสติกนั้น นอกจากจะมีการคนหาแบบฮิวริสติกแลว ยังมีอีกสิ่งหนึ่งที่สําคัญคือ ฮิวริสติกฟงกชัน (heuristic function) ซึ่งหมายถึงฟงกชันทีท่ําหนาที่ในการวัดขนาดของความเปน ไปไดในการแกปญหาซึ่งจะแสดงดวยตัวเลข วิธีการดังกลาวจะกระทํ าไดโดยการพิจารณาถึงวิธีการ (aspects) ตาง ๆ ที่ใชในการแกปญหา ณ สถานะหนึ่งวาจะสามารถแกปญหาไดตามที่ตองการหรือไม โดยกําหนดเปนนํ้าหนักที่ใหกับการแกปญหาของแตละวิธี นํ้าหนักเหลานี้จะถูกแสดงดวยตัวเลขที่กํากับไวกับโหนดตาง ๆ ในกระบวนการ คนหา และคาเหลานี้จะเปนตัวที่ใชในการประมาณความเปนไปไดวาเสนทางที่ผานโหนดนั้นจะมี ความเปนไปไดในการนําไปสูหนทางการแกปญหาไดมากนอยแคไหน

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

จุดประสงคที่แทจริงของฮิวริสติก ฟงกชันก็คือ การกํากับทิศทางของกระบวนการคนหา เพ่ือใหอยูในทิศทางที่ไดประโยชนสูงสุด โดยการบอกวาเราควรเลือกเดินเสนทางไหนกอน ในกรณีที่มีเสน ทางมากกวาหนึ่งเสนทางตองเลือกกระบวนการคนหาแบบฮิวริสติก โดยปกติแลวจะตองอาศัยฮิวริสติกฟงกชัน ทําใหการแกปญหาหนึ่ง ๆ จะดีหรือไม ก็ขึ้นอยูกับฮิวริสติกฟงกชันดังนั้นการคนหาแบบนี้จึงไมมีอะไรเปนหลักประกันวาจะไดสิ่งที่ไมดีออกมาดวยเหตุนี้เอง เราจึงเรียกการ คนหาแบบฮิวริสติกนี้วา Weak Methods หรือจะกลาวอีกนัยหนึ่งคือ Weak Methodsเปนกระบวนการควบคุมโดยทั่วไป (general-purpose control stategies) ซึ่งการคนหาแบบนี้ สามารถแบงไดเปน

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

การคนหาแบบปนเขา(Hill climbing)ฟงกชันฮิวริสติกสามารถนํามาชวยในกระบวนการคนหาเพ่ือใหไดคําตอบอยางรวดเร็ว

และมีประสิทธิภาพ วิธีการที่จะนําฟงกชันฮิวริสติกมาใชมีหลายวิธีดวยกันขึ้นอยูกับวาจะใชในลักษณะใด เชนเลือกสถานะที่มคีาฮิวริสติกดีขึ้น แลวเดินไปยังสถานะนั้นเลยโดยไมตองสนใจสถานะที่มีคาฮิวริสติกแยกวาสถานะปจจุบันหรือวาจะเก็บสถานะทุกตัวไวแมวาคาฮิวริสติกจะแยลงแลวพิจารณาสถานะเหลานี้ทีหลัง เปนตน ในสวนตอไปนี้จะกลาวถึงอัลกอริทึมตาง ๆ ที่นําฟงกชันฮิวริสติกมาชวยในการคนหาคําตอบ โดยเร่ิมจากอัลกอริทึมปนเขา (Hill climbing algorithm)

รูปที่ 5 แสดงลักษณะการคนหาแบบ Hill climbing

การคนหาแบบฮิลไคลบิง(Hill climbing) เปนวิธีการคนหาขอมูลที่มีลักษณะคลายกับการปนภูเขา การที่นักปนภูเขาจะเดินทางไปถึงยอดภูเขา นักปนเขาจะตองมองกอนวายอดเขาอยูที่ใด แลวนักปนเขาจะตองพยายามไปจุดนั้นใหได ลองนึกภาพของการปนภูเขาโลนที่มองเห็นแตยอด และนักปเขากําลังปนภูเขาอยูเบ้ืองลางที่มีเสนทางเต็มไปหมด เพ่ือที่จะเดินทางไปถึงยอดภูเขาโดยเร็วที่สุด นักปนเขาจะมองไปที่ยอดเขาแลวสังเกตวาทิศทางใดที่เมื่อปนแลวจะย่ิงใกลยอดเขา และหลีกเล่ียงทิศทางที่เมื่อไปแลวจะทําใหตัวเองหางจากยอดเขา นักปนเขาจะตองทําเชนนี้ไปเร่ือย ๆ จนกระทั่งถึงยอดเขา

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

ตัวอยางการใชฟงกชันฮิวริสติก โดยอัลกอริทึมปนเขาอยางงายโดยปญหาโลกของบลอก

รูปที่ 6 การคนหาแบบ Hill climbing

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

ตัวเลข 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)

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

การคนหาดีสุดกอน(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 คะแนนตามลํ าดับ ทําเชนนี้เร่ือย ๆ จนพบคําตอบหรือจนไมสามารถ สรางโหนดตอไปไดอีก

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

รูปที่ 7 ขั้นตอนของการคนหาแบบดีที่สุดกอน

รูปที่ 8 การคนหาแบบดีสุดกอน

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

อัลกอริธึม: การคนหาแบบดีที่สุดกอน1. เร่ิมดวย OPEN ที่มีเพียงโหนดเร่ิมตน2. ทําจนกวาจะพบเปาหมาย หรือวาไมมีโหนดเหลืออยูใน OPEN

� เลือกโหนดที่ดีที่สุดใน OPEN� สรางโหนดลูกใหกับโหนดที่ดีที่สุดนั้น� สําหรับโหนดลูกแตละตัวใหทําดังตอไปนี้

i) ถาโหนดนั้นยังไมเคยถูกสรางมากอนหนานั้น ใหตรวจสอบคาของมันโดยใชฮิวริสติกฟงชัน แลวเพ่ิมเขาไปใน OPEN แลวบันทึกวาเปนโหนดแม

ii) ถาโหนดนั้นถูกสรางมากอนหนานี้แลว ใหเปล่ียนโหนดแมของมัน ถาเสนทางใหมที่ไดดีกวาโหนดแมตัวเดิม ในกรณีนี้ ใหปรับเปล่ียนคาตามเสนทางที่อาจจะเกิดขึ้น

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

การคนหาแบบ Greedy (Greedy Algorithm)กรีดีอัลกอริธึม เปนการคนหาแบบดีที่สุดกอน(Best first search) ที่งายที่สุด หลักการ

ของการคนหาแบบนี้คือ การเลือกโหนดที่ดีที่สุดตลอดเวลาอัลกอริธึม กรีดี1. เลือกโหนดเร่ิมตนมาหนึ่งโหนด2. ใหโหนดที่เลือกมานี้เปนสถานะปจจุบัน3. ใหทําตามขบวนการขางลางนี้จนกวาจะไมสามารถสรางโหนดลูกไดอีก

3.1 สรางสถานะใหมที่เปนโหนดลูกที่เปนไปไดทั้งหมดจากสถานะปจจุบัน3.2 จากสถานะใหมที่สรางขึ้นมาทั้งหมด ใหเลือกสถานะ หรือ โหนดลูก ที่ดีที่สุด

ออกมาเพียงโหนดเดียว4. กลับไปที่ขึ้นตอนที่ 2

ตัวอยาง จากเร่ืองการเดินทางของเซลแมนที่จะตองเดินทางไปยังเมือง A B C D ซึ่งมีระยะทางตามตารางที่ 3 เราจะแกปญหานี้ดวยวิธีการของกรีดีบาง

รูปที่ 9 การแกปญหาการเดินทางของเซลแมนดวยกรีดีอัลกอริธึม

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

จากรูปที่ 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 ขอมูลในรูปแบบกราฟ

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

ตาราง 3 การคนหาแบบกรีดี

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

การคนหาแบบ 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' คือฟงกชันฮิวริสติกที่เราเคยใชในการคนหาอื่น ๆ กอนหนานี้เชนอัลกอริทึมปนเขา อัลกอริทึมดีสุดกอน เปนตน

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

ในที่นี้เราใสเคร่ืองหมาย ' เพ่ือแสดงวาฟงกชันนี้เปนฟงกชันประมาณของฟงกชันจริงที่ไมรู (เราทําไดแคประมาณวา h' คือตนทุนจากสถานะปจจุบันไปยังคําตอบ เราจะรูตนทุนจริงก็ตอเมื่อเราไดทําการคนหาจริงจนไปถึงคําตอบแลว) สวน g เปนฟงกชันที่คํานวณตนทุนจริงจากสถานะเร่ิมตนมายังสถานะปจจุบัน (จึงไมไดใสเคร่ืองหมาย ' ) เพราะเราสามารถหาตนทุนจริงไดเนื่องจากไดคนหาจากสถานะเร่ิมตนจนมาถึงสถานะปจจุบันแลว สวน f' ก็เปนเพียงแคฟงกชันประมาณโดยการรวมตนทุนทั้งสอง คือ h' กับ g

อัลกอริทึม A* จะทําการคนหาโดยวิธีเดียวกันกับอัลกอริทึมดีสุดกอนทุกประการ ยกเวน ฟงกชันฮิวริสติกที่ใชเปล่ียนมาเปน f' (ตางจากอัลกอริทึมดีสุดกอนที่ใช h') โดยการใช f' อัลกอริทึม A* จึงใหความสําคัญกับสถานะหนึ่ง ๆ 2 ประการ คือ (1) สถานะที่ดีตองมี h' ดีคือตนทุนเพ่ือจะนําไปสูคําตอบหลังจากนี้ตองนอย และ (2) ตนทุนที่จายไปแลวกวาจะถึงสถานะนี้ (g) ตองนอยดวย เราจึงไดวา A* จะคนหาเสนทางที่ใหตนทุนโดยรวมนอยที่สุดตามคา f' ซึ่งตางจากอัลกอริทึมดีสุดกอน ที่เนนความสําคัญของสถานะที่ตนทุนหลังจากนี้ที่จะนําไปสูคําตอบตองนอย โดยไมสนใจวาตนทุนที่จายไปแลวกวาจะนํามาถึงสถานะนี้ตองเสียไปเทาไหร

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

รูปที่ 11 แสดงการคนหาดวยอัลกอริทึม A* กันสถานะในรูปที่ 8 โดยสมมติใหตนทุนหรือระยะหางระหวางสถานะพอแมไปยังสถานะลูกเทากับ 1 หนวย เชนตน ทุนจริง (g) จาก A ไปยัง B,C หรือ D มีคาเทากับ 1 หนวยจากรูปจะเห็นไดวาในขั้นตอนที่ 4 สถานะ C จะถูกเลือกมากระจายโดยอัลกอริทึม A* เนื่องจากมีคา f' นอยสุดเทากับ 3.5 ซึ่งนอยกวา E ที่มีคาเทากับ 4 แมวาคา h' ของ E จะนอยกวาซึ่งตางจากการสรางสถานะของอัลกอริทึมดีสุดกอน

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

จัดทําโดย

นางสาวชลธิดา ประยูร

ชั้น ม.5

เลขท่ี 14