<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <title>Droplet Sequenz Generator</title> <link rel="stylesheet" href="css/reveal.css"> <link rel="stylesheet" href="css/theme/white.css"> <!-- Theme used for syntax highlighting of code --> <link rel="stylesheet" href="lib/css/zenburn.css"> <!-- Printing and PDF exports --> <script> var link = document.createElement( 'link' ); link.rel = 'stylesheet'; link.type = 'text/css'; link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css'; document.getElementsByTagName( 'head' )[0].appendChild( link ); </script> </head> <body> <div class="reveal"> <div class="slides"> <section> <h4> Basic Idea </h4> <img src="img/basic-idea.svg" align="center"> </section> <section> <h4> Multiple Paths </h4> <img src="img/multiple-paths.svg" align="center"> </section> <section> <h4> Sequence Tuple</h4> <ul> <li> Generate multiple possible sequences </li> <li> (Droplet, Path, Current Bifurcation, minSteps, maxSteps) </li> </ul> </section> <section> <h4> Algorithm to generate all possible sequences </h4> <ul> <li> Start with Payload Droplet at last Bifurcation in its path </li> </ul> <pre><code class="hljs" data-trim contenteditable> if headerDroplet needed: for all possible header droplet paths: add header droplet to list of sequenceTuples add list of sequenceTuples to list of possible Sequences </pre></code> </section> <section> <h4> Algorithm to generate all possible sequences </h4> <ul> <li> List of possible Sequences</li> <li> { { (Pld, Path, currBif, 0,0),(Hdr-A, H-A-Path, curBif, minOffset-A, maxOffset-A)} <br>{ (Pld, Path, currBif, 0,0),(Hdr-B, H-B-Path, curBif, minOffset-B, maxOffset-B) } }</li> </ul> </section> <section> <h4> Algorithm to generate all possible sequences </h4> <ul> <li> Ascend the Path recursively for every Droplet and decide at every Bifurcation if another heder droplet is needed</li> <li> This generates a (possibly huge) list of possibleSequences </li> </ul> </section> <section> <h4> Derive Droplet Sequence from list of possible sequences </h4> <ul> <li> Not every entry in the list of possible sequences represents a feasible sequence (e.g. same start time for 2 droplets) </li> </ul> <pre><code class="hljs" data-trim contenteditable> sort list of possible sequences according to their length take shortest sequence if sequence is feasible and droplets don't coalesce: return found sequence else: move on to next sequence </pre></code> </section> <section> <h4> Possible Improvements</h4> <ul> <li>Performance ! </li> <li>Recursion for finding possible sequences not implemented with good performance</li> <ol> <li>Check paths for header droplets that are likely to produce a short (with a lower amount of header droplets) sequence </li> <li>After all possible sequences for these few paths are found check for feasability and colesceing </li> <li>Just in case no sequence was found check the more complicated possible sequences</li> </ol> <li>No verfication yet (that the sequence really realizes the correct payload path) </li> </ul> </section> </div> </div> <script src="lib/js/head.min.js"></script> <script src="js/reveal.js"></script> <script> // More info about config & dependencies: // - https://github.com/hakimel/reveal.js#configuration // - https://github.com/hakimel/reveal.js#dependencies Reveal.initialize({ dependencies: [ { src: 'plugin/markdown/marked.js' }, { src: 'plugin/markdown/markdown.js' }, { src: 'plugin/notes/notes.js', async: true }, { src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } } ] }); </script> </body> </html>