Search Strategies (in Thai)

  • Uploaded by: somchais
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Search Strategies (in Thai) as PDF for free.

More details

  • Words: 428
  • Pages: 10
การค้นหา

สมชาย แสงอำนาจเดช

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

ภาพที่ 1 ข้อมูลจากจุดเริ่มต้นเมือง S ไปสู่เมืองเป้าหมาย G เขียนในรูปกราฟ

แต่ละจุดเมืองเรียกว่า โนด (node หรือ vertices) และเส้น ที่ต่อระหว่างเมืองว่า ลิงค์ (links หรือ arcs) ที่แต่ละโนดจะมีคำ อธิบายกำกับ เรียกว่าเลเบล (labels หรือ descriptors) และใน การค้น (state space search) จะใช้คำอธิบายหรือเลเบลนี้ใน ระหว่างกระบวนการแก้ปัญหา

การใช้คอมพิวเตอร์ในการแก้ปัญหาจะต้องใช้การเขียนสิ่งทด แทน (representation) ของกราฟเพื่อให้คอมพิวเตอร์เข้าใจ วิธี การทำโดยเปลี่ยนเป็นรูปตาราง (matrix method) ซึ่งจะเป็นการ เตรียมโครงสร้างของข้อมูล (data structure) ให้กับคอมพิวเตอร์ โดยค่าในตารางที่ Mij คือค่าระยะห่างระหว่างโนด i และโนด j ข้อมูลที่อยู่ในรูปตารางนี้ยังสามารถเพิ่มข้อมูลทั้งในแถวและ ในคอลัมน์ได้ด้วย อัลกอริธึมในการค้นจะเปลี่ยนชนิดของการค้นเป็นแบบแผน ภูมิ ต้นไม้ (tree search) โดยเริ่มพิจารณาว่าแต่ละจุดว่าสามารถ ไปที่จุดไหนต่อได้บ้าง ดังภาพที่ 2 และ 3

ภาพที่ 2 การสร้างแผนภูมิต้นไม้การค้น (search tree) จากจุดเริ่มต้น S สามารถไปยังจุด A, B, และ E

ภาพที่ 3 จากแต่ละจุดคือ A, B, และ E จะขยายต่อไปยังจุดต่างๆในระดับ ที่สอง

โนดเริ่มต้นจะเรียกว่าเป็นโนดพ่อแม่ (parent node) และเรียก โนดที่แตกออกมาว่าเป็นโนดลูก (child node) ถ้าโนดพ่อแม่มี โนดลูกเท่ากับ b เรียกว่ามีแฟคเตอร์การแตกกิ่งเท่ากับ b (branching factor = b) ถ้าทุกเส้นทางสมบูรณ์ที่ระดับเดียวกัน (ระดับ d) จะมีเส้นทางทั้งหมดเท่ากับ bd

ในแต่ละเส้นทางขยายต่อไปจนถึงจุดหมาย G จึงจะหยุด เส้นทางที่ยังไม่ถึงจะขยายต่อไป การสร้างแผนภูมิต้นไม้การค้นหา (search tree) จากกราฟ โดยเทคนิคข้างต้น เรียกว่า การค้นหาไปในแนวกว้างก่อน (breadth-first search) คือโนดจะถูกขยายต่อๆไปตามลำดับที่โนด ถูกสร้างขึ้น คือโนด A จะขยายไปโนด B, C, D แล้วจึงย้อนกลับ ไปโนด B จากนั้นจากโนด B ไป A, C, E นั่นคือการค้นไปแนว กว้างก่อน ข้อด้อยของวิธีดังกล่าวคือ แต่ละเส้นทาง (route) การค้น ยังคงค้างไม่สิ้นสุด ทำให้เส้นทาง (route) ต่างๆจำนวนมาก จะต้องถูกเก็บในหน่วยความจำไว้ก่อนเพื่อรอการขยายต่อไป อีกเทคนิคของการค้นคือการค้นลงลึกก่อน (depth-first search) วิธีนี้จะขยายต่อๆไปจากโนดที่สร้างใหม่ล่าสุดจนถึง จุดหมาย วิธีนี้มีข้อดีคือไม่สนใจจำนวนโนดที่ขยายลงไปพบและ ระยะทางที่ลงไปจนเสร็จสิ้น นอกจากนี้ยังใช้หน่วยความจำใน การเก็บเส้นทางต่างๆน้อยลง การค้นทั้งแบบแนวลึกก่อน (depth-first search) หรือแนว กว้างก่อน (breadth-first search) เป็นเทคนิคการค้นแบบบอด (blind search technique) คือการค้นประเมินทุกเส้นทางอย่าง เป็นระบบ ในกระบวนการคิดของมนุษย์ถ้าให้ค้นหาเส้นทางก็จะมีการ ประเมินและเลือกว่าจะเลือกไปเส้นทางไหนต่อไป โดยพิจารณา ว่าเส้นทางไหนจะนำไปใกล้เป้าหมายมากกว่า และจะไม่เลือกไป เส้นทางที่ทำให้เดินย้อนกลับหรือไกลจากเป้าหมายไปอีก

วิธีค้นอีกเทคนิคหนึ่งคือ การค้นแบบฮูริสติก (heuristic search methods) วิธีนี้จะใช้ข้อมูลจำเพาะต่อโดเมน (domainspecific information) มาใช้แก้ปัญหา แม้ว่าวิธีฮูริสติกอาจจะ ไม่ช่วยแก้ปัญหาเสมอไปแต่จะช่วยให้อัลกอริธึมที่ใช้แก้ปัญหาได้ เร็วยื่งขึ้นกว่าการค้นบอด (blind search) วิธีฮูลิสติกนี้มีวัตถุประสงค์หลักคือการลดขนาดสิ่งที่จะค้นหา (search space) โดยไปลดการเลือกไปในเส้นทางที่ไม่น่าจะใช่ หรือไม่น่าจะเกี่ยวข้อง ในตัวอย่างการใช้ฮูริสติกในการหาเส้นทางที่สั้นที่สุดนี้ คือการเลือกเส้นทางที่ทำให้การค้นหาใกล้เป้าหมาย โดยอาจมีการให้ข้อมูลเพิ่มเติม เป็นข้อมูลระยะทางโดย ประมาณจากโนดหนึ่งๆไปยังโนดเป้าหมาย (โดยจะเป็นค่าโดย ประมาณที่ไม่จำเป็นต้องเป็นค่าที่ถูกต้องแน่นอน) ต่อไปนี้เป็น ตัวอย่างของวิธีฮูริสติก 1. การปีนขึ้นเขาแบบง่าย (Simple hill-climbing) เป็น อัลกอริธึมการค้นชนิดที่ให้ข้อมูลแบบฮูริสติก (heuristicallyinformed search algorithm) วิธีการนี้จะไม่สำรวจเส้นทางใด ถ้าเส้นทางนั้นไม่ทำให้กาารค้นเข้าใกล้เมืองเป้าหมายมากขึ้น 2. วิธีปีนเขาที่ขึ้นสูงชัน (steepest-ascent hill-climbing) จัดเป็น hill climbing แบบหนึ่ง เป็นวิธีที่จะเลือกสิ่งที่ดีที่สุดใน ระดับขั้นนั้นๆก่อนที่ไปสู่ขั้นต่อไปและจะตัดสินใจจากโนดลูก (child nodes) ทั้งหมดที่สร้างออกมาแล้ว เมื่อเส้นทางขยายไป จนพบจุดหมายแล้วก็เก็บค่าต่ำสุดไว้ แล้วก็ไปค้นในส่วนที่ยังไม่ ได้สำรวจแล้วหาดูว่ามีเส้นทางอื่นใดที่สั้นกว่าค่าที่ได้ก่อนนั้นหรือ ไม่ 3. การค้นแบบลำแสง (beam search) เมื่อพิจารณาวิธีการ ค้นแนวลึกก่อน หรือแนวกว้างก่อนจะเห็นว่าจะขยายเส้นทาง ไปทีละโนด วิธีที่เสริมขึ้นมานี้คือค้นแบบลำแสงนี้จะค้นไปทีละ สองโนดหรือมากกว่าสองโนดพร้อมๆกัน ถ้าความกว้างของ ลำแสง (beam width) เท่ากับสอง การค้นจะขยายทีละสองโนด ในแต่ละระดับ

กลวิธีการค้นแบบที่เหมาะสม (optimal search strategies) เป็นวิธีที่จะใช้ค่าใช้จ่ายหรือระยะจริงของแต่ละเส้นทางที่ได้ จนถึงปัจจุบันเป็นแนวทางที่จะเลือกเส้นทางที่จะขยายต่อไปในแต่ ละระดับ (จะเห็นว่าวิธีแบบนี้คล้ายกับวิธีคิดของมนุุษย์) 1. วิธีแตกและต่อกิ่งก้าน (branch-and-bound) ในวิธีนี้ จากโนดจะขยายต่อไปเหมือนกับการแตกกิ่งก้าน (branching) แล้วกระโดดไปเส้นทางที่มีระยะทางรวมจริง (actual cost) น้อย ที่สุดเหมือนกับการไปต่อกิ่ง (binding) วิธีนี้ยังเรียกอีกอย่างว่า การค้นหาสิ่งที่ดีที่สุดเป็นอันดับแรก (best-first search) 2. อัลกอริธึม A* จัดเป็นการค้นแบบวิธีแตกและต่อกิ่งก้าน ที่มีข้อเสริมขึ้นมา คือจะมีการลบเส้นทางที่ซ้ำซ้อน และมีการใช้ ค่าประมาณระยะทางที่ยังเหลืออยู่ วิธีการ วิธีการค้นแบบนี้ทำโดยแต่ละโนดจะมีค่า x/y กำกับ x คือ ค่าประมาณระยะทางที่เหลืออยู่บวกกับค่าระยะทาง รวมจริงในเส้นทางที่มาจนถึงโนดนั้น y คือ ค่าระยะทางรวมจริงในเส้นทางที่มาจนถึงโนดนั้น 1. จะขยายเส้นทางจาก โนดที่มีค่า x น้อยที่สุดไปก่อน (ที่โนด E ในภาพที่ 4) 2. เมื่อขยายไปแล้ว ถ้า node ที่มาถึงมีค่า x มากกว่า (หรือ เท่ากับ) การไปที่โนดนั้นโดยเส้นทางอื่นในระดับก่อนหน้านี้ เช่น ในตัวอย่างข้างต้น ที่ได้ดังภาพที่ 4 นี้จะเห็นว่าเมื่อขยายไปใน ระดับที่สองจะพบโนด B อีกครั้ง

ซึ่งโนดนี้สามารถไปถึงได้ ตั้งแต่ในระดับที่หนึ่งคือ จาก S ไป B โดยตรง และที่ระดับนั้นมีค่า x น้อยกว่า (หรือเท่ากัน) ดังนั้น เส้นทางที่ มาถึงโนดเหล่านี้จึงเป็นเส้นทางที่ยาวกว่า ดังนั้นจะไม่ ขยายต่อไป จากเส้นทางนี้และจะถูกตัดออกจากแผนภูมิต้นไม้ สำหรับค้น (search tree)

ภาพที่ 4 การค้นตามวิธีของ อัลกอริธึม A

3. จากนั้นก็พิจารณาเส้นทางที่เหลือที่มีโนดที่มีค่า x น้อย สุดแล้วทำซ้ำข้อ 1 และ 2 ข้างต้นไปเรื่อยๆจนในที่สุดมาถึงโนด จุดเป้าหมายก็หยุดแล้วเก็บค่าระยะทางทั้งหมดที่ได้จากเริ่มต้นจน ถึงจุดหมายตามเส้นทางนี้ ภาพที่ 5 แตกแขนงกิ่งต่อจากภาพที่ 4 ในเส้นทาง SEFG พบจุดหมายด้วย ระยะทางเท่ากับ 16 เก็บค่านี้ไว้ก่อน ค้นในเส้นทางอื่นที่เหลืออยู่

4. ไปสำรวจเส้นทางจากโนดที่เหลืออยู่และทำตามข้อ 1 -3 ถ้าพบว่าเส้นทางใหม่มีระยะสั้นกว่าที่บันทึกเก็บค่าไว้จะลบเส้นทา งที่เก็บไว้ 5. เส้นทางใดที่โนดเป้าหมายมีค่า x/y น้อยที่สุดเป็นเส้น ทางของคำตอบของการค้นหานี้

สรุปการค้น 1. กราฟประกอบด้วยโนดที่เชื่อมต่อกันด้วยลิงค์(หรืออาร์ค) ปัญหาทางชีวสารสนเทศศาสตร์ที่จะแก้ไขด้วยคอมพิวเตอร์สามารถ เปลี่ยนให้อยู่ในรูปของกราฟเพื่อวัตถุประสงค์ของการค้นหา 2. การค้นหาจากกราฟอาจใช้วิธีค้นหาอย่างละเอียด (exhaustive method) หรือวิธีฮูริสติก (heuristic method) โดย วิธีการค้นหาอย่างละเอียดปกติจะค้นไปตามแผนภูมิต้นไม้อย่าง เป็นระบบโดยจะใช้การค้นลงลึกเป็นอันดับแรกหรือค้นแนวกว้าง เป็นอันดับแรกก็ได้ ส่วนวิธีฮิวลิสติกต้องอาศัยข้อมูลที่จำเพาะต่อ โดเมน (domain-specific) มาเป็นแนวทางในการค้นตัวอย่างเช่น ใช้ค่าประมาณระยะทางที่เหลือจากจุดโนดนั้นๆ ไปยังจุดเป้าหมาย 3. วิธีฮิลล์ไคลมมิงเป็นวิธีค้นแบบฮูริสติกที่นิยม ซึ่งมีสอง แบบคือ แบบง่าย (simple) และแบบชันขึ้นสูงสุด (steepestascent) การใช้วิธีฮิลล์ไคลมมิงอาจไม่ได้เส้นทางที่เหมาะสมแต่วิธี แตกและต่อกิ่งที่มีวิธีการตัดโนดที่ซ้ำซ้อนออกไปและใช้ระยะที่ เหลืออยู่เป็นข้อมูลช่วยทำให้ได้เส้นทางที่เหมาะสม

Related Documents


More Documents from ""