SlideShare a Scribd company logo
1 of 51
 
ข้อมูล  ( DATA) ,[object Object]
1.  การเก็บข้อมูล ต้องเก็บข้อมูลเพื่อให้สามารถนำกลับมาใช้ได้ในภายหลัง 2.  การจัดข้อมูล ต้องจัดข้อมูลให้อยู่ในรูปแบบที่สามารถเรียกใช้งานได้อย่างมีประสิทธิภาพ 3.  การปรับปรุงข้อมูล ต้องปรับข้อมูลให้มีความถูกต้องสมบูรณ์อยู่เสมอ 4.  การปกป้องข้อมูล ต้องปกป้องข้อมูลจากการทำลาย ลักลอบใช้ หรือแก้ไขโดยมิชอบ รวมทั้งปกป้องข้อมูลจากอุบัติเหตุที่อาจเกิดจากวินาศภัย หรือความบกพร่องภายในระบบคอมพิวเตอร์
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ID NAME Position 001 John Engineer 002 Anna Manager เขตข้อมูล ตัวอักษร
[object Object],[object Object],แฟ้ม ตำแหน่ง ID NAME Position 001 John Engineer 002 Anna Manager … … … ระเบียนข้อมูล แฟ้ม
[object Object],ฐานข้อมูล อาจารย์ วิชา นักศึกษา
[object Object],[object Object],เขตข้อมูลคีย์
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object]
[object Object]
[object Object]
[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object]
[object Object]
[object Object]
 
[object Object],ประเภทแฟ้มโปรแกรม ส่วนขยาย Command COM Application Program EXE Batch Program BAT Dynamic Link Library DLL
[object Object],ประเภทแฟ้มข้อมูล ส่วนขยาย โปรแกรม มาตรฐาน Adobe Photoshop Drawing PSD Adobe Photoshop  Bitmap BMP  Conceptual Data Model CDM PowerDesigner DataArchitect Microsoft Word Document DOC Microsoft Word Visio Drawing VSD Visio
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object]
[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
โครงสร้างข้อมูลทาง ตรรกะ  ( LOGICAL DATA STRUCTURE)     เป็นโครงสร้างข้อมูลที่เกิดจากการจินตนาการของผู้ใช้ เพื่อใช้ในการแก้ปัญหาในโปรแกรมที่สร้างขึ้น แบ่งเป็น  2  ประเภท
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object]
การค้นหาแบบลึกก่อน (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.  ถ้ามีคำตอบจะรับประกันได้ว่าจะพบคำตอบแน่ ๆ และจะได้เส้นทางสั้นที่สุดด้วย
การค้นหาแบบปีนเขา (HILL CLIMBING) ฟังก์ชันฮิวริสติกสามารถนำมาช่วยในกระบวนการค้นหาเพื่อให้ได้คำตอบอย่างรวด เร็วและมีประสิทธิภาพ วิธีการที่จะนำฟังก์ชันฮิวริสติกมาใช้มีหลายวิธีด้วยกันขึ้นอยู่กับว่าจะใช้ ในลักษณะใด เช่นเลือกสถานะที่มีค่าฮิวริสติกดีขึ้น แล้วเดินไปยังสถานะนั้นเลยโดยไม่ต้องสนใจสถานะที่มีค่าฮิวริสติกแย่กว่า สถานะปัจจุบันหรือว่าจะเก็บสถานะทุกตัวไว้แม้ว่าค่าฮิวริสติกจะแย่ลงแล้ว พิจารณาสถานะเหล่านี้ทีหลัง เป็นต้น ในส่วนต่อไปนี้จะกล่าวถึงอัลกอริทึมต่าง ๆ ที่นำฟังก์ชันฮิวริสติกมาช่วยในการค้นหาคำตอบ โดยเริ่มจากอัลกอริทึมปีนเข้า  ( HILL CLIMBING ALGORITHM ) รูปที่  5  แสดงลักษณะการค้นหาแบบ  Hill climbing
ตัวอย่างการใช้ฟังก์ชันฮิวริสติก โดยอัลกอริทึมปีนเขาอย่างง่ายโดยปัญหาโลกของ บล๊อก รูปที่     6  การค้นหาแบบ  Hill climbing
          ตัวเลข  H(I)  ในรูปแสดงว่า สถานะที่  I   มีค่าฮิวริสติกเท่ากับ  H  จากรู้จะเห็นได้ว่า เริ่มต้นจากสถานะที่  1  ที่มีค่าฮิวริสติกเท่ากับ  -1  อัลกอริทึมปีนเขาใช้ตัวกระทำการเพื่อสร้างสถานะลูกตัวแรกของสถานะที่  1  แล้ววัดค่าฮิวริสติกได้  0  ซึ่งมีค่าดีขึ้น ถ้าสังเกตจากรูปที่  จะพบว่าสถานะที่  1  มีสถานะลูกทั้งหมด  3  ตัว แต่ในกรณีของอัลกอริทึมปีนเขานี้ เมื่อได้สถานะลูกตัวแรกซึ่งมีค่าอิวริสติกดีขึ้น อัลกอริทึมจะไม่สร้างสถานะลูกที่เหลืออีก  2  ตัว และจะไม่มีการย้อนกลับมาที่สถานะลูกทั้ง  2  นี้ แม้ว่าหลังจากนี้อัลกอริทึมจะค้นไม่พบคำตอบกล่าวคือเป็นการตัดทางเลือกทิ้ง ไปเลย ซึ่งการทำเช่นนี้แม้ว่าจะมีโอกาสไม่พบคำตอบแต่ก็มีข้อดีที่เป็นการช่วยลด เวลาและปริภูมิที่ทำการค้นหาจะลดลงอย่างมากจากนั้นอัลกอริทึมมาสถานะที่  2  แล้วเริ่มสร้างสถานะลูกได้สถานะที่  3  ที่มีค่าฮิวริสติก  -1  ซึ่งแย่ลงในกรณีที่แย่ลงเช่นนี้ อัลกอริทึมจะไม่ไปยังสถานะลูกตัวนี้และสร้างสถานะลูกตัวต่อไปโดยใช้ตัวกระทำ การที่เหลือได้สถานะที่  4  มีค่าฮิวริสติกเท่ากับ  -1  ไม่ดีขึ้นเช่นกันจึงสร้างสถานะลูกตัวถัดไป เป็นสถานะที่ 5  มีค่าฮิวริสติกเท่ากับ  1  เป็นค่าที่ดีขึ้น อัลกอริทึมจะมายังสถานะนี้และค้นพบคำตอบในที่สุด
การค้นหาดีสุดก่อน (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*  ค่าของฮิวริสติก ฟังก์ชัน จะวัดจากค่า  2  ค่าคือ ค่าที่วัดจากโหนดปัจจุบัน ไปยังโหนดราก และจากโหนดปัจจุบันไปยังโหนดเป้าหมาย ถ้าเราให้ตัวแปร  f  แทนค่า ของฮิวริสติก ฟังก์ชัน  g  เป็นฟังก์ชันที่ใช้วัดค่า  cost  จากสถานะเริ่มต้นจนถึงสถานะ ปัจจุบัน  h'  เป็นฟังก์ชันที่ใช้วัดค่า  cost  จากสถานะปัจจุบันถึงสถานะเป้าหมาย ดังนั้น   f = g + h’  
อัลกอริทึม  A*   (A* SEARCH)   เป็นการขยายอัลกอริทึมดีสุดก่อนโดยพิจารณาเพิ่มเติมถึงต้นทุนจากสถานะเริ่มต้นมายังสถานะปัจจุบันเพื่อใช้คำนวณค่าฮิวริสติกด้วย ในกรณีของอัลกอริทึม  A*  เราต้องการหาค่าต่ำสุดของฟังก์ชัน    F'  ของสถานะ  S  นิยามดังนี้                                      F'(S)=G(S)+H'(S)    โดยที่  G  คือฟังก์ชันที่คำนวณต้นทุนจากสถานะเริ่มต้นมายังสถานะปัจจุบัน  H'  คือฟังก์ชันที่ประมาณต้นทุนจากสถานะปัจจุบันไปยังคำตอบ
อัลกอริทึม  A*   จะทำการค้นหาโดยวิธีเดียวกันกับอัลกอริทึมดีสุดก่อนทุกประการ ยกเว้น ฟังก์ชันฮิวริสติกที่ใช้เปลี่ยนมาเป็น  F'  ( ต่างจากอัลกอริทึมดีสุดก่อนที่ใช้     H' )  โดยการใช้     F'   อัลกอริทึม  A*  จึงให้ความสำคัญกับสถานะหนึ่ง ๆ  2  ประการ คือ  (1)  สถานะที่ดีต้องมี     H'   ดีคือต้นทุนเพื่อจะนำไปสู่คำตอบหลังจากนี้ต้องน้อย และ  (2)  ต้นทุนที่จ่ายไปแล้วกว่าจะถึงสถานะนี้  ( G )  ต้องน้อยด้วย เราจึงได้ว่า  A*   จะค้นหาเส้นทางที่ให้ต้นทุนโดยรวมน้อยที่สุดตามค่า     F'   ซึ่งต่างจากอัลกอริทึมดีสุดก่อน ที่เน้นความสำคัญของสถานะที่ต้นทุนหลังจากนี้ที่จะนำไปสู่คำตอบต้องน้อย โดยไม่สนใจว่าต้นทุนที่จ่ายไปแล้วกว่าจะนำมาถึงสถานะนี้ต้องเสียไปเท่าไหร่ รูปที่  11  แสดงการค้นหาด้วยอัลกอริทึม  A*  กันสถานะในรูปที่  8     โดยสมมติให้ต้นทุนหรือระยะห่างระหว่างสถานะพ่อแม่ไปยังสถานะลูกเท่ากับ  1  หน่วย เช่นต้น ทุนจริง  ( g )     จาก  A  ไปยัง  B,C  หรือ  D  มีค่าเท่ากับ  1  หน่วย
 

More Related Content

What's hot

การจัดการข้อมูล
การจัดการข้อมูลการจัดการข้อมูล
การจัดการข้อมูลWanphen Wirojcharoenwong
 
Data processing
Data processingData processing
Data processingchukiat008
 
นางสาว หัทยา เชื้อสมเกียรติ ม.5
นางสาว หัทยา เชื้อสมเกียรติ ม.5นางสาว หัทยา เชื้อสมเกียรติ ม.5
นางสาว หัทยา เชื้อสมเกียรติ ม.5hattayagif
 
นางสาว อรอนงค์ สุขาวรรณ
นางสาว อรอนงค์ สุขาวรรณนางสาว อรอนงค์ สุขาวรรณ
นางสาว อรอนงค์ สุขาวรรณlovelovejung
 
บทที่ 2 การจัดการข้อมูล
บทที่ 2 การจัดการข้อมูลบทที่ 2 การจัดการข้อมูล
บทที่ 2 การจัดการข้อมูลWanphen Wirojcharoenwong
 
บทที่ 3 เทคโนโลยีสารสนเทศ
บทที่ 3 เทคโนโลยีสารสนเทศบทที่ 3 เทคโนโลยีสารสนเทศ
บทที่ 3 เทคโนโลยีสารสนเทศWanphen Wirojcharoenwong
 
การจัดเก็บข้อมูล
การจัดเก็บข้อมูลการจัดเก็บข้อมูล
การจัดเก็บข้อมูลsa
 
ลักษณะของข้อมูลที่ดีและการจัดเก็บข้อมูล
ลักษณะของข้อมูลที่ดีและการจัดเก็บข้อมูลลักษณะของข้อมูลที่ดีและการจัดเก็บข้อมูล
ลักษณะของข้อมูลที่ดีและการจัดเก็บข้อมูลปิยะดนัย วิเคียน
 
การจัดการข้อมูลด้วยระบบการจัดการฐานข้อมูล
การจัดการข้อมูลด้วยระบบการจัดการฐานข้อมูลการจัดการข้อมูลด้วยระบบการจัดการฐานข้อมูล
การจัดการข้อมูลด้วยระบบการจัดการฐานข้อมูลchanoot29
 
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูลบทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูลRungnapa Rungnapa
 
การจัดการฐานข้อมูล
การจัดการฐานข้อมูลการจัดการฐานข้อมูล
การจัดการฐานข้อมูลYongyut Nintakan
 
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูลความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูลkruthanyaporn
 

What's hot (16)

การจัดการข้อมูล
การจัดการข้อมูลการจัดการข้อมูล
การจัดการข้อมูล
 
Unit1
Unit1Unit1
Unit1
 
Data processing
Data processingData processing
Data processing
 
นางสาว หัทยา เชื้อสมเกียรติ ม.5
นางสาว หัทยา เชื้อสมเกียรติ ม.5นางสาว หัทยา เชื้อสมเกียรติ ม.5
นางสาว หัทยา เชื้อสมเกียรติ ม.5
 
นางสาว อรอนงค์ สุขาวรรณ
นางสาว อรอนงค์ สุขาวรรณนางสาว อรอนงค์ สุขาวรรณ
นางสาว อรอนงค์ สุขาวรรณ
 
บทที่ 2 การจัดการข้อมูล
บทที่ 2 การจัดการข้อมูลบทที่ 2 การจัดการข้อมูล
บทที่ 2 การจัดการข้อมูล
 
บทที่ 3 เทคโนโลยีสารสนเทศ
บทที่ 3 เทคโนโลยีสารสนเทศบทที่ 3 เทคโนโลยีสารสนเทศ
บทที่ 3 เทคโนโลยีสารสนเทศ
 
การจัดเก็บข้อมูล
การจัดเก็บข้อมูลการจัดเก็บข้อมูล
การจัดเก็บข้อมูล
 
ลักษณะของข้อมูลที่ดีและการจัดเก็บข้อมูล
ลักษณะของข้อมูลที่ดีและการจัดเก็บข้อมูลลักษณะของข้อมูลที่ดีและการจัดเก็บข้อมูล
ลักษณะของข้อมูลที่ดีและการจัดเก็บข้อมูล
 
Database Ch1
Database Ch1Database Ch1
Database Ch1
 
การจัดการข้อมูลสารสนเทศ
การจัดการข้อมูลสารสนเทศการจัดการข้อมูลสารสนเทศ
การจัดการข้อมูลสารสนเทศ
 
การจัดการข้อมูลด้วยระบบการจัดการฐานข้อมูล
การจัดการข้อมูลด้วยระบบการจัดการฐานข้อมูลการจัดการข้อมูลด้วยระบบการจัดการฐานข้อมูล
การจัดการข้อมูลด้วยระบบการจัดการฐานข้อมูล
 
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูลบทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
 
Chapter 2 : Data Management
Chapter 2 : Data ManagementChapter 2 : Data Management
Chapter 2 : Data Management
 
การจัดการฐานข้อมูล
การจัดการฐานข้อมูลการจัดการฐานข้อมูล
การจัดการฐานข้อมูล
 
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูลความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
 

Similar to งาคอม

หน่วยที่ 1
หน่วยที่ 1หน่วยที่ 1
หน่วยที่ 1palmyZommanow
 
หน่อยที่ 1
หน่อยที่ 1หน่อยที่ 1
หน่อยที่ 1palmyZommanow
 
หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา ปาโจด ม.5
หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา  ปาโจด ม.5หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา  ปาโจด ม.5
หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา ปาโจด ม.5สิรินยา ปาโจด
 
นางสาว อรอนงค์ สุขาวรรณ ม.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
 
Database basic new
Database basic newDatabase basic new
Database basic newQoo Kratai
 
Database basic new
Database basic newDatabase basic new
Database basic newQoo Kratai
 
Database basic new
Database basic newDatabase basic new
Database basic newQoo Kratai
 
Introduction to Database
Introduction to DatabaseIntroduction to Database
Introduction to DatabaseOpas Kaewtai
 
Introduction to Database
Introduction to DatabaseIntroduction to Database
Introduction to DatabaseOpas Kaewtai
 
นางสาว หัทยา เชื้อสมเกียรติ ม.5 pp
นางสาว หัทยา เชื้อสมเกียรติ ม.5 ppนางสาว หัทยา เชื้อสมเกียรติ ม.5 pp
นางสาว หัทยา เชื้อสมเกียรติ ม.5 pphattayachuesomkiet
 
นางสาว หัทยา เชื้อสมเกียรติ ม.5 pp
นางสาว หัทยา เชื้อสมเกียรติ ม.5 ppนางสาว หัทยา เชื้อสมเกียรติ ม.5 pp
นางสาว หัทยา เชื้อสมเกียรติ ม.5 pphattayachuesomkiet
 
ความรู้เบื้องต้นเกี่ยวกับฐานข้อมูล
ความรู้เบื้องต้นเกี่ยวกับฐานข้อมูลความรู้เบื้องต้นเกี่ยวกับฐานข้อมูล
ความรู้เบื้องต้นเกี่ยวกับฐานข้อมูลพัน พัน
 
ระบบสารสนเทศ
ระบบสารสนเทศระบบสารสนเทศ
ระบบสารสนเทศTheerapat Nilchot
 
ระบบสารสนเทศ
ระบบสารสนเทศระบบสารสนเทศ
ระบบสารสนเทศTheerapat Nilchot
 

Similar to งาคอม (20)

หน่วยที่ 1
หน่วยที่ 1หน่วยที่ 1
หน่วยที่ 1
 
หน่อยที่ 1
หน่อยที่ 1หน่อยที่ 1
หน่อยที่ 1
 
หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา ปาโจด ม.5
หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา  ปาโจด ม.5หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา  ปาโจด ม.5
หน่วยที่1 เรื่อง เทคโนโลยีการสื่อสาร นางสาว สิรินยา ปาโจด ม.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
 
Database basic new
Database basic newDatabase basic new
Database basic new
 
Database basic new
Database basic newDatabase basic new
Database basic new
 
Database basic new
Database basic newDatabase basic new
Database basic new
 
Introduction to Database
Introduction to DatabaseIntroduction to Database
Introduction to Database
 
Introduction to Database
Introduction to DatabaseIntroduction to Database
Introduction to Database
 
นางสาว หัทยา เชื้อสมเกียรติ ม.5 pp
นางสาว หัทยา เชื้อสมเกียรติ ม.5 ppนางสาว หัทยา เชื้อสมเกียรติ ม.5 pp
นางสาว หัทยา เชื้อสมเกียรติ ม.5 pp
 
นางสาว หัทยา เชื้อสมเกียรติ ม.5 pp
นางสาว หัทยา เชื้อสมเกียรติ ม.5 ppนางสาว หัทยา เชื้อสมเกียรติ ม.5 pp
นางสาว หัทยา เชื้อสมเกียรติ ม.5 pp
 
งานนำเสนอ..
งานนำเสนอ..งานนำเสนอ..
งานนำเสนอ..
 
Lesson 1
Lesson 1Lesson 1
Lesson 1
 
บทที่่ 1
บทที่่ 1บทที่่ 1
บทที่่ 1
 
Slide Chapter1
Slide Chapter1Slide Chapter1
Slide Chapter1
 
ความรู้เบื้องต้นเกี่ยวกับฐานข้อมูล
ความรู้เบื้องต้นเกี่ยวกับฐานข้อมูลความรู้เบื้องต้นเกี่ยวกับฐานข้อมูล
ความรู้เบื้องต้นเกี่ยวกับฐานข้อมูล
 
ระบบสารสนเทศ
ระบบสารสนเทศระบบสารสนเทศ
ระบบสารสนเทศ
 
ระบบสารสนเทศ
ระบบสารสนเทศระบบสารสนเทศ
ระบบสารสนเทศ
 
Unit3
Unit3Unit3
Unit3
 

งาคอม

  • 1.  
  • 2.
  • 3. 1. การเก็บข้อมูล ต้องเก็บข้อมูลเพื่อให้สามารถนำกลับมาใช้ได้ในภายหลัง 2. การจัดข้อมูล ต้องจัดข้อมูลให้อยู่ในรูปแบบที่สามารถเรียกใช้งานได้อย่างมีประสิทธิภาพ 3. การปรับปรุงข้อมูล ต้องปรับข้อมูลให้มีความถูกต้องสมบูรณ์อยู่เสมอ 4. การปกป้องข้อมูล ต้องปกป้องข้อมูลจากการทำลาย ลักลอบใช้ หรือแก้ไขโดยมิชอบ รวมทั้งปกป้องข้อมูลจากอุบัติเหตุที่อาจเกิดจากวินาศภัย หรือความบกพร่องภายในระบบคอมพิวเตอร์
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.  
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25. โครงสร้างข้อมูลทาง ตรรกะ ( LOGICAL DATA STRUCTURE)     เป็นโครงสร้างข้อมูลที่เกิดจากการจินตนาการของผู้ใช้ เพื่อใช้ในการแก้ปัญหาในโปรแกรมที่สร้างขึ้น แบ่งเป็น 2 ประเภท
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32. การค้นหาแบบลึกก่อน (DEPTH FIRST SEARCH) การค้นหาแบบลึกก่อนเป็นการค้นหาที่กําหนดทิศทางจากรูปของโครงสร้างต้นไม้ ที่เริ่มต้นจากโหนดราก (ROOT NODE) ที่อยู่บนสุด แล้วเดินลงมาให้ลึกที่สุด เมื่อถึงโหนดล่างสุด (TERMINAL NODE) ให้ย้อนขึ้นมาที่จุดสูงสุดของกิ่งเดี่ยวกันที่มีกิ่งแยกและยังไม่ได้เดินผ่าน แล้วเริ่มเดินลงจนถึงโหนดลึกสุดอีก ทําเช่นนี้สลับไปเรื่อยจนพบโหนดที่ต้องการหาหรือสํารวจครบทุกโหนดแล้วตามรูปที่ 1 การค้นหาแบบลึกก่อนจะมีลําดับการเดินตามโหนดดังตัวเลขที่กํากับไว้ในแต่ละโหนด รูปที่ 1 ลําดับการเดินทางบนโหนดของการค้นหาแบบลึกก่อนบนโครงสร้างต้นไม้
  • 33. โหนดเริ่มต้น จากนั้นให้นําโหนดที่อยู่ติดกับโหนดที่กําลังสํารวจอยู่ ( ที่ยังไม่ได้ทําการสํารวจและยังไม่ได้อยู่ในแสต็กมาใส่แสต็ก ) มาเก็บไว้ในสแต็กเมื่อสํารวจโหนดนั้นเสร็จ ให้พอพ (POP) ตัวบนสุดของโหนดออกมาทําการสํารวจ แล้วนําโหนดข้างเคียงทั้งหมดที่ยังไม่ได้สํารวจมาต่อท้ายแสต็ก แล้วพอพตัวบนสุดออกมาสํารวจ ทําเช่นนี้เรื่อย ๆ จนกระทั้งพบโหนดที่ต้องการ หรือสํารวจครบทุดโหนด   รูปที่ 2 โครงสร้างข้อมูลแบบกราฟ
  • 34. การสํารวจจะเริ่มต้นที่ 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 ลําดับการค้นหาแบบลึกก่อน
  • 35. การค้นหาแบบกว้างก่อน (BREADTH FIRST SEARCH) การค้นหาแบบกว้างก่อนเป็นการกําหนดทิศทางการค้นหาแบบที่ละระดับของโครงสร้างต้นไม้โดยเริ่มจากโหนดราก ( ระดับที่ 0) แล้วลงมาระดับที่ 1 จากซ้ายไปขวา เมื่อเสร็จระดับที่ 1 ไประดับที่ 2 จากซ้ายไปขวาเช่นกัน ทําเช่นนี้เรื่อย ๆ จนพบโหนดที่ต้องการตามรูปที่ 3 ลําดับการเดินทางของโหนดเป็นไปตามหมายเลขที่กํากับไว้บนโหนด รูปที่ 3 ลําดับการค้นหาแบบกว้างก่อนบนโครงสร้างต้นไม้
  • 36. สําหรับการค้นหาแบบกว้างก่อนบนโครงสร้างต้นไม้ จะอาศัยโครงสร้างข้อมูลแบบคิว (Queue) มาช่วย และด้วยวิธีการเช่นเดียวกับการค้นหาแบบลึกก่อนคือ ให้เริ่มต้นสํารวจที่โหนดเริ่มต้น แล้วนําโหนดข้างเคียงเก็บไว้ในคิว เมื่อสํารวจโหนดเริ่มต้นเสร็จ ให้นําข้อมูลในคิวออกมาสํารวจ แล้วนําโหนดข้างเคียงที่ยังไม่ได้สํารวจและไม่ได้อยู่ในคิวใส่คิวไว้ ทําเช่นนี้ไปเรื่อย ๆ จนพบโหนดที่ต้องการ หรือเมื่อสํารวจครบทุกโหนด รูปที่ 4 โครงสร้างข้อมูลแบบกราฟ  
  • 37.        การสํารวจเริ่มต้นที่ A นําโหนดข้างเคียง B C ไว้ในคิว เมื่อสํารวจ A เสร็จ นําข้อมูลในคิว คือ B ออกมาสํารวจ แล้วนําข้อมูลข้างเคียงคือ D E ใส่คิว ตอนนี้คิวจะมี B D E อยู่ แล้วนํา B ออกมาสํารวจทําเช่นนี้เรื่อย ๆ จะได้ลําดับการสํารวจข้อมูลคือ (A B C D E F G H) ตามตารางที่ 2 ตาราง 2 ลําดับการค้นหาแบบกว้างก่อน      เช่นเดียวกับการค้นหาแบบลึกก่อน การค้นหาแบบกว้างก่อนโดยใช้โครงสร้างข้อมูลคิวมาช่วยต้องมีการกําหนดโหนดเริ่มต้น และวิธีการนี้สามารถใช้ได้กับข้อมูลบนโครงสร้างแบบต้นไม้ด้วย  
  • 38. ตารางเปรียบเทียบ การค้นหาแนวลึกก่อนและแนวกว้างก่อน การค้นหาแนวลึกก่อน การค้นหาแนวกว้างก่อน 1. ใช้หน่วยความจำน้อยกว่า เพราะว่าสถานะในเส้นทางค้นหาปัจจุบันเท่านั้นที่ถูกเก็บ ( ในขณะใดๆ จะเก็บเส้นทางเดียว พอจะไปเส้นทางอื่นเส้นทางที่ผ่านมาก็ไม่จำเป็นต้องเก็บ ) 1. ใช้หน่วยความจำมาก เพราะต้องเก็บสถานะไว้ทุกตัวเพื่อหาเส้นทางจากสถานะเริ่มต้นไปหาคำตอบ 2. อาจจะติดเส้นทางที่ลึกมากโดยไม่พบคำตอบ เช่นในกรณีที่เส้นทางนั้นไม่มีคำตอบและเป็นเส้นทางที่ยาวไม่สิ้นสุด จะทำไม่สามารถไปเส้นทางอื่นได้ 2. จำไม่ติดเส้นทางที่ลึกมาก ๆ โดยไม่พบคำตอบ 3. ถ้าคำตอบอยู่ในระดับ n+1 สถานะอื่นทุกตัวที่ระดับ 1 ถึงระดับ n ไม่จำเป็นต้องถูกกระจายจนหมด 3. ถ้าคำตอบอยู่ในระดับ n+1 สถานะทุกตัวที่ระดับ 1 ถึงระดับ n จะต้องถูกกระจายจนหมด ทำให้มีสถานะที่ไม่จำเป็นในเส้นทางที่จะไปสู่คำตอบถูกกระจายออกด้วย 4. เมื่อพบคำตอบไม่สามารถรับประกันได้ว่าเส้นที่ได้เป็นเส้นทางที่สั้นที่สุดหรือไม่ 4. ถ้ามีคำตอบจะรับประกันได้ว่าจะพบคำตอบแน่ ๆ และจะได้เส้นทางสั้นที่สุดด้วย
  • 39. การค้นหาแบบปีนเขา (HILL CLIMBING) ฟังก์ชันฮิวริสติกสามารถนำมาช่วยในกระบวนการค้นหาเพื่อให้ได้คำตอบอย่างรวด เร็วและมีประสิทธิภาพ วิธีการที่จะนำฟังก์ชันฮิวริสติกมาใช้มีหลายวิธีด้วยกันขึ้นอยู่กับว่าจะใช้ ในลักษณะใด เช่นเลือกสถานะที่มีค่าฮิวริสติกดีขึ้น แล้วเดินไปยังสถานะนั้นเลยโดยไม่ต้องสนใจสถานะที่มีค่าฮิวริสติกแย่กว่า สถานะปัจจุบันหรือว่าจะเก็บสถานะทุกตัวไว้แม้ว่าค่าฮิวริสติกจะแย่ลงแล้ว พิจารณาสถานะเหล่านี้ทีหลัง เป็นต้น ในส่วนต่อไปนี้จะกล่าวถึงอัลกอริทึมต่าง ๆ ที่นำฟังก์ชันฮิวริสติกมาช่วยในการค้นหาคำตอบ โดยเริ่มจากอัลกอริทึมปีนเข้า ( HILL CLIMBING ALGORITHM ) รูปที่ 5 แสดงลักษณะการค้นหาแบบ Hill climbing
  • 41.         ตัวเลข H(I) ในรูปแสดงว่า สถานะที่ I มีค่าฮิวริสติกเท่ากับ H จากรู้จะเห็นได้ว่า เริ่มต้นจากสถานะที่ 1 ที่มีค่าฮิวริสติกเท่ากับ -1 อัลกอริทึมปีนเขาใช้ตัวกระทำการเพื่อสร้างสถานะลูกตัวแรกของสถานะที่ 1 แล้ววัดค่าฮิวริสติกได้ 0 ซึ่งมีค่าดีขึ้น ถ้าสังเกตจากรูปที่  จะพบว่าสถานะที่ 1 มีสถานะลูกทั้งหมด 3 ตัว แต่ในกรณีของอัลกอริทึมปีนเขานี้ เมื่อได้สถานะลูกตัวแรกซึ่งมีค่าอิวริสติกดีขึ้น อัลกอริทึมจะไม่สร้างสถานะลูกที่เหลืออีก 2 ตัว และจะไม่มีการย้อนกลับมาที่สถานะลูกทั้ง 2 นี้ แม้ว่าหลังจากนี้อัลกอริทึมจะค้นไม่พบคำตอบกล่าวคือเป็นการตัดทางเลือกทิ้ง ไปเลย ซึ่งการทำเช่นนี้แม้ว่าจะมีโอกาสไม่พบคำตอบแต่ก็มีข้อดีที่เป็นการช่วยลด เวลาและปริภูมิที่ทำการค้นหาจะลดลงอย่างมากจากนั้นอัลกอริทึมมาสถานะที่ 2 แล้วเริ่มสร้างสถานะลูกได้สถานะที่ 3 ที่มีค่าฮิวริสติก -1 ซึ่งแย่ลงในกรณีที่แย่ลงเช่นนี้ อัลกอริทึมจะไม่ไปยังสถานะลูกตัวนี้และสร้างสถานะลูกตัวต่อไปโดยใช้ตัวกระทำ การที่เหลือได้สถานะที่ 4 มีค่าฮิวริสติกเท่ากับ -1 ไม่ดีขึ้นเช่นกันจึงสร้างสถานะลูกตัวถัดไป เป็นสถานะที่ 5 มีค่าฮิวริสติกเท่ากับ 1 เป็นค่าที่ดีขึ้น อัลกอริทึมจะมายังสถานะนี้และค้นพบคำตอบในที่สุด
  • 42. การค้นหาดีสุดก่อน (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 คะแนนตามลําดับ ทําเช่นนี้เรื่อย ๆ จนพบคําตอบหรือจนไม่สามารถ สร้างโหนดต่อไปได้อีก
  • 43. รูปที่ 7 ขั้นตอนของการค้นหาแบบดีที่สุดก่อน รูปที่ 8   การค้นหาแบบดีสุดก่อน
  • 44. อัลกอริธึม : การค้นหาแบบดีที่สุดก่อน 1. เริ่มด้วย OPEN ที่มีเพียงโหนดเริ่มต้น 2. ทําจนกว่าจะพบเป้าหมาย หรือว่าไม่มีโหนดเหลืออยู่ใน OPEN - เลือกโหนดที่ดีที่สุดใน OPEN - สร้างโหนดลูกให้กับโหนดที่ดีที่สุดนั้น - สําหรับโหนดลูกแต่ละตัวให้ทําดังต่อไปนี้       i) ถ้าโหนดนั้นยังไม่เคยถูกสร้างมาก่อนหน้านั้น ให้ตรวจสอบค่าของมันโดย ใช้ฮิวริสติกฟังชันแล้วเพิ่มเข้าไปใน OPEN แล้วบันทึกว่าเป็นโหนดแม่       ii) ถ้าโหนดนั้นถูกสร้างมาก่อนหน้านี้แล้ว ให้เปลี่ยนโหนดแม่ของมันถ้าเส้น ท างใหม่ที่ได้ดีกว่าโหนดแม่ตัวเดิม ในกรณีนี้ ให้ปรับเปลี่ยนค่าตามเส้นทางที่อาจจะเกิดขึ้น
  • 45. การค้นหาแบบ Greedy (Greedy Algorithm)     กรีดีอัลกอริธึม เป็นการค้นหาแบบดีที่สุดก่อน (Best first search) ที่ง่ายที่สุด หลักการของการค้นหาแบบนี้คือ การเลือกโหนดที่ดีที่สุดตลอดเวลาอัลกอริธึม กรีดี 1. เลือกโหนดเริ่มต้นมาหนึ่งโหนด 2. ให้โหนดที่เลือกมานี้เป็นสถานะปัจจุบัน 3. ให้ทําตามขบวนการข้างล่างนี้จนกว่าจะไม่สามารถสร้างโหนดลูกได้อีก       3.1 สร้างสถานะใหม่ที่เป็นโหนดลูกที่เป็นไปได้ทั้งหมดจากสถานะปัจจุบัน       3.2 จากสถานะใหม่ที่สร้างขึ้นมาทั้งหมด ให้เลือกสถานะ หรือ โหนดลูก ที่ดีที่สุดออกมาเพียงโหนดเดียว 4. กลับไปที่ขึ้นตอนที่ 2 ตัวอย่าง จากเรื่องการเดินทางของเซลแมนที่จะต้องเดินทางไปยังเมือง A B C D ซึ่งมีระยะทางตามตารางที่ 3 เราจะแก้ปัญหานี้ด้วยวิธีการของกรีดีบ้าง
  • 46. รูปที่ 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
  • 47. รูปที่ 10     ข้อมูลในรูปแบบกราฟ ตาราง 3 การค้นหาแบบกรีดี
  • 48.        การค้นหาแบบ A* เป็นอีกแบบของการค้นหาแบบดีที่สุดก่อน วิธีการเลือกโหนดที่ จะใช้ในการดําเนินการต่อจะพิจารณาจากโหนดที่ดีที่สุด แต่ในกรณีของ A* นี้ จะมีลักษณะพิเศษกว่าคือ ในส่วนของฮิวริสติกฟังก์ชัน ในกรณีของการค้นหาแบบดี ที่สุดก่อนนั้น ค่าที่ได้จากฮิวริสติก ฟังก์ชัน จะเป็นค่าที่วัดจาก โหนดปัจจุบัน แต่ใน กรณีของ A* ค่าของฮิวริสติก ฟังก์ชัน จะวัดจากค่า 2 ค่าคือ ค่าที่วัดจากโหนดปัจจุบัน ไปยังโหนดราก และจากโหนดปัจจุบันไปยังโหนดเป้าหมาย ถ้าเราให้ตัวแปร f แทนค่า ของฮิวริสติก ฟังก์ชัน g เป็นฟังก์ชันที่ใช้วัดค่า cost จากสถานะเริ่มต้นจนถึงสถานะ ปัจจุบัน h' เป็นฟังก์ชันที่ใช้วัดค่า cost จากสถานะปัจจุบันถึงสถานะเป้าหมาย ดังนั้น   f = g + h’  
  • 49. อัลกอริทึม A* (A* SEARCH)  เป็นการขยายอัลกอริทึมดีสุดก่อนโดยพิจารณาเพิ่มเติมถึงต้นทุนจากสถานะเริ่มต้นมายังสถานะปัจจุบันเพื่อใช้คำนวณค่าฮิวริสติกด้วย ในกรณีของอัลกอริทึม A* เราต้องการหาค่าต่ำสุดของฟังก์ชัน   F' ของสถานะ S นิยามดังนี้                                    F'(S)=G(S)+H'(S) โดยที่ G คือฟังก์ชันที่คำนวณต้นทุนจากสถานะเริ่มต้นมายังสถานะปัจจุบัน H' คือฟังก์ชันที่ประมาณต้นทุนจากสถานะปัจจุบันไปยังคำตอบ
  • 50. อัลกอริทึม A* จะทำการค้นหาโดยวิธีเดียวกันกับอัลกอริทึมดีสุดก่อนทุกประการ ยกเว้น ฟังก์ชันฮิวริสติกที่ใช้เปลี่ยนมาเป็น F' ( ต่างจากอัลกอริทึมดีสุดก่อนที่ใช้   H' ) โดยการใช้   F' อัลกอริทึม A* จึงให้ความสำคัญกับสถานะหนึ่ง ๆ 2 ประการ คือ (1) สถานะที่ดีต้องมี   H' ดีคือต้นทุนเพื่อจะนำไปสู่คำตอบหลังจากนี้ต้องน้อย และ (2) ต้นทุนที่จ่ายไปแล้วกว่าจะถึงสถานะนี้ ( G ) ต้องน้อยด้วย เราจึงได้ว่า A* จะค้นหาเส้นทางที่ให้ต้นทุนโดยรวมน้อยที่สุดตามค่า   F' ซึ่งต่างจากอัลกอริทึมดีสุดก่อน ที่เน้นความสำคัญของสถานะที่ต้นทุนหลังจากนี้ที่จะนำไปสู่คำตอบต้องน้อย โดยไม่สนใจว่าต้นทุนที่จ่ายไปแล้วกว่าจะนำมาถึงสถานะนี้ต้องเสียไปเท่าไหร่ รูปที่ 11 แสดงการค้นหาด้วยอัลกอริทึม A* กันสถานะในรูปที่ 8   โดยสมมติให้ต้นทุนหรือระยะห่างระหว่างสถานะพ่อแม่ไปยังสถานะลูกเท่ากับ 1 หน่วย เช่นต้น ทุนจริง ( g )   จาก A ไปยัง B,C หรือ D มีค่าเท่ากับ 1 หน่วย
  • 51.