30 std::cout <<
"[DEMO] Teleportation (A->B) starting\n";
32 ns3::RngSeedManager::SetSeed(1);
33 ns3::RngSeedManager::SetRun(1);
42 ch->SetAttribute(
"Delay", TimeValue(NanoSeconds(10)));
46 std::pair<int, int> ms;
47 Simulator::Schedule(NanoSeconds(1), [&]() {
48 auto [qA, qBremote] = A->CreateBellPair();
49 bool ok = A->Send(qBremote, B->GetId());
50 std::cout <<
"[SEND][quantum] A->B: " << (ok ?
"ok" :
"failed") <<
"\n";
52 auto qAToTeleport = A->CreateQubit();
53 A->Apply(
gates::H(), {qAToTeleport});
54 ms = A->MeasureBell(qAToTeleport, qA);
55 std::cout <<
"[A] BSM results: " << ms.first <<
", " << ms.second <<
"\n";
59 B->SetRecvCallback([&](std::shared_ptr<Qubit> q) {
60 std::cout <<
"[RECV][quantum][B]: yes\n";
61 std::cout <<
"[B] Applying corrections: Z^" << ms.first <<
" X^" << ms.second <<
"|state>\n";
70 int mx = B->Measure(q, Basis::X);
71 std::cout <<
"[B][VERIFY] Final state is correct: " << ((mx == 0) ?
"yes" :
"no") <<
"\n";
75 Simulator::Stop(Seconds(10));
78 std::cout <<
"[DONE] Teleportation (A->B) finished\n";