<!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.373b6415cc31b8b6.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="https://application.ieeecomputer.org/csdl-website/production/styles.373b6415cc31b8b6.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.e029ab72a04ea954.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.7173fbbbb025f5fc.js" type="module"></script>

</body></html>