<!DOCTYPE html><html lang="en"><head><base href="/csdl">
    <title>CSDL | IEEE Computer Society</title>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="https://ieeecs-media.computer.org/wp-media/2018/04/27230619/cropped-cs-favicon-512x512-32x32.png" sizes="32x32">
    <meta name="google-site-verification" content="jxkhBtaf9VsFL5u9dqfOQQCZDIoQdx1aiKlkQEUgAvk">
    <link rel="dns-prefetch" href="https://csdl-downloads.ieeecomputer.org">
    <link rel="dns-prefetch" href="https://kc.computer.org">
    <link rel="dns-prefetch" href="https://services10.ieee.org">
    <!-- Google Tag Manager -->
    <script>
      (function (w, d, s, l, i) {
        w[l] = w[l] || [];
        w[l].push({
          'gtm.start': new Date().getTime(),
          event: 'gtm.js',
        });
        var f = d.getElementsByTagName(s)[0],
          j = d.createElement(s),
          dl = l != 'dataLayer' ? '&l=' + l : '';
        j.async = true;
        j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
        f.parentNode.insertBefore(j, f);
      })(window, document, 'script', 'dataLayer', 'GTM-PPQ37HW');
    </script>
    <!-- End Google Tag Manager -->
    <!-- Unbounce form -->
    <script src="https://8e3066b5d78d45a396d106865160a582.js.ubembed.com" async=""></script>
    <!-- End Unbounce form -->
  <style>@import"https://application.ieeecomputer.org/assets/fonts/OpenSans/open-sans.css";html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}@media print{*,*:before,*:after{background:transparent!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}}*{box-sizing:border-box}*:before,*:after{box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.52857143;color:#515253;background-color:#f5f7fa}@-webkit-keyframes progress-bar-stripes{0%{background-position:40px 0}to{background-position:0 0}}html,body{height:100%;background-color:#fff}body{padding:0;height:100%;font-size:16px!important;font-family:Open Sans,sans-serif;color:#454545}@charset "UTF-8"</style><link rel="stylesheet" href="https://application.ieeecomputer.org/csdl-website/production/styles.699e4b622459ba2a.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="https://application.ieeecomputer.org/csdl-website/production/styles.699e4b622459ba2a.css"></noscript></head>
  <body>
    <csdl-app></csdl-app>
    <!-- Google Tag Manager (noscript) -->
    <noscript>
      <iframe
        src="https://www.googletagmanager.com/ns.html?id=GTM-PPQ37HW"
        height="0"
        width="0"
        style="display: none; visibility: hidden"
      ></iframe>
    </noscript>
    <!-- End Google Tag Manager (noscript) -->
    <!-- BEGIN GOOGLE ANALYTICS -->
    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async="" src="https://www.googletagmanager.com/gtag/js?id=UA-381255-5"></script>
    <script>
      window.dataLayer = window.dataLayer || [];

      function gtag() {
        dataLayer.push(arguments);
      }

      gtag('js', new Date());
      gtag('config', 'UA-381255-5', { send_page_view: false });
    </script>

    <script>
      // The following function allows an article to have click-able reference
      // links that will scroll to the 'References' section of the article
      // and highlight the appropriate reference
      function scrollToReference(referenceNum) {
        var refQuery = '#' + referenceNum;
        $('html, body').animate(
          {
            scrollTop: $(refQuery).offset().top,
          },
          1000
        );
        $('ul.referencesNotesList').children().css('background', 'inherit');
        $(refQuery).parent('li').css('background', '#ffffd1');
      }

      // When the user scrolls down 20px from the top of the document, show the
      // scroll-to-top button
      window.onscroll = function () {
        scrollFunction();
      };

      function scrollFunction() {
        const scrollToTopLink = document.getElementById('scrollToTopLink');
        if (scrollToTopLink) {
          if (document.body.scrollTop > 600 || document.documentElement.scrollTop > 600) {
            scrollToTopLink.style.display = 'block';
          } else {
            scrollToTopLink.style.display = 'none';
          }
        }
      }

      // When the user clicks on the button, scroll to the top of the document
      function scrollToTopOfPage() {
        $('html, body').animate(
          {
            scrollTop: $('html').offset().top,
          },
          1000
        );
      }
    </script>

    <!-- Begin ActiveCampaign script -->
    <script type="text/javascript">
      (function (e, t, o, n, p, r, i) {
        e.visitorGlobalObjectAlias = n;
        e[e.visitorGlobalObjectAlias] =
          e[e.visitorGlobalObjectAlias] ||
          function () {
            (e[e.visitorGlobalObjectAlias].q = e[e.visitorGlobalObjectAlias].q || []).push(arguments);
          };
        e[e.visitorGlobalObjectAlias].l = new Date().getTime();
        r = t.createElement('script');
        r.src = o;
        r.async = true;
        i = t.getElementsByTagName('script')[0];
        i.parentNode.insertBefore(r, i);
      })(window, document, 'https://diffuser-cdn.app-us1.com/diffuser/diffuser.js', 'vgo');
      vgo('setAccount', '224472483');
      vgo('setTrackByDefault', true);

      vgo('process');
    </script>
    <!-- End ActiveCampaign script -->

    <script type="text/x-mathjax-config">
      MathJax.Hub.Config({
        mml2jax: {
          preview: "none"
        },
        tex2jax: {
          inlineMath: [
            ['$_$', '$_$'],
            ['\\(', '\\)'],
            ['__$', '$__'],
            ['$$', '$$'],
            ['Z_$', '$_Z'],
          ]
        },
        showProcessingMessages: false,
        messageStyle: "none",
        "fast-preview": {
          disabled: true
        },
        CommonHTML: {
          linebreaks: {
            automatic: true
          }
        },
        "HTML-CSS": {
          linebreaks: {
            automatic: true
          }
        },
        SVG: {
          linebreaks: {
            automatic: true
          }
        },
        TeX: {
          noErrors: {
            disabled: true
          }
        },
        MathMenu: {
          styles: {
            ".MathJax_Menu": {
              "z-index": 2001
            }
          },
          delay: 600
        },
        extensions: [
          "tex2jax.js",
          "TeX/AMSmath.js",
          "TeX/AMSsymbols.js",
          "TeX/ieeemacros.js",
          "TeX/cancel.js",
          "TeX/AMScd.js",
          "TeX/color_ieee.js",
          "TeX/cellcolor_ieee.js",
          "TeX/enclose.js",
          "TeX/euler_ieee.js",
          "TeX/upgreek.js",
          "TeX/ieee_stixext.js",
          "TeX/extpfeil.js",
          "TeX/mhchem.js",
          "TeX/ietmacros.js",
          "a11y/accessibility-menu.js"
        ],
        menuSettings: {
          zoom: "Click"
        }
      });
    </script>
    <script type="text/javascript" src="https://application.ieeecomputer.org/assets/mathjax/2.7.4/MathJax.js?config=TeX-MML-AM_CHTML-full"></script>
    <!-- v ieee cookie banner v -->
    <script src="https://cmp.osano.com/AzyzptTmRlqVd2LRf/dc14b2c6-ae04-4497-98f0-2bdbdd2af415/osano.js"></script>
    <link rel="stylesheet" href="https://cookie-consent.ieee.org/ieee-cookie-banner.css" type="text/css">
    <!-- ^ ieee cookie banner ^ -->
  <script src="https://application.ieeecomputer.org/csdl-website/production/runtime.a8a204e12be506b9.js" type="module"></script><script src="https://application.ieeecomputer.org/csdl-website/production/polyfills.74e02a65f32cdf8b.js" type="module"></script><script src="https://application.ieeecomputer.org/csdl-website/production/scripts.891354f7a8180c47.js" defer></script><script src="https://application.ieeecomputer.org/csdl-website/production/main.7bfb33730f37e54e.js" type="module"></script>

</body></html>