อัลกอริทึมของ Shor
สำหรับโมดูล Qiskit in Classrooms นี้ นักเรียนต้องมีสภาพแวดล้อม Python ที่ใช้งานได้พร้อมแพ็คเกจต่อไปนี้ติดตั้งไว้:
qiskitv2.1.0 หรือใหม่กว่าqiskit-ibm-runtimev0.40.1 หรือใหม่กว่าqiskit-aerv0.17.0 หรือใหม่ก ว่าqiskit.visualizationnumpypylatexenc
สำหรับการตั้งค่าและติดตั้งแพ็คเกจข้างต้น ดูคู่มือ ติดตั้ง Qiskit เพื่อรันงานบนคอมพิวเตอร์ควอนตัมจริง นักเรียนต้องสมัครบัญชีกับ IBM Quantum® โดยทำตามขั้นตอนในคู่มือ ตั้งค่าบัญชี IBM Cloud
โมดูลนี้ผ่านการทดสอบและใช้เวลา QPU สามวินาที นี่เป็นเพียงการประมาณการ การใช้งานจริงของคุณอาจแตกต่างกัน
# Added by doQumentation — required packages for this notebook
!pip install -q numpy qiskit qiskit-ibm-runtime
# Uncomment and modify this line as needed to install dependencies
#!pip install 'qiskit>=2.1.0' 'qiskit-ibm-runtime>=0.40.1' 'qiskit-aer>=0.17.0' 'numpy' 'pylatexenc'
บทนำ
ในช่วงต้นทศวรรษ 1990 มีความตื่นเต้นเพิ่มขึ้นเรื่อย ๆ เกี่ ยวกับศักยภาพของคอมพิวเตอร์ควอนตัมในการแก้ปัญหาที่ยากสำหรับคอมพิวเตอร์คลาสสิก นักวิทยาศาสตร์คอมพิวเตอร์ที่มีพรสวรรค์บางคนได้คิดค้นอัลกอริทึมที่แสดงให้เห็นถึงพลังของการคอมพิวเตอร์ควอนตัมสำหรับปัญหาเฉพาะกลุ่มที่ถูกสร้างขึ้น แต่ยังไม่มีใครพบ "killer app" ของการคอมพิวเตอร์ควอนตัมที่เดียวที่รับประกันว่าจะปฏิวัติสาขานี้ จนกระทั่งปี 1994 เมื่อ Peter Shor คิดค้นสิ่งที่ตอนนี้เรียกว่าอัลกอริทึมของ Shor สำหรับการแยกตัวประกอบของจำนวนขนาดใหญ่
เป็นที่รู้จักกันดีในเวลานั้นว่าการหาตัวประกอบเฉพาะของจำนวนขนาดใหญ่นั้นยากมากสำหรับคอมพิวเตอร์คลาสสิก อันที่จริง โปรโตคอลความปลอดภัยทางอินเทอร์เน็ตอาศัยความยากนี้ Shor พบวิธีหาตัวประกอบเหล่านี้อย่างมีประสิทธิภาพมากขึ้นแบบเอกซ์โปเนนเชียล โดยโอนขั้นตอนที่ท้าทายกว่าบางส่วนไปยังคอมพิวเตอร์ควอนตัมในอนาคตที่ยังเป็นทฤษฎี
ในโมดูลนี้ เราจะสำรวจอัลกอริทึมของ Shor ก่อนอื่น เราจะให้บริบทเพิ่มเติมเล็กน้อยเกี่ยวกับอัลกอริทึม โดยทำให้ปัญหาที่มันแก้ชัดเจนขึ้นและอธิบายความเกี่ยวข้องกับความปลอดภัยทางไซเบอร์ ต่อไป เราจะให้พื้นฐานเบื้องต้นเกี่ยวกับคณิตศาสตร์มอดูลาร์และวิธีนำไปใช้กับปัญหาการแยกตัวประกอบ โดยแสดงให้เห็นว่าการแยกตัวประกอบลดรูปเป็นปัญหาอีกอย่างที่เรียกว่า "การหาอันดับ" เราจะแสดงให้เห็นว่า Quantum Fourier Transform และ Quantum Phase Estimation ที่เราเรียนรู้ในโมดูลก่อนหน้าเข้ามามีบทบาทอย่างไร และวิธีใช้เพื่อแก้ปัญหาการหาอันดับ
สุดท้าย เราจะรันอัลกอริทึมของ Shor บนคอมพิวเตอร์ควอนตัมจริง! โปรดจำไว้ว่า แม้ว่าอัลกอริทึมนี้จะมีประโยชน์จริง ๆ ก็ต่อเมื่อเรามีคอมพิวเตอร์ควอนตัมขนาดใหญ่ที่ทนต่อความผิดพลาดได้ ซึ่ง ยังอีกหลายปีกว่าจะมี ดังนั้นเราจะแยกตัวประกอบจำนวนขนาดเล็กเพื่อแสดงให้เห็นว่าอัลกอริทึมทำงานอย่างไร
ปัญหาการแยกตัวประกอบ
เป้าหมายของปัญหาการแยกตัวประกอบคือการหาตัวประกอบเฉพาะของจำนวน สำหรับ บางจำนวน สิ่งนี้ค่อนข้างง่าย ตัวอย่างเช่น ถ้า เป็นเลขคู่ ตัวประกอบเฉพาะตัวหนึ่งจะเป็น 2 ถ้า เป็นกำลังของจำนวนเฉพาะ หมายความว่า สำหรับจำนวนเฉพาะ บางจำนวน การหา ก็ค่อนข้างง่ายเช่นกัน: เราแค่ประมาณรากที่ ของ และมองหาจำนวนเฉพาะใกล้เคียงที่อาจเป็น
แต่คอมพิวเตอร์คลาสสิกติดขัดเมื่อ เป็นเลขคี่และ ไม่ใช่ กำลังของจำนวนเฉพาะ นี่คือกรณีที่อัลกอริทึมของ Shor จัดการ อัลกอริทึมหาตัวประกอบสองตัว และ โ ดยที่ สามารถนำไปใช้แบบวนซ้ำจนกว่าตัวประกอบทั้งหมดจะเป็นจำนวนเฉพาะ ในส่วนถัดไปเราจะเห็นว่าปัญหานี้จัดการอย่างไร
ความเกี่ยวข้องกับความปลอดภัยทางไซเบอร์
มีรูปแบบการเข้ารหัสหลายอย่างที่สร้างขึ้นจากข้อเท็จจริงที่ว่าการแยกตัวประกอบของจำนวนขนาดใหญ่นั้นยาก รวมถึงหนึ่งที่ ใช้กันทั่วไปในปัจจุบัน เรียกว่า RSA ใน RSA กุญแจสาธารณะถูกสร้างขึ้นโดยการคูณจำนวนเฉพาะขนาดใหญ่สองจำนวนเข้าด้วยกันเพื่อได้ จากนั้น ทุกคนสามารถใช้กุญแจสาธารณะนี้เพื่อเข้ารหัสข้อมูล แต่เฉพาะผู้ที่มีกุญแจส่วนตัว และ เท่านั้นที่สามารถถอดรหัสข้อมูลนั้นได้
ถ้า แยกตัวประกอบได้ง่าย ทุกคนก็จะสามารถหาได้ว่า และ คืออะไรและทำลา ยการเข้ารหัส แต่มันไม่ใช่อย่างนั้น นี่เป็นปัญหาที่ยากมากอย่างเป็นที่รู้จัก อันที่จริง ตัวประกอบเฉพาะของจำนวนที่เรียกว่า RSA1024 ซึ่งมีความยาว 1024 ตัวเลขฐานสองและ 309 ตัวเลขฐานสิบ ยังไม่ถูกค้นพบ แม้จะมีการเสนอรางวัล $100,000 สำหรับการแยกตัวประกอบตั้งแต่ปี 1991
วิธีแก้ปัญหาของ Shor
ในปี 1994 Peter Shor ตระหนักว่าคอมพิวเตอร์ควอนตัมสามารถแยกตัวประกอบของจำนวนขนาดใหญ่ได้อย่างมีประสิทธิภาพมากกว่าคอมพิวเตอร์คลาสสิกแบบเอกซ์โปเนนเชียล ความคิดเชิงลึกของเขาอาศัยความสัมพันธ์ระหว่างปัญหาการแยกตัวประกอบนี้และ คณิตศาสตร์มอดูลาร์ เราจะผ่านบทเรียนสั้น ๆ เกี่ยวกับคณิตศาสตร์มอดูลาร์ จากนั้นเราจะเห็นว่าเราสามารถใช้สิ่งนี้ใ นการแยกตัวประกอบ ได้อย่างไร
คณิตศาสตร์มอดูลาร์
คณิตศาสตร์มอดูลาร์เป็นระบบการนับที่เป็นวงจร หมายความว่าในขณะที่การนับเริ่มต้นในแบบปกติ ด้วยจำนวนเต็ม 0, 1, 2 เป็นต้น ณ จุดใดจุดหนึ่ง หลังจากคาบ การนับจะเริ่มต้นใหม่ มาดูวิธีการทำงานด้วยตัวอย่าง สมมติว่าคาบของเราคือ 5 เมื่อเรานับถึง 5 แทนที่จะนับ 5 เราจะเร ิ่มต้นใหม่ที่ 0:
นี่เป็นเพราะว่าในโลก "modulo-5" 5 เท่ากับ 0 เราบอกว่า อันที่จริง พหุคูณทั้งหมดของ 5 จะเท่ากับ
ตรวจสอบความเข้าใจ
อ่านคำถามด้านล่าง คิดคำตอบของคุณ จากนั้นคลิกสามเหลี่ยมเพื่อดูคำตอบ
ใช้คณิตศาสตร์มอดูลาร์เพื่อแก้ปัญหาต่อไปนี้:
คุณออกเดินทางบนรถไฟข้ามทวีประยะไกลในเวลา 8 AM รถไฟใช้เวลา 60 ชั่วโมง ตอนที่คุณถึงที่หมายจะเป็นเวลาเท่าไร?
คำตอบ:
คาบคือ 24 เนื่องจากมี 24 ชั่วโมงในหนึ่งวัน ดังนั้น ปัญหานี้สามารถเขียนในรูปคณิตศาสตร์มอดูลาร์ได้เป็น:
ดังนั้น คุณจะถึงปลายทางเวลา 20:00 หรือ 8 PM
และ
มักมีประโยชน์ในการแนะนำสองเซต และ คือเซตของจำนวนที่มีอยู่ในโลก "modulo-" ตัวอย่างเช่น เมื่อเรานับ modulo-5 เซตจะเป็น อีกตัวอย่าง: เราสามารถทำการบวกและคูณ (modulo ) บนสมาชิกใน และผลลัพธ์ของแต่ละการดำเนินการก็เป็นสมาชิกใน เช่นกัน ทำให้ เป็นวัตถุทางคณิตศาสตร์ที่เรียกว่า ring
มีเซตย่อยพิเศษของ ที่น่าสนใจเป็นพิเศษสำหรับเราในอัลกอริทึมของ Shor นั่นคือเซตย่อยของจำนวนใน โดยที่ greatest common divisor ระหว่างสมาชิกแต่ละตัวและ คือ 1 ดังนั้นสมาชิกแต่ละตัวเป็น "co-prime" กับ ถ้าเรานำเซตตัวเลขเหล่านี้มาพร้อมกับการดำเนินการคูณแบบมอดูลาร์ มันก็จะก่อตัวเป็นวัตถุทางคณิตศาสตร์อีกอย่าง เรียกว่า group เราเรียก group นี้ว่า ปรากฎว่ากับ (และ finite groups โดยทั่วไป) ถ้าเราเลือกสมาชิกใด ๆ และคูณ กับตัวมันเองซ้ำ ๆ เราจะได้จำนวน เสมอใ นที่สุด จำนวนครั้งขั้นต่ำที่ต้องคูณ กับตัวมันเองเพื่อให้ได้ เรียกว่า อันดับ ของ ข้อเท็จจริงนี้จะสำคัญมากในการอภิปรายของเราเกี่ยวกับวิธีแยกตัวประกอบจำนวนด้านล่าง
ตรวจสอบความเข้าใจ
อ่านคำถามด้านล่าง คิดคำตอบของคุณ จากนั้นคลิกสามเหลี่ยมเพื่อดูคำตอบ
คืออะไร?
คำตอบ:
เราไม่รวมจำนวนต่อไปนี้:
อันดับของสมาชิกแต่ละตัวใน คืออะไร?
คำตอบ:
อันดับ คือจำนวนที่น้อยที่สุดโดยที่ สำหรับสมาชิกแต่ละตัว
โปรดทราบว่าแม้ว่าเราสามารถหาอันดับของจำนวนใน ได้ แต่นี่ไม่ใช่งานง่ายโดยทั่วไป สำหรับ ที่ใหญ่กว่า นี่คือหัวใจสำคัญของปัญหาการแยกตัวประกอบและเหตุผลที่เราต้องการคอมพิวเตอร์ควอนตัม เราจะเห็นว่าทำไมเมื่อเราทำงานผ่านส่วนที่เหลือของ notebook