มารู้จักกับอัลกอริทึม พื้นฐานของการเขียนโปรแกรม
อัลกอริทึมคืออะไร
หากจะพูดถึงการเขียนโปรแกรม หรือในภาษาอังกฤษที่เรียกว่า Coding ซึ่งถือเป็นหนึ่งศาสตร์สำคัญในด้านของวิทยาศาสตร์ ที่ถูกจำกัดความไว้ในหลักการของ STEM ต้องกล่าวว่ามีอีกหนึ่งปัจจัยที่ทำให้ การเขียนโปรแกรมหรือการสร้างระบบให้เป็นไปตามจุดประสงค์ นั่นก็คือ อัลกอริทึม ซึ่งสิ่งนี้นั้นมีความสำคัญและเป็นรากฐานของการสร้างระบบต่าง ๆ ให้เกิดผลอย่างมีประสิทธิภาพ
โดยเชื่อว่าหลาย ๆ คนอาจจะเคยได้ยินชื่อนี้ แต่อาจจะไม่ทราบความหมายที่แท้จริงว่า อัลกอริทึมคืออะไร ? และอัลกอริทึมมีประโยชน์อย่างไร บทความนี้ผู้เขียนจะพาทุกท่านไปทำความเข้าใจ อัลกอริทึมให้มากยิ่งขึ้น เพื่อประโยชน์ในการศึกษาและพัฒนาตนเองในด้านของวิทยาการคอมพิวเตอร์
อัลกอริทึม คืออะไร?
โดยเริ่มแรก คำว่าอัลกอริทึมนั้นได้มีที่มาจากคำว่า “ อัลคอวาริซมีย์” ซึ่งเป็นส่วนหนึ่งของชื่อของนักคณิตศาสตร์ท่านหนึ่งซึ่งเป็นชาวเปอร์เซีย ในยุคศตวรรษที่ 9 ที่มีชื่อเต็มว่า อับดิลลาห์ มูฮัมหมัด บิน มูซา อัลคอวาริซมีย์ ที่มีคุโณปการในการสร้างรากฐานความรู้ทางคณิตศาสตร์ จนเกิดเป็นส่วนสำคัญของความรู้วิทยาการคอมพิวเตอร์ในปัจจุบัน โดยคำว่าอัลกอริทึมนั้น หากกล่าวให้เข้าใจความหมายได้ง่ายที่สุดก็คือ ชุดรูปแบบวิธีคิด วิธีการออกแบบระบบใดระบบหนึ่ง ซึ่งมีเป้าหมายในการทำจุดประสงค์ใดให้สำเร็จ
อย่างเช่น หากจะมีการเขียนโปรแกรมเกี่ยวกับการออกแบบระบบเครื่องคิดเลข ก็ต้องมีการออกแบบระบบ ให้ผู้พัฒนาเป็นแนวทางเพื่อสามารถเขียนโปรแกรมให้เกิดผลตามเป้าหมายที่ตั้งไว้ ซึ่งดังจะเห็นได้จาก ราชบัณฑิตยสถานได้บัญญัติศัพท์คำว่า “อัลกอริทึม” ที่หมายถึง ขั้นตอนวิธีการแก้ปัญหาเชิงคำนวณด้วยคอมพิวเตอร์ อย่างไรก็ตามนั้น อัลกอริทึมคืออีกหนึ่งปัจจัยที่มีความสำคัญ และจำเป็นที่จะต้องทำความเข้าใจ หากจะทำระบบใดด้วยการเขียนโปรแกรม
ประโยชน์ของอัลกอริทึม ทำไมเด็กยุคใหม่ถึงต้องเรียนรู้?
ในการทำจุดประสงค์ใดให้สำเร็จย่อมต้องมีการวางแผนให้ถี่ถ้วน รัดกุม เพื่อลดความผิดพลาดในการทำสิ่งใดให้น้อยที่สุด และสามารถบรรลุจุดประสงค์ได้อย่างเป็นรูปธรรมและด้วยเหตุผลที่กล่าวมานั้น อัลกอริทึม ถือเป็นศาสตร์ที่มีความสำคัญ และทางผู้เขียนจะขอยกตัวอย่างประโยชน์ของอัลกอริทึม ที่ไม่ได้เป็นเพียงแค่การวางแผน แต่ยังเป็นรากฐานของวิธีคิดของผู้ที่เข้าใจอีกด้วย ซึ่งเป็นสิ่งที่จะตอบโจทย์กับการเติบโตของเทคโนโลยีและนวัตกรรมต่าง ๆ ในยุคปัจจุบัน
1. เสริมสร้างทักษะแนวคิดเชิงคำนวณ
อย่างที่ได้กล่าวไปข้างต้นว่า อัลกอริทึม คือชุดระบบความคิดในการวางแผนก่อนการสร้างระบบใด ๆ ก็ตาม ซึ่งด้วยเหตุนี้เอง จึงทำให้อัลกอริทึมนั้นมีรากฐานบน ทักษะการคิดอย่างมีวิจารณญาณและเหตุผล (Critical Thinking) ซึ่งถือได้ว่า อัลกอริทึมนี่เอง สามารถเสริมสร้างทักษะแนวคิดเชิงคำนวณได้เป็นอย่างดี โดยจะเห็นได้จากวิชาคณิตศาสตร์เองก็มีการแก้ไขปัญหาแต่จะโจทย์อย่างเป็นขั้นเป็นตอน พอมองกลับมาที่อัลกอริทึมก็จะสามารถเข้าใจความเชื่อมโยงระหว่างกันได้เป็นอย่างดี
2. เสริมสร้างทักษะการหารูปแบบ Pattern Recognition
อัลกอริทึมนั้นมีโครงสร้างเป็นแผนผังและระบบ ด้วยการวางแผนเชิงระบบ จึงเป็นที่มาสำคัญที่สามารถกล่าวได้ว่า อัลกอริทึมคือสิ่งที่สามารถเสริมสร้างทักษะการหารูปแบบ Pattern Recognition ได้อย่างมีประสิทธิภาพ เพราะทุก ๆ การออกแบบบนพื้นฐานของอัลกอริทึม จะทำให้สามารถเข้าใจได้ว่า หากจะเลือกกระทำแบบนี้ จะเกิดผลอย่างไรตามมา จึงสามารถแจกแจงการหารูปแบบของการแก้ไขปัญหาหรือการสร้างระบบได้เป็นอย่างดี
3. เสริมสร้างทักษะการแก้ปัญหา
เมื่อได้รู้ว่าอัลกอริทึมนั้นสามารถเสริมสร้างทักษะการหารูปแบบได้แล้ว สิ่งต่อมาก็คือในทุก ๆ การวางแผน จะทำให้เกิดทักษะในการแก้ไขปัญหาในหลากหลายทิศทางอย่างมีประสิทธิภาพ เพราะนอกจากจะสามารถสร้างแผนการและระบบที่แตกต่าง ยังมีความคิดสร้างสรรค์ในการแก้ไขปัญหา จากการเข้าใจโครงสร้างของระบบได้
การสร้างอัลกอริทึมมีขั้นตอนอะไรบ้าง
เมื่อได้ทำความเข้าใจถึงความหมายและวิธีการทำงานของอัลกอริทึมแล้วนั้น สิ่งสำคัญต่อมาก็คือคำถามที่ว่า หากจะสร้างอัลกอริทึมขึ้นมาในระบบต่าง ๆ นั้น จะต้องมีขั้นตอนหรือวิธีการอย่างไรบ้าง ซึ่งทางผู้เขียนก็จะขอทำการอธิบายในส่วนด้านล่างนี้
1. วิเคราะห์ปัญหาให้ถูกจุด
เมื่อจะสร้างระบบใด ๆ ก็ตามนั้น ความสำคัญของการเขียนอัลกอริทึมก็คือ การเข้าใจปัญหาหรือจุดประสงค์ในการดำเนินงานนั้น ๆ ให้ถี่ถ้วนและรัดกุม เพราะจุดประสงค์ของงานคือด่านแรกที่จะทำให้การวางแผนโครงสร้างอัลกอริทึม สามารถทำได้อย่างถูกต้อง และตอบโจทย์ต่องานที่จะดำเนินการสร้างขึ้นมา โดยอาจจะเริ่มจากวิธีการวางแผนเบื้องต้นอย่างเช่น “ใคร ทำอะไร ที่ไหน อย่างไร ”
2. ออกแบบวิธีการแก้ปัญหา
เมื่อทำความเข้าใจปัญหาอย่างถี่ถ้วนและเกิดความเข้าใจที่ถูกต้องแล้วนั้น สิ่งต่อมาก็คือคือคำถามที่ว่า แล้วจะแก้ไขปัญหานั้นได้อย่างไรบ้าง โดยสร้างวิธีการแก้ไขปัญหาออกมาให้มากที่สุดที่จะสามารถอุดรอยรั่วของข้อผิดพลาดที่จะสามารถเกิดขึ้นได้ และยังเป็นการสร้างทางเลือกในการแก้ไขปัญหาที่สามารถมีประสิทธิภาพสูงสุดในการแก้ไขปัญหานั้น ๆ โดยขั้นตอนนี้ สามารถกล่าวได้เลยว่าเป็นส่วนสำคัญ ที่จะทำให้อัลกอริทึม สามารถทำงานได้อย่างมีประสิทธิภาพสูงสุด
3. เขียนอัลกอริทึม (algorithm) ด้วย การเขียน flowchart เบื้องต้น
อัลกอริทึมcodegenius
อย่างที่ได้กล่าวไปเบื้องต้นว่า อัลกอริทึมคือชุดระบบ หรือวิธีการวางแผนในการสร้างสิ่งใดสิ่งหนึ่งขึ้นมาตามจุดประสงค์ ดังนั้ นสิ่งที่สามารถตอบโจทย์ในการวางระบบอัลกอริทึมได้ดีและมีประสิทธิภาพก็คือ flowchart นั่นเอง เพราะว่าหากได้ทำการใช้ flowchart เข้ามาซึ่งเป็นแผนผังที่มีระบบและความเข้าใจในหลักสากล ถูกออกแบบมาอย่างมีหลักการ จะสามารถทำให้ใคร ๆ ที่ได้อ่านการแสดงอัลกอริทึมด้วยผังงาน จะสามารถทำความเข้าใจได้ง่าย
รวมถึงผู้ที่ทำการเขียนอัลกอริทึมด้วยผังงานเองด้วย เพราะด้วยสัญลักษณ์ที่มีความเข้าใจง่าย จะทำให้สามารถทบทวน และกลับมาทำความเข้าใจโครงสร้างการที่ตนเองได้ออกแบบอัลกอริทึมมาตั้งแต่ต้นได้อย่างดี
4. เขียนโปรแกรม (Coding)
เมื่อได้ทำการออกแบบระบบและวางรากฐานของการแก้ไขปัญหาแล้วนั้น สิ่งที่จะทำให้รู้ได้ว่าแผนของผู้ที่สร้างระบบสามารถตอบโจทย์และดำเนินการได้อย่างถูกต้อง ก็คือการลงมือสร้างสิ่งที่ตนได้ออกแบบไว้ ซึ่งด้วยการเขียนโปรแกรมจะทำให้สามารถเห็นผลลัพธ์ของการดำเนินงานได้อย่างดี ซึ่งการออกแบบอัลกอริทึมนั้นหากไม่มีข้อผิดพลาดอะไร โปรแกรมจะสามารถแสดงผลได้อย่างดี และไม่มีปัญหาใด ๆ แต่หากมีก็ดำเนินการแก้ไขตามขั้นตอนที่ออกแบบไว้
5. ทดสอบและแก้ไขหากพบปัญหา
เมื่อดำเนินการเขียนโปรแกรมเรียบร้อยแล้ว ผู้พัฒนาควรที่จะทำการทดสอบระบบของตน ด้วยการดำเนินการซ้ำ ๆ ในหลากหลายทาง หลากหลายรูปแบบ เพื่อค้นหาว่ามีจุดไหนที่ตกหล่น หรือสามารถเกิดปัญหาตามมาได้หรือไม่ หากไม่มีปัญหาใด ๆ ก็อาจจะมองไปในเรื่องของการพัฒนาในอนาคต แต่หากพบปัญหาใด ๆ ก็ดำเนินการแก้ไขให้ถูกต้อง และย้อนไปดูในแผนของระบบอัลกอริทึม
หลักการเขียนอัลกอริทึมที่ดีควรเป็นอย่างไร ?
จากข้างต้น ผู้อ่านอาจจะเข้าใจในการวางแผนและสร้างอัลกอริทึมไปแล้ว แต่คำถามที่อาจจะมีหลาย ๆท่านสงสัยก็คือ แล้วหากจะสร้างอัลกอริทึมที่ดี หรือมีการวางแผนที่มีประสิทธิภาพ ควรจะใส่ใจในปัจจัยหรือต้องให้ความสำคัญในด้านไหนเป็นพิเศษบ้าง โดยการจะแก้ไขปัญหาใด ๆ ก็ตามแต่ ต้องมีความเข้าใจในปัญหา เพื่อจะสามารถแก้ไขปัญหาได้อย่างตรงจุด และการออกแบบอัลกอริทึมก็เช่นกัน ผู้เขียนโปรแกรมควรที่จะเข้าใจปัญหา และสร้างวิธีการแก้ไขปัญหาให้ตรงจุด มีความกระชับในการแก้ไขปัญหา เข้าใจประเด็นที่ต้องการจะแก้ไขให้ถี่ถ้วน ในส่วนนี้ก็จะเป็นการทำให้ อัลกอริทึม สามารถเป็นแผนระบบที่ทำงานได้อย่างมีประสิทธิภาพสูงสุด
อัลกอริทึมคือสิ่งสำคัญที่ซ่อนอยู่ในชีวิตประจําวัน
อัลกอริทึมในชีวิตประจำวัน
หลาย ๆ คนอาจจะคิดว่า อัลกอริทึมนั้นอาจจะเป็นเรื่องไกลตัว และมีความเกี่ยวข้องกับแค่ศาสตร์วิทยากรคอมพิวเตอร์เท่านั้น แต่จริง ๆ อัลกอริทึมนั้นคือรากฐานและเป็นสิ่งที่อยู่ในชีวิตประจำวันของทุกคน โดยทางผู้เขียนจะขอยกตัวอย่างที่เห็นชัดที่สุด อย่างเช่น “การผัดกะเพรา” ซึ่งการผัดกะเพรานั้น อาจจะดูเป็นเรื่องที่ทำได้ง่าย โดยมีขั้นตอนพื้นฐานดังนี้
ใส่น้ำมันในกระทะจนได้ที่
ให้ทำการใส่กระเทียมลงในกระทะและเจียวให้หอม
เมื่อกระเทียมมีกลิ่นที่หอมได้ที่ ให้ใส่ซอสปรุงรสต่าง ๆ ลงไปและเบาไฟเล็กน้อย
ใส่เนื้อสัตว์และเริ่มใช้ไฟที่แรงขึ้นเพื่อทำให้เนื้อสัตว์นั้นแตกมัน และมีกลิ่นที่หอม
เบาไฟหรือดับไฟ ใส่ใบกะเพราลงไปในกระทะ ผัดให้หอมพร้อมเสิร์ฟ
อย่างที่ได้กล่าวมาในการทำผัดกะเพรา ซึ่งอาจจะดูเป็นขั้นตอนพื้นฐาน ทำได้ง่ายสะดวกสบาย แต่หากมีการสลับขั้นตอนที่ 5 มาทำเป็นขั้นตอนที่ 4 แทน การผัดกะเพราอาจจะไม่สำเร็จ เพราะด้วยใบกะเพราที่เป็นผัก อาจจะไหม้ก่อนที่จะใส่เนื้อสัตว์ลงไป ซึ่งก็ทำให้เห็นได้ว่า แม้กระทั้งสูตรการทำอาการ ยังเป็นอัลกอริทึมที่ถูกออกแบบให้กับผู้ทำอาหาร จะต้องมีการปฏิบัติตามขั้นตอนเพื่อความสำเร็จในการปรุงอาหาร