рдпрджрд┐ рдЖрдк рдкрд╛рдЧрд▓реЛрдВ рдХреЗ рдмреАрдЪ рд░рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ рдкрд╛рдЧрд▓ рд╣реЛрдирд╛ рд╕реАрдЦрдирд╛ рд╣реЛрдЧрд╛рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА "рдкрд╛рдЧрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдЦрдирд╛" рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ? рдЧреИрд░-рддреБрдЪреНрдЫ рдХрд╛рд░реНрдпред рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рддрдХрдиреАрдХ рднреА рдирд╣реАрдВ рдЦреЛрдЬ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╣рд░ рдХреЛрдИ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдкрд╛рдЧрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдкреНрд░рдпрд╛рд╕: рд╖рдбреНрдпрдВрддреНрд░ рд╕рд┐рджреНрдзрд╛рдВрддред рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдЕрднреНрдпрд╛рд╕ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХрдбрд╝реА рдореЗрд╣рдирдд рдирд╣реАрдВ рдХрд░рдиреА рд╣реИред рдлрд┐рд░, рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХреЛрдИ рднреА рдкреАрдбрд╝рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рд╖рдбреНрдпрдВрддреНрд░ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреИрд╕реЗ рдмрдирд╛рдП рдЬрд╛рдПрдВ?рдПрдХ рд╕рд╛рдЬрд┐рд╢ рд╕рд┐рджреНрдзрд╛рдВрдд рдмрдирд╛рдирд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рд╣реИред рд╣рдореЗрдВ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ 90% рдЖрдмрд╛рджреА рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рд░рд▓ рд╣реИред рдпрд╣ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ 5% рдЖрдмрд╛рджреА 90% рдХреЛ рд╕рдордЭрд╛ рд╕рдХреЗ рдХрд┐ рд╡реЗ рдХрд┐рд╕ рдмреЗрд╡рдХреВрдл рд╣реИрдВред рдЕрдВрдд рдореЗрдВ, рд╣рдореЗрдВ рдХреБрдЫ рд╢реЛрдзреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЗрди 95% рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬреЛ 90% рджреНрд╡рд╛рд░рд╛ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ "рд▓реЛрдЧ рд╣рдорд╕реЗ рдЕрдзрд┐рдХ рдЪрд╛рд▓рд╛рдХ рд╕рд╛рдмрд┐рдд рд╣реБрдП рд╣реИрдВ ..."ред
рдРрд╕реЗ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рдХреНрд╡рд╛рдВрдЯрдо рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдПрдХ рдмреЗрд╣рддрд░реАрди рдХреНрд╖реЗрддреНрд░ рд╣реИред рдЖрдк рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдпреЛрдЬрдирд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди "рдХреНрд╡рд╛рдВрдЯрдо" рд╢рдмреНрдж рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рд╡рдЬрди рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред
рдЕрдзреНрдпрдпрди рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдПрдХ рдЦреЗрд▓ рд╣реИ, рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдФрд░ рдкрд░рд┐рдЪрд┐рдд рдпреБрд╡рд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рд╣реИред рдХреНрд╡рд╛рдВрдЯрдо рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдФрд░ рдЧреЗрдо рдореЗрдВ рдХреМрди рд╢рд╛рдорд┐рд▓ рд╣реИ? рдЧреВрдЧрд▓ред
рдЗрд╕рд▓рд┐рдП, рдЖрдиреБрд╡рд╛рдВрд╢рд┐рдХ рд╕рд┐рджреНрдзрд╛рдВрдд: 5 рд╡рд░реНрд╖реЛрдВ рдХреЗ рдмрд╛рдж, рдкреЗрдЬ рдФрд░ рдЧреНрд░реАрди рддрдп рдХрд░реЗрдВрдЧреЗ рдХрд┐ Google рдореЗрдВ рдореБрдЦреНрдп рдЪреАрдЬ рдХреМрди рд╣реЛрдЧреА, рдФрд░ рд╡реЗ рдЗрд╕реЗ рдЦреЗрд▓ рдХреА рдорджрдж рд╕реЗ рдХрд░реЗрдВрдЧреЗред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдкрд╛рд╕ рд╢реЛрдзрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИред рдЕрд▓реНрдлрд╝рд╛рдЧреЛ рдЯреАрдо рдиреЗ рдЕрдкрдиреЗ
рд▓рдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡рд┐рдпреЛрдВ рдХреЛ рдЧреЛ рдореЗрдВ рдЦреАрдВрдЪ рд▓рд┐рдпрд╛ред рд╡рд┐рд░реЛрдзрд┐рдпреЛрдВ рдХреЛ рдирдП рддрд░реАрдХреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЕрднреА рднреА
рдХреБрд▓ рд╢реНрд░реЗрд╖реНрдарддрд╛ рдХрд╛ рдПрдХ рдЙрдкрдХрд░рдг рдорд┐рд▓рд╛: рдХреНрд╡рд╛рдВрдЯрдо рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧред
рдХреНрдпрд╛ рдореИрдВ рдЧреЗрдореНрд╕ рдХреЗ рд▓рд┐рдП рдХреНрд╡рд╛рдВрдЯрдо рдХрдореНрдкреНрдпреВрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдЖрд╕рд╛рдиреА рд╕реЗред рд╣рдо рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЦреЗрд▓ "рд▓реЛрдордбрд╝реА рд╢рд┐рдХрд╛рд░реА" рдХреЛ 6 рдЪрд╛рд▓реЛрдВ рдореЗрдВ "рд╣рд▓" рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЦреБрдж рдХреЛ 15 рдХреНрд╡рд┐рдмрд┐рдЯ рддрдХ рд╕реАрдорд┐рдд рдХрд░ рд▓реЗрдВрдЧреЗ (рдСрдирд▓рд╛рдЗрди рдПрдбрд┐рдЯрд░ рдХреНрд╡рд┐рдХ рдкрдВрджреНрд░рд╣ рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХрд░рдг рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ), рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдФрд░ рддреНрд░реБрдЯрд┐ рд╕реБрдзрд╛рд░ рдХреА рд╕реАрдорд╛рдУрдВ рдХреА рдЕрдирджреЗрдЦреА рдХрд░реЗрдВрдЧреЗред
рдирд┐рдпрдо
рдмреЗрд╣рдж рд╕рд░рд▓ред
рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдкрд╛рдВрдЪ рдЫреЗрдж рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВ (рд╣рдо рдЙрдиреНрд╣реЗрдВ 0-1-2-3-4 рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ рджреЗрддреЗ рд╣реИрдВ)ред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд▓реЛрдордбрд╝реА рд╣реИред рд╣рд░ рд░рд╛рдд, рд▓реЛрдордбрд╝реА рдЕрдЧрд▓реЗ рдорд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдмрд╛рдПрдВ рдпрд╛ рджрд╛рдПрдВ рдЪрд▓рддреА рд╣реИред рд╣рд░ рд╕реБрдмрд╣, рд╢рд┐рдХрд╛рд░реА рдПрдХ рдЫреЗрдж рдЪреБрди рд╕рдХрддрд╛ рд╣реИред рд╢рд┐рдХрд╛рд░реА рдХрд╛ рдХрд╛рд░реНрдп рд▓реЛрдордбрд╝реА рдХреЛ рдкрдХрдбрд╝рдирд╛ рд╣реИред рд▓реЛрдордбрд╝реА рдХрд╛ рдХрд╛рд░реНрдп рдЬреАрд╡рд┐рдд рд░рд╣рдирд╛ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдПрдХ рд▓реЛрдордбрд╝реА рдПрдХ рд╢рд┐рдХрд╛рд░реА рд╕реЗ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдЪрд▓ рд╕рдХрддреА рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдПрдХ рдЬреАрдд рдХреА рд░рдгрдиреАрддрд┐ рд╣реИ: рдЫреЗрдж 1-2-3-1-2-3 рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рдХреЗрд╡рд▓ рдЗрд╕ рд░рдгрдиреАрддрд┐ рдХрд╛ рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛ред
рдПрдХ рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рдЖрдЗрдП, 0-1-2-3-4 (5 рдЫреЗрдж) рдХреНрд╡рд┐рдЯ рдХреА рджреАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВред
рдпрд╣рд╛рдВ рдЖрдк рдПрдбрд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рджреАрдХреНрд╖рд╛ рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рдгрд╛рд▓реА рд╣реИ рдЬрд┐рд╕рдореЗрдВ, рдорд╛рдк рдХреЗ рдмрд╛рдж, рдХрдбрд╝рд╛рдИ рд╕реЗ рдПрдХ qubit рдПрдХрд▓ рд╣реЛрдЧрд╛ред "рдПрдХрддрд╛" рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рдкреНрд░рддреНрдпреЗрдХ qubit рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рд╣рдореЗрдВ рдпреЛрдЬрдирд╛ рдХреА рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдЫреЛрдбрд╝рдиреА рдЪрд╛рд╣рд┐рдП (рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╣рдорд╛рд░реЗ рд╕рд┐рджреНрдзрд╛рдВрдд)ред
Q # рдкрд░, рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХреЛрдб рдорд┐рд▓рддрд╛ рд╣реИ:
operation TestStrategy () : (Result) { let res = Zero; using(qubits=Qubit[16]) {
TestStrategy рд╣рдорд╛рд░реА рд░рдгрдиреАрддрд┐ 1-2-3-1-2-3 рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдЧреА, InitFoxHoles () рдХреЗрд╡рд▓ рд▓реЛрдордбрд╝реА рдХреЗ рдЫреЗрдж рдХреА рджреАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рджреАрдХреНрд╖рд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВред TestStrategy рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ, рджреАрдХреНрд╖рд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рдкрд╣рд▓реЗ 5 рдХреНрд╡реИрдЯреНрд╕ рдХреЛ рдорд╛рдкреЗрдВ рдФрд░ рдЕрдкрдиреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ
operation TestInit(): (Result, Result, Result, Result, Result) { body { mutable res0 = Zero; mutable res1 = Zero; mutable res2 = Zero; mutable res3 = Zero; mutable res4 = Zero; using(qubits=Qubit[16]) {
рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХреЛ рдПрдХ рд╣рдЬрд╛рд░ рдмрд╛рд░ рдЪрд▓рд╛рдПрдВрдЧреЗ (рдХрдИ рд░рди рдХреНрд╡рд╛рдВрдЯрдо рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИрдВ, рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рднреА)ред рдХреЙрд▓ рдХреЛрдб - рд╕реНрдкреЙрдЗрд▓рд░ рдХреЗ рддрд╣рдд, рдкрд░рд┐рдгрд╛рдо: рдиреАрдЪреЗ рд╕реНрдХреНрд░реАрди рдкрд░ред
рдЬрд▓реНрджреА рд╕реЗ рдкрд░реАрдХреНрд╖рдг рджреАрдХреНрд╖рд╛ static void TestInitiation() { using (var sim = new QuantumSimulator()) { var initedQubitsValues = Enumerable.Range(0, 5) .ToDictionary(qubitIndex => qubitIndex, oneMesaured => 0); for (int i = 0; i < 1000; i++) { (Result, Result, Result, Result, Result) result = TestInit.Run(sim).Result; if (result.Item1 == Result.One) { initedQubitsValues[0]++; } if (result.Item2 == Result.One) { initedQubitsValues[1]++; } if (result.Item3 == Result.One) { initedQubitsValues[2]++; } if (result.Item4 == Result.One) { initedQubitsValues[3]++; } if (result.Item5 == Result.One) { initedQubitsValues[4]++; } } Console.WriteLine($"Qubit-0 initiations: {initedQubitsValues[0]}"); Console.WriteLine($"Qubit-1 initiations: {initedQubitsValues[1]}"); Console.WriteLine($"Qubit-2 initiations: {initedQubitsValues[2]}"); Console.WriteLine($"Qubit-3 initiations: {initedQubitsValues[3]}"); Console.WriteLine($"Qubit-4 initiations: {initedQubitsValues[4]}"); } }

рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рдЧрдИред рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╡рд┐рддрд░рдг рдХреА рдЙрдореНрдореАрдж рдереАред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рд╕рд░рд▓ рд╣реИ: рдЪрд░рдг 3 рдореЗрдВ, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХреЗ рдмрдЬрд╛рдп рддреАрд╕рд░реА рдХрдХреНрд╖рд╛ рдХреЛ рдЙрд▓рдЯрд╛ рджрд┐рдпрд╛: (рдирд┐рдпрдВрддреНрд░рд┐рдд (рдПрдХреНрд╕)) ([рд░рдЬрд┐рд╕реНрдЯрд░ [0], рд░рдЬрд┐рд╕реНрдЯрд░ [2]], рд░рдЬрд┐рд╕реНрдЯрд░ [3]); рдЕрдЪреНрдЫрд╛
рдирд╣реАрдВ рдкреБрд░рд╛рдиреЗ рдХреЙрдкреА-рдкреЗрд╕реНрдЯред
рд╣рдо рдХреЛрдб рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ, рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВ:
рджреАрдХреНрд╖рд╛ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ 
рдкрд╣рд▓реЗ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред рдХреЛрдб рдХреЛ рд╢рд▓рдЬрдо, рд╕рдВрд╕реНрдХрд░рдг
рдкреНрд░рддрд┐рдмрджреНрдз 1 рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд▓реЛрдордбрд╝реА рдХреЛ рдХрд╣рд╛рдВ рджреМрдбрд╝рд╛рдПрдВ?
рд▓реЛрдордбрд╝реА рдХреА рд╡рд░реНрддрдорд╛рди рджрд┐рд╢рд╛ рдХреЗ рддрд╣рдд рдкрд╛рдВрдЪрд╡реАрдВ qubit (рдКрдкрд░ рд╕реЗ рдХреНрд░рдорд╛рдВрдХрди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ) рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рд╣рдо рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рд╢реВрдиреНрдп рдХрд╛ рдЕрд░реНрде рд╣реИ рдПрдХ рдиреАрдЪреЗ рдХреА рдУрд░ рдЧрддрд┐, рдПрдХ рдЗрдХрд╛рдИ рдХрд╛ рдЕрд░реНрде рд╣реИ рдПрдХ рдКрдкрд░ рдХреА рдУрд░ рдЧрддрд┐ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЕрдЧрд░ рд▓реЛрдордбрд╝реА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╢реВрдиреНрдп рдЫреЗрдж рдореЗрдВ рд╣реИ - рдЗрд╕реЗ рдиреАрдЪреЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд▓реЛрдордбрд╝реА рдЪреМрдереЗ рдЫреЗрдж рдореЗрдВ рд╣реИ, рддреЛ рдпрд╣ рдКрдкрд░ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд▓реЛрдордбрд╝реА рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЗрди рд╕рд░рд▓ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдо "рд╡рд░реНрддрдорд╛рди рджрд┐рд╢рд╛ рдХреА рд╕реАрдорд╛" рдХреЛ 0, 1 рдпрд╛ рд╢реВрдиреНрдп рдФрд░ рдПрдХ рдХреЗ рд╕реБрдкрд░рдкреЛрдЬрд┐рд╢рди рдкрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рднрдВрдбрд╛рд░ рдореЗрдВ рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ,
рдХрдорд┐рдЯ 2 ред
рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдпреЛрдЬрдирд╛редрдХреЛрдб рдФрд░ рдкрд░реАрдХреНрд╖рдг
static void TestMovementDirectionSetup() { using (var sim = new QuantumSimulator()) { List<string> results = new List<string>(); string initedCubit = null; string moveDirection = null; for (int i = 0; i < 1000; i++) { (Result, Result, Result, Result, Result, Result) result = Quantum.FoxHunter.TestMovementDirectionSetup.Run(sim).Result; if (result.Item1 == Result.One) { initedCubit = "0"; } if (result.Item2 == Result.One) { initedCubit = "1"; } if (result.Item3 == Result.One) { initedCubit = "2"; } if (result.Item4 == Result.One) { initedCubit = "3"; } if (result.Item5 == Result.One) { initedCubit = "4"; } if (result.Item6 == Result.One) { moveDirection = "1"; } else { moveDirection = "0"; } results.Add($"{initedCubit}{moveDirection}"); } foreach(var group in results .GroupBy(result => result) .OrderBy(group => group.Key)) { Console.WriteLine($"{group.Key} was measured {group.Count()} times"); } Console.WriteLine($"\r\nTotal measures: {results.Count()}"); } }

рдкреНрд░рд╕реНрддрд╛рд╡
рдирд┐рдпрдВрддреНрд░рд┐рдд SWAP рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдпрджрд┐ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдорд╛рддреНрд░рд╛ рд╕рд┐рдВрдЧрд▓ рд╣реИ - рдиреАрдЪреЗ рд╕реНрд╡реИрдк рдХрд░реЗрдВред рдпрджрд┐ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдорд╛рддреНрд░рд╛ рд╢реВрдиреНрдп рд╣реИ, рддреЛ рд╣рдо рд╕реНрд╡реИрдк рдХрд░рддреЗ рд╣реИрдВред
рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдпреЛрдЬрдирд╛ ред
рдкреНрд░ # рд╕рдВрдЪрд╛рд▓рдХ рдХреНрдпреВ #: рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдмрдпрд╛рди operation TestFirstMovement(): (Result, Result, Result, Result, Result, Result) { body { mutable res0 = Zero; mutable res1 = Zero; mutable res2 = Zero; mutable res3 = Zero; mutable res4 = Zero; mutable res5 = Zero; using(qubits=Qubit[16]) { InitFoxHoles(qubits); SetupMovementDirection(qubits); MakeMovement(qubits); set res0 = M(qubits[0]); set res1 = M(qubits[1]); set res2 = M(qubits[2]); set res3 = M(qubits[3]); set res4 = M(qubits[4]); set res5 = M(qubits[5]); ResetAll(qubits);
рд╕реА # рдХреЛрдб static void TestFirstMove() { using (var sim = new QuantumSimulator()) { List<string> results = new List<string>(); string initedCubit = null; string moveDirection = null; for (int i = 0; i < 1000; i++) { (Result, Result, Result, Result, Result, Result) result = Quantum.FoxHunter.TestFirstMovement.Run(sim).Result; if (result.Item1 == Result.One) { initedCubit = "0"; } if (result.Item2 == Result.One) { initedCubit = "1"; } if (result.Item3 == Result.One) { initedCubit = "2"; } if (result.Item4 == Result.One) { initedCubit = "3"; } if (result.Item5 == Result.One) { initedCubit = "4"; } if (result.Item6 == Result.One) { moveDirection = "1"; } else { moveDirection = "0"; } results.Add($"{initedCubit}{moveDirection}"); }
рдХреЛрдб рдХреЛ
рдХрдорд┐рдЯ 3 рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдо 6 рдЪрд╛рд▓ рдЪрд▓рддреЗ рд╣реИрдВ
рдЕрдВрдд рдореЗрдВ, рдЦреЗрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЫрдареА рдХреНрд╡реЗрдЯ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ (рд▓реЛрдордбрд╝реА рдореБрдХреНрдд рд╣реИ / рд▓реЛрдордбрд╝реА рдореБрдХреНрдд рдирд╣реАрдВ рд╣реИ)ред рдЗрдХрд╛рдИ рдПрдХ рдореБрдХреНрдд рд▓реЛрдордбрд╝реА рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рд╣рдо рдЖрдЧреЗ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдпрдерд╛рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗред
7,8,9,10,11 рдХреЗ рдХреНрд╡реИрдмрд┐рдЯреНрд╕ рдЪрд╛рд▓реЛрдВ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рд░рдЦреЗрдВрдЧреЗред рдкреНрд░рддреНрдпреЗрдХ рдЪрд╛рд▓ рдХреЗ рдмрд╛рдж, рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╡рд░реНрддрдорд╛рди рджрд┐рд╢рд╛ рдХреА рдПрдХ рдмрд┐рдЯ рдХреЗ рд╕рд╛рде рд╕реНрд╡реИрдк рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ (рдпрд╣ рд╣рдореЗрдВ рдЪрд╛рд▓реЛрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЪрд╛рд▓ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд░реНрддрдорд╛рди рджрд┐рд╢рд╛ рдХреА qubit рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛)ред
рдпреЛрдЬрдирд╛ рдЬреБрдбрд╝реА ред
рдкреНрд░ # рд╕рдВрдЪрд╛рд▓рдХ рдХреНрдпреВ #: рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдмрдпрд╛рди operation TestSixMovements(): (Result) { body { mutable res = Zero; using(qubits=Qubit[16]) { ResetAll(qubits); InitFoxHoles(qubits); X(qubits[6]);
C #: рдкрд░реАрдХреНрд╖рдг static void TestMovements() { using (var sim = new QuantumSimulator()) { int zerosCount = 0; for (int i = 0; i < 1000; i++) { Result result = Quantum.FoxHunter.TestSixMovements.Run(sim).Result; if(result == Result.Zero) { zerosCount++; } } Console.WriteLine($"\r\nTotal zeroes: {zerosCount}"); } }
рд╣рдо
рдХрдорд┐рдЯреЗрдб 4 рджрд┐рдЦрддреЗ рд╣реИрдВред
рдЫреВрдирд╛ рдЦрддреНрдо
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рд░реНрдХрд┐рдЯ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдо рд░рдгрдиреАрддрд┐ 1-2-3-1-2-3 рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЫреЗрдж рдХреЛ рджреЛ рдмрд╛рд░ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВред рддрджрдиреБрд╕рд╛рд░, рдкрд╣рд▓реЗ рдХрджрдо рдкрд░ рд▓реЛрдордбрд╝реА рдХреЛ рдкрдХрдбрд╝рддреЗ рд╣реБрдП, рд╣рдо рджреЛ рдмрд╛рд░ (рдкрд╣рд▓реА рдЪрд╛рд▓ рдФрд░ рдЪреМрдереА рдкрд░) рд╕реНрдерд┐рддрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдЧреБрдЬрд░реЗрдВрдЧреЗред
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо 4-5-6 рдХреА рдЪрд╛рд▓ рдХреЗ рдмрд╛рдж рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 12 рдХреНрд╡рд┐рдмрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЬреАрдд рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ: рдпрджрд┐ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕реНрдерд┐рддрд┐ рдХреА рдорд╛рддреНрд░рд╛ рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рд╣рдо рдЬреАрдд рдЧрдПред
рдЕрдВрддрд┐рдо рдпреЛрдЬрдирд╛ ред
Q #: 6 рдореВрд╡ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдареАрдХ рдХрд░реЗрдВ operation MakeSixMovements(qubits: Qubit[]) : Unit { body {
Q #: рдСрдкрд░реЗрдЯрд░ рдкрд░реАрдХреНрд╖рдг рд░рдгрдиреАрддрд┐ 1-2-3-1-2-3 рддрдп рдХрд░реЗрдВ operation TestStrategy () : (Result) {
C #: рдЕрдВрддрд┐рдо рдЬрд╛рдВрдЪ рдЪрд▓рд╛рдПрдВ static void RunFoxHunt() { Stopwatch sw = new Stopwatch(); sw.Start(); using (var sim = new QuantumSimulator()) { var foxSurvives = 0; var hunterWins = 0; for (int i = 0; i < 1000; i++) { var result = (Result)(TestStrategy.Run(sim).Result); if (result == Result.Zero) { foxSurvives++; } else { hunterWins++; } } Console.WriteLine($"Fox survives: \t{foxSurvives}"); Console.WriteLine($"Hunter wins: \t{hunterWins}"); } sw.Stop(); Console.WriteLine($"Experiment finished. " + $"Time spent: {sw.ElapsedMilliseconds / 1000} seconds"); }
рел рдХрд░рдирд╛ ред
рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕ рдпреЛрдЬрдирд╛ рдХреЛ рджреЛрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдФрд░ рд╕рдВрдЪрд╛рд▓рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреНрд╡рд┐рдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рддреБрдЪреНрдЫ рдЕрдиреБрдХреВрд▓рди, рдХреНрд╡реИрдм -13 рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдХреЗрд╡рд▓ 6 рдФрд░ 12 рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реИ - рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди - рджреАрдХреНрд╖рд╛ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдкрд╣рд▓рд╛ рд╢реЙрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рд╣рд╛рд▓рд╛рдБрдХрд┐, Google рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЛ рдпрд╣ рдХрд╛рдо рдЫреЛрдбрд╝ рджреЗрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХреЛрдИ рднреА рдХреНрд╡рд╛рдВрдЯрдо рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕реЗ рд╕рддрд╣реА рд░реВрдк рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ, рд╡рд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ "рд▓реЛрдордбрд╝реА рд╢рд┐рдХрд╛рд░реА" рдЦреЗрд▓ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЕрдзрд┐рдХ рдорд╛рддреНрд░рд╛рдПрдБ рдереАрдВ, рддреЛ рд╣рдо рдЗрд╖реНрдЯрддрдо рд╕рдорд╛рдзрд╛рди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдореМрдЬреВрджрд╛ рдХреА рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЯрд┐рдХ-рдЯреИрдХ-рдЯреЛ (рдФрд░ рдЙрдирдХреЗ рдХреНрд╡рд╛рдВрдЯрдо рд╕рдВрд╕реНрдХрд░рдг), рдЪреЗрдХрд░реНрд╕, рд╢рддрд░рдВрдЬ, рдЧреЛ рдЕрдЧрд▓реЗ рдкрдбрд╝ рдЬрд╛рдПрдВрдЧреЗред
рдЗрд╕реА рд╕рдордп, рдбреЙрдЯрд╛, рд╕реНрдЯрд╛рд░рдХреНрд░рд╛рдлреНрдЯ рдФрд░ рдбреВрдо рдЬреИрд╕реЗ рдЦреЗрд▓реЛрдВ рдХреА "рд╕реЙрд▓реНрд╡реЗрдмрд┐рд▓рд┐рдЯреА" рдХрд╛ рдореБрджреНрджрд╛ рдЦреБрд▓рд╛ рд╣реИред рдХреНрд╡рд╛рдВрдЯрдо рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд┐рдХреЛрдВ рдХреЗ рдкреВрд░реЗ рдЗрддрд┐рд╣рд╛рд╕ рдХрд╛ рднрдВрдбрд╛рд░рдг рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рд╣рдо 500 рдХреА рдПрдкреАрдПрдо (рдХреНрд░рд┐рдпрд╛рдПрдБ рдкреНрд░рддрд┐ рдорд┐рдирдЯ) рд▓реЗрддреЗ рд╣реИрдВ, рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдорд┐рдирдЯреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЦреЗрд▓ рдХреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХрддрд╛ рдХреЛ рд╕реНрд╡рдпрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ - рд╕рднреА рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдмрдЯреЗрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рдмрдврд╝рддреА рд╣реИред
рддреЛ, рдмреНрд░рд┐рди рдФрд░ рдкреЗрдЬ рдХреЗ рдмреАрдЪ рдПрдХ рдЫреЛрдЯреА рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рдПрдХ рдЦреЗрд▓ рдХрд╛ рдЪрдпрди рдПрдХ рдирд┐рд░реНрдгрд╛рдпрдХ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╢рд╛рд╕реНрддреНрд░реАрдп рдФрд░ рдХреНрд╡рд╛рдВрдЯрдо рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ "рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдХрдард┐рди" рдЧреЗрдо рдХреА рдкреАрдврд╝реА рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд╣рдХрджрд╛рд░ рд╣реИрдВред