อัลกอริทึม

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

อัลกอริทึม

อัลกอริทึมช่วยสิ่งมีชีวิตจากการสูญพันธุ์

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

ดร.จอห์น เลเวลิน นักวิจัยจากวิทยาลัยวิทยาศาสตร์และวิศวกรรมศาสตร์แห่งมหาวิทยาลัยฟลินเดอร์ส ในออสเตรเลีย ระบุว่า การสูญพันธุ์จำนวนมากเหล่านี้เกิดจากการสูญเสียหรือได้รับจากการมีปฏิสัมพันธ์กับสายพันธุ์อื่น เช่น นักล่าที่สูญพันธุ์หลังจากสูญเสียเหยื่อ หรือมีสายพันธุ์ผู้ล่ารุกราน ก็ทำให้เกิดการสูญพันธุ์ในเหยื่อพื้นเมืองที่ไร้ทางต่อสู้ นักวิจัยจึงหาหนทางที่จะรับมือกับการสูญพันธุ์ของสายพันธุ์สิ่งมีชีวิต ล่าสุด นักวิจัยจากมหาวิทยาลัยฟลินเดอร์สก็พบวิธีที่น่าจะได้ผล นั่นคือการใช้แมชชีนเลิร์นนิง คือการฝึกฝนให้คอมพิวเตอร์เรียนรู้ด้วยตนเอง ให้ระบุปฏิสัมพันธ์ของสายพันธุ์และทำนายว่าชนิดใดมีแนวโน้มที่จะสูญพันธุ์มากที่สุด เพื่อช่วยให้มนุษย์วางแผนการแทรกแซงได้ก่อน

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

อัลกอริทึมคืออะไร

อัลกอริทึม มีที่มาจากชื่อของนักคณิตศาสตร์ชาวเปอร์เซียในยุคศตวรรษที่ 9 ชื่ออะบู อับดิลลาห์ มูฮัมหมัด บิน มูซา อัลคอวาริซมีย์ (Abu Abdillah Muhammad binMusa al-Khawarizmi) คำว่าอัลคอวาริซมีย์ (al-Khawarizmi)ได้เพี้ยนเป็นอัลกอริทมี (Algoritmi) เมื่องานเขียนของเขาได้รับการแปลเป็นภาษาละติน แล้วกลายเป็นอัลกอริทึม (Algorithm) ซึ่งหมายถึงกฎที่ใช้ในการคิดคำนวณเลขคณิตในช่วงศตวรรษที่ 18 ในปัจจุบันคำนี้ได้มีความหมายที่กว้างขึ้นโดยหมายรวมถึงขั้นตอนวิธีการในการแก้ปัญหาต่างๆ มีนักการศึกษา นักวิชาการ ให้ความหมายของคำว่า อัลกอริทึม (Algorithm) ไว้หลายท่าน ดังนี้

  • ราชบัณฑิตยสถานได้บัญญัติศัพท์คำว่า “Algorithm” ใช้คำว่า “ขั้นตอนวิธี” หมายถึง ขั้นตอนวิธีการแก้ปัญหาเชิงคำนวณด้วยคอมพิวเตอร์
  • อัลกอริทึม (Algorithm) หมายถึง ขั้นตอนหรือลำดับการประมวลผลในการแก้ปัญหาใดปัญหาหนึ่งซึ่งจะช่วยให้ผู้พัฒนาโปรแกรมเห็นขั้นตอนการเขียนโปรแกรมอย่างง่ายขึ้น
  • อัลกอริทึม (Algorithm) หมายถึง แนวคิดอย่างมีเหตุผลที่ผู้เขียนโปรแกรมใช้ในการอธิบายวิธีการอย่างเป็นขั้นตอนตามลำดับในการที่จะพัฒนาโปรแกรมนั้นๆ เพื่อตรวจสอบขั้นตอนต่าง ๆ ในการทำงานและความถูกต้องในแต่ละขั้นตอน
  • อัลกอริทึม (Algorithm)  คือ กระบวนการแก้ปัญหาที่สามารถอธิบายออกมาเป็นขั้นตอนที่ชัดเจน เมื่อนำเข้าอะไร แล้วจะต้องได้ผลลัพธ์เช่นไร  กระบวนการนี้ประกอบด้วยจะประกอบด้วย วิธีการเป็นขั้นๆ และมีส่วนที่ต้องทำแบบวนซ้ำอีก จนกระทั่งเสร็จสิ้นการทำงาน

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

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

หลักการเขียนอัลกอริทึม

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

ประโยชน์ของอัลกอริทึม

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

อัลกอริทึม

รูปแบบการเขียนอัลกอริทึม

การเขียนอัลกอริทึมมีหลายรูปแบบ โดยผู้เขียนสามารถใช้อัลกอริทึมหลายรูปแบบประกอบกันในการออกแบบอัลกอริทึมนั้นเพื่อใช้ในการแก้ปัญหาการเขียนโปรแกรมได้

  •  แบบลำดับ (Sequential) มีลักษณะการทำงานจะเป็นไปตามขั้นตอน ก่อน-หลัง ต่อเนื่องกันไปเป็นลำดับ โดยการทำงานแต่ละขั้นตอนต้องทำให้เสร็จก่อน แล้วจึงไปทำขั้นตอนต่อไป
  • แบบทางเลือก (Decision) อัลกอริทึมรูปแบบนี้ มีเงื่อนไขเป็นตัวกำหนดเส้นทางการทำงานของกระบวนการแก้ปัญหา โดยตัวเลือกนั้นอาจจะมีตั้งแต่ 2 ตัวขึ้นไป เช่น สอบข้อเขียน คะแนนเต็ม 50 ได้คะแนน 30 สอบผ่าน ถ้าต่ำกว่า 30 สอบไม่ผ่าน
  • แบบทำซ้ำ (Repetition) อัลกอริทึมแบบนี้คล้ายกับแบบทางเลือก คือ มีการตรวจสอบเงื่อนไข แต่แตกต่างกันตรงที่เมื่อการทำงานตรงตามเงื่อนไขที่กำหนด โปรแกรมจะกลับไปทำงานอีกครั้งวนการทำงานแบบนี้เรื่อย ๆ จนกระทั่งไม่ตรงกับเงื่อนไขที่กำหนดไว้จึงหยุดการทำงานหรือทำงานในขั้นต่อไป

คุณลักษณะการเขียนอัลกอริทึม

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

  1. มีความถูกต้อง ความถูกต้องเป็นคุณสมบัติข้อแรกที่จะต้องพิจารณา นั่นคือเมื่อทำงานตามอัลกอริทึม แล้วจะต้องได้ผลลัพธ์ที่ถูกต้อง ซึ่งถ้าผลลัพธ์ที่ได้จากอัลกอริทึมไม่ถูกต้อง จะถือว่าไม่ใช่อัลกอริทึมที่ดี โดยที่ไม่จำเป็นต้องพิจารณาคุณสมบัติข้ออื่น ๆ
  2. ใช้เวลาในการปฏิบัติงานน้อยที่สุด
  3. สั้น กระชับ มีเฉพาะขั้นตอนที่จำเป็นเท่านั้น
  4. ใช้เนื้อที่ในหน่วยความจำน้อยที่สุด เนื้อที่ในหน่วยความจำจะถูกใช้สำหรับเก็บค่าของตัวแปร และเก็บคำสั่งที่ใช้ในการทำงาน ดังนั้น ถ้าอัลกอริทึมยาวเกินความจำเป็น จะทำให้ใช้เนื้อที่มาก และ ถ้ามีตัวแปรมากเกินความจำเป็น ก็จะทำให้เสียเนื้อที่ในหน่วยความจำไปด้วย
  5. มีความยืดหยุ่นในการใช้งาน
  6. ใช้เวลาในการพัฒนาน้อยที่สุด เมื่อนำอัลกอริทึมไปแปลงเป็นโปรแกรมภาษาคอมพิวเตอร์แล้วจะต้องใช้เวลาน้อยที่สุด
  7. ง่ายต่อการทำความเข้าใจ