Algorithm ที่มีโอกาสนำมาใช้จริง by

28
Feb
0

เมื่อก่อนตอนเรียนอยู่มีวิชาหนึ่งชื่อว่าวิชา Algorithm ซึ่งเป็นวิชาที่ยาก และ งง มาก ซึ่งทำให้เกิดคำถามว่า ไอ้ที่เรียนๆเนี่ยสามารถนำไปใช้จริงได้ไหม? จนเวลาผ่านล่วงเลยมา ก็มาพบคำตอบว่าในบางครั้งบางโอกาส เราอาจจะต้องเจอกับสถานการณ์ที่จะต้องนำเอา Algorithm ที่เคยได้เรียนมา มาใช้เพื่อให้ Code ที่เราทำนั้นมันมี Performance ดีที่สุดครับ

ต่อไปก็มาดูคำจำกัดความหรือความหมายของ Algorithm อย่างง่ายๆกันก่อนนะครับ

Algorithm(อัลกอริทึม) หมายถึงกระบวนการแก้ปัญหาที่สามารถเข้าใจได้ มีลำดับหรือวิธีการในการแก้ไขปัญหาใดปัญหาหนึ่งอย่างเป็นขั้นเป็นตอนและชัดเจน เมื่อนำเข้าอะไร แล้วจะต้องได้ผลลัพธ์เช่นไร โดยทั่วไป Algorithm จะประกอบด้วย วิธีการเป็นขั้นๆ และมีส่วนที่ต้องทำแบบวนซ้ำ (iterate) หรือ เวียนเกิด (recursive) โดยใช้ตรรกะ (logic) และ/หรือ ในการเปรียบเทียบ (comparison) ในขั้นตอนต่างๆ จนกระทั่งเสร็จสิ้นการทำงาน
ในการทำงานอย่างเดียวกัน เราอาจจะเลือกขั้นตอนวิธีที่ต่างกันเพื่อแก้ปัญหาได้ โดยที่ผลลัพธ์ที่ได้ในขั้นสุดท้ายจะออกมาเหมือนกันหรือไม่ก็ได้ และจะมีความแตกต่าง ที่จำนวนและชุดคำสั่งที่ใช้ต่างกันซึ่งส่งผลให้ เวลา (time) , และขนาดหน่วยความจำ (space) ที่ต้องการต่างกัน หรือเรียกได้อีกอย่างว่ามีความซับซ้อน (complexity) ต่างกัน

ต่อไปจะยกตัวอย่าง Algorithm ที่มีโอกาสได้นำมาใช้จริงนะครับ เราจะไม่พูดถึงวิธีการเขียน Code ของ Algorithm พวกนี้นะครับ เราจะพูดถึงความสามารถของมันว่ามันสามารถทำอะไรได้บ้าง และเอาไปใช้ในโอกาสไหนครับ

1. Merge Sort เป็น Algorithm ในการเรียงลำดับข้อมูลที่มีความเร็วมากที่สุด แต่ซับซ้อนมาก(ฮ่า ฮ่า) หากว่าเรามีข้อมูลจำนวนมหาศาล(ขอย้ำว่า มหาศาล) หากเราใช้ Algorithm ในการ Sort แบบอื่นอาจเจอกับ Timeout ได้ หรือหากมี Code ในจุดที่ต้อง Sort แต่ถูกเรียก บ่อยๆๆๆๆ แล้วล่ะก็ Merge Sort อาจเป็นทางเลือกที่คุณควรมองอย่างยิ่ง

2. Shortest Path คือปัญหา การหาเส้นทางที่สั้นที่สุดจากจุดหนึ่งไปยังอีกจุดหนึ่ง อ่านมาถึงตรงนี้คงมีหลายคน กำลังคิดว่า แล้วมันจะเอาไปทำอะไรล่ะเนี่ยยยย งั้นขอยกตัวอย่างที่เคยประสบมากับตัวแล้วกันนั่นก็คือ ตอนเขียนเกมที่มีตัวละครแล้วให้ผู้เล่นกดคลิ๊กที่พึ่นแล้วตัวละครเราต้องเดินไปที่จุดนั้นๆไงล่ะ โดยที่ระหว่างทางบางทีมันมีสิ่งกีดขวางที่ไม่สามารถเดินผ่านได้ ทำให้ต้องใช้ Algorithm มาช่วยในการแก้ปัญหานี้ไงล่ะ ส่วนจะใช้ Algorithm ไหนนั้นก็มีหลาย Algorithm ให้เลือกสรร เช่น Dijkstra’s Algorithm, Bellman-Ford Algorithm, A* Algorithm, Floyd–Warshall Algorithm, Johnson’s Algorithm และ Viterbi Algorithm ซึ่งแต่ละวิธีจะมีข้อดีข้อเสียต่างกันไปนะคร้าฟฟฟ

วันนี้พอแค่นี้ก่อนดีกว่าไว้วันหลังจะมาเล่าให้ฟังเพิ่มนะคร้าฟฟฟ

Enjoy this article?

Consider subscribing to our RSS feed!

ไม่มีความเห็น

ยังไม่มีความเห็น

ใส่ความเห็น

RSS feed for comments on this post

 เราชนะรอบ 4 | ยืมเงิน 3000 ด่วน | แอพกู้เงิน | แอพเงินด่วน | สินเชื่อออนไลน์อนุมัติทันที | Site Map | กู้เงินก้อน | กระเป๋าตัง | thisshop และ ยืมเงินฉุกเฉิน 5000 ด่วน