อัลกอริทึม
จากวิกิพีเดีย สารานุกรมเสรี
อัลกอริทึม (algorithm) หมายถึงขั้นตอนวิธี ที่สามารถเข้าใจได้และมีความยาวจำกัดบอกถึง ลำดับ หรือวิธีการในการแก้ไขปัญหาใดปัญหาหนึ่ง อย่างเป็นขั้นเป็นตอนและชัดเจน ว่าทำอย่างไร เมื่อนำเข้าอะไร แล้วจะได้ผลลัพธ์เช่นไร ซึ่งแตกต่างจากการแก้ปัญหาแบบศึกษาสำนึก หรือฮิวริสติก (heuristic)
โดยทั่วไป อัลกอริทึม จะประกอบด้วย วิธีการเป็นขั้นๆ และมีส่วนที่ต้องทำแบบวนซ้ำ(iterate) หรือ เวียนเกิด(recursive) โดยใช้ตรรกะ (logic) และ/หรือ ในการเปรียบเทียบ (comparison) ในขั้นตอนต่างๆ จนกระทั่งเสร็จสิ้นการทำงาน
ในการทำงานอย่างเดียวกัน เราอาจจะเลือกอัลกอริทึมที่ต่างกันเพื่อแก้ปัญหาได้ โดยที่ผลลัพธ์ที่ได้ในขั้นสุดท้ายจะออกมาเหมือนกันหรือไม่ก็ได้ และจะมีความแตกต่าง ที่จำนวนและชุดคำสั่งที่ใช้ต่างกันซึ่งส่งผลให้ เวลา (time), และขนาดหน่วยความจำ(space)ที่ต้องการต่างกัน หรือเรียกได้อีกอย่างว่ามีความซับซ้อน (complexity) ต่างกัน
การนำอัลกอริทึมไปใช้ ไม่จำกัดเฉพาะการเขียนโปรแกรมคอมพิวเตอร์ แต่สามารถใช้กับปัญหาอื่น ๆ ได้เช่น การออกแบบวงจรไฟฟ้า, การทำงานเครื่องจักรกล, หรือแม้กระทั่งปัญหาในธรรมชาติ เช่น วิธีของสมองมนุษย์ในการคิดเลข หรือวิธีการขนอาหารของแมลง
สารบัญ |
[แก้] ตัวอย่าง
หนึ่งในอัลกอริทึมอย่างง่าย คือ อัลกอริทึมที่ใช้หาจำนวนที่มีค่ามากที่สุดในรายการ (ซึ่งไม่ได้เรียงลำดับไว้) ในการแก้ปัญหานี้ เราจะต้องดูจำนวนทุกจำนวนในรายการ ซึ่งมีอัลกอริทึมดังนี้
- ดูแต่ละจำนวนในรายการ ถ้ามันมีค่ามากกว่า จำนวนที่มีค่ามากที่สุดที่เราเคยพบเจอ ให้จดค่ามันไว้
- จำนวนที่เราจดไว้ตัวสุดท้าย จะเป็นจำนวนที่มีค่ามากที่สุด
และนี่คือรหัสเทียมสำหรับอัลกอริทึมนี้
Algorithm LargestNumber Input: รายการจำนวนเต็ม. Output: จำนวนเต็มที่มีค่ามากที่สุดในรายการ. largest ← -∞ for each item in รายการ, do if the item > largest, then largest ← the item return largest
หมายเหตุ:
- "←" เป็นเครื่องหมายแทนคำว่า "ให้มีค่าเป็น" เช่น "largest ← the item" หมายความว่า ให้ largest มีค่าเป็น item
- "return" เป็นการจบอัลกอริทึม และส่งค่าของตัวแปรที่ตามหลัง ออกไปยังอัลกอริทึมก่อนหน้าที่เรียกใช้
[แก้] ประวัติ
คำว่า อัลกอริทึมมีที่มาจากชื่อของนักคณิตศาสตร์ชาวเปอร์เซียในยุคศตวรรษที่ 9 อะบู อับดิลลาหฺ บิน มูซา อัลคอวาริซมีย์ (Abu Abdillah Muhammad bin Musa al-Khawarizmi) คำว่า al-Khawarizmi ได้เพี้ยนเป็น Algoritmi เมื่องานเขียนของเขาได้รับการแปลเป็นภาษาละติน แล้วกลายเป็น Algorithmอัลกอริซึม ซึ่งใช้หมายถึงกฎที่ใช้ในการคิดคำนวณเลขคณิต และได้กลายมาเป็นคำ อัลกอริทึม ในช่วงศตวรรษที่ 18. ในปัจจุบัน คำนี้ได้มีความหมายที่กว้างขึ้น หมายรวมถึง ขั้นตอนวิธีการในการแก้ปัญหาต่าง ๆ
อัลกอริทึมแรกสำหรับคอมพิวเตอร์นั้น เขียนขึ้นในปี ค.ศ. 1842 โดย เอดา ไบรอน ใน notes on the analytical engine ทำให้ถือกันว่า เอดาเป็นนักพัฒนาโปรแกรมหรือโปรแกรมเมอร์คนแรกของโลก แต่เนื่องจาก ชาร์ลส แบบเบจ ไม่ได้สร้าง analytical engine จนเสร็จ อัลกอริทึมของเอดานั้นจึงไม่ได้มีการใช้จริง
ถึงแม้ว่าอัลกอริทึมนั้นเป็น ขั้นตอนวิธี การแก้ปัญหา ที่ถูกระบุไว้อย่างชัดเจน แต่ก็ขาดรูปแบบการวิเคราะห์ในรูปแบบจำลองทางคณิตศาสตร์ที่ชัดเจน ปัญหาในทางอัลกอริทึมนี้โดยส่วนมากจึงมักจะถูกวิเคราะห์โดยใช้ เครื่องจักรทัวริง ซึ่งเป็นแบบจำลองนามธรรมของคอมพิวเตอร์ คิดค้นขึ้นโดย แอลัน ทัวริง ซึ่งเป็นเครื่องจักรที่ใช้ในการจำลองการทำงานของอัลกอริทึมใด ๆ
[แก้] ดูเพิ่ม
- วิทยาการคอมพิวเตอร์
- การคณนา หรือ การคำนวณ
- แผนภูมิสายงาน(Flow Chart)
- รายการอัลกอริทึม (List of algorithms)
- en:Bulletproof algorithms
- อัลกอริทึมการเรียง (Sortalgorithms)
- อัลกอริทึมการค้นหา (Search algorithms)
- อัลกอริทึมประสาน (en:Merge algorithms)
- อัลกอริทึมสายอักษร (en:String algorithms)
- อัลกอริทึมเชิงพันธุกรรม (en:Genetic Algorithms)
- อัลกอริทึมแบบสุ่ม (Randomized algorithm)
- อัลกอริทึมการประมาณ (Approximation algorithm)
- เส้นเวลาของอัลกอริทึมen:Timeline of algorithms
- ตรรกะสำหรับคอมพิวเตอร์en:Computability logic
- โครงสร้างข้อมูล (Data structure)
[แก้] อ้างอิง
- รายการผลงานวิชาการสำคัญเกี่ยวกับอัลกอริทึม (ภาษาอังกฤษ)
อัลกอริทึม เป็นบทความเกี่ยวกับ คณิตศาสตร์ ที่ยังไม่สมบูรณ์ ต้องการตรวจสอบ เพิ่มเนื้อหา หรือเพิ่มแหล่งอ้างอิง คุณสามารถช่วยเพิ่มเติมหรือแก้ไข เพื่อให้สมบูรณ์มากขึ้น |
อัลกอริทึม เป็นบทความเกี่ยวกับ คอมพิวเตอร์ อุปกรณ์คอมพิวเตอร์ หรือ เครือข่าย ที่ยังไม่สมบูรณ์ ต้องการตรวจสอบ เพิ่มเนื้อหา หรือเพิ่มแหล่งอ้างอิง คุณสามารถช่วยเพิ่มเติมหรือแก้ไข เพื่อให้สมบูรณ์มากขึ้น |