บทที่ 2 การวิเคราะห์อัลกอริทึม


     



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






 การแบ่งแยกและเอาชนะ

             บทนี้นำเสนอกลวิธีการออกแบบอัลกอริทึมที่เรียกว่า การแบ่งแยกและเอาชนะ
            (divide and conquer) กลวิธีนี้มีใช้เพื่อจัดการกับปัญหาในหลากหลายศาสตร์ ซึ่งก็ใช้ได้ดีทีเดียวกับการออกแบบอัลกอริทึม เพื่อแก้ไขปัญหาเชิงคำนวณ แนวคิดการแก้ปัญหาแบบนี้มีหลักการว่า แทนที่เราจะไปหาคำตอบของปัญหาใหญ่ปัญหาหนึ่งทีเดียวเลย อาจไม่สะดวกนัก สู้เราแบ่งปัญหาใหญ่นั้นออกเป็นปัญหาย่อยๆ หลาย ๆ ปัญหาที่มีขนาดเล็กกว่า หาคำตอบของแต่ละปัญหาย่อย แล้วนำคำตอบย่อยๆ ที่ได้นี้มารวมกันเพื่อกลายเป็นคำตอบของปัญหาใหญ่ อาจจะซับซ้อนน้อยกว่า และใช้เวลาโดยรวมที่ดีกว่าก็ได้ อัลกอริทึมแบบแบ่งแยกและเอาชนะมักมีประสิทธิภาพที่ดีกว่าอัลกอริทึมที่ทำงานอย่างตรงไปตรงมา ค่อยเป็นค่อยไป นอกจากนี้ยังเขียนบรรยายตัวอัลกอริทึมในรูปของการทำซ้ำแบบเรียกซ้ำได้อย่างเหมาะมาก ทำให้เขียนบรรยายอัลกอริทึมได้อย่างไม่ซับซ้อน และวิเคราะห์ประสิทธิภาพการทำงานได้ง่าย









ไม่มีความคิดเห็น:

แสดงความคิดเห็น