จะเปลี่ยนรูปแบบอินพุต n-bit เป็นอย่างไร?


14

ฉันสนใจในอัลกอริทึมควอนตัมที่ได้รับเป็นอินพุทลำดับ n บิตและที่ผลิตออกเป็นรุ่น reshuffled (เปลี่ยนแปลง) ของลำดับ n บิตนี้

เช่นถ้าอินพุตเป็น 0,0,1,1 (ดังนั้น n = 4 ในกรณีนี้) คำตอบที่เป็นไปได้คือ:

  • 0,0,1,1
  • 0,1,0,1
  • 0,1,1,0
  • 1,0,0,1
  • 1,0,1,0
  • 1,1,0,0

โปรดทราบว่าควรสร้างเพียงหนึ่งเอาต์พุตซึ่งจะถูกเลือกแบบสุ่มในเอาต์พุตที่ใช้ได้ทั้งหมด

วิธีนี้จะนำไปใช้ที่ดีที่สุดในอัลกอริทึมควอนตัมได้อย่างไร?

คำตอบสำหรับเรื่องนี้ได้เสนอไปแล้วซึ่งเป็นส่วนหนึ่งของคำตอบสำหรับวิธีสร้างอัลกอริทึมควอนตัมที่สร้างลำดับ 2 n บิตด้วยจำนวน 1 บิตเท่ากันหรือไม่ . แต่ปัญหาของการแก้ปัญหาคือต้องใช้(n2)ช่วย qubits ซึ่งมีขนาดใหญ่อย่างรวดเร็วถ้า n มีขนาดใหญ่

บันทึก:

  • โปรดอย่าให้อัลกอริทึมแบบดั้งเดิมโดยไม่มีคำอธิบายใด ๆ ว่าขั้นตอนของอัลกอริธึมแบบคลาสสิคสามารถแมปกับคอมพิวเตอร์ควอนตัมสากลได้อย่างไร
  • สำหรับฉันมี 2 วิธีที่ดีในการตีความ"เลือกแบบสุ่มระหว่างผลลัพธ์ที่ดีที่สุดที่เป็นไปได้" : (1) ผลลัพธ์ที่ดีที่เป็นไปได้แต่ละรายการมีโอกาสเท่าเทียมกันในการเลือก (2) ทุกผลลัพธ์ที่ดีที่เป็นไปได้มีโอกาส> 0 ของการถูกเลือก

1
การป้อนข้อมูลที่เป็นสตริงไบนารีของความยาวที่ของบิต 1 และส่งออกเป็นใด ๆของพีชคณิตเป็นไปได้ของมันได้หรือไม่ สิ่งนี้สามารถทำได้บนคอมพิวเตอร์แบบดั้งเดิมที่มี 1 ขั้นตอน คุณต้องการalllผลไปได้หรือไม่ nk(nk)1
user1271772

ไม่ควรสร้างเอาต์พุตเดียวเท่านั้นซึ่งจะถูกเลือกแบบสุ่มในเอาต์พุตที่เป็นไปได้ทั้งหมด
JanVdA

อัลกอริทึมแบบดั้งเดิมจะดีพอไหม (คุณยังสามารถเรียกใช้บนคอมพิวเตอร์ควอนตัมได้) หรือคุณต้องการ sth อันไหนดีกว่าอัลกอริทึมแบบดั้งเดิมที่ดีที่สุด?
Norbert Schuch

1
@JanVdA: ทำไมไม่เลือก 1 และ 0 ใดก็ได้แล้วสลับทั้งสองบนคอมพิวเตอร์แบบเก่า?
user1271772

1
เมื่อคุณไม่ได้ระบุการกระจายแบบสุ่มที่คุณต้องการฉันจะปล่อยไว้ที่นี่: DilbertและXKCD ;)
Ali

คำตอบ:


4

สามารถทำได้ด้วย qubits เพิ่มเติมตามบรรทัดเหล่านี้:logn

  1. แปลง qubits เพิ่มเติมเพื่อให้พวกเขาเข้ารหัสหมายเลข เลือกอย่างสม่ำเสมอk{0,,n1}

  2. cyclically เปลี่ยนการป้อนข้อมูล qubitsครั้งk

  3. ขอให้คนสุดท้ายของ qubits การป้อนข้อมูลเดิมได้รับการแก้ไขเป็นส่งออกและ recurse ที่เหลือของพวกเขาn1

นี่เป็นอัลกอริทึมแบบคลาสสิก แต่คุณสามารถเรียกใช้บนคอมพิวเตอร์ควอนตัมได้แน่นอนเพราะ Norbert ได้เสนอแนะในการแสดงความคิดเห็น (แง่มุมของคำถามที่ยืนกรานเกี่ยวกับอัลกอริทึมที่เป็นควอนตัมยังไม่ชัดเจนสำหรับฉันดังนั้นหากใช้อัลกอริทึมแบบดั้งเดิมเช่นที่ฉันแนะนำบนคอมพิวเตอร์ควอนตัมไม่เพียงพอก็จะเป็นประโยชน์สำหรับคำถามที่ ชี้แจง)

โปรดทราบว่าเนื่องจากคำถามถามหาผลลัพธ์แบบสุ่มอัลกอริธึมจะต้องสร้างเอนโทรปีในบางจุดสันนิษฐานว่าผ่านการวัดหรือการปฏิบัติการอื่น ๆ ที่ไม่รวมกันบน qubits (เช่นการเตรียมใช้งาน) ในอัลกอริทึมด้านบนเป็นขั้นตอนแรกที่สร้างเอนโทรปี: โดยไม่คำนึงถึงสถานะของ qubits เพิ่มเติมก่อนที่จะดำเนินการในขั้นตอนที่ 1 พวกเขาควรมีสถานะ หลังจากดำเนินการตามขั้นตอนที่ 1 แล้ว (โดยมีการเข้ารหัสเลขฐานสองสมมติว่า)

1nk=0n1|kk|
k

ขอบคุณสำหรับคำตอบ. ฉันสนใจในอัลกอริทึมควอนตัมจริงสำหรับปัญหา - ถ้าคุณสามารถแมปอัลกอริธึมแบบดั้งเดิมกับโปรแกรมควอนตัมแล้วมันก็ใช้ได้ แต่ฉันไม่มีเงื่อนงำว่าจะทำอย่างไร
JanVdA

2
ฉันคิดว่าคำถามกำลังได้รับความสนใจ: คุณไม่ได้มองหาอัลกอริทึมจริงๆ แต่คุณกำลังมองหาโค้ด สิ่งที่ฉันอธิบายคืออัลกอริทึมและงานที่เหลือคือการใช้อัลกอริทึมนั้น (หรืออีกอันหนึ่ง) เป็นโค้ดในบางภาษาหรือเป็นคำอธิบายระดับต่ำของวงจรควอนตัม ฉันขอแนะนำให้คุณแก้ไขคำถามเพื่อให้ชัดเจนยิ่งขึ้น - แต่ระวังให้ดีว่าคุณกำลังขอให้บางคนทำงานที่น่าเบื่อและไร้แนวคิดให้คุณ ทางเลือกในการเรียนรู้วิธีการทำสิ่งนี้ด้วยตัวเองอาจดูน่ากลัว แต่อาจกลายเป็นทางออกที่ดีกว่าในระยะยาว
John Watrous

ฉันได้เพิ่มหมายเหตุไปที่คำถาม ฉันคิดว่าเราตีความอัลกอริทึมควอนตัมแนวคิด ต่างกัน สำหรับผม algorithm_ a_classical ไม่ได้เป็นอัลกอริทึมควอนตัมแต่อาจจะมีการแมปเป็นอัลกอริทึมควอนตัม
JanVdA

@JanVdA: คุณหมายถึงอะไรโดยอัลกอริทึมควอนตัม? ตัวอย่างเช่นคุณต้องการให้เกี่ยวข้องกับเกทอย่างน้อยหนึ่งประตูหรือไม่? หรือว่ามันต้องมีอย่างน้อยหนึ่งประตู ? หรือว่ามันต้องมีชุดประตูเฉพาะอื่น ๆ ด้วย? คุณต้องการใช้ชุดเกตแบบใด HY
user1271772

อัลกอริทึมควอนตัมเป็นอัลกอริทึมที่สามารถแมป (ที่ระดับขั้นตอน) กับโปรแกรมสำหรับคอมพิวเตอร์ควอนตัมสากล อินพุทและเอาท์พุทของขั้นตอนของอัลกอริทึมควอนตัมคือ qubits (หรืออาจแมปกับชุดของ qubits) ขั้นตอนสุดท้ายของอัลกอริทึมควอนตัม = อ่าน (สังเกต) ค่าของ qubits (ดังนั้น qubits จะถูกแมปกับบิตจริง) ไม่มีข้อ จำกัด ในชุดประตู แนวคิดก็คืออัลกอริทึมที่สมบูรณ์สามารถทำงานบนคอมพิวเตอร์ควอนตัมสากล
JanVdA

3

หมายเหตุ: คำตอบนี้ถือว่าคุณต้องการให้การเรียงสับเปลี่ยนสอดคล้องกันนั่นคือคุณต้องการแทนที่จะเป็น 1/3 โอกาสของมีโอกาส 1/3 ของและมีโอกาสที่ 1/3 ของ10013(|001+|010+|100)001010100

ระวังวิธีที่คุณระบุงานนี้เพราะมันเป็นไปไม่ได้ง่ายมากเนื่องจากข้อ จำกัด ในการกลับตัว ตัวอย่างเช่นสำหรับอินพุตคุณต้องการส่งออกสถานะ GHZrangle) แต่ถ้าคุณต้องการส่งออกสถานะ GHZ สำหรับอินพุตและนั่นจะไม่ทำงาน คุณไม่สามารถส่งสถานะอินพุตหลายสถานะไปยังสถานะเอาต์พุตเดียวกัน (โดยไม่มี decoherence) ตราบใดที่คุณพูดว่า "ฉันสนใจเฉพาะอินพุตที่เรียงลำดับจากน้อยไปมากเช่น 0000111 แต่ไม่ใช่ 1110000 หรือ 0010110 คุณสามารถทำสิ่งที่คุณต้องการกับสิ่งเหล่านี้ได้" สิ่งนี้จะใช้ได้|001|31=13(|001+|010+|100)|010|100

เคล็ดลับหนึ่งในการสร้างการเรียงสับเปลี่ยนควอนตัมของอินพุตที่เรียงลำดับคือการเตรียม "สถานะการเปลี่ยนแปลง" โดยการใช้เครือข่ายการเรียงลำดับกับรายการค่าเมล็ดในแต่ละครั้ง เครือข่ายการเรียงลำดับจะส่งออก qubits ที่ถือเมล็ดที่เรียงลำดับ แต่ยัง qubits ที่ถือการเปรียบเทียบเครือข่ายการเรียงลำดับ สถานะการเรียงสับเปลี่ยนเป็นเพียงการเปรียบเทียบ qubits เพื่อนำไปใช้กับอินพุตของคุณคุณเพียงเรียกใช้อินพุตผ่านเครือข่ายการเรียงลำดับในสิ่งที่ตรงกันข้าม โปรดทราบว่ามีรายละเอียดที่ซับซ้อนบางอย่างที่นี่; ดูกระดาษ " เทคนิคที่ได้รับการปรับปรุงเพื่อเตรียม Eigenstates ของ Fermionic Hamiltonians " คุณต้องสรุปเทคนิคนี้เพื่อทำงานกับอินพุตด้วยค่าซ้ำ ๆ แทนที่จะเป็นค่าเฉพาะ

คุณอาจต้องการดู "การบีบอัดควอนตัม " ซึ่งเชื่อมโยงอย่างใกล้ชิดกับ States (การซ้อนทับที่เหมือนกันของสถานะ bit ทั้งหมดที่มีชุดบิต ) ที่คุณต้องการสร้าง ความแตกต่างที่สำคัญคือคุณจะใช้วงจรการบีบอัดควอนตัมในทางกลับกันและคาดว่าจะมีการเข้ารหัสตัวเลข "มีกี่อัน" แทน "ให้สถานะกับจำนวนที่ถูกต้อง"|nknk

ฉันเดาว่าสิ่งที่ฉันพูดคือการผลิตรัฐเหล่านี้ซับซ้อนกว่าที่คุณคาดไว้ ฉันคิดว่าเหตุผลที่ซับซ้อนคือเพราะขนาดของแอมพลิจูดในเอาต์พุตของคุณขึ้นอยู่กับสถานะพื้นฐานการคำนวณของอินพุตของคุณ ตัวอย่างเช่นสำหรับคุณต้องการเอาท์พุทซึ่งเป็น superposition ของสี่สถานะคลาสสิกดังนั้นคุณจึงมี prefactor ของซ่อนอยู่ใน\ แต่สำหรับเอาต์พุตที่ต้องการมีหกสถานะคลาสสิกและซ่อน prefactor ของ{6}}|000114|41|0011|4216


ฉันต้องการเรียนรู้เพิ่มเติมเพื่อให้ความสำคัญกับคำตอบของคุณ แต่ฉันไม่เห็นด้วยกับย่อหน้าที่ 2 ของคุณเกี่ยวกับข้อ จำกัด ในการกลับรายการ โปรดทราบว่าคุณได้ใช้เป็นวิธีแก้ปัญหาสำหรับแต่มีวิธีแก้ปัญหามากมายที่เราใช้งานอยู่ ด้วยตัวเลขที่ซับซ้อน (เช่นต่อไปนี้เป็นวิธีที่เป็นไปได้13(|001+|010+|100)|00113(|001|010+i.|100)
JanVdA

1
@JanVdA ถูกต้องเราสามารถใช้เฟสเพื่อสร้างเอาท์พุตแบบมุมฉากได้ การอ่านคำถามของคุณคือคุณต้องการระยะเดียวกันในทุกกรณี
Craig Gidney

0

คอมพิวเตอร์ควอนตัมสามารถทำการคำนวณแบบดั้งเดิม อัลกอริทึมที่เหมาะสมที่สุดคือ:

  1. เลือกบิตใดก็ได้ (เร็วที่สุดที่คุณสามารถเข้าถึงได้)
  2. หาบิตที่มีค่าตรงข้าม (ถ้าในขั้นตอนที่ 1 คุณได้รับ 0, หา 1)
  3. เปลี่ยนพวกเขา (0 กลายเป็น 1 และ 1 กลายเป็น 0)

ขั้นตอนที่ 2 เกี่ยวข้องกับการค้นหาผ่านสตริงบิตซึ่งใช้การดำเนินการแบบคลาสสิกจะใช้การดำเนินการแต่ถ้าคุณสามารถรับค่าบิตโดยการประเมินฟังก์ชันคุณอาจจะสามารถ การใช้อัลกอริทึมควอนตัมโกรเวอร์หาบิตตรงข้ามกับการดำเนินงาน NO(N)nthO(N)


ขอบคุณ แต่อัลกอริทึมจะเปลี่ยนเพียง 2 บิต (ดังนั้นมันจะไม่สร้างการเปลี่ยนลำดับทั้งหมด) และมันก็ยังเป็นอัลกอริทึมแบบดั้งเดิมในขณะที่ฉันต้องการจะดูอัลกอริทึมควอนตัม
JanVdA
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.