Java源码示例:com.gluonhq.strange.gate.X
示例1
public static void main(String[] args) {
QuantumExecutionEnvironment simulator = new SimpleQuantumExecutionEnvironment();
Program program = new Program(1);
Step step0 = new Step();
step0.addGate(new X(0));
Step step1 = new Step();
step1.addGate(new X(0));
program.addStep(step0);
program.addStep(step1);
program.initializeQubit(0,.5);
Result result = simulator.runProgram(program);
Qubit[] qubits = result.getQubits();
Renderer.showProbabilities(program,1000);
Renderer.renderProgram(program);
}
示例2
static void try11() {
QuantumExecutionEnvironment simulator = new SimpleQuantumExecutionEnvironment();
Program program = new Program(2);
Step prepareStep = new Step();
prepareStep.addGate(new X(0));
prepareStep.addGate(new X(1));
program.addStep(prepareStep);
Step oracleStep = new Step();
Oracle oracle = createOracle();
oracleStep.addGate(oracle);
program.addStep(oracleStep);
Result result = simulator.runProgram(program);
Qubit[] qubits = result.getQubits();
System.err.println(", measured = "
+ qubits[0].measure() + ", " + qubits[1].measure());
}
示例3
@Test
public void fourierAdditionProgram0101() {
Step prep = new Step(new X(0), new X(2));
Program p = new Program(4,
prep,
new Step(new Fourier(2, 0)),
new Step (new Cr(0,3, 2, 1)),
new Step (new Cr(0,2, 2, 2)),
new Step (new Cr(1,2, 2, 1)),
new Step(new InvFourier(2,0)));
Result res = runProgram(p);
Complex[] probability = res.getProbability();
Complex.printArray(probability);
Qubit[] qubits = res.getQubits();
assertEquals(0, qubits[0].measure());
assertEquals(1, qubits[1].measure());
assertEquals(1, qubits[2].measure());
assertEquals(0, qubits[3].measure());
}
示例4
@Test
public void fourierAdditionProgram1010() {
Step prep = new Step(new X(1), new X(3));
Program p = new Program(4,
prep,
new Step(new Fourier(2, 0)),
new Step (new Cr(0,3, 2, 1)),
new Step (new Cr(0,2, 2, 2)),
new Step (new Cr(1,2, 2, 1)),
new Step(new InvFourier(2,0)));
Result res = runProgram(p);
Complex[] probability = res.getProbability();
Complex.printArray(probability);
Qubit[] qubits = res.getQubits();
assertEquals(0, qubits[0].measure());
assertEquals(0, qubits[1].measure());
assertEquals(0, qubits[2].measure());
assertEquals(1, qubits[3].measure());
}
示例5
@Test
public void fourierAdditionProgram0011() {
Step prep = new Step(new X(2), new X(3));
Program p = new Program(4,
prep,
new Step(new Fourier(2, 0)),
new Step (new Cr(1,2, 2, 1)),
new Step (new Cr(0,2, 2, 2)),
new Step (new Cr(0,3, 2, 1)),
new Step(new InvFourier(2,0)));
Result res = runProgram(p);
Complex[] probability = res.getProbability();
Complex.printArray(probability);
Qubit[] qubits = res.getQubits();
assertEquals(1, qubits[0].measure());
assertEquals(1, qubits[1].measure());
assertEquals(1, qubits[2].measure());
assertEquals(1, qubits[3].measure());
}
示例6
private void simulate() {
Program p = new Program(2);
Step s1 = new Step();
s1.addGate(new X(0));
p.addStep(s1);
Step s2 = new Step();
s2.addGate(new X(1));
p.addStep(s2);
SimpleQuantumExecutionEnvironment sqee = new SimpleQuantumExecutionEnvironment();
Result res = sqee.runProgram(p);
Qubit[] qubits = res.getQubits();
RenderEngine sim = RenderEngine.createNode(p);
borderPane.setCenter(sim);
Button button = new Button("uh?");
//MaterialIconFactory
// .get()
// .createIconButton(MaterialIcon.PLAY_ARROW, "", "2em", "", ContentDisplay.GRAPHIC_ONLY);
button.setOnAction(e -> sim.animate());
borderPane.setTop(button);
}
示例7
public void addX(int nr) {
System.err.println("add X to "+nr);
Step s = new Step();
s.addGate(new X(nr));
this.program.addStep(s);
renderProgram();
}
示例8
@Test
public void ToffoliGate1() {
// |100> -> |100>
Program p = new Program(3,
new Step(new X(2)),
new Step(new Toffoli(2,1,0))
);
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(3, qubits.length);
assertEquals(0, qubits[0].measure());
assertEquals(0, qubits[1].measure());
assertEquals(1, qubits[2].measure());
}
示例9
@Test
public void ToffoliGate2() {
// |110> -> |111>
Program p = new Program(3,
new Step(new X(2),new X(1)),
new Step(new Toffoli(2,1,0)));
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(3, qubits.length);
assertEquals(1, qubits[0].measure());
assertEquals(1, qubits[1].measure());
assertEquals(1, qubits[2].measure());
}
示例10
@Test
public void ToffoliGate3() {
// |111> -> |110>
Program p = new Program(3,
new Step(new X(2),new X(1),new X(0)),
new Step(new Toffoli(2,1,0))
);
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(3, qubits.length);
assertEquals(0, qubits[0].measure());
assertEquals(1, qubits[1].measure());
assertEquals(1, qubits[2].measure());
}
示例11
@Test
public void ToffoliGate4() {
// |001> -> |001>
Program p = new Program(3,
new Step(new X(0)),
new Step(new Toffoli(2,1,0))
);
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(3, qubits.length);
assertEquals(1, qubits[0].measure());
assertEquals(0, qubits[1].measure());
assertEquals(0, qubits[2].measure());
}
示例12
@Test
public void ToffoliGateR1() {
// |100> -> |100>
Program p = new Program(3,
new Step(new X(2)),
new Step(new Toffoli(0,1,2))
);
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(3, qubits.length);
assertEquals(0, qubits[0].measure());
assertEquals(0, qubits[1].measure());
assertEquals(1, qubits[2].measure());
}
示例13
@Test
public void ToffoliGateR2() {
// |011> -> |111>
Program p = new Program(3,
new Step(new X(0),new X(1)),
new Step(new Toffoli(0, 1, 2)));
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(3, qubits.length);
assertEquals(1, qubits[0].measure());
assertEquals(1, qubits[1].measure());
assertEquals(1, qubits[2].measure());
}
示例14
@Test
public void ToffoliGateR3() {
// |110> -> |111>
Program p = new Program(4,
new Step(new X(2),new X(3)),
new Step(new Toffoli(3, 2, 1)));
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(4, qubits.length);
assertEquals(0, qubits[0].measure());
assertEquals(1, qubits[1].measure());
assertEquals(1, qubits[2].measure());
assertEquals(1, qubits[3].measure());
}
示例15
@Test
public void ToffoliGateR4() {
System.err.println("R4");
// |1100> -> |1101>
Program p = new Program(4,
new Step(new X(2),new X(3)),
new Step(new Toffoli(3, 2, 0)));
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(4, qubits.length);
assertEquals(1, qubits[0].measure());
assertEquals(0, qubits[1].measure());
assertEquals(1, qubits[2].measure());
assertEquals(1, qubits[3].measure());
}
示例16
@Test
public void ToffoliGateS2() {
System.err.println("S2");
// |0101> -> |1101>
Program p = new Program(4,
new Step(new X(0),new X(2)),
new Step(new Toffoli(0, 2, 3)));
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(4, qubits.length);
assertEquals(1, qubits[0].measure());
assertEquals(0, qubits[1].measure());
assertEquals(1, qubits[2].measure());
assertEquals(1, qubits[3].measure());
}
示例17
@Test
public void swapGate01() {
Program p = new Program(2,
new Step(new Identity(0),new X(1)),
new Step(new Swap(0,1))
);
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(2, qubits.length);
assertEquals(1, qubits[0].measure());
assertEquals(0, qubits[1].measure());
}
示例18
@Test
public void swapGate10() {
Program p = new Program(2,
new Step(new Identity(1),new X(0)),
new Step(new Swap(0,1))
);
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(2, qubits.length);
assertEquals(1, qubits[1].measure());
assertEquals(0, qubits[0].measure());
}
示例19
@Test
public void swapGate11() {
Program p = new Program(2,
new Step(new X(0),new X(1)),
new Step(new Swap(0,1))
);
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(2, qubits.length);
assertEquals(1, qubits[0].measure());
assertEquals(1, qubits[1].measure());
}
示例20
@Test
public void swapGate012() {
Program p = new Program(3,
new Step(new X(0)),
new Step(new Swap(0,1))
);
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(3, qubits.length);
assertEquals(0, qubits[0].measure());
assertEquals(1, qubits[1].measure());
assertEquals(0, qubits[2].measure());
}
示例21
@Test
public void swapGate122() {
Program p = new Program(3,
new Step(new X(1)),
new Step(new Swap(1,2))
);
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(3, qubits.length);
assertEquals(0, qubits[0].measure());
assertEquals(0, qubits[1].measure());
assertEquals(1, qubits[2].measure());
}
示例22
@Test
public void swapGate022() {
Program p = new Program(3,
new Step(new X(0)),
new Step(new Swap(0,2))
);
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(3, qubits.length);
assertEquals(0, qubits[0].measure());
assertEquals(0, qubits[1].measure());
assertEquals(1, qubits[2].measure());
}
示例23
@Test
public void swapGate202() {
Program p = new Program(3,
new Step(new X(0)),
new Step(new Swap(2,0))
);
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(3, qubits.length);
assertEquals(0, qubits[0].measure());
assertEquals(0, qubits[1].measure());
assertEquals(1, qubits[2].measure());
}
示例24
@Test
public void cnotx01() {
Program p = new Program(2,
new Step(new X(0)),
new Step(new Cnot(0,1))
);
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(2, qubits.length);
assertEquals(1, qubits[0].measure());
assertEquals(1, qubits[1].measure());
}
示例25
@Test
public void cnotx10() {
Program p = new Program(2,
new Step(new X(1)),
new Step(new Cnot(1,0))
);
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(2, qubits.length);
assertEquals(1, qubits[0].measure());
assertEquals(1, qubits[1].measure());
}
示例26
@Test
public void cnotx02() {
Program p = new Program(3,
new Step(new X(0)),
new Step(new Cnot(0,2))
);
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(3, qubits.length);
assertEquals(1, qubits[0].measure());
assertEquals(0, qubits[1].measure());
assertEquals(1, qubits[2].measure());
}
示例27
@Test
public void cnotx20() {
Program p = new Program(3,
new Step(new X(2)),
new Step(new Cnot(2,0))
);
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(3, qubits.length);
assertEquals(1, qubits[0].measure());
assertEquals(0, qubits[1].measure());
assertEquals(1, qubits[2].measure());
}
示例28
@Test
public void cnotx21() {
Program p = new Program(3,
new Step(new X(2)),
new Step(new Cnot(2,1))
);
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(3, qubits.length);
assertEquals(0, qubits[0].measure());
assertEquals(1, qubits[1].measure());
assertEquals(1, qubits[2].measure());
}
示例29
@Test
public void czx01() {
Program p = new Program(2,
new Step(new X(0)),
new Step(new Cz(0,1))
);
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(2, qubits.length);
assertEquals(1, qubits[0].measure());
assertEquals(0, qubits[1].measure());
}
示例30
@Test
public void czxx01() {
Program p = new Program(2,
new Step(new X(0), new X(1)),
new Step(new Cz(0,1))
);
Result res = runProgram(p);
Qubit[] qubits = res.getQubits();
assertEquals(2, qubits.length);
assertEquals(1, qubits[0].measure());
assertEquals(1, qubits[1].measure());
}