การออกแบบและการวิเคราะห์อัลกอริทึม ง30220 การวิเคราะห์และออกแบบระบบ
จากปัญหาไปสู่โปรแกรม ต้องรู้ว่าปัญหานั้นคืออะไร แก้ได้ด้วยโปรแกรมหรือไม่ ควรกำหนดปัญหาโดยใช้รูปแบบสัญลักษณ์ที่แน่นอน สามารถนำวิธีการทางคณิตศาสตร์ หรือ วิทยาศาสตร์ มาช่วยในการหาคำตอบได้
อัลกอริทึม เป็นกระบวนการแก้ปัญหาที่อยู่ในรูปแบบของลำดับ คำสั่งที่ชัดเจน เช่น ปัญหาการหารูปแบบการให้สัญญาณไฟไม่ให้รถ ชนกัน การหาคำตอบโดยใช้ทุกวิธีการที่เป็นไปได้จะได้ คำตอบที่ดีที่สุด แต่จะเป็นวิธีที่เสียเวลามาก การหาคำตอบที่ดีในเวลาอันรวดเร็วแต่ไม่จำเป็นต้อง เป็นคำตอบที่ดีที่สุดเรียกว่า ฮิวริสติก (Heuristic)
อัลกอริทึมแบบละโมบ วิธีการแบบฮิวริสติกแบบหนึ่งเรียกว่าวิธีการแบบ ละโมบ (greedy algorithm) จะใช้หลักการเลือกคำตอบที่ดีที่สุดในขณะนั้นโดยไม่ สนผลกระทบที่ตามมา เมื่อทำจนครบอาจไม่ได้คำตอบที่ดีที่สุด
ข้อมูลนามธรรม ข้อมูลนามธรรม (Abstract Data Type : ADT) เป็นการจำลองโมเดลทางคณิตศาสตร์และมีการ รวบรวมหรือกำหนดวิธีการต่างๆไว้ในโมเดลนั้นด้วย
การเลือกอัลกอริทึม แนวคิดในการเลือกอัลกอริทึมจะมี 2 วิธีที่ขัดแย้งกัน คือ 1. ต้องการอัลกอริทึมที่เข้าใจง่าย 2. ต้องการอัลกอริทึมที่มีประสิทธิภาพสูงสุด ทั้งสองข้อจะขัดแย้งกันเอง เพราะอัลกอริทึมที่มี ประสิทธิภาพสูงจะเข้าใจยาก
การวัดความเร็วของโปรแกรม ความเร็วของโปรแกรมมักขึ้นอยู่กับปัจจัยดังต่อไปนี้ 1. input 2. ประสิทธิภาพของคำสั่ง 3. ความเร็วของคำสั่ง 4. อัลกอริทึมที่ใช้เขียนโปรแกรมนั้น
กฎในการวัดความเร็วของข้อมูล 1. ในการทำงานเกี่ยวกับกระบวนความ กำหนดค่า อ่านข้อมูล รับข้อมูล เขียนข้อมูล จะใช้เวลา O(1) 2. เวลาที่ใช้ในคำสั่งที่เรียงตามลำดับกันจะมีค่าเท่ากับ คำสั่งที่ใช้เวลามากที่สุด 3. เวลาของ loop จะมีค่าเท่ากับจำนวนความ ซับซ้อนของลูป ถ้าลูปเดียวจะมีค่าเท่ากับ O(n) สอง ลูปเป็น O(n2) เป็นต้น