อัลกอริทึมคือชุดคำสั่ง คำนิยามนั้นง่ายมาก อัลกอริทึมสามารถทำได้ง่ายเหมือนกับการให้คำแนะนำดังนี้:
- ไปตามถนน
- เลี้ยวขวาแรก
- ค้นหาบ้านหลังที่สองทางด้านซ้าย
- เคาะประตู.
- ส่งมอบแพคเกจ
แต่ในขณะที่ความหมายของอัลกอริธึมเป็นเรื่องที่เรียบง่ายความหมายที่แท้จริงและผลกระทบที่มีต่อชีวิตของเราอาจเป็นเรื่องที่ค่อนข้างซับซ้อน
ตัวอย่างของอัลกอริทึม
ตัวอย่างทั่วไปของอัลกอริทึมที่เราใช้ในชีวิตประจำวันของเราคือสูตร คำแนะนำชุดนี้ทำให้เรามีส่วนผสมทั้งหมดที่เราต้องการและคำแนะนำในการทำส่วนผสมเหล่านั้น เสียงง่ายใช่มั้ย?
แต่ถ้าคุณไม่ทราบว่าจะเก็บถ้วยตวงไว้ที่ไหน? คุณต้องใช้อัลกอริทึมเพื่อค้นหา คุณอาจต้องใช้อัลกอริทึมในการใช้ถ้วยชาม
ดังนั้นในขณะที่อัลกอริทึมเป็นชุดของคำแนะนำก็ยังต้องคำนึงถึงผู้ที่หรือสิ่งที่จะตีความคำแนะนำเหล่านั้น ตัวอย่างเช่นถ้าคุณให้คำแนะนำแก่เพื่อนรายละเอียดเกี่ยวกับวิธีเดินทางจากบ้านไปที่ร้านขายของชำที่ใกล้ที่สุดเพื่อนของคุณจะรู้ได้อย่างไรว่าจะไปที่ร้านดังกล่าวได้อย่างไรหากรู้ว่าบ้านของคุณอยู่ที่ใด พวกเขายังไม่สามารถหาร้านขายของชำแห่งนี้ได้ว่าเป็นบ้านของเพื่อนคนอื่น
นี่เป็นวิธีที่อัลกอริธึมสามารถทำได้ง่ายและซับซ้อน และเมื่อเราพูดถึงในแง่ของอัลกอริทึมคอมพิวเตอร์การทำความเข้าใจว่าคอมพิวเตอร์สามารถทำอะไรได้นั้นเป็นส่วนสำคัญในการจัดทำอัลกอริทึม
วิธีการจัดเรียงอัลกอริทึม
อัลกอริทึมที่เก่าที่สุดที่สร้างขึ้นคือรูทีนการจัดเรียงฟอง การจัดเรียงแบบฟองสบู่เป็นวิธีการเรียงลำดับตัวเลขตัวอักษรหรือคำต่างๆโดยการวนซ้ำผ่านชุดข้อมูลเปรียบเทียบชุดของค่าแต่ละค่าและวางเรียงตามความต้องการเมื่อจำเป็น
ลูปนี้จะถูกทำซ้ำจนกว่าอัลกอริธึมสามารถเคลื่อนที่ผ่านรายการทั้งหมดได้โดยไม่จำเป็นต้องสลับอะไรซึ่งหมายความว่าค่าถูกเรียงอย่างถูกต้อง อัลกอริธึมชนิดนี้มักถูกเรียกว่าอัลกอริทึมแบบทวนซ้ำเนื่องจากมีการวนซ้ำไปเรื่อย ๆ จนกระทั่งเสร็จสิ้นภารกิจ
อัลกอริธึมประเภทนี้อาจดูง่ายๆดังนี้
- ไปที่ค่าแรก
- ตรวจสอบว่ามูลค่ากับมูลค่าถัดไปและตำแหน่ง swap ถ้าจำเป็น
- ไปที่ค่าถัดไปและทำซ้ำการเปรียบเทียบ
- ถ้าเราอยู่ในตอนท้ายของรายการให้กลับไปที่ด้านบนถ้ามีการเปลี่ยนค่าใด ๆ ในระหว่างลูป
แต่การจัดเรียงฟองสบู่ไม่ได้กลายเป็นส่วนใหญ่ ที่มีประสิทธิภาพ วิธีการเรียงลำดับค่า เมื่อเวลาผ่านไปและคอมพิวเตอร์มีความสามารถในการทำงานที่ซับซ้อนได้อย่างรวดเร็วขึ้นระบบอัลกอริธึมการเรียงลำดับใหม่ก็ลุกขึ้น
หนึ่งในขั้นตอนดังกล่าวจะสแกนผ่านรายการแรกและสร้างรายการลำดับที่สองของค่า วิธีนี้จะทำให้ผ่านเพียงครั้งเดียวผ่านรายการเดิมและมีค่าแต่ละค่าจะวนไปตามรายการที่สองจนกว่าจะหาตำแหน่งที่ถูกต้องในการใส่ค่า โดยปกติแล้วจะมีประสิทธิภาพมากกว่าการใช้วิธีจัดเรียงแบบฟองสบู่
นี่คือที่ขั้นตอนวิธีสามารถได้รับบ้าจริงๆ หรือจริงๆน่าสนใจขึ้นอยู่กับว่าคุณมองไปที่มัน
แม้ว่าวิธีการจัดเรียงแบบฟองสบู่ถือเป็นวิธีการหนึ่งที่ไม่มีประสิทธิภาพมากที่สุดในการจัดเรียงค่าในหลาย ๆ ด้านหากรายการต้นฉบับถูกจัดเรียงอย่างถูกต้องการจัดเรียงแบบฟองอาจเป็นหนึ่งใน มากที่สุด ที่มีประสิทธิภาพ นั่นเป็นเพราะในกรณีดังกล่าวอัลกอริทึมการจัดเรียงข้อมูลแบบฟองสบู่จะผ่านรายการเพียงครั้งเดียวและระบุว่ามีการจัดเรียงอย่างถูกต้อง
น่าเสียดายที่เราไม่ทราบว่ารายการของเราถูกจัดเรียงไว้หรือไม่ดังนั้นเราจึงต้องเลือกอัลกอริทึมที่จะมีประสิทธิภาพมากที่สุดในการใช้งานโดยเฉลี่ยในรายการจำนวนมาก
สิ่งที่เราเรียนรู้จากฟองสบู่อัลกอริทึม
- อัลกอริธึมมีวิวัฒนาการไปเรื่อย ๆ ในขณะที่เราพบวิธีที่มีประสิทธิภาพมากขึ้นในการทำสิ่งต่างๆและ / หรือคอมพิวเตอร์มีความสามารถในการดำเนินงานที่ซับซ้อนได้มากขึ้น
- อัลกอริธึมบางครั้งได้รับการคัดเลือกเพราะพวกเขา "มีประสิทธิภาพมากขึ้น" มากที่สุดในเวลา
- เพียงเพราะอัลกอริทึมมีประสิทธิภาพมากกว่าตลอดเวลาไม่ได้หมายความว่าดีที่สุดในแต่ละกรณีเสมอไป
อัลกอริทึม Facebook และอื่น ๆ ในชีวิตประจำวัน
อัลกอริธึมทำงานได้ทุกวัน เมื่อคุณค้นหาเว็บอัลกอริทึมจะทำงานเพื่อหาผลการค้นหาที่ดีที่สุด สอบถามสมาร์ทโฟนของคุณเพื่อขอเส้นทางและอัลกอริทึมจะตัดสินใจเส้นทางที่ดีที่สุดสำหรับคุณ และเมื่อคุณเรียกดู Facebook อัลกอริทึมจะตัดสินใจว่าโพสต์ Facebook ของเพื่อนคนไหนที่สำคัญที่สุดสำหรับเรา (หวังว่าเพื่อนของเราจะไม่พบว่า Facebook คนใดคิดว่าเราชอบมากที่สุด!)
แต่คิด algorithmically สามารถช่วยให้เราไกลเกินชีวิตของเราคอมพิวเตอร์ มันยังสามารถช่วยให้เราสร้างแซนวิชได้ดีขึ้น
สมมติว่าฉันเริ่มต้นด้วยสองชิ้นขนมปังกระจายมัสตาร์ดบนชิ้นหนึ่งและมายองเนสบนชิ้นอื่น ฉันใส่เนยแข็งลงบนขนมปังที่มีมายองเนสแฮมบางตัวอยู่ด้านบนนั้นผักกาดหอมบางชิ้นมะเขือเทศสองชิ้นแล้วใส่ฝากับมัสตาร์ดที่มัน แซนวิชดีใช่มั้ย?
แน่นอนถ้าฉันกินมันทันที แต่ถ้าฉันปล่อยให้มันอยู่บนโต๊ะในขณะที่ขนมปังด้านบนบางส่วนอาจได้รับเปียกจากการดื่มด่ำกับมะเขือเทศที่ เป็นปัญหาที่ฉันไม่ค่อยคาดหวังและฉันอาจทำแซนวิชเป็นเวลาหลายปีก่อนที่จะสังเกตเห็น แต่เมื่อฉันทำแล้วฉันสามารถเริ่มคิดหาวิธีเปลี่ยนอัลกอริทึมของฉันเพื่อสร้างแซนวิชที่ดีขึ้น
ตัวอย่างเช่นฉันสามารถกำจัดมะเขือเทศได้ แต่ฉันไม่อยากสูญเสียรสมะเขือเทศนั้น ดังนั้นแทนฉันสามารถวางมะเขือเทศลงในแซนด์วิชหลังจากขนมปังและผักกาดหอม นี้ช่วยให้ผักกาดหอมเพื่อสร้างอุปสรรคป้องกันระหว่างมะเขือเทศและขนมปัง
นี่เป็นวิธีที่วิวัฒนาการไป และอัลกอริทึมไม่จำเป็นต้องถูกเรียกใช้โดยคอมพิวเตอร์เพื่อให้เป็นอัลกอริทึมอัลกอริทึมคือกระบวนการและกระบวนการทั้งหมดรอบตัวเรา