เราสามารถใช้ควอนตัมขนานในการคำนวณฟังก์ชั่นหลาย ๆ อย่างพร้อมกันได้หรือไม่?


9

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

พิจารณากรณีที่ตรงกันข้าม: เราสามารถใช้ควอนตัมขนานในการคำนวณฟังก์ชั่นมากมาย (พูด ) พร้อมกันสำหรับค่าเดียว ?f(x),g(x),x0


ในการประเมินf(x0)และg(x0)คุณต้องทำสำเนาx0สำหรับการดำเนินการแต่ละอย่างซึ่งโดยทั่วไปไม่สามารถทำได้โดยทฤษฎีที่ไม่มีการโคลนนิ่ง หากในอีกทางหนึ่งคุณเพียงแค่เตรียมสถานะซึ่งเป็นสองเท่าของx0คุณเพียงแค่เรียกคืนความขนานแบบคลาสสิก

@HenriMenke วิธีการโคลนไม่สมบูรณ์เกี่ยวกับ?
donnydm

@ HenriMenke: ความคิดของคุณเกี่ยวกับสิ่งที่ 'การโคลนนิ่ง' นั้นกว้างมากจนถึงจุดที่วางอุปสรรคบางอย่างต่อความสามารถของคุณในการแก้ไขปัญหา
Niel de Beaudrap

คำตอบ:


5

คำตอบที่แน่นอนขึ้นอยู่กับประเภทของการทับซ้อนที่คุณต้องการ คำตอบของปิรามิดและนีแอลทำให้คุณได้รับสิ่งที่ชอบ

At=1n|ft(x)|Ft

ที่นี่ฉันได้ติดตาม Niel ในการติดฉลากฟังก์ชั่นที่แตกต่างกัน ,ฯลฯ โดยมีเป็นจำนวนฟังก์ชั่นทั้งหมดที่คุณต้องการซ้อนทับ นอกจากนี้ฉันใช้เพื่อแสดงคำอธิบายฟังก์ชันเป็นโปรแกรมที่เก็บไว้ เป็นเพียงสิ่งที่ต้องการจำนวนที่จะมีสำหรับรัฐที่จะปกติf1f2nFtftA

โปรดทราบว่านี้ไม่ได้เป็นเพียงการทับซ้อนของ(x) มันเข้าไปพัวพันกับโปรแกรมที่เก็บไว้ หากคุณกำลังจะออกติดตามโปรแกรมที่เก็บไว้คุณก็จะมีส่วนผสมของ(x) ซึ่งหมายความว่าโปรแกรมที่จัดเก็บอาจประกอบด้วย 'ขยะ' ซึ่งป้องกันผลกระทบจากสัญญาณรบกวนที่คุณอาจคาดหวัง หรืออาจจะไม่ ขึ้นอยู่กับวิธีใช้การซ้อนทับนี้ในการคำนวณของคุณft(x)ft(x)

หากคุณต้องการกำจัดขยะสิ่งต่าง ๆ ก็ยิ่งยุ่งยากมากขึ้น ตัวอย่างเช่นสมมติว่าสิ่งที่คุณต้องการคือรวมกันซึ่งมีผลกระทบU

U:|x|0NAt=1n|ft(x)

สำหรับอินพุตที่เป็นไปได้ทั้งหมด (ซึ่งฉันสมมติว่าเป็นบิตสตริงที่เขียนในพื้นฐานการคำนวณ) โปรดทราบว่าฉันได้รวม qubits ว่างไว้ที่ด้านอินพุตในกรณีที่ฟังก์ชั่นมีเอาต์พุตยาวกว่าอินพุตx

จากนี้เราสามารถหาเงื่อนไขที่ฟังก์ชั่นจะต้องตอบสนองอย่างรวดเร็ว: เนื่องจากสถานะอินพุตเป็นชุดฉากฉากดังนั้นผลลัพธ์จึงต้อง สิ่งนี้จะทำให้ข้อ จำกัด ที่สำคัญเกี่ยวกับประเภทของฟังก์ชั่นที่สามารถรวมกันในวิธีนี้


ขอบคุณฉันคิดว่าด้วยวิธีนี้เราอาจเร่งความเร็วเช่นการคำนวณการขยายตัวของเทย์เลอร์ อย่างไรก็ตามโปรแกรมที่เก็บไว้สามารถเข้าถึง / วัดผลเพื่อรับข้อมูลบางอย่างหรือเป็นเพียงเครื่องมือหรือไม่?
donnydm

โปรแกรมที่เก็บไว้จะถูกเขียนในการลงทะเบียนของ qubits ดังนั้นจึงสามารถจัดการได้อย่างแน่นอน
James Wootton

5

ฟังก์ชั่นที่คุณต้องการประเมินในสาขาการคำนวณต่าง ๆ จะต้องสามารถคำนวณได้ในบางวิธี (เช่นลำดับของประตูตรรกะแบบคลาสสิก) และชุดของฟังก์ชั่นที่คุณต้องการคำนวณควรจะคำนวณได้เอง: สำหรับกำหนดคุณต้องสามารถคำนวณสเปคของที่จะคำนวณบนอาร์กิวเมนต์ของมันได้ ผล: คุณต้องมีวิธีการอธิบายฟังก์ชั่นเป็นโปรแกรมที่เก็บไว้ (สิ่งเหล่านี้จำเป็นทั้งหมดก่อนที่เราจะพิจารณาการคำนวณควอนตัมสำหรับคำถามของ "คำนวณหนึ่ง / ฟังก์ชั่นทั้งหมดบนอินพุตf,g, {f1,f2,}tftftf1,f2,x0"มีความหมาย)

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

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


3

ใช่ (ขึ้นอยู่กับความหมายของ "คำนวณฟังก์ชั่นมากมายในครั้งเดียว")

อธิบายวงจรที่ให้ฟังก์ชั่น f เช่น Uf และวงจรให้ g เช่น Ugมีสองสามวิธีที่จะทำสิ่งนี้:

  1. เริ่มต้นด้วยการลงทะเบียน qubit |00xเตรียมสถานะ α|01+β|10ในการลงทะเบียนสองครั้งแรก สิ่งนี้สามารถทำได้โดยการใช้การรวมกัน1ในการลงทะเบียนครั้งแรกที่จะนำการลงทะเบียนที่อยู่ในรัฐα|0+β|1 ก่อนที่จะใช้ CNOT แล้ว IX. จากนั้นนำไปใช้CUf จากการลงทะเบียนครั้งแรกถึงครั้งที่สามและ CUg จากที่สองถึงที่สาม

    1.1 นี่ทำให้การลงทะเบียนครั้งที่สามอยู่ในสถานะ(αUf+βUg)|xเมื่อการดำเนินการเริ่มต้น (ถึง IX) ในการลงทะเบียนสองครั้งแรกจะกลับรายการ อย่างไรก็ตามเนื่องจากความยากลำบากทั่วไปของการใช้งานการดำเนินการรวมกันโดยพลการควบคุม (เช่นเดียวกับการใช้ qubits พิเศษโดยไม่จำเป็น) มันอาจจะง่ายต่อการใช้งานโดยตรงโดยการเรียกเลขหมายรวมαUf+βUg. โปรดทราบว่านี่ไม่ได้ใช้งานf ไม่ gแต่เป็นฟังก์ชั่นใหม่ที่แตกต่าง f+g

    1.2 การไม่ย้อนกลับการดำเนินการเริ่มต้นในการลงทะเบียนสองครั้งแรกทำให้อันดับที่สามอยู่ในสถานะที่ยุ่งเหยิงf และ gซึ่งจะกล่าวถึงในคำตอบอื่น ๆ

  2. เริ่มต้นด้วยรัฐ |xx และการสมัคร Uf เพื่อลงทะเบียนครั้งแรกและ Ugไปที่สอง นี่คือความใกล้เคียงที่สุดกับการขนานแบบคลาสสิกโดยที่ทั้งสองฟังก์ชั่นจะถูกนำไปใช้อย่างอิสระกับสำเนาของสถานะเดียวกัน นอกเหนือจากการกำหนดจำนวน qubits สองครั้งปัญหาที่นี่คือเนื่องจากไม่มีการโคลนเพื่อคัดลอก|xมันจะต้องเป็นที่รู้จักหรือเป็นรัฐคลาสสิก (กล่าวคือไม่เกี่ยวข้องกับการทับซ้อนในพื้นฐานการคำนวณ) สามารถใช้การโคลนนิ่งโดยประมาณได้

  3. เริ่มต้นด้วยรัฐ |0xเช่นเดียวกับทะเบียนคลาสสิก ใช้1 แบบรวมเพื่อทำให้การลงทะเบียนครั้งแรกในการทับซ้อนα|0+β|1. ตอนนี้วัดทะเบียนนี้ (วางผลในการลงทะเบียนคลาสสิก) และใช้คลาสสิกIF RESULT = 0 U_f ELSE U_gการดำเนินงาน ในขณะที่สิ่งนี้อาจดูมีพลังน้อยกว่าการดำเนินการข้างต้นอย่างใดอย่างหนึ่งนี่เป็นความหมายบางอย่างเทียบเท่ากับช่องควอนตัมE(ρ)=|α|2UfρUf+|β|2UgρUg. วิธีการดังกล่าวสามารถใช้ในการสร้างหน่วยสุ่มซึ่งมีการใช้งานในตัวอย่างการสุ่มตัวอย่างโบซอนและการเปรียบเทียบแบบสุ่ม


1 มอบให้โดย

(αββα)


สิ่งนี้น่าสนใจบางส่วนเนื่องจากไม่จำเป็นต้องใช้โปรแกรมที่จัดเก็บไว้ CNOT ในหมายเลข 1 จำเป็นหรือไม่
donnydm

2

ใช่หนึ่งสามารถ เคล็ดลับคือการกำหนด (และนำไปใช้) ฟังก์ชั่นใหม่fall(y,x) ที่ประเมินถึง f(x) ถ้า y=0, ถึง g(x) ถ้า y=1ฯลฯ จากนั้นหนึ่งเตรียม qubits แทน y ในการซ้อนทับและการตั้งค่าที่ต้องการ x ถึง x0.

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