อ่าน 2 นาที
การคำนวณล่วงหน้า
ใน อัลกอริทึม การ คำนวณล่วงหน้า (precomputation) คือการคำนวณ เบื้องต้น ก่อน เริ่มการ ทำงาน เพื่อสร้าง ตารางค้นหา (lookup table)...
การคำนวณล่วงหน้า

ในอัลกอริทึม การ คำนวณล่วงหน้า (precomputation) คือการคำนวณเบื้องต้นก่อนเริ่มการทำงานเพื่อสร้างตารางค้นหา (lookup table)ที่อัลกอริทึมสามารถใช้เพื่อหลีกเลี่ยงการคำนวณซ้ำทุกครั้งที่เรียกใช้งาน การคำนวณล่วงหน้ามักใช้ในอัลกอริทึมที่ขึ้นอยู่กับผลลัพธ์ของการคำนวณที่มีค่าใช้จ่ายสูง ซึ่งไม่ได้ขึ้นอยู่กับข้อมูลป้อนเข้าของอัลกอริทึม ตัวอย่างง่ายๆ ของการคำนวณล่วงหน้าคือการใช้ ค่าคงที่ทางคณิตศาสตร์ ที่กำหนดไว้ตายตัวเช่นπและeแทนที่จะคำนวณค่าประมาณของค่าเหล่านั้นให้มีความแม่นยำตามที่ต้องการในขณะทำงาน
ในฐานข้อมูลคำว่าmaterializationใช้เพื่ออ้างถึงการจัดเก็บผลลัพธ์ของการคำนวณล่วงหน้า[ 1 ] [ 2 ]เช่นในmaterialized view [ 3 ] [ 4 ]
ภาพรวม
การคำนวณผลลัพธ์ระดับกลางล่วงหน้าในตอนเริ่มต้นการทำงานของอัลกอริทึม มักจะช่วยเพิ่มประสิทธิภาพของอัลกอริทึมได้อย่างมาก วิธีนี้จะเป็นประโยชน์เมื่อค่าอินพุตอย่างน้อยหนึ่งค่าถูกจำกัดอยู่ในช่วงที่เล็กพอที่จะสามารถจัดเก็บผลลัพธ์ไว้ในหน่วยความจำขนาดที่เหมาะสมได้ เนื่องจากการเข้าถึงหน่วยความจำมีความซับซ้อนของเวลาคงที่ (ยกเว้น ความล่าช้า ในการแคช ) อัลกอริทึมใดๆ ที่มีส่วนประกอบที่มีประสิทธิภาพแย่กว่าค่าคงที่ในช่วงอินพุตขนาดเล็ก สามารถปรับปรุงได้โดยการคำนวณค่าล่วงหน้า ในบางกรณี อัลกอริทึมการประมาณค่าที่มีประสิทธิภาพสามารถได้มาจากการคำนวณ ชุดย่อยของค่าแบบ ไม่ต่อเนื่องและทำการประมาณค่าในช่วงค่าอินพุตระดับกลาง เนื่องจาก1การประมาณค่าก็เป็นการดำเนินการเชิงเส้นเช่นกัน
ประวัติศาสตร์
ก่อนการมาถึงของคอมพิวเตอร์ผู้คนใช้ตารางค้นหา ค่าที่พิมพ์ออกมาเพื่อเร่งความเร็วในการคำนวณด้วยมือของฟังก์ชันที่ซับซ้อน เช่น ใน ตารางตรีโกณมิติตารางลอการิทึมและตาราง ฟังก์ชันความหนาแน่น ทางสถิติ[ 5 ] เด็กนักเรียนมักถูกสอนให้ท่องจำ " ตารางการคูณ " เพื่อหลีกเลี่ยงการคำนวณตัวเลขที่ใช้บ่อยที่สุด (ไม่เกิน 9 x 9 หรือ 12 x 12) แม้แต่ในสมัยคริสต์ศักราช 493 วิกตอริอุสแห่งอากีแตนได้เขียนตารางการคูณ 98 คอลัมน์ ซึ่งให้ผลคูณของทุกจำนวนตั้งแต่ 2 ถึง 50 ครั้ง (ในตัวเลขโรมัน ) และแถวต่างๆ เป็น "รายการตัวเลขที่เริ่มต้นด้วยหนึ่งพัน ลดลงทีละร้อยถึงหนึ่งร้อย จากนั้นลดลงทีละสิบถึงสิบ จากนั้นลดลงทีละหนึ่งถึงหนึ่ง และจากนั้นเศษส่วนลงไปถึง 1/144" [ 6 ]
ตัวอย่าง
แม้แต่การใช้งาน ฟังก์ชันตรีโกณมิติแบบดิจิทัลในคอมพิวเตอร์สมัยใหม่ก็มักจะใช้ตารางค้นหาที่คำนวณไว้ล่วงหน้าเพื่อจัดหาค่าสัมประสิทธิ์สำหรับ อั ลกอริธึมการประมาณค่า หรือเพื่อเริ่มต้นอัลกอริธึมการประมาณค่าแบบ ต่อเนื่อง
การโจมตีระบบเข้ารหัสลับ จำนวนมาก เกี่ยวข้องกับการคำนวณล่วงหน้า
ตัวอย่างของการคำนวณล่วงหน้าขนาดใหญ่ซึ่งเป็นส่วนหนึ่งของอัลกอริธึมที่มีประสิทธิภาพในยุคปัจจุบัน ได้แก่:
- โต๊ะสีรุ้ง
- แฮชที่สมบูรณ์แบบ
- การโจมตีลูกบาศก์
- โครงสร้างต้นไม้ BSPที่คำนวณไว้ล่วงหน้าสำหรับการคำนวณการมองเห็นในกราฟิก 3 มิติ
- การคำนวณ ค่าความสว่างล่วงหน้าสำหรับการให้แสงในกราฟิก 3 มิติ
คอมไพเลอร์ใช้การคำนวณล่วงหน้าอย่างกว้างขวางเพื่อเพิ่มความเร็วในการทำงานของโค้ดที่ได้ การคำนวณล่วงหน้านี้สามารถมองได้ว่าเป็นรูปแบบหนึ่งของการประเมินค่าบางส่วนของโค้ดโปรแกรม ตัวอย่างของการคำนวณล่วงหน้าประเภทนี้ ได้แก่การวิเคราะห์การไหลของข้อมูลและขั้นตอน การลดความซับซ้อน
ดูเพิ่มเติม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การคำนวณล่วงหน้า
ใน อัลกอริทึม การ คำนวณล่วงหน้า (precomputation) คือการคำนวณ เบื้องต้น ก่อน เริ่มการ ทำงาน เพื่อสร้าง ตารางค้นหา (lookup table)...
ภาพรวม
การคำนวณผลลัพธ์ระดับกลางล่วงหน้าในตอนเริ่มต้นการทำงานของอัลกอริทึม มักจะช่วยเพิ่ม ประสิทธิภาพของอัลกอริทึม ได้อย่างมาก วิธีนี้จะเป็นประโยชน์เมื่อค่าอินพุตอย่างน้อยหนึ่งค่าถูกจำกัดอยู่ในช่วงที่เล็กพอที่จะสามารถจัดเก็บผลลัพธ์ไว้ในหน่วยความจำขนาดที่เหมาะสมได้...
ประวัติศาสตร์
ก่อนการมาถึงของคอมพิวเตอร์ผู้คนใช้ ตารางค้นหา ค่าที่พิมพ์ออกมาเพื่อเร่งความเร็วในการคำนวณด้วยมือของฟังก์ชันที่ซับซ้อน เช่น ใน ตารางตรีโกณมิติ ตาราง ลอการิทึม และตาราง ฟังก์ชันความหนาแน่น ทาง สถิติ [ 5 ] เด็กนักเรียนมักถูกสอนให้ท่องจำ " ตารางการคูณ "...
ตัวอย่าง
แม้แต่การใช้งาน ฟังก์ชันตรีโกณมิติ แบบดิจิทัลในคอมพิวเตอร์สมัยใหม่ก็มักจะใช้ตารางค้นหาที่คำนวณไว้ล่วงหน้าเพื่อจัดหาค่าสัมประสิทธิ์สำหรับ อั ลกอริธึ มการประมาณค่า หรือเพื่อเริ่มต้น อัลกอริธึมการประมาณค่า แบบ ต่อเนื่อง