super-dense.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. <!DOCTYPE HTML>
  2. <html lang="en" class="sidebar-visible">
  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. <base href="../">
  12. <link rel="stylesheet" href="book.css">
  13. <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">
  14. <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:500" rel="stylesheet" type="text/css">
  15. <link rel="shortcut icon" href="favicon.png">
  16. <!-- Font Awesome -->
  17. <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
  18. <link rel="stylesheet" href="highlight.css">
  19. <link rel="stylesheet" href="tomorrow-night.css">
  20. <link rel="stylesheet" href="ayu-highlight.css">
  21. <!-- Custom theme -->
  22. <!-- MathJax -->
  23. <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
  24. <!-- Fetch Clipboard.js from CDN but have a local fallback -->
  25. <script src="https://cdn.jsdelivr.net/clipboard.js/1.6.1/clipboard.min.js"></script>
  26. <script>
  27. if (typeof Clipboard == 'undefined') {
  28. document.write(unescape("%3Cscript src='clipboard.min.js'%3E%3C/script%3E"));
  29. }
  30. </script>
  31. <noscript>
  32. <style type="text/css">
  33. .javascript-only {
  34. display: none;
  35. }
  36. </style>
  37. </noscript>
  38. </head>
  39. <body class="light">
  40. <!-- Work around some values being stored in localStorage wrapped in quotes -->
  41. <script type="text/javascript">
  42. try {
  43. var theme = localStorage.getItem('mdbook-theme');
  44. var sidebar = localStorage.getItem('mdbook-sidebar');
  45. if (theme.startsWith('"') && theme.endsWith('"')) {
  46. localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
  47. }
  48. if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
  49. localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
  50. }
  51. } catch (e) { }
  52. </script>
  53. <!-- Set the theme before any content is loaded, prevents flash -->
  54. <script type="text/javascript">
  55. var theme;
  56. try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
  57. if (theme === null || theme === undefined) { theme = 'light'; }
  58. document.body.className = theme;
  59. document.querySelector('html').className = theme;
  60. </script>
  61. <!-- Hide / unhide sidebar before it is displayed -->
  62. <script type="text/javascript">
  63. var html = document.querySelector('html');
  64. var sidebar = 'hidden';
  65. if (document.body.clientWidth >= 1080) {
  66. try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
  67. sidebar = sidebar || 'visible';
  68. }
  69. html.classList.remove('sidebar-visible');
  70. html.classList.add("sidebar-" + sidebar);
  71. </script>
  72. <nav id="sidebar" class="sidebar" aria-label="Table of contents">
  73. <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>
  74. </nav>
  75. <div id="page-wrapper" class="page-wrapper">
  76. <div class="page">
  77. <div id="menu-bar" class="menu-bar">
  78. <div id="menu-bar-sticky-container">
  79. <div class="left-buttons javascript-only">
  80. <button id="sidebar-toggle" class="icon-button" type="button" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
  81. <i class="fa fa-bars"></i>
  82. </button>
  83. <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">
  84. <i class="fa fa-paint-brush"></i>
  85. </button>
  86. <ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
  87. <li role="none"><button role="menuitem" class="theme" id="light">Light <span class="default">(default)</span></button></li>
  88. <li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
  89. <li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
  90. <li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
  91. <li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
  92. </ul>
  93. <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">
  94. <i class="fa fa-search"></i>
  95. </button>
  96. </div>
  97. <h1 class="menu-title">QCGPU User Guide</h1>
  98. <div class="right-buttons">
  99. <a href="print.html" title="Print this book" aria-label="Print this book">
  100. <i id="print-button" class="fa fa-print"></i>
  101. </a>
  102. </div>
  103. </div>
  104. </div>
  105. <div id="searchbar-outer" class="searchbar-outer">
  106. <input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
  107. </div>
  108. <div id="searchresults-outer" class="searchresults-outer">
  109. <div class="searchresults-header" id="searchresults-header"></div>
  110. <ul id="searchresults">
  111. </ul>
  112. </div>
  113. <!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
  114. <script type="text/javascript">
  115. document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
  116. document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
  117. Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
  118. link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
  119. });
  120. </script>
  121. <div id="content" class="content">
  122. <main>
  123. <a class="header" href="algorithms/super-dense.html#super-dense-coding" id="super-dense-coding"><h1>Super Dense Coding</h1></a>
  124. <p>if Alice and Bob share a pair of entangled qubits, then Alice can encode two classical bits into her one entangled qubit,
  125. send it to Bob, and Bob can decode it with the help of his entangled qubit.</p>
  126. <pre><pre class="playpen"><code class="language-rust">extern crate qcgpu;
  127. use qcgpu::State;
  128. fn superdense(input: &amp;str) -&gt; i32 {
  129. let mut state = State::new(2, 0);
  130. let input_str = String::from(input);
  131. // Prepare the bell state
  132. state.h(0);
  133. state.cx(0, 1);
  134. // Alice prepares her qubit
  135. let alice = 1;
  136. if input_str.get(0..1) == Some(&quot;1&quot;) {
  137. state.z(alice);
  138. }
  139. if input_str.get(1..2) == Some(&quot;1&quot;) {
  140. state.x(alice);
  141. }
  142. println!(&quot;\nState after Alice prepares her qubit: \n{}&quot;, state);
  143. // Alice sends her qubit to Bob
  144. let bob = 0;
  145. state.cx(alice, bob);
  146. state.h(alice);
  147. println!(
  148. &quot;\nState after Bob receives Alice's qubit and 'decodes' it: \n{}&quot;,
  149. state
  150. );
  151. state.measure()
  152. }
  153. fn main() {
  154. use std::io;
  155. println!(&quot;Two bit string to send:&quot;);
  156. let mut input = String::new();
  157. match io::stdin().read_line(&amp;mut input) {
  158. Ok(_n) =&gt; {
  159. let result = superdense(input.as_str());
  160. println!(&quot;\nDecoded string is: {}&quot;, result);
  161. }
  162. Err(error) =&gt; println!(&quot;error: {}&quot;, error),
  163. }
  164. }
  165. </code></pre></pre>
  166. </main>
  167. <nav class="nav-wrapper" aria-label="Page navigation">
  168. <!-- Mobile navigation buttons -->
  169. <a rel="prev" href="algorithms/shor.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
  170. <i class="fa fa-angle-left"></i>
  171. </a>
  172. <div style="clear: both"></div>
  173. </nav>
  174. </div>
  175. </div>
  176. <nav class="nav-wide-wrapper" aria-label="Page navigation">
  177. <a href="algorithms/shor.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
  178. <i class="fa fa-angle-left"></i>
  179. </a>
  180. </nav>
  181. </div>
  182. <!-- Local fallback for Font Awesome -->
  183. <script>
  184. if (getComputedStyle(document.querySelector(".fa")).fontFamily !== "FontAwesome") {
  185. var link = document.createElement('link');
  186. link.rel = 'stylesheet';
  187. link.type = 'text/css';
  188. link.href = '_FontAwesome/css/font-awesome.css';
  189. document.head.insertBefore(link, document.head.firstChild)
  190. }
  191. </script>
  192. <script src="searchindex.js" type="text/javascript" charset="utf-8"></script>
  193. <script src="elasticlunr.min.js" type="text/javascript" charset="utf-8"></script>
  194. <script src="mark.min.js" type="text/javascript" charset="utf-8"></script>
  195. <script src="searcher.js" type="text/javascript" charset="utf-8"></script>
  196. <script src="highlight.js"></script>
  197. <script src="book.js"></script>
  198. <!-- Custom JS script -->
  199. </body>
  200. </html>