อ่าน 7 นาที
การคำนวณเชิงสุ่ม
การคำนวณเชิงสุ่ม (Stochastic computing)คือชุดของเทคนิคที่ใช้กระแสของบิตสุ่มแทนค่าต่อเนื่อง การคำนวณที่ซับซ้อนสามารถทำได้โดยการดำเนินการแบบบิตต่อบิตอย่างง่ายบนกระแสเหล่านั้น
การคำนวณเชิงสุ่ม
การคำนวณเชิงสุ่ม (Stochastic computing)คือชุดของเทคนิคที่ใช้กระแสของบิตสุ่มแทนค่าต่อเนื่อง การคำนวณที่ซับซ้อนสามารถทำได้โดยการดำเนินการแบบบิตต่อบิตอย่างง่ายบนกระแสเหล่านั้น การคำนวณเชิงสุ่มแตกต่างจากการศึกษาเกี่ยวกับอัลกอริทึมแบบสุ่ม
แรงจูงใจและตัวอย่างง่ายๆ
สมมติว่ากำหนดค่า มาให้แล้ว และเราต้องการคำนวณค่าการคำนวณเชิงสุ่มจะดำเนินการนี้โดยใช้ความน่าจะเป็นแทนการคำนวณทางคณิตศาสตร์
โดยเฉพาะอย่างยิ่ง สมมติว่ามีกระแสบิตสุ่มอิสระสองกระแสที่เรียกว่าจำนวนสุ่ม s (เช่นกระบวนการเบอร์นูลลี ) โดยที่ความน่าจะเป็นของเลข 1 ในกระแสแรกคือและความน่าจะเป็นในกระแสที่สองคือเราสามารถนำการดำเนินการ AND ทางตรรกะ มาใช้ กับกระแสทั้งสองได้
| 1 | 0 | 1 | 1 | 0 | 1 | ... | |
| 1 | 1 | 0 | 1 | 1 | 0 | ... | |
| 1 | 0 | 0 | 1 | 0 | 0 | ... |
ความน่าจะเป็นที่จะได้เลข 1 ในกระแสข้อมูลขาออกคือ. โดยการสังเกตบิตข้อมูลขาออกจำนวนมากพอและวัดความถี่ของเลข 1 จะสามารถประมาณค่าได้ด้วยความแม่นยำในระดับที่ต้องการ
การดำเนินการข้างต้นแปลงการคำนวณที่ค่อนข้างซับซ้อน (การคูณของและ) ให้เป็นชุดของการดำเนินการที่ง่ายมาก (การประเมินค่า) บนบิตสุ่ม เพื่อให้เห็นภาพชัดเจนขึ้น สมมติว่าเรามีตารางความจริงของเกต AND การตีความแบบดั้งเดิมคือเอาต์พุตจะเป็นจริงก็ต่อเมื่ออินพุต A และ B เป็นจริงเท่านั้น อย่างไรก็ตาม หากตีความตารางในแนวตั้ง (0011) AND (0101) จะเป็น (0001) นั่นคือ 1/2 x 1/2 = 1/4 ซึ่งเป็นการคูณทางคณิตศาสตร์อย่างแท้จริง เนื่องจากข้อมูลถูกนำเสนอในรูปแบบการแจกแจงความน่าจะเป็นการคูณความน่าจะเป็นจึงเป็นการดำเนินการ AND อย่างแท้จริง
| เอ | บี | ออก |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
โดยทั่วไปแล้ว การคำนวณเชิงสุ่มจะแสดงตัวเลขในรูปของกระแสบิตสุ่ม และสร้างตัวเลขขึ้นใหม่โดยการคำนวณความถี่ การคำนวณจะดำเนินการกับกระแสบิตเหล่านั้น และแปลงการดำเนินการที่ซับซ้อนบนและให้เป็นการดำเนินการที่เรียบง่ายบนการแสดงกระแสบิต (เนื่องจากวิธีการสร้างใหม่ อุปกรณ์ที่ทำการดำเนินการเหล่านี้บางครั้งเรียกว่าโปรเซสเซอร์เฉลี่ยเชิงสุ่ม) ในแง่สมัยใหม่ การคำนวณเชิงสุ่มสามารถมองได้ว่าเป็นการตีความการคำนวณในแง่ของความน่าจะเป็น ซึ่งจะถูกประเมินด้วยตัวสุ่มแบบกิบส์ นอกจาก นี้ยังสามารถตีความได้ว่าเป็นคอมพิวเตอร์ แบบผสมผสานระหว่าง อนาล็อกและดิจิทัล
ประวัติศาสตร์

การคำนวณแบบสุ่มได้รับการแนะนำครั้งแรกในบทความบุกเบิกโดยJohn von Neumannในปี 1953 [ 1 ]อย่างไรก็ตาม ทฤษฎีนี้ไม่สามารถพัฒนาได้อย่างสมบูรณ์จนกระทั่งความก้าวหน้าในการคำนวณในช่วงทศวรรษ 1960 [ 2 ] [ 3 ] ส่วนใหญ่ผ่านความพยายามพร้อมกันและแบบขนานในสหรัฐอเมริกา[ 4 ] และสหราชอาณาจักร[ 5 ] ในช่วงปลายทศวรรษ 1960 ความสนใจได้หันไปที่การออกแบบฮาร์ดแวร์เฉพาะทางเพื่อทำการคำนวณแบบสุ่ม เครื่องเหล่านี้จำนวนมาก[ 6 ] ถูกสร้างขึ้นระหว่างปี 1969 ถึง 1974; RASCEL [ 7 ] ปรากฏอยู่ในบทความนี้
แม้ว่าจะมีความสนใจอย่างมากในช่วงทศวรรษ 1960 และ 1970 แต่การคำนวณแบบสุ่มก็ไม่สามารถแข่งขันกับตรรกะดิจิทัลแบบดั้งเดิมได้ในที่สุด ด้วยเหตุผลที่กล่าวไว้ด้านล่าง การประชุมวิชาการนานาชาติเกี่ยวกับการคำนวณแบบสุ่มครั้งแรก (และครั้งสุดท้าย) [ 8 ] จัดขึ้นในปี 1978 การวิจัยที่กระตือรือร้นในด้านนี้ลดลงในช่วงไม่กี่ปีถัดมา
แม้ว่าการคำนวณแบบสุ่มจะลดลงในฐานะวิธีการคำนวณทั่วไป แต่ก็แสดงให้เห็นถึงศักยภาพในแอปพลิเคชันหลายอย่าง การวิจัยแบบดั้งเดิมมุ่งเน้นไปที่งานบางอย่างในการเรียนรู้ของเครื่องและการควบคุม[ 9 ] [ 10 ] เมื่อไม่นานมานี้ ความสนใจได้หันไปสู่การถอดรหัสแบบสุ่ม ซึ่งใช้การคำนวณแบบสุ่มในการถอดรหัสรหัสแก้ไขข้อผิดพลาด[ 11 ]เมื่อไม่นานมานี้ วงจรแบบสุ่มได้ถูกนำมาใช้ประสบความสำเร็จใน งาน ประมวลผลภาพเช่นการตรวจจับขอบ[ 12 ]และการกำหนดเกณฑ์ภาพ[ 13 ] ความก้าวหน้าล่าสุดในวงจรแบบสุ่มยังแสดงให้เห็นถึงข้อได้เปรียบด้านความเร็วและประสิทธิภาพการใช้พลังงานที่น่าสนใจใน การเร่งความเร็วฮาร์ดแวร์ปัญญาประดิษฐ์ (AI) บนการประมวลผลแบบเอดจ์
จุดแข็งและจุดอ่อน
แม้ว่าการคำนวณแบบสุ่ม (stochastic computing) จะล้มเหลวในเชิงประวัติศาสตร์ แต่ก็อาจยังคงมีความเกี่ยวข้องสำหรับการแก้ปัญหาบางอย่าง เพื่อให้เข้าใจว่าเมื่อใดที่การคำนวณแบบสุ่มยังคงมีความเกี่ยวข้อง การเปรียบเทียบการคำนวณแบบสุ่มกับวิธีการคำนวณดิจิทัลแบบดั้งเดิมจึงเป็นสิ่งที่มีประโยชน์
จุดแข็ง
สมมติว่าเราต้องการคูณตัวเลขสองตัวที่มีความแม่นยำระดับบิต โดยใช้ วิธี การคูณแบบยาว ทั่วไป เราจำเป็นต้องดำเนิน การหลายอย่าง แต่ด้วยการคำนวณแบบสุ่ม เราสามารถใช้การดำเนินการ AND กับบิตจำนวนเท่าใดก็ได้ และค่าที่คาดหวังจะถูกต้องเสมอ (อย่างไรก็ตาม หากจำนวนตัวอย่างน้อย ความแปรปรวนจะทำให้ผลลัพธ์ที่แท้จริงไม่แม่นยำอย่างมาก)
ยิ่งไปกว่านั้น การทำงานพื้นฐานในตัวคูณดิจิทัลคือ วงจรบวกเต็ม (full adder) ในขณะที่คอมพิวเตอร์เชิงสุ่ม (stochastic computer) ต้องการเพียงแค่เกต AND เท่านั้น นอกจากนี้ ตัวคูณดิจิทัลจะต้องการสายอินพุตจำนวนมาก ในขณะที่ตัวคูณเชิงสุ่มต้องการเพียงสายอินพุตสองเส้น (อย่างไรก็ตาม หากตัวคูณดิจิทัลแปลงเอาต์พุตเป็นอนุกรม ก็จะต้องการสายอินพุตเพียงสองเส้นเช่นกัน)
นอกจากนี้ การคำนวณแบบสุ่มยังมีความทนทานต่อสัญญาณรบกวน หากบิตเพียงไม่กี่บิตในสตรีมเกิดการเปลี่ยนแปลง ข้อผิดพลาดเหล่านั้นจะไม่มีผลกระทบอย่างมีนัยสำคัญต่อผลลัพธ์
นอกจากนี้ องค์ประกอบการคำนวณแบบสุ่มยังสามารถทนต่อความคลาดเคลื่อนของเวลาการมาถึงของอินพุตได้ วงจรทำงานได้อย่างถูกต้องแม้ว่าอินพุตจะไม่ตรงกันตามเวลา ส่งผลให้ระบบแบบสุ่มสามารถออกแบบให้ทำงานโดยใช้สัญญาณนาฬิกาที่สร้างขึ้นในพื้นที่ราคาไม่แพง แทนที่จะใช้สัญญาณนาฬิกาทั่วโลกและเครือข่ายกระจายสัญญาณนาฬิกาที่มีราคาแพง[ 14 ]
ในที่สุด การคำนวณแบบสุ่มจะให้ค่าประมาณของคำตอบที่แม่นยำมากขึ้นเมื่อเราขยายกระแสบิต โดยเฉพาะอย่างยิ่ง จะให้ค่าประมาณคร่าวๆ อย่างรวดเร็ว คุณสมบัตินี้มักเรียกว่าความแม่นยำแบบก้าวหน้าซึ่งบ่งชี้ว่าความแม่นยำของตัวเลขแบบสุ่ม (กระแสบิต) เพิ่มขึ้นเมื่อการคำนวณดำเนินไป [ 15 ] ราวกับว่าบิตที่มีนัยสำคัญที่สุดของตัวเลขมาถึงก่อนบิตที่มีนัยสำคัญน้อยที่สุดซึ่งแตกต่างจากวงจรเลขคณิต แบบดั้งเดิม ที่บิตที่มีนัยสำคัญที่สุดมักจะมาถึงเป็นลำดับสุดท้าย ในระบบวนซ้ำบางระบบ คำตอบบางส่วนที่ได้จากความแม่นยำแบบก้าวหน้าสามารถให้ผลตอบรับที่เร็วกว่าวิธีการคำนวณแบบดั้งเดิม ซึ่งนำไปสู่การบรรจบกันที่เร็วขึ้น
จุดอ่อน
การคำนวณแบบสุ่มนั้น โดยธรรมชาติแล้วเป็นการสุ่ม เมื่อเราตรวจสอบกระแสบิตแบบสุ่มและพยายามสร้างค่าพื้นฐานขึ้นมาใหม่ ความแม่นยำที่แท้จริงสามารถวัดได้จากความแปรปรวนของตัวอย่างของเรา ในตัวอย่างข้างต้น ตัวคูณดิจิทัลคำนวณตัวเลขด้วยความแม่นยำระดับบิต ดังนั้นความแม่นยำจึงเป็นถ้าเราใช้กระแสบิตแบบสุ่มเพื่อประมาณค่าตัวเลขและต้องการให้ค่าเบี่ยงเบนมาตรฐานของการประมาณค่าคำตอบของเรามีอย่างน้อยเราจะต้องใช้ตัวอย่างจำนวนมาก ซึ่งแสดงถึงการเพิ่มขึ้นของงานแบบทวีคูณ อย่างไรก็ตาม ในบางแอปพลิเคชัน คุณสมบัติความแม่นยำที่เพิ่มขึ้นของการคำนวณแบบสุ่มสามารถนำมาใช้เพื่อชดเชยการสูญเสียแบบทวีคูณนี้ได้
ประการที่สอง การคำนวณแบบสุ่ม (stochastic computing) จำเป็นต้องมีวิธีการสร้างกระแสบิตแบบสุ่มที่มีอคติ ในทางปฏิบัติ กระแสเหล่านี้ถูกสร้างขึ้นโดยใช้ ตัวสร้างตัวเลขสุ่ม เทียม (pseudo-random number generators ) น่าเสียดายที่การสร้างบิต (แบบสุ่ม) นั้นมีต้นทุนค่อนข้างสูง (เมื่อเทียบกับค่าใช้จ่ายของวงจรบวกเต็ม (full adder)) ดังนั้น ข้อได้เปรียบในระดับเกตของการคำนวณแบบสุ่มจึงมักจะหายไป
ประการที่สาม การวิเคราะห์การคำนวณแบบสุ่มถือว่ากระแสบิตเป็นอิสระต่อกัน (ไม่สัมพันธ์กัน) หากสมมติฐานนี้ไม่เป็นจริง การคำนวณแบบสุ่มอาจล้มเหลวอย่างมาก ตัวอย่างเช่น หากเราพยายามคำนวณโดยการคูณกระแสบิตด้วย ตัวมันเอง กระบวนการจะล้มเหลว เนื่องจากการคำนวณแบบสุ่มจะให้ผลลัพธ์เป็นซึ่งโดยทั่วไปแล้วจะไม่เป็นจริง (เว้นแต่จะเป็น0 หรือ 1) ในระบบที่มีการป้อนกลับ ปัญหาของการลดความสัมพันธ์อาจแสดงออกมาในรูปแบบที่ซับซ้อนมากขึ้น ระบบของโปรเซสเซอร์แบบสุ่มมีแนวโน้มที่จะเกิด การล็อกซึ่งการป้อนกลับระหว่างส่วนประกอบต่างๆ สามารถทำให้เกิดสถานะติดตายได้[ 16 ] ต้องใช้ความพยายามอย่างมากในการลดความสัมพันธ์ของระบบเพื่อพยายามแก้ไขปัญหาการล็อก
ประการที่สี่ แม้ว่าฟังก์ชันดิจิทัลบางฟังก์ชันจะมีฟังก์ชันสุ่มที่เทียบเคียงได้ง่ายมาก (เช่น การแปลงระหว่างการคูณและเกต AND) แต่หลายฟังก์ชันก็ไม่มี การพยายามแสดงฟังก์ชันเหล่านี้ในรูปแบบสุ่มอาจทำให้เกิดปัญหาต่างๆ มากมาย ตัวอย่างเช่น การถอดรหัสแบบสุ่มต้องคำนวณฟังก์ชันซึ่งไม่มีการดำเนินการบิตเดียวที่สามารถคำนวณฟังก์ชันนี้ได้ วิธีแก้ปัญหาทั่วไปคือการสร้างบิตเอาต์พุตที่สัมพันธ์กัน ซึ่งดังที่เราได้เห็นข้างต้นแล้ว อาจก่อให้เกิดปัญหามากมาย
ฟังก์ชันอื่นๆ (เช่น ตัวดำเนินการหาค่าเฉลี่ย) จำเป็นต้องมีการลดหรือเพิ่มจำนวนข้อมูลในสตรีม การแลกเปลี่ยนระหว่างความแม่นยำและหน่วยความจำอาจเป็นเรื่องท้าทาย
การถอดรหัสแบบสุ่ม
แม้ว่าการคำนวณแบบสุ่มจะมีข้อบกพร่องอยู่หลายประการเมื่อพิจารณาว่าเป็นวิธีการคำนวณทั่วไป แต่ก็มีแอปพลิเคชันบางอย่างที่แสดงให้เห็นถึงจุดแข็งของมัน ตัวอย่างที่โดดเด่นอย่างหนึ่งคือการถอดรหัสแก้ไขข้อผิดพลาดบางประเภท
ในการพัฒนาที่ไม่เกี่ยวข้องกับการคำนวณเชิงสุ่ม ได้มีการพัฒนาวิธีการที่มีประสิทธิภาพสูงในการถอดรหัสLDPCโดยใช้ อัลกอริธึม การแพร่กระจายความเชื่อการแพร่กระจายความเชื่อในบริบทนี้เกี่ยวข้องกับการประเมินค่าพารามิเตอร์บางอย่างซ้ำๆ โดยใช้การดำเนินการพื้นฐานสองอย่าง (โดยพื้นฐานแล้วคือการดำเนินการ XOR เชิงความน่าจะเป็นและการดำเนินการหาค่าเฉลี่ย)
ในปี พ.ศ. 2546 นักวิจัยตระหนักว่าการดำเนินการทั้งสองนี้สามารถจำลองได้อย่างง่ายดายด้วยการคำนวณแบบสุ่ม[ 17 ] ยิ่งไปกว่านั้น เนื่องจากอัลกอริธึมการแพร่กระจายความเชื่อเป็นแบบวนซ้ำ การคำนวณแบบสุ่มจึงให้โซลูชันบางส่วนที่อาจนำไปสู่การบรรจบกันที่เร็วขึ้น การใช้งานฮาร์ดแวร์ของตัวถอดรหัสแบบสุ่มได้รับการสร้างขึ้นบนFPGA [ 18 ] ผู้ สนับสนุนวิธีการเหล่านี้โต้แย้งว่าประสิทธิภาพของการถอดรหัสแบบสุ่มนั้นสามารถแข่งขันได้กับทางเลือกแบบดิจิทัล
วิธีการเชิงกำหนดสำหรับการคำนวณเชิงสุ่ม
วิธีการเชิงกำหนดของ SC ได้รับการพัฒนาขึ้นเพื่อทำการคำนวณที่แม่นยำอย่างสมบูรณ์ด้วยวงจร SC [ 19 ]หลักการสำคัญของวิธีการเหล่านี้คือ บิตทุกบิตของบิตสตรีมหนึ่งจะโต้ตอบกับบิตทุกบิตของบิตสตรีมอื่นเพียงครั้งเดียวเท่านั้น เพื่อให้ได้ผลลัพธ์ที่แม่นยำอย่างสมบูรณ์ด้วยวิธีการเหล่านี้ การดำเนินการจะต้องทำงานเป็นเวลาเท่ากับผลคูณของความยาวของบิตสตรีมอินพุต วิธีการเชิงกำหนดได้รับการพัฒนาขึ้นโดยอิงจากบิตสตรีมเอกภาค[ 20 ] [ 21 ]บิตสตรีมแบบสุ่มเทียม[ 22 ]และบิตสตรีมที่มีความคลาดเคลื่อนต่ำ[ 23 ]
รูปแบบต่างๆ ของการคำนวณเชิงสุ่ม
มีรูปแบบต่างๆ มากมายของแบบจำลองการคำนวณเชิงสุ่มพื้นฐาน สามารถหาข้อมูลเพิ่มเติมได้ในหนังสืออ้างอิงของ Mars และ Poppelbaum
การประมวลผลแบบกลุ่ม (Bundle Processing)เกี่ยวข้องกับการส่งบิตจำนวนคงที่แทนที่จะส่งเป็นกระแส ข้อดีอย่างหนึ่งของวิธีการนี้คือความแม่นยำที่ดีขึ้น เพื่อให้เข้าใจเหตุผล ลองสมมติว่าเราส่ง บิตจำนวนหนึ่ง ในการคำนวณแบบสุ่มทั่วไป เราสามารถแสดงความแม่นยำได้ค่าที่แตกต่างกันเล็กน้อย เนื่องจากความแปรปรวนของการประมาณค่า ในการประมวลผลแบบกลุ่ม เราสามารถแสดงความแม่นยำได้ค่าหนึ่งอย่างไรก็ตาม การประมวลผลแบบกลุ่มยังคงรักษาความทนทานต่อข้อผิดพลาดเช่นเดียวกับการประมวลผลแบบสุ่มทั่วไป
การประมวลผลแบบเออร์โกดิก (Ergodic Processing)เกี่ยวข้องกับการส่งกระแสของชุดข้อมูล ซึ่งเป็นการรวมข้อดีของการประมวลผลแบบสุ่มทั่วไปและการประมวลผลแบบชุดข้อมูลเข้าด้วยกัน
การประมวลผลแบบ Burst Processingจะเข้ารหัสตัวเลขโดยใช้ลำดับฐานที่เพิ่มขึ้นเรื่อยๆ ตัวอย่างเช่น เราจะเข้ารหัส 4.3 ด้วยตัวเลขทศนิยมสิบหลักดังนี้
- 4444444555
เนื่องจากค่าเฉลี่ยของกระแสข้อมูลก่อนหน้าคือ 4.3 การนำเสนอแบบนี้มีข้อดีหลายประการ: ไม่มีการสุ่มเนื่องจากตัวเลขปรากฏในลำดับที่เพิ่มขึ้น ดังนั้นจึงหลีกเลี่ยงปัญหาของ PRNG ได้ แต่ยังคงรักษาข้อดีหลายประการของการคำนวณแบบสุ่ม (เช่น การประมาณค่าบางส่วนของคำตอบ) นอกจากนี้ ยังคงรักษาความแม่นยำเชิงเส้นของการประมวลผลแบบกลุ่มและแบบเออร์โกดิกไว้ได้
ดูเพิ่มเติม
อ่านเพิ่มเติม
- Gaines, Brian R. (1967). "เทคนิคการระบุตัวตนด้วยคอมพิวเตอร์เชิงสุ่ม" (PDF) . รายงานการประชุมสัมมนา IFAC เรื่อง "ปัญหาของการระบุตัวตนในระบบควบคุมอัตโนมัติ" ส่วนที่ 6 เครื่องมือระบุตัวตนพิเศษ กรุงปราก 12-19 มิถุนายน 1967 . สืบค้นเมื่อ 11 พฤศจิกายน 2013 .
- Alaghi, Armin; Hayes, John P. (2013). "การสำรวจการคำนวณเชิงสุ่ม" (PDF) . ACM Transactions on Embedded Computing Systems . 12 (2s): 1– 19. CiteSeerX 10.1.1.296.4448 . doi : 10.1145/2465787.2465794 . S2CID 4689958 . สืบค้นเมื่อ2013-11-11 .
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การคำนวณเชิงสุ่ม
การคำนวณเชิงสุ่ม (Stochastic computing)คือชุดของเทคนิคที่ใช้กระแสของบิตสุ่มแทนค่าต่อเนื่อง การคำนวณที่ซับซ้อนสามารถทำได้โดยการดำเนินการแบบบิตต่อบิตอย่างง่ายบนกระแสเหล่านั้น
แรงจูงใจและตัวอย่างง่ายๆ
สมมติว่ากำหนดค่า มาให้แล้ว และเราต้องการคำนวณค่าการคำนวณเชิงสุ่มจะดำเนินการนี้โดยใช้ความน่าจะเป็นแทนการคำนวณทางคณิตศาสตร์ พี , q ∈ [ 0 , 1 ] {\displaystyle p,q\in [0,1]} พี × q {\displaystyle p\times q}
ประวัติศาสตร์
การคำนวณแบบสุ่มได้รับการแนะนำครั้งแรกในบทความบุกเบิกโดย John von Neumann ในปี 1953 [ 1 ] อย่างไรก็ตาม ทฤษฎีนี้ไม่สามารถพัฒนาได้อย่างสมบูรณ์จนกระทั่งความก้าวหน้าในการคำนวณในช่วงทศวรรษ 1960 [ 2 ] [ 3 ] ส่วนใหญ่ผ่านความพยายามพร้อมกันและแบบขนานในสหรัฐอเมริกา [ 4...
จุดแข็งและจุดอ่อน
แม้ว่าการคำนวณแบบสุ่ม (stochastic computing) จะล้มเหลวในเชิงประวัติศาสตร์ แต่ก็อาจยังคงมีความเกี่ยวข้องสำหรับการแก้ปัญหาบางอย่าง เพื่อให้เข้าใจว่าเมื่อใดที่การคำนวณแบบสุ่มยังคงมีความเกี่ยวข้อง...