super-dense.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. <!DOCTYPE HTML>
  2. <html lang="en" class="sidebar-visible no-js">
  3. <head>
  4. <!-- Book generated using mdBook -->
  5. <meta charset="UTF-8">
  6. <title>Super Dense Coding - QCGPU User Guide</title>
  7. <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  8. <meta name="description" content="The user guide / prose documentation for QCGPU">
  9. <meta name="viewport" content="width=device-width, initial-scale=1">
  10. <meta name="theme-color" content="#ffffff" />
  11. <link rel="stylesheet" href="../book.css">
  12. <link href="https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
  13. <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:500" rel="stylesheet" type="text/css">
  14. <link rel="shortcut icon" href="favicon.png">
  15. <!-- Font Awesome -->
  16. <link rel="stylesheet" href="../FontAwesome/css/font-awesome.css">
  17. <link rel="stylesheet" href="../highlight.css">
  18. <link rel="stylesheet" href="../tomorrow-night.css">
  19. <link rel="stylesheet" href="../ayu-highlight.css">
  20. <!-- Custom theme stylesheets -->
  21. <!-- MathJax -->
  22. <script async type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
  23. </head>
  24. <body class="light">
  25. <!-- Work around some values being stored in localStorage wrapped in quotes -->
  26. <script type="text/javascript">
  27. try {
  28. var theme = localStorage.getItem('mdbook-theme');
  29. var sidebar = localStorage.getItem('mdbook-sidebar');
  30. if (theme.startsWith('"') && theme.endsWith('"')) {
  31. localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
  32. }
  33. if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
  34. localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
  35. }
  36. } catch (e) { }
  37. </script>
  38. <!-- Set the theme before any content is loaded, prevents flash -->
  39. <script type="text/javascript">
  40. var theme;
  41. try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
  42. if (theme === null || theme === undefined) { theme = 'light'; }
  43. document.body.className = theme;
  44. document.querySelector('html').className = theme + ' js';
  45. </script>
  46. <!-- Hide / unhide sidebar before it is displayed -->
  47. <script type="text/javascript">
  48. var html = document.querySelector('html');
  49. var sidebar = 'hidden';
  50. if (document.body.clientWidth >= 1080) {
  51. try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
  52. sidebar = sidebar || 'visible';
  53. }
  54. html.classList.remove('sidebar-visible');
  55. html.classList.add("sidebar-" + sidebar);
  56. </script>
  57. <nav id="sidebar" class="sidebar" aria-label="Table of contents">
  58. <ol class="chapter"><li><a href="../qcgpu.html"><strong aria-hidden="true">1.</strong> QCGPU</a></li><li><ol class="section"><li><a href="../getting-started.html"><strong aria-hidden="true">1.1.</strong> Getting Started</a></li></ol></li><li><a href="../user-guide/user-guide.html"><strong aria-hidden="true">2.</strong> User Guide</a></li><li><ol class="section"><li><a href="../user-guide/registers.html"><strong aria-hidden="true">2.1.</strong> Quantum Registers</a></li><li><a href="../user-guide/gates.html"><strong aria-hidden="true">2.2.</strong> Quantum Gates</a></li><li><a href="../user-guide/operations.html"><strong aria-hidden="true">2.3.</strong> Quantum Operations</a></li><li><a href="../user-guide/examples.html"><strong aria-hidden="true">2.4.</strong> Examples</a></li><li><a href="../user-guide/decoherence.html"><strong aria-hidden="true">2.5.</strong> Decoherence</a></li></ol></li><li><a href="../algorithms/algorithms.html"><strong aria-hidden="true">3.</strong> Algorithms</a></li><li><ol class="section"><li><a href="../algorithms/bernstein-vazirani.html"><strong aria-hidden="true">3.1.</strong> Bernstein-Vazirani</a></li><li><a href="../algorithms/deutsch-jozsa.html"><strong aria-hidden="true">3.2.</strong> Deutsch-Jozsa</a></li><li><a href="../algorithms/grover.html"><strong aria-hidden="true">3.3.</strong> Grovers</a></li><li><a href="../algorithms/shor.html"><strong aria-hidden="true">3.4.</strong> Shors</a></li><li><a href="../algorithms/super-dense.html" class="active"><strong aria-hidden="true">3.5.</strong> Super Dense Coding</a></li></ol></li></ol>
  59. </nav>
  60. <div id="page-wrapper" class="page-wrapper">
  61. <div class="page">
  62. <div id="menu-bar" class="menu-bar">
  63. <div id="menu-bar-sticky-container">
  64. <div class="left-buttons">
  65. <button id="sidebar-toggle" class="icon-button" type="button" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
  66. <i class="fa fa-bars"></i>
  67. </button>
  68. <button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
  69. <i class="fa fa-paint-brush"></i>
  70. </button>
  71. <ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
  72. <li role="none"><button role="menuitem" class="theme" id="light">Light <span class="default">(default)</span></button></li>
  73. <li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
  74. <li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
  75. <li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
  76. <li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
  77. </ul>
  78. <button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
  79. <i class="fa fa-search"></i>
  80. </button>
  81. </div>
  82. <h1 class="menu-title">QCGPU User Guide</h1>
  83. <div class="right-buttons">
  84. <a href="../print.html" title="Print this book" aria-label="Print this book">
  85. <i id="print-button" class="fa fa-print"></i>
  86. </a>
  87. </div>
  88. </div>
  89. </div>
  90. <div id="search-wrapper" class="hidden">
  91. <form id="searchbar-outer" class="searchbar-outer">
  92. <input type="search" name="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
  93. </form>
  94. <div id="searchresults-outer" class="searchresults-outer hidden">
  95. <div id="searchresults-header" class="searchresults-header"></div>
  96. <ul id="searchresults">
  97. </ul>
  98. </div>
  99. </div>
  100. <!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
  101. <script type="text/javascript">
  102. document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
  103. document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
  104. Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
  105. link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
  106. });
  107. </script>
  108. <div id="content" class="content">
  109. <main>
  110. <a class="header" href="#super-dense-coding" id="super-dense-coding"><h1>Super Dense Coding</h1></a>
  111. <p>if Alice and Bob share a pair of entangled qubits, then Alice can encode two classical bits into her one entangled qubit,
  112. send it to Bob, and Bob can decode it with the help of his entangled qubit.</p>
  113. <pre><pre class="playpen"><code class="language-rust">extern crate qcgpu;
  114. use qcgpu::State;
  115. fn superdense(input: &amp;str) -&gt; i32 {
  116. let mut state = State::new(2, 0);
  117. let input_str = String::from(input);
  118. // Prepare the bell state
  119. state.h(0);
  120. state.cx(0, 1);
  121. // Alice prepares her qubit
  122. let alice = 1;
  123. if input_str.get(0..1) == Some(&quot;1&quot;) {
  124. state.z(alice);
  125. }
  126. if input_str.get(1..2) == Some(&quot;1&quot;) {
  127. state.x(alice);
  128. }
  129. println!(&quot;\nState after Alice prepares her qubit: \n{}&quot;, state);
  130. // Alice sends her qubit to Bob
  131. let bob = 0;
  132. state.cx(alice, bob);
  133. state.h(alice);
  134. println!(
  135. &quot;\nState after Bob receives Alice's qubit and 'decodes' it: \n{}&quot;,
  136. state
  137. );
  138. state.measure()
  139. }
  140. fn main() {
  141. use std::io;
  142. println!(&quot;Two bit string to send:&quot;);
  143. let mut input = String::new();
  144. match io::stdin().read_line(&amp;mut input) {
  145. Ok(_n) =&gt; {
  146. let result = superdense(input.as_str());
  147. println!(&quot;\nDecoded string is: {}&quot;, result);
  148. }
  149. Err(error) =&gt; println!(&quot;error: {}&quot;, error),
  150. }
  151. }
  152. </code></pre></pre>
  153. </main>
  154. <nav class="nav-wrapper" aria-label="Page navigation">
  155. <!-- Mobile navigation buttons -->
  156. <a rel="prev" href="../algorithms/shor.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
  157. <i class="fa fa-angle-left"></i>
  158. </a>
  159. <div style="clear: both"></div>
  160. </nav>
  161. </div>
  162. </div>
  163. <nav class="nav-wide-wrapper" aria-label="Page navigation">
  164. <a href="../algorithms/shor.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
  165. <i class="fa fa-angle-left"></i>
  166. </a>
  167. </nav>
  168. </div>
  169. <script src="../searchindex.js" type="text/javascript" charset="utf-8"></script>
  170. <script>
  171. var path_to_root = "../";
  172. </script>
  173. <script src="../elasticlunr.min.js" type="text/javascript" charset="utf-8"></script>
  174. <script src="../mark.min.js" type="text/javascript" charset="utf-8"></script>
  175. <script src="../searcher.js" type="text/javascript" charset="utf-8"></script>
  176. <script src="../clipboard.min.js" type="text/javascript" charset="utf-8"></script>
  177. <script src="../highlight.js" type="text/javascript" charset="utf-8"></script>
  178. <script src="../book.js" type="text/javascript" charset="utf-8"></script>
  179. <!-- Custom JS scripts -->
  180. </body>
  181. </html>