อัลกอริทึมคอมพิวเตอร์คืออะไรและทำงานอย่างไร
เผยแพร่แล้ว: 2022-01-29ถ้าคุณไม่ถนัดคณิตศาสตร์หรือการเขียนโปรแกรม คำว่า "อัลกอริทึม" อาจเป็นภาษากรีกสำหรับคุณ แต่ก็เป็นหนึ่งในองค์ประกอบสำคัญของทุกสิ่งที่คุณใช้ในการอ่านบทความนี้ ต่อไปนี้คือคำอธิบายโดยย่อว่าคืออะไรและทำงานอย่างไร
ข้อจำกัดความรับผิดชอบ: ฉันไม่ใช่ครูสอนคณิตศาสตร์หรือวิทยาการคอมพิวเตอร์ คำศัพท์บางคำที่ฉันใช้ไม่ใช่ศัพท์เทคนิค นั่นเป็นเพราะฉันกำลังพยายามอธิบายทุกอย่างเป็นภาษาอังกฤษธรรมดาๆ สำหรับคนที่ไม่ค่อยถนัดคณิตศาสตร์ ที่ถูกกล่าวว่า มีคณิตศาสตร์ที่เกี่ยวข้อง และนั่นเป็นสิ่งที่หลีกเลี่ยงไม่ได้ ผู้ที่คลั่งไคล้คณิตศาสตร์ รู้สึกอิสระที่จะแก้ไขหรืออธิบายให้ดีกว่านี้ในความคิดเห็น แต่โปรดทำให้มันง่ายสำหรับคนที่ไม่ชอบคณิตศาสตร์ในหมู่พวกเรา
ภาพโดย เอียน รุตศาลา
อัลกอริทึมคืออะไร?
คำว่า 'อัลกอริธึม' มีนิรุกติศาสตร์คล้ายกับ 'พีชคณิต' เว้นแต่ว่าคำนี้หมายถึงอัล-คอวาริซมี นักคณิตศาสตร์ชาวอาหรับเอง (เป็นเพียงอาหารอันโอชะที่น่าสนใจ) อัลกอริทึมสำหรับผู้ที่ไม่ใช่โปรแกรมเมอร์ในหมู่พวกเราคือชุดคำสั่งที่รับอินพุต A และจัดเตรียมเอาต์พุต B ซึ่งเปลี่ยนแปลงข้อมูลที่เกี่ยวข้องในทางใดทางหนึ่ง อัลกอริธึมมีการใช้งานที่หลากหลาย ในวิชาคณิตศาสตร์ พวกเขาสามารถช่วยคำนวณฟังก์ชันจากจุดในชุดข้อมูล ท่ามกลางสิ่งอื่น ๆ ที่ก้าวหน้ากว่ามาก นอกเหนือจากการใช้งานในการเขียนโปรแกรมแล้ว ยังมีบทบาทสำคัญในสิ่งต่างๆ เช่น การบีบอัดไฟล์และการเข้ารหัสข้อมูล
ชุดคำสั่งพื้นฐาน
สมมติว่าเพื่อนของคุณกำลังพบคุณในร้านขายของชำและคุณกำลังนำทางเขาไปหาคุณ คุณพูดเช่น "เข้ามาทางประตูด้านขวา" "ผ่านส่วนปลาทางด้านซ้าย" และ "ถ้าคุณเห็นผลิตภัณฑ์นม แสดงว่าคุณผ่านฉันไป" อัลกอริทึมทำงานเช่นนั้น เราสามารถใช้ผังงานเพื่อแสดงคำแนะนำตามเกณฑ์ที่เราทราบล่วงหน้าหรือค้นหาในระหว่างกระบวนการ
(ภาพที่ชื่อว่า “Icebreaking Routine” แก้ไข: มารยาทของ Trigger และ Freewheel)
จาก START คุณจะมุ่งหน้าไปตามเส้นทาง และขึ้นอยู่กับสิ่งที่เกิดขึ้น คุณทำตาม "กระแส" ไปสู่ผลลัพธ์สุดท้าย ผังงานเป็นเครื่องมือที่มองเห็นได้ซึ่งสามารถแสดงชุดคำสั่งที่คอมพิวเตอร์ใช้ ในทำนองเดียวกัน อัลกอริธึมช่วยทำเช่นเดียวกันกับแบบจำลองทางคณิตศาสตร์เพิ่มเติม
กราฟ
ลองใช้กราฟเพื่อแสดงวิธีต่างๆ ที่เราสามารถบอกทิศทางได้
เราสามารถแสดงกราฟนี้เป็นความเชื่อมโยงระหว่างจุดทั้งหมด ในการทำซ้ำภาพนี้ เราสามารถให้ชุดคำสั่งแก่บุคคลอื่นได้
วิธีที่ 1
เราสามารถแสดงสิ่งนี้เป็นชุดของจุด และข้อมูลจะเป็นไปตามรูปแบบมาตรฐานของกราฟ = {(x1, y1), (x2, y2), …, (xn, yn)}
กราฟ = {(0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1) }
มันค่อนข้างง่ายที่จะพลอตแต่ละจุด ทีละจุด และเชื่อมโยงมันกับจุดก่อนหน้า อย่างไรก็ตาม ลองนึกภาพกราฟที่มีจุดพันจุดหรือหลายส่วนทุกด้าน รายการนั้นจะมีข้อมูลมากมายใช่ไหม แล้วต้องเชื่อมต่อกันทีละคน อาจเป็นเรื่องเจ็บปวด
วิธีที่ 2
อีกสิ่งที่เราทำได้คือให้จุดเริ่มต้น ความชันของเส้นตรงระหว่างจุดนั้นกับจุดถัดไป และระบุตำแหน่งที่จะคาดหวังจุดถัดไปโดยใช้รูปแบบมาตรฐานของกราฟ={(จุดเริ่มต้น}, [m1, x1, h1 ], …, [mn, xn, hn]} ในที่นี้ ตัวแปร 'm' หมายถึงความชันของเส้นตรง 'x' หมายถึงทิศทางที่จะนับ (ไม่ว่า x หรือ y) และ 'h' จะบอกคุณว่าอย่างไร มากมายให้นับในทิศทางดังกล่าว นอกจากนี้ คุณยังสามารถจำจุดหนึ่งหลังจากการเคลื่อนไหวแต่ละครั้ง
กราฟ = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,1], [-3,x,1], [-3,x,1]}
คุณจะจบลงด้วยกราฟเดียวกัน คุณจะเห็นได้ว่าสามเทอมสุดท้ายในนิพจน์นี้เหมือนกัน ดังนั้นเราอาจตัดมันออกได้โดยการพูดว่า "ทำซ้ำสามครั้ง" ในบางวิธี สมมติว่าเมื่อใดก็ตามที่คุณเห็นตัวแปร 'R' ปรากฏขึ้น หมายความว่าต้องทำสิ่งสุดท้ายซ้ำ เราสามารถทำมันได้:
กราฟ = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,1], [ร=2]}
จะเป็นอย่างไรหากแต่ละจุดไม่สำคัญ และมีเพียงกราฟเท่านั้นที่มีความสำคัญ เราสามารถรวมสามส่วนสุดท้ายเหล่านั้นได้ดังนี้:
กราฟ = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,3]}
มันสั้นลงเล็กน้อยจากที่เคยเป็นมา
วิธีที่ 3
ลองทำอย่างอื่นดู
y=0, 0≤x≤3
x=0, 0≤y≤3
y=x, 3≤x≤5
y=2.5x-7.5, 5≤x≤7
y=-3x+29, 7≤x≤8
y=-3x+29, 8≤x≤9
y=-3x+29, 9≤x≤10
ที่นี่เรามีในแง่ของพีชคณิตบริสุทธิ์ อีกครั้ง หากคะแนนไม่สำคัญและมีเพียงกราฟเท่านั้นที่มีผล เราสามารถรวมสามรายการสุดท้ายได้
y=0, 0≤x≤3
x=0, 0≤y≤3
y=x, 3≤x≤5
y=2.5x-7.5, 5≤x≤7
y=-3x+29, 7≤x≤10
ตอนนี้วิธีที่คุณเลือกขึ้นอยู่กับความสามารถของคุณ บางทีคุณอาจจะเก่งคณิตศาสตร์และกราฟ ดังนั้นคุณจึงเลือกตัวเลือกสุดท้าย บางทีคุณอาจใช้การนำทางได้ดี ดังนั้นคุณจึงเลือกตัวเลือกที่สอง อย่างไรก็ตาม ในขอบเขตของคอมพิวเตอร์ คุณกำลังทำงานหลายประเภทและความสามารถของคอมพิวเตอร์ไม่ได้เปลี่ยนแปลงจริงๆ ดังนั้น อัลกอริธึมจึงได้รับการปรับให้เหมาะสมสำหรับงานที่ทำเสร็จ
จุดสำคัญอีกประการที่ควรทราบคือแต่ละวิธีอาศัยคีย์ คำแนะนำแต่ละชุดจะไร้ประโยชน์เว้นแต่คุณจะรู้ว่าต้องทำอย่างไร หากคุณไม่ทราบว่าคุณควรพล็อตแต่ละจุดและเชื่อมโยงจุดต่างๆ เข้าด้วยกัน จุดชุดแรกจะไม่มีความหมายใดๆ เว้นแต่คุณจะรู้ว่าตัวแปรแต่ละตัวหมายถึงอะไรในวิธีที่ 2 คุณจะไม่รู้วิธีใช้มัน เหมือนกับคีย์ของรหัสลับ คีย์นั้นยังเป็นส่วนสำคัญของการใช้อัลกอริธึม และบ่อยครั้ง คีย์นั้นถูกพบในชุมชนหรือผ่านทาง "มาตรฐาน"
การบีบอัดไฟล์
เมื่อคุณดาวน์โหลดไฟล์ .zip คุณจะแยกเนื้อหาออกเพื่อให้คุณสามารถใช้สิ่งที่อยู่ภายในได้ ทุกวันนี้ ระบบปฏิบัติการส่วนใหญ่สามารถเจาะลึกเข้าไปในไฟล์ .zip ได้เหมือนกับโฟลเดอร์ทั่วไป โดยทำทุกอย่างในเบื้องหลัง ในเครื่อง Windows 95 ของฉันเมื่อสิบกว่าปีที่แล้ว ฉันต้องแยกทุกอย่างด้วยตนเองก่อนจึงจะเห็นอะไรมากไปกว่าชื่อไฟล์ข้างใน นั่นเป็นเพราะสิ่งที่เก็บไว้ในดิสก์เป็นไฟล์ .zip นั้นไม่อยู่ในรูปแบบที่ใช้งานได้ ลองนึกถึงโซฟาแบบดึงออกได้ เมื่อต้องการใช้เป็นเตียงนอน คุณต้องถอดเบาะออกแล้วคลี่ออก ซึ่งจะกินพื้นที่มากขึ้น เมื่อไม่ต้องการใช้หรือต้องการขนส่ง คุณสามารถพับกลับขึ้นได้
อัลกอริธึมการบีบอัดได้รับการปรับและปรับให้เหมาะสมโดยเฉพาะสำหรับประเภทของไฟล์ที่เป็นเป้าหมาย ตัวอย่างเช่น รูปแบบเสียง แต่ละรายการใช้วิธีการจัดเก็บข้อมูลที่แตกต่างกัน ซึ่งเมื่อถอดรหัสโดยตัวแปลงสัญญาณเสียง จะให้ไฟล์เสียงที่คล้ายกับรูปคลื่นดั้งเดิม สำหรับข้อมูลเพิ่มเติมเกี่ยวกับความแตกต่างเหล่านี้ โปรดดูบทความก่อนหน้าของเรา อะไรคือความแตกต่างระหว่างรูปแบบเสียงทั้งหมดเหล่านี้ รูปแบบเสียงที่ไม่สูญเสียข้อมูลและไฟล์ .zip มีสิ่งหนึ่งที่เหมือนกัน นั่นคือ ทั้งคู่ให้ข้อมูลต้นฉบับในรูปแบบที่แน่นอนหลังจากกระบวนการคลายการบีบอัด ตัวแปลงสัญญาณเสียงที่สูญหายใช้วิธีการอื่นเพื่อประหยัดพื้นที่ดิสก์ เช่น การตัดความถี่ที่หูมนุษย์ไม่ได้ยิน และการปรับรูปคลื่นในส่วนต่างๆ ให้เรียบเพื่อกำจัดรายละเอียดบางส่วน ในท้ายที่สุด แม้ว่าเราอาจไม่สามารถได้ยินความแตกต่างระหว่างแทร็ก MP3 และแทร็กซีดีได้ แต่ก็ขาดข้อมูลในอดีตอย่างแน่นอน
การเข้ารหัสข้อมูล
อัลกอริทึมยังใช้สำหรับการรักษาความปลอดภัยข้อมูลหรือสายการสื่อสาร แทนที่จะจัดเก็บข้อมูลเพื่อให้ใช้พื้นที่ดิสก์น้อยลง ข้อมูลจะถูกจัดเก็บในลักษณะที่โปรแกรมอื่นตรวจไม่พบ หากมีคนขโมยฮาร์ดไดรฟ์ของคุณและเริ่มสแกน พวกเขาสามารถดึงข้อมูลได้แม้ในขณะที่คุณลบไฟล์เพราะตัวข้อมูลยังคงอยู่ แม้ว่าตำแหน่งการส่งต่อไปยังฮาร์ดไดรฟ์นั้นจะหายไปก็ตาม เมื่อข้อมูลถูกเข้ารหัส อะไรก็ตามที่เก็บไว้จะดูไม่เหมือนที่มันเป็น โดยปกติแล้วจะดูเป็นแบบสุ่ม ราวกับว่าการแตกออกได้ก่อตัวขึ้นตามกาลเวลา คุณยังสามารถจัดเก็บข้อมูลและทำให้ปรากฏเป็นไฟล์ประเภทอื่นได้ ไฟล์รูปภาพและไฟล์เพลงนั้นดีสำหรับสิ่งนี้ เนื่องจากอาจมีขนาดค่อนข้างใหญ่โดยไม่ทำให้เกิดความสงสัย ทั้งหมดนี้ทำได้โดยใช้อัลกอริธึมทางคณิตศาสตร์ ซึ่งรับอินพุตบางประเภทแล้วแปลงเป็นเอาต์พุตประเภทอื่นที่เฉพาะเจาะจงมาก สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการเข้ารหัส โปรดดูที่ HTG อธิบาย: การเข้ารหัสคืออะไรและทำงานอย่างไร
อัลกอริธึมเป็นเครื่องมือทางคณิตศาสตร์ที่ใช้ประโยชน์ได้หลากหลายในด้านวิทยาการคอมพิวเตอร์ พวกเขาทำงานเพื่อให้เส้นทางระหว่างจุดเริ่มต้นและจุดสิ้นสุดในลักษณะที่สอดคล้องกัน และให้คำแนะนำในการปฏิบัติตาม รู้มากกว่าสิ่งที่เราเน้น? แบ่งปันคำอธิบายของคุณในความคิดเห็น!