การออกแบบอัลกอริทึม
(Algorithm)
เป็นการพัฒนากระบวนการหาคำตอบให้เป็นขั้นตอนที่บุคคลหรือคอมพิวเตอร์สามารถนำไปปฏิบัติตามเพื่อแก้ปัญหาได้ อีกทั้ง เป็นการพัฒนาแนวทางแก้ปัญหาอย่างเป็นขั้นเป็นตอน เพื่อดำเนินตามทีละขั้นตอนในการแก้ไขปัญหา เช่น เมื่อเราต้องการสั่งคอมพิวเตอร์ให้ทำงานบางอย่าง เราจะต้องเขียนโปรแกรมคำสั่งเพื่อให้คอมพิวเตอร์ทำงานไปตามขั้นตอน ตามแนวทางการแก้ปัญหาเพื่อให้คอมพิวเตอร์ทำงานตอบสนองความต้องการของเรา วิธีคิดนี้ที่เรียกว่าวิธีคิดแบบอัลกอริทึม คอมพิวเตอร์จะทำงานได้ดีเพียงใดนั้น ขึ้นอยู่กับชุดคำสั่งอัลกอริทึมที่เราออกแบบให้มันทำงานนั่นเอง การออกแบบอัลกอริทึมยังเป็นประโยชน์ต่อการคำนวณ การประมวลผลข้อมูลและการวางระบบอัตโนมัติต่าง ๆ
การนำอัลกอริทึมไปใช้แก้ปัญหา ไม่จำกัดเฉพาะการเขียนโปรแกรมคอมพิวเตอร์ แต่สามารถใช้กับปัญหาอื่น ๆ ได้เช่นเดียวกัน เพื่อให้เกิดการใช้ทรัพยากรอย่างมีประโยชน์สูงสุด ซึ่งจำเป็นต้องวางแผนอย่างเป็นระบบ เป็นขั้นตอน จึงจำเป็นต้องอาศัยอัลกอริทึม ด้วย เพื่อให้ทราบถึงขั้นตอนต่าง ๆ และสามารถตัดทอนขั้นตอนที่เกินความจำเป็น อีกทั้งยังสามารถปรับปรุง และเพิ่มเติมขั้นตอนใหม่ เข้าไปได้ ช่วยลดความสับสนขณะทำงานด้วย อีกทั้ง ปัญหาบางปัญหาอาจจะมีอัลกอริทึมในการแก้ปัญหาได้หลายวิธี นอกจากการเขียนคำสั่งให้คอมพิวเตอร์ทำงานตามลำดับขั้นตอนที่เราวางไว้ ในชีวิตประจำวันมนุษย์ก็ล้วนมีแนวคิดการออกแบบขั้นตอนในการแก้ไขปัญหา ทำให้ทราบว่าจะต้องทำอะไรก่อนอะไรหลัง เช่น การแต่งตัวมาโรงเรียน การทำอาหาร การทำงานในชีวิตประจำวัน การเดินทาง เป็นต้น
คุณสมบัติของอัลกอริทึม
1. มีความถูกต้อง (correctness) ความถูกต้องเป็นคุณสมบัติข้อแรกที่สำคัญจะต้องพิจารณา ต้องได้ผลลัพธ์ที่ถูกต้อง ซึ่งถ้าผลลัพธ์ที่ได้จากอัลกอริทึมไม่ถูกต้อง จะถือว่าไม่ใช่อัลกอริทึมที่ดี
2. ใช้เวลาในการปฏิบัติงานน้อยที่สุด (efficiency) อัลกอริทึมที่ดีต้องใช้เวลาในการปฏิบัติงานน้อย มีขั้นตอนในการปฏิบัติงานที่ถูกต้อง
3. ต้องมีลำดับขั้นตอนที่ชัดเจน ในการประมวลผลชุดคำสั่งต่าง ๆ ที่ถูกกำหนดด้วยกฎเกณฑ์ในการแก้ปัญหาของ อัลกอริทึม จะต้องประมวลผลเป็นลำดับตามขั้นตอน เพราะการแก้ปัญหาด้วยคอมพิวเตอร์จะต้อง มีลำดับขั้นตอนที่แน่นอน ซึ่งแต่ละขั้นตอนของอัลกอริทึมจะต้องทำหน้าที่อย่างชัดเจนและต่อเนื่องโดยการเริ่มต้นทำงานแต่ละขั้นตอนมีการรับและส่งข้อมูลต่อเนื่องกันไปจนสิ้นสุดการทำงาน ถ้าลำดับไม่ดีอาจจะทำให้การประมวลผลผิดพลาดได้
4. ใช้เนื้อที่ในหน่วยความจำน้อยที่สุด เนื้อที่ในหน่วยความจำจะถูกใช้สำหรับเก็บค่าของตัวแปร และเก็บคำสั่งที่ใช้ในการทำงาน ดังนั้น ถ้าอัลกอริทึมยาวเกินความจำเป็น จะทำให้ใช้เนื้อที่มาก และ ถ้ามีตัวแปรมากเกินความจำเป็น ก็จะทำให้เสียเนื้อที่ในหน่วยความจำไปด้วย
5. มีความยืดหยุ่นในการใช้งาน
6. ใช้เวลาในการพัฒนาน้อยที่สุด เมื่อนำอัลกอริทึมไปแปลงเป็นโปรแกรมภาษาคอมพิวเตอร์แล้วจะต้องใช้เวลาน้อยที่สุด
7. ง่ายต่อการทำความเข้าใจ (readability) อ่านง่ายเข้าใจลำดับขั้นตอนได้ง่าย มีความชัดเจนของขั้นตอน
เครื่องมือช่วยในการเขียนอัลกอริทึม
การออกแบบอัลกอริทึม เป็นแนวทางในการเขียนโปรแกรม ช่วยให้การเขียนโปรแกรมทำได้ง่ายขึ้น ช่วยให้โปรแกรมมีข้อผิดพลาดน้อยลง นอกจากนี้ยังช่วยตรวจสอบการทำงานของโปรแกรม ทำให้ทราบขั้นตอนการทำงานของโปรแกรมได้อย่างรวดเร็ว โดยไม่ต้องดูจากโปรแกรมจริงในการเขียนอัลกอริทึม มีเครื่องมือช่วยในการเขียนที่นิยมใช้ 3 แบบ คือ
1. บรรยาย (narrative description) เป็นการอธิบายแบบใช้ภาษาที่เราสื่อสารกันทั่วไป เป็นการแสดงขั้นตอนการทำงานในลักษณะการบรรยายเป็นข้อความด้วยภาษาพูดใด ๆ เช่น ภาษาไทย ภาษาอังกฤษ ภาษาญี่ปุ่น หรือ ภาษาจีน เป็นต้น ขึ้นอยู่กับความถนัดของผู้เขียนอัลกอริทึม มักเขียนบรรยายขั้นตอนการทำงานเป็นข้อ ๆ เช่น การต้มบะหมี่กึ่งสำเร็จรูป
1. เทน้ำสะอาดใส่หม้อ และต้มน้ำจนเดือด
2. ฉีกซองและนำบะหมี่กึ่งสำเร็จรูปใส่ลงในหม้อ
3. เทเครื่องปรุงลงในหม้อ
4. ปิดฝา
5. รอประมาณ 3 นาที
6. เทใส่ชามรับประทานได้
2. ผังงาน (flowchart) เป็นการใช้รูปภาพสัญลักษณ์ แทนขั้นตอนการเขียนโปรแกรมช่วยลำดับขั้นตอนการทำงานของโปรแกรม และสามารถนำไปเขียนโปรแกรมได้อย่างถูกต้อง ทำให้ตรวจสอบ และแก้ไขโปรแกรมได้ง่าย เมื่อเกิดข้อผิดพลาดช่วยให้การดัดแปลง แก้ไข ทำได้อย่างสะดวกและรวดเร็ว ผู้อื่นสามารถศึกษาการทำงานของโปรแกรมได้อย่างง่าย และรวดเร็ว มากขึ้น
3. รหัสเทียม (pseudo code) เป็นการเขียนคำอธิบายขั้นตอนการทำงานของโปรแกรม โดยใช้ถ้อยคำผสมระหว่างภาษาอังกฤษและภาษาการเขียนโปรแกรมแบบโครงสร้าง ซึ่งจะช่วยให้ผู้เขียนโปรแกรมสามารถพัฒนาขั้นตอนต่าง ๆ ให้เป็นโปรแกรมได้ง่ายขึ้น ส่วนใหญ่มักใช้คำเฉพาะ (Reserve Word) ที่มีในภาษาการเขียนโปรแกรมและมักเขียนด้วยตัวอักษรตัวใหญ่ รหัสเทียมที่ดี จะต้องมีความชัดเจน สั้น และได้ใจความ ข้อมูลต่าง ๆ ที่ใช้จะถูกเขียนอยู่ในรูปของตัวแปร
การออกแบบอัลกอริทึม ในแนวคิดเชิงคำนวณจึงเป็นการพัฒนากระบวนการหาคำตอบให้เป็นขั้นตอนที่บุคคลหรือคอมพิวเตอร์สามารถนำไปปฏิบัติตามเพื่อแก้ปัญหาได้ อัลกอริทึมที่ดี จะต้องมีความถูกต้อง ต้องมีลำดับขั้นตอนที่ชัดเจน มีความยืดหยุ่นในการใช้งาน ใช้เวลาในการพัฒนาน้อย และง่ายต่อการทำความเข้าใจ เครื่องมือที่จะช่วยให้การเขียนอัลกอริทึมของโปรแกรมทำได้ง่ายขึ้น ช่วยให้โปรแกรมมีข้อผิดพลาดน้อยลง เช่น การเขียนบรรยาย การเขียนผังงาน หรือรหัสเทียม จะช่วยให้อัลกอริทึมมีความถูกต้องแม่นยำ และมีข้อผิดพลาดน้อยลง
แหล่งที่มา
เจ๊ะมาดีนา กรมเมือง. (2562, 12 สิงหาคม). การออกแบบและการเขียนอัลกอริทึม. สืบค้นเมื่อ 12 สิงหาคม 2562, จาก https://sites.google.com/site/computernanajang/bth-reiyn-
hnwy-kar-reiyn-ru-thi-1-kar-xxkbaeb-laea-kar-kheiyn-xal-kx-ri-thum.
รัตนา วงศ์ภูงา. (2562, 12 สิงหาคม). อัลกอริทึม. สืบค้นเมื่อ 12 สิงหาคม 2562, จาก https://sites.google.com/a/wwk.ac.th/googlesites/hnwy-thi-2/xal-kx-ri-thum.
สถาบันส่งเสริมการสอนวิทยาศาสตร์และเทคโนโลยี. (2562). เทคโนโลยี (วิทยาการคำนวณ). สำนักพิมพ์จุฬาลงกรณ์ : กรุงเทพมหานคร.
csunplugged.org. (2562, 12 สิงหาคม). กิจกรรมส่งจรวดไปดาวอังคาร. สืบค้นเมื่อ 12 สิงหาคม 2562,จาก https://csunplugged.org/en/topics/kidbots/unit-plan/sending-a-rocket-to-mars.
Tim Bell, Ian H. Witten and Mike Fellows. (2562). ซีเอส อันปลั๊กโปรแกรมเสริมสมรรถนะและขยายความสามารถของเด็กระดับประถมศึกษา. สถาบันเทคโนโลยีนานาชาติสิรินธร มหาวิทยาลัยธรรมศาสตร์ : ปทุมธานี
Warayuphat Panumphan. (2562, 12 สิงหาคม). Algorithm. สืบค้นเมื่อ 12 สิงหาคม 2562, จากhttp://jsbg.joseph.ac.th/6150/index.php?option=com_content&view=article&id=95&Itemid=95