อัลกอริทึมของ Shor
ต่อไปเราจะมาดูปัญหาการแยกตัวประกอบจำนวนเต็ม และดูว่าคอมพิวเตอร์ควอนตัมสามารถแก้ปัญหานี้ได้อย่างมีประสิทธิภาพด้วยการใช้การประมาณเฟสได้อย่างไร อัลกอริทึมที่เราจะได้มาคือ อัลกอริทึมของ Shor สำหรับการแยกตัวประกอบจำนวนเต็ม Shor ไม่ได้อธิบายอัลกอริทึมของตัวเองในแง่ของการประมาณเฟสโดยตรง แต่มันเป็นวิธีที่เป็นธรรมชาติและเข้าใจง่ายในการอธิบายว่ามันทำงานอย่างไร
เราจะเริ่มต้นด้วยการพูดถึงปัญหาระดับกลางที่เรียกว่า ปัญหาการหาอันดับ และดูว่าการประมาณเฟสให้วิธีแก้ปัญหานี้ได้อย่างไร จากนั้นเราจะดูว่าวิธีแก้ที่มีประสิทธิภาพสำหรับปัญหาการหาอันดับนำไปสู่วิธีแก้ที่มีประสิทธิภาพสำหรับปัญหาการแยกตัวประกอบจำนวนเต็มได้อย่างไร (เมื่อวิธีแก้ปัญหาหนึ่งให้วิธีแก้ปัญหาอีกปัญหาหนึ่งในลักษณะนี้ เราบอกว่าปัญหาที่สอง ลดรูป ไปสู่ปัญหาแรก — ดังนั้นในกรณีนี้เรากำลังลดรูปการแยกตัวประกอบจำนวนเต็มให้เป็นการหาอันดับ) ส่วนที่สองของอัลกอริทึม Shor นี้ไม่ได้ใช้การประมวลผลเชิงควอนตัมเลย แต่เป็นแบบคลาสสิกล้วนๆ การประมวลผลเชิงควอนตัมจำเป็นเฉพาะสำหรับการแก้ปัญหาการหาอันดับเท่านั้น
ปัญหาการหาอันดับ
ทฤษฎีจำนวนเบื้องต้น
เพื่ออธิบายปัญหาการหาอันดับและวิธีแก้ปัญหาด้วยการประมาณเฟส จะเป็นประโยชน์ถ้าเราเริ่มด้วยแนวคิดทฤษฎีจำนวนพื้นฐานสักสองสามอย่าง และแนะนำสัญลักษณ์ที่สะดวกไปพร้อมกัน
ก่อนอื่น สำหรับจำนวนเต็มบวก ใดๆ ให้นิยามเซต ดังนี้
ตัวอย่างเช่น และต่อๆ ไป
เซตเหล่านี้เป็นเซตของตัวเลข แต่เราสามารถมองมันได้มากกว่าแค่เซต โดยเฉพาะ เราสามารถคิดถึง การดำเนินการทางคณิตศาสตร์ บน เช่น การบวกและการคูณ — และถ้าเราตกลงที่จะนำคำตอบมอดุโล เสมอ (นั่นคือ หารด้วย แล้วเอาเศษเป็นผลลัพธ์) เราจะยังอยู่ในเซตนี้เสมอเมื่อทำการดำเนินการเหล่านี้ การดำเนินการสองอย่างคือการบวกและการคูณ ทั้งคู่นำมาด้วยมอดุโล ทำให้ กลายเป็น ริง ซึ่งเป็นประเภทวัตถุที่สำคัญมากในพีชคณิต
ตัวอย่างเช่น และ เป็นสมาชิกของ และถ้าเราคูณกันจะได้ ซึ่งเหลือเศษ เมื่อหารด้วย บางครั้งเราเขียนสิ่งนี้ดังนี้
แต่เราสามารถเขียนง่ายๆ ว่า ได้เช่นกัน หากชัดเจนว่าเราทำงานใน เพียงเพื่อให้สัญลักษณ์เรียบง่ายที่สุด
ตัวอย่างเช่น นี่คือตารางการบวกและตารางการคูณสำหรับ
ในบรรดาสมาชิก ตัวของ สมาชิก ที่ตอบสนอง มีความพิเศษ บ่อยครั้งเซตที่ประกอบด้วยสมาชิกเหล่านี้ถูกแทนด้วยดาวดังนี้
ถ้าเราเน้นที่การดำเนินการคูณ เซต ก่อรูป กรุป — โดยเฉพาะ กรุปอาเบเลียน — ซึ่งเป็นประเภทวัตถุสำคัญอีกอย่างในพีชคณิต เป็นข้อเท็จจริงพื้นฐานเกี่ยวกับเซตเหล่านี้ (และกรุปจำกัดโดยทั่วไป) ว่าถ้าเราเลือกสมาชิกใดๆ แล้วคูณ กับตัวเองซ้ำๆ เราจะได้จำนวน ในที่สุดเสมอ
สำหรับตัวอย่างแรก ลองใช้ เรามีว่า เพราะ และถ้าเราคูณ กับตัวเองจะได้ ดังที่ตารางข้างต้นยืนยัน
สำหรับตัวอย่างที่สอง ลองใช้ ถ้าเราผ่านตัวเลขจาก ถึง ตัวที่มี GCD เท่ากับ กับ มีดังนี้
สำหรับสมาชิกแต่ละตัว เราสามารถยกกำลังจำนวนนั้นเป็นเลขชี้กำลังจำนวนเต็มบวกเพื่อให้ได้ นี่คือกำลังที่น้อยที่สุดที่ใช้ได้:
โดยธรรมชาติเราทำงานใน สำหรับสมการทั้งหมดเหล่านี้ ซึ่งเราไม่ได้เขียนไว้ เรานัยว่ามันเป็นนัยโดยอ้อมเพื่อหลีกเลี่ยงความรกรุงรัง เราจะทำแบบนี้ต่อไปตลอดบทเรียนที่เหลือ
คำกล่าวปัญหาและความเชื่อมโยงกับการประมาณเฟส
ตอนนี้เราสามารถระบุปัญหาการหาอันดับได้
หรือในแง่ของสัญลักษณ์ที่เราแนะนำข้างต้น เราได้รับ และเรากำลังมองหาจำนวนเต็มบวกที่น้อยที่สุด ที่ทำให้ จำนวน นี้เรียกว่า อันดับ ของ มอดุโล
เพื่อเชื่อมปัญหาการหาอันดับกับการประมาณเฟส ลองคิดถึงการดำเนินการที่นิยามบนระบบที่มีสถานะคลาสสิกสอดคล้องกับ โดยเราคูณด้วยสมาชิกคงที่
เพื่อให้ชัดเจน เราทำการคูณใน ดังนั้นเป็นนัยว่าเราคิดผลคูณมอดุโล ภายในเคตทางขวามือของสมการ
ตัวอย่างเช่น ถ้าเราใช้ และ การกระทำของ บนฐานมาตรฐาน มีดังนี้
นี่คือการดำเนินการยูนิทารีเมื่อ เพราะมันสับเปลี่ยนสมาชิกของฐานมาตรฐาน ดังนั้นในฐานะเมทริกซ์มันคือเมทริกซ์การสับเปลี่ยน จากนิยามของมันชัดเจนว่าการดำเนินการนี้เป็นแบบดีเทอร์มินิสติก และวิธีง่ายๆ ที่จะเห็นว่ามันกลับได้คือคิดถึงอันดับ ของ มอดุโล และตระหนักว่าอินเวิร์สของ คือ
มีอีกวิธีหนึ่งในการคิดถึงอินเวิร์สที่ไม่ต้องรู้ (ซึ่งท้ายที่สุดเราก็กำลังพยายามคำนวณมันอยู่) สำหรับสมาชิกทุกตัว มีสมาชิกเดียวที่ไม่ซ้ำ ที่ตอบสนอง เสมอ เราแทนสมาชิก นี้ด้วย และสามารถคำนวณได้อย่างมีประสิทธิภาพ ส่วนขยายของอัลกอริทึม GCD ของ Euclid ทำได้โดยมีต้นทุนกำลังสองใน ดังนั้น
ดังนั้น การดำเนินการ ทั้งเป็นแบบดีเทอร์มินิสติกและกลับได้ ซึ่งหมายความว่ามันถูกอธิบายด้วยเมทริกซ์การสับเปลี่ยน และดังนั้นจึงเป็นยูนิทารี
ตอนนี้ลองคิดถึงเวกเตอร์เฉพาะและค่าเฉพาะของการดำเนินการ โดยสมมติว่า ดังที่เพิ่งโต้แย้งไว้ สมมติฐานนี้บอกเราว่า เป็นยูนิทารี
มีค่าเฉพาะ ค่าของ ซึ่งอาจมีค่าเฉพาะเดิมซ้ำหลายครั้ง และโดยทั่วไปมีอิสระในการเลือกเวกเตอร์เฉพาะที่สอดคล้องกัน — แต่เราไม่จำเป็นต้องกังวลเกี่ยวกับความเป็นไปได้ทั้งหมด ลองเริ่มง่ายๆ และระบุเวกเตอร์เฉพาะหนึ่งตัวของ
จำนวน คืออันดับของ มอดุโล ที่นี่และตลอดบทเรียนที่เหลือ ค่าเฉพาะที่เชื่อมโยงกับเวกเตอร์เฉพาะนี้คือ เพราะมันไม่เปลี่ยนเมื่อเราคูณด้วย
สิ่งนี้เกิดขึ้นเพราะ ดังนั้นสถานะฐานมาตรฐานแต่ละตัว จะถูกเลื่อนไปที่ สำหรับ และ จะถูกเลื่อนกลับมาที่ พูดอย่างไม่เป็นทางการ มันเหมือนกับเรากำลังคนช้าๆ แต่มันถูกคนจนสม่ำเสมอแล้วจึงไม่มีอะไรเปลี่ยนแปลง
นี่คืออีกตัวอย่างหนึ่งของเวกเตอร์เฉพาะของ ตัวนี้น่าสนใจกว่าในบริบทของการหาอันดับและการประมาณเฟส
หรือเราสามารถเขียนเวกเตอร์นี้โดยใช้การรวมดังนี้
ที่นี่เราเห็นจำนวนเชิงซ้อน ปรากฏขึ้นโดยธรรมชาติ เนื่องจากวิธีที่การคูณด้วย ทำงานมอดุโล คราวนี้ค่าเฉพาะที่สอดคล้องคือ เพื่อดูสิ่งนี้ เราสามารถคำนวณดังนี้ก่อน
จากนั้น เพราะ และ เราจะเห็นว่า
ดังนั้น
ด้วยเหตุผลเดียวกัน เราสามารถระบุคู่เวกเตอร์เฉพาะ/ค่าเฉพาะเพิ่มเติมสำหรับ ได้ สำหรับทุกการเลือก เรามีว่า
เป็นเวกเตอร์เฉพาะของ ที่มีค่าเฉพาะสอดคล้องคือ
มีเวกเตอร์เฉพาะอื่นๆ ของ แต่เราไม่จำเป็นต้องใส่ใจกับมัน — เราจะเน้นเฉพาะเวกเตอร์เฉพาะ ที่เราเพิ่งระบุไว้เท่านั้น
การหาอันดับผ่านการประมาณเฟส
เพื่อแก้ปัญหาการหาอันดับสำหรับการเลือก ที่กำหนด เราสามารถใช้กระบวนการประมาณเฟสกับการดำเนินการ
เพื่อทำสิ่งนี้ เราต้องสร้าง Circuit ควอนตัมที่สามารถนำ ไปใช้งานอย่างมีประสิทธิภาพได้ ไม่เพียงแค่ เท่านั้น แต่ยังรวมถึง และต่อๆ ไป ไปจนถึงเท่าที่จำเป็นเพื่อให้ได้การประมาณที่แม่นยำพอจากกระบวนการประมาณเฟส เราจะอธิบายว่าสามารถทำสิ่งนี้ได้อย่างไร และจะคำนวณว่าต้องการความแม่นยำมากแค่ไหนในภายหลัง
ลองเริ่มด้วยการดำเนินการ เพียงตัวเดียว โดยธรรมชาติ เพราะเราทำงานกับโมเดล Circuit ควอนตัม เราจะใช้สัญลักษณ์ไบนารีในการเข้ารหัสตัวเลขระหว่าง ถึง ตัวเลขที่ใหญ่ที่สุดที่เราต้องเข้ารหัสคือ ดังนั้นจำนวนบิตที่เราต้องการคือ
ตัวอย่างเช่น ถ้า เรามี นี่คือลักษณะการเข้ารหัสสมาชิกของ เป็นสตริงไบนารีความยาว
และตอนนี้ นี่คือนิยามที่แม่นยำของวิธีที่ ถูกนิยามเป็นการดำเนินการ -Qubit
ประเด็นคือแม้เราจะสนใจเฉพาะวิธีที่ ทำงานสำหรับ เราก็ต้องระบุวิธีที่มันทำงานสำหรับสถานะฐานมาตรฐานที่เหลืออีก ตัว — และเราต้องทำสิ่งนี้ในทางที่ยังคงให้เราได้การดำเนินการยูนิทารี การนิยาม เพื่อให้ไม่ทำอะไรกับสถานะฐานมาตรฐานที่เหลือนั้นบรรลุเป้าหมายนี้
โดยใช้อัลกอริทึมสำหรับการคูณและหารจำนวนเต็มที่กล่าวถึงในบทเรียนก่อนหน้า ร่วมกับวิธีการสำหรับการนำไปใช้งานแบบกลับได้และปราศจากขยะ เราสามารถสร้าง Circuit ควอนตัมที่ทำการดำเนินการ สำหรับทุกการเลือก ด้วยต้นทุน นี่คือวิธีหนึ่งที่สามารถทำได้
-
สร้าง Circuit สำหรับทำการดำเนินการ
โดยที่
โดยใช้วิธีที่อธิบายในบทเรียนก่อนหน้า สิ่งนี้ให้ Circuit ที่มีขนาด
-
สลับสองระบบ -Qubit โดยใช้ Gate สลับ ตัวเพื่อสลับ Qubit แต่ละตัว
-
คล้ายกับขั้นตอนแรก สร้าง Circuit สำหรับการดำเนินการ
โดยที่ คืออินเวิร์สของ ใน
โดยการเริ่มต้น Qubit ล่าง ตัวและประกอบสามขั้นตอน เราได้การแปลงดังนี้:
วิธีนี้ต้องการ Qubit พื้นที่ทำงาน แต่พวกมันจะถูกส่งคืนสู่สถานะเริ่มต้นที่ตอนท้าย ซึ่งช่วยให้เราใช้ Circuit เหล่านี้สำหรับการประมาณเฟสได้ ต้นทุนรวมของ Circuit ที่เราได้คือ
ในการทำ และต่อๆ ไป เราสามารถใช้วิธีเดียวกันนี้ เพียงแต่เปลี่ยน เป็น และต่อๆ ไป ในฐานะสมาชิกของ นั่นคือ สำหรับทุกกำลัง ที่เราเลือก เราสามารถสร้าง Circuit สำหรับ ไม่ใช่โดยการทำซ้ำ Circuit สำหรับ ครั้ง แต่โดยการคำนวณ แล้วใช้ Circuit สำหรับ
การคำนวณกำลัง คือปัญหา การยกกำลังมอดุลาร์ ที่กล่าวถึงในบทเรียนก่อนหน้า การคำนวณนี้สามารถทำได้ แบบคลาสสิก โดยใช้อัลกอริทึมสำหรับการยกกำลังมอดุลาร์ที่กล่าวถึงในบทเรียนก่อนหน้า (มักเรียกว่า อัลกอริทึมกำลัง ในทฤษฎีจำนวนเชิงคำนวณ) ที่จริง เราต้องการเฉพาะกำลัง กำลังสองของ 2 ของ โดยเฉพาะคือ และเราสามารถได้กำลังเหล่านี้โดยการยกกำลังสองซ้ำๆ ครั้ง การยกกำลังสองแต่ละครั้งสามารถทำได้โดย Circuit บูลีนที่มีขนาด
โดยพื้นฐานแล้ว สิ่งที่เราทำที่นี่คือการโอนปัญหาการทำซ้ำ มากถึง ครั้งไปให้การคำนวณแบบคลาสสิกที่มีประสิทธิภาพ และมันเป็นโชคดีที่สิ่งนี้เป็นไปได้! สำหรับการเลือก Circuit ควอนตัมโดยพลการในปัญหาการประมาณเฟส สิ่งนี้ไม่น่าจะเป็นไปได้ — และในกรณีนั้นต้นทุนที่ได้สำหรับการประมาณเฟสจะเพิ่มขึ้น แบบเอกซ์โปเนนเชียล ตามจำนวน Qubit ควบคุม
วิธีแก้เมื่อมีเวกเตอร์เฉพาะที่สะดวก
เพื่อทำความเข้าใจว่าเราสามารถแก้ปัญหาการหาอันดับโดยใช้การประมาณเฟสได้อย่างไร ลองเริ่มด้วยการสมมติว่า เราเรียกใช้กระบวนการประมาณเฟสกับการดำเนินการ โดยใช้เวกเตอร์เฉพาะ การหาเวกเตอร์เฉพาะนี้ไม่ง่าย ดังที่จะเห็นต่อไป ดังนั้นนี่จะยังไม่ใช่ตอนจบของเรื่อง — แต่มีประโยชน์ที่จะเริ่มตรงนี้
ค่าเฉพาะของ ที่สอดคล้องกับเวกเตอร์เฉพาะ คือ
นั่นคือ สำหรับ ดังนั้น ถ้าเราเรียกใช้กระบวนการประมาณเฟสกับ โดยใช้เวกเตอร์เฉพาะ เราจะได้การประมาณ โดยการคำนวณส่วนกลับเราจะสามารถเรียนรู้ ได้ — หากการประมาณของเราแม่นยำพอ
รายละเอียดมากขึ้น เมื่อเราเรียกใช้กระบวนการประมาณเฟสโดยใช้ Qubit ควบคุม ตัว สิ่งที่เราได้คือจำนวน เราใช้ เป็นการเดาสำหรับ ซึ่งคือ ในกรณีนี้ เพื่อคิดออกว่า คืออะไรจากการประมาณนี้ สิ่งที่เป็นธรรมชาติที่ทำคือคำนวณส่วนกลับของการประมาณและปัดเศษไปยังจำนวนเต็มที่ใกล้ที่สุด
ตัวอย่างเช่น สมมติว่า และเราทำการประมาณเฟสกับ พร้อมเวกเตอร์เฉพาะ โดยใช้บิตควบคุม บิต การประมาณ บิตที่ดีที่สุดของ คือ และเรามีโอกาสที่ค่อนข้างดี (ประมาณ ในกรณีนี้) ที่จะได้ผลลัพธ์ จากการประมาณเฟส เรามี
และการปัดเศษไปยังจำนวนเต็มที่ใกล้ที่สุดให้ ซึ่งเป็นคำตอบที่ถูกต้อง
ในทางกลับกัน ถ้าเราไม่ใช้ความแม่นยำเพียงพอ เราอาจไม่ได้คำตอบที่ถูกต้อง ตัวอย่างเช่น ถ้าเราใช้ Qubit ควบคุม ตัวในการประมาณเฟส เราอาจได้การประมาณ บิตที่ดีที่สุดของ ซึ่งคือ การคำนวณส่วนกลับให้
และการปัดเศษไปยังจำนวนเต็มที่ใกล้ที่สุดให้คำตอบที่ผิดคือ
แล้วเราต้องการความแม่นยำเท่าไรจึงจะได้คำตอบที่ถูกต้อง? เรารู้ว่าอันดับ เป็นจำนวนเต็ม และพูดอย่างเป็นสัญชาตญาณสิ่งที่เราต้องการคือความแม่นยำเพียงพอที่จะแยกแยะ จากความเป็นไปได้ใกล้เคียง รวมถึง และ จำนวนที่ใกล้เคียงที่สุดกับ ที่เราต้องกังวลคือ และระยะห่างระหว่างตัวเลขสองตัวนี้คือ
ดังนั้น ถ้าเราต้องการมั่นใจว่าเราไม่สับสน กับ ก็เพียงพอที่จะใช้ความแม่นยำที่รับประกันว่าการประมาณที่ดีที่สุด สำหรับ ใกล้กับ มากกว่าใกล้กับ ถ้าเราใช้ความแม่นยำเพียงพอให้
เพื่อให้ค่าผิดพลาดน้อยกว่าครึ่งของระยะห่างระหว่าง และ แล้ว จะใกล้กับ มากกว่าความเป็นไปได้อื่นใด รวมถึง และ
เราสามารถตรวจสอบสิ่งนี้ดังนี้ สมมติว่า
สำหรับ ที่ตอบสนอง
เมื่อเราคำนวณส่วนกลับจะได้
โดยการทำให้เศษส่วนมากที่สุดและส่วนน้อยที่สุด เราสามารถจำกัดว่าเราอยู่ห่างจาก มากแค่ไหนดังนี้
เราอยู่ห่างจาก น้อยกว่า ดังนั้นตามที่คาดไว้เราจะได้ เมื่อปัดเศษ
น่าเสียดายที่เนื่องจากเรายังไม่รู้ว่า คืออะไร เราไม่สามารถใช้มันบอกเราว่าต้องการความแม่นยำเท่าไร สิ่งที่เราทำได้แทนคือใช้ข้อเท็จจริงที่ว่า ต้องน้อยกว่า เพื่อให้แน่ใจว่าเราใช้ความแม่นยำเพียงพอ โดยเฉพาะ ถ้าเราใช้ความแม่นยำเพียงพอเพื่อรับประกันว่าการประมาณที่ดีที่สุด สำหรับ ตอบสนอง
เราจะมีความแม่นยำเพียงพอที่จะกำหนด ได้อย่างถูกต้องเมื่อเราคำนวณส่วนกลับ การใช้ รับประกันว่าเรามีโอกาสสูงที่จะได้การประมาณที่มีความแม่นยำนี้โดยใช้วิธีที่อธิบายก่อนหน้า (การใช้ เพียงพอหากเราพอใจกับขอบล่าง 40% ของความน่าจะเป็นความสำเร็จ)
วิธีแก้ทั่วไป
ดังที่เพิ่งเห็น ถ้าเรามีเวกเตอร์เฉพาะ ของ เราสามารถเรียนรู้ ผ่านการประมาณเฟส ตราบเท่าที่เราใช้ Qubit ควบคุมเพียงพอเพื่อทำสิ่งนี้ด้วยความแม่นยำที่เพียงพอ น่าเสียดายที่ไม่ง่ายที่จะหาเวกเตอร์เฉพาะ ดังนั้นเราต้องคิดหาวิธีดำเนินการต่อ
ลองสมมติชั่วคราวว่าเราดำเนินการเหมือนข้างต้น แต่ใช้เวกเตอร์เฉพาะ แทน สำหรับทุกการเลือก ที่เราต้องการคิดถึง ผลที่เราได้จากกระบวนการประมาณเฟสจะเป็นการประมาณ
โดยทำงานภายใต้สมมติฐานว่าเราไม่รู้ทั้ง และ สิ่งนี้อาจหรืออาจไม่ช่วยให้เราระบุ ได้ ตัวอย่างเช่น ถ้า เราจะได้การประมาณ ถึง ซึ่งน่าเสียดายไม่บอกอะไรเรา อย่างไรก็ตาม นี่เป็นกรณีที่ไม่ปกติ สำหรับค่าอื่นๆ ของ เราจะสามารถเรียนรู้บางอย่างเกี่ยวกับ ได้อย่างน้อย
เราสามารถใช้อัลกอริทึมที่รู้จักกันในชื่อ อัลกอริทึมเศษส่วนต่อเนื่อง เพื่อแปลงการประมาณ ของเราเป็นเศษส่วนที่ใกล้เคียง — รวมถึง ถ้าการประมาณดีพอ เราจะไม่อธิบายอัลกอริทึมเศษส่วนต่อเนื่องที่นี่ แต่นี่คือคำกล่าวของข้อเท็จจริงที่ทราบเกี่ยวกับอัลกอริทึมนี้
ถ้าเรามีการประมาณที่ใกล้เคียงมาก ถึง และเราเรียกใช้อัลกอริทึมเศษส่วนต่อเนื่องสำหรับ และ เราจะได้ และ ตามที่อธิบายในข้อเท็จจริง การวิเคราะห์ข้อเท็จจริงช่วยให้เราสรุปได้ว่า
สังเกตโดยเฉพาะว่าเราไม่จำเป็นต้องเรียนรู้ และ เราเรียนรู้เพียง ในรูปแบบต่ำสุดเท่านั้น
ตัวอย่างเช่น และดังที่เราสังเกตไปแล้ว เราจะไม่ได้เรียนรู้อะไรจาก แต่นั่นเป็นค่าเดียวของ ที่เกิดเหตุการณ์นั้น เมื่อ ไม่ใช่ศูนย์ มันอาจมีตัวประกอบร่วมกับ แต่จำนวน ที่เราได้จากอัลกอริทึมเศษส่วนต่อเนื่องต้องอย่างน้อยหาร ได้
มันไม่ชัดเจนเลย แต่เป็นความจริงว่าถ้าเรามีความสามารถในการเรียนรู้ และ สำหรับ สำหรับ ที่เลือก แบบสม่ำเสมอแบบสุ่ม เราจะมีโอกาสสูงมากที่จะสามารถกู้คืน ได้หลังจากตัวอย่างเพียงไม่กี่ตัว โดยเฉพาะ ถ้าการเดาของเรา คือ ตัวคูณร่วมน้อย ของค่าทั้งหมดสำหรับตัวส่วน ที่เราสังเกต เราจะถูกต้องด้วยความน่าจะเป็นสูง พูดอย่างเป็นสัญชาตญาณ ค่า บางค่าไม่ดีเพราะมันมีตัวประกอบร่วมกับ และตัวประกอบเหล่านั้นถูกซ่อนจากเราเมื่อเราเรียนรู้ และ แต่การเลือก แบบสุ่ม ไม่น่าจะซ่อนตัวประกอบของ ได้นานนัก และความน่าจะเป็นที่เราเดา ไม่ถูกต้องโดยการคำนวณตัวคูณร่วมน้อยของตัวส่วนที่เราสังเกตลดลงแบบเอกซ์โปเนนเชียลตามจำนวนตัวอย่าง
ยังคงต้องแก้ไขปัญหาว่าเราจะหาเวกเตอร์เฉพาะ ของ เพื่อเรียกใช้กระบวนการประมาณเฟสได้อย่างไร ที่จริง เราไม่จำเป็นต้องสร้างมันเลย!
สิ่งที่เราจะทำแทนคือเรียกใช้กระบวนการประมาณเฟสกับสถานะ ซึ่งหมายถึงการเข้ารหัสไบนารี บิตของจำนวน แทนเวกเตอร์เฉพาะ ของ จนถึงตอนนี้เราพูดถึงแค่การเรียกใช้กระบวนการประมาณเฟสกับเวกเตอร์เฉพาะตัวหนึ่ง แต่ไม่มีอะไรขัดขวางเราจากการเรียกใช้กระบวนการนี้กับสถานะอินพุตที่ไม่ใช่เวกเตอร์เฉพาะของ และนั่นคือสิ่งที่เราทำที่นี่กับสถานะ (นี่ไม่ใช่เวกเตอร์เฉพาะของ เว้นแต่ ซึ่งไม่ใช่การเลือกที่เราสนใจ)
เหตุผลในการเลือกสถานะ แทนเวกเตอร์เฉพาะของ คือสมการต่อไปนี้เป็นความจริง
วิธีหนึ่งในการตรวจสอบสมการนี้คือเปรียบเทียบผลคูณภายในของทั้งสองข้างกับสถานะฐานมาตรฐานแต่ละตัว โดยใช้สูตรที่กล่าวถึงก่อนหน้าในบทเรียนเพื่อช่วยประเมินผลลัพธ์ทางขวามือ ผลที่ตามมาคือเราจะได้ผลการวัดที่เหมือนกันอย่างแม่นยำกับที่เราเลือก แบบสม่ำเสมอแบบสุ่มและใช้ เป็นเวกเตอร์เฉพาะ
รายละเอียดมากขึ้น ลองจินตนาการว่าเราเรียกใช้กระบวนการประมาณเฟสพร้อมสถานะ แทนเวกเตอร์เฉพาะ ตัวใดตัวหนึ่ง หลังจากการแปลงฟูริเยร์ควอนตัมผกผันถูกทำ สิ่งนี้จะเหลือเราพร้อมสถานะ
โดยที่
เวกเตอร์ แทนสถานะของ Qubit บนสุด ตัวหลังจากอินเวิร์สของการแปลงฟูริเยร์ควอนตัมถูกทำกับพวกมัน
ดังนั้น โดยอาศัยข้อเท็จจริงที่ว่า เป็นเซตออร์โธนอร์มอล เราพบว่าการวัด Qubit บนสุด ตัว ให้การประมาณ ถึงค่า โดยที่ ถูกเลือกแบบสม่ำเสมอแบบสุ่ม ดังที่เราพูดถึงไปแล้ว สิ่งนี้ช่วยให้เราเรียนรู้ ด้วยระดับความเชื่อมั่นสูงหลังจากการรันอิสระหลายครั้ง ซึ่งเป็นเป้าหมายของเรา
ต้นทุนรวม
ต้นทุนในการสร้าง controlled-unitary แต่ละตัวคือ มี controlled-unitary การดำเนินการ และเรามี ดังนั้นต้นทุนรวมสำหรับ controlled-unitary คือ นอกจากนี้ เรามี Gate Hadamard ตัว (ซึ่งให้ ต่อต้นทุน) และการแปลงฟูริเยร์ควอนตัมผกผันให้ ต่อต้นทุน ดังนั้น ต้นทุนของ controlled-unitary ครอบงำต้นทุนของกระบวนการทั้งหมด — ซึ่งจึงเป็น
นอกจาก Circuit ควอนตัมเอง มีการคำนวณแบบคลาสสิกสองสามอย่างที่ต้องทำระหว่างทาง ซึ่งรวมถึงการคำนวณกำลัง ใน สำหรับ ซึ่งจำเป็นสำหรับการสร้าง Gate controlled-unitary รวมถึงอัลกอริทึมเศษส่วนต่อเนื่องที่แปลงการประมาณของ เป็นเศษส่วน การคำนวณเหล่านี้สามารถทำได้โดย Circuit บูลีนที่มีต้นทุนรวม
ตามปกติ ขอบเขตทั้งหมดเหล่านี้สามารถปรับปรุงได้โดยใช้อัลกอริทึมที่เร็วแบบอาซิมโทติก ขอบเขตเหล่านี้สมมติว่าเราใช้อัลกอริทึมมาตรฐานสำหรับการดำเนินการคำนวณพื้นฐาน
การแยกตัวประกอบด้วยการหาอันดับ
สิ่งสุดท้ายที่เราต้องพูดถึงคือวิธีที่การแก้ปัญหาการหาอันดับช่วยเราในการแยกตัวประกอบ ส่วนนี้เป็นแบบคลาสสิกล้วนๆ — ไม่มีส่วนเกี่ยวข้องกับการประมวลผลเชิงควอนตัมโดยเฉพาะ
นี่คือแนวคิดพื้นฐาน เราต้องการแยกตัวประกอบจำนวน และเราสามารถทำสิ่งนี้ แบบวนซ้ำ โดยเฉพาะ เราสามารถเน้นที่งานของการ แยก ซึ่งหมายถึงการหาจำนวนเต็มสองตัว ที่ สิ่งนี้เป็นไปไม่ได้ถ้า เป็นจำนวนเฉพาะ แต่เราสามารถทดสอบอย่างมีประสิทธิภาพเพื่อดูว่า เป็นจำนวนเฉพาะหรือไม่โดยใช้อัลกอริทึมการทดสอบจำนวนเฉพาะก่อน และถ้า ไม่ใช่จำนวนเฉพาะเราจะพยายามแยกมัน เมื่อเราแยก เราสามารถวนซ้ำกับ และ จนกว่าตัวประกอบทั้งหมดของเราจะเป็นจำนวนเฉพาะและเราได้การแยกตัวประกอบเฉพาะของ
การแยกจำนวนคู่เป็นเรื่องง่าย: เราแค่ออก และ
มันง่ายเช่นกันที่จะแยกกำลังสมบูรณ์ ซึ่งหมายถึงตัวเลขในรูปแบบ สำหรับจำนวนเต็ม เพียงแค่ ประมาณรากที่สอง รากที่สาม รากที่สี่ และต่อๆ ไป แล้วตรวจสอบจำนวนเต็มใกล้เคียงว่าเป็นผู้ต้องสงสัยสำหรับ เราไม่จำเป็นต้องไปเกิน ขั้นตอนในลำดับนี้ เพราะที่จุดนั้นรากจะต่ำกว่า และจะไม่เปิดเผยผู้สมัครเพิ่มเติม
ดีที่เราทำทั้งสองสิ่งนี้ได้ เพราะการหาอันดับจะไม่ช่วยเราในการแยกตัวประกอบจำนวนคู่หรือสำหรับ กำลังเฉพาะ ที่จำนวน เป็นจำนวนเฉพาะ อย่างไรก็ตาม ถ้า เป็นเลขคี่และไม่ใช่กำลังเฉพาะ การหาอันดับช่วยให้เราแยก ได้
การรันอัลกอริทึมนี้อาจล้มเหลวในการหาตัวประกอบของ โดยเฉพาะ สิ่งนี้เกิดขึ้นในสองสถานการณ์:
- อันดับของ มอดุโล เป็นเลขคี่
- อันดับของ มอดุโล เป็นเลขคู่และ
โดยใช้ทฤษฎีจำนวนพื้นฐานสามารถพิสูจน์ได้ว่า สำหรับการเลือก แบบสุ่ม ด้วยความน่าจะเป็นอย่างน้อย ทั้งสองเหตุการณ์นี้จะไม่เกิดขึ้น ที่จริง ความน่าจะเป็นที่เหตุการณ์ใดเหตุการณ์หนึ่งเกิดขึ้นมีมากที่สุด โดยที่ คือจำนวนตัวประกอบเฉพาะที่ต่างกันของ ซึ่งเป็นเหตุผลที่ต้องการสมมติฐานว่า ไม่ใช่กำลังเฉพาะ (สมมติฐานว่า เป็นเลขคี่ก็จำเป็นสำหรับข้อเท็จจริงนี้ให้เป็นจริงด้วย)
นี่หมายความว่าการรันแต่ละครั้งมีโอกาสอย่างน้อย 50% ที่จะแยก ดังนั้น ถ้าเราเรียกใช้อัลกอริทึม ครั้ง สุ่มเลือก ในแต่ละครั้ง เราจะสำเร็จในการแยก ด้วยความน่าจะเป็นอย่างน้อย
แนวคิดพื้นฐานของอัลกอริทึมมีดังนี้ ถ้าเรามีการเลือก ที่อันดับ ของ มอดุโล เป็นเลขคู่ แล้ว เป็นจำนวนเต็มและเราสามารถพิจารณาตัวเลข
โดยใช้สูตร เราสรุปได้ว่า
ตอนนี้ เรารู้ว่า จากนิยามของอันดับ — ซึ่งเป็นอีกวิธีในการบอกว่า หาร ได้ลงตัว นั่นหมายความว่า หารผลคูณนี้ได้ลงตัว
เพื่อให้สิ่งนี้เป็นจริง ตัวประกอบเฉพาะทั้งหมดของ ต้องเป็นตัวประกอบเฉพาะของ หรือ (หรือทั้งคู่) — และสำหรับการสุ่มเลือก มันไม่น่าจะเป็นไปได้ที่ตัวประกอบเฉพาะทั้งหมดของ จะหารพจน์ใดพจน์หนึ่งและไม่มีตัวใดหารอีกพจน์หนึ่ง มิฉะนั้น ตราบเท่าที่ตัวประกอบเฉพาะบางส่วนของ หารพจน์แรกและบางส่วนหารพจน์ที่สอง เราจะสามารถหาตัวประกอบที่ไม่ใช่ตัวเล็กน้อยของ ได้โดยการคำนวณ GCD กับพจน์แรก