This commit is contained in:
Oliver Kennedy 2017-09-14 19:38:35 -04:00
parent 54a76c2d48
commit 331df515c7
5 changed files with 22 additions and 10 deletions

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View file

@ -149,6 +149,12 @@
</p>
</section>
<section>
<img src="graphics/vizini.jpg" />
<h3>You guessed wrong!</h3>
<p style="font-size: smaller;">(unless you didn't)</p>
</section>
<section>
<svg width="600" height="600">
<image x="0" y="0" width="600" height="600"
@ -215,8 +221,9 @@
</section>
<section>
<img src="https://images.duckduckgo.com/iu/?u=http%3A%2F%2F2.bp.blogspot.com%2F-N3NAP5pIx5U%2FTZUrYVI2j5I%2FAAAAAAAAC0U%2FnediLJV-PbU%2Fs1600%2Fjack-of-all-trades-jpeg.jpg&f=1" height="400px" />
<img src="graphics/victorinox.jpg" height="400px" />
<aside class="notes">Jack of all trades data structure (e.g., B+Tree or LSM Trees). Classic workhorses, but they have their shortcomings --- B+: slow updates, LSM: write amplification, slow reads</aside>
<attribution>Victorinox</attribution>
</section>
<section>
@ -274,8 +281,8 @@
<section>
<section>
<p style="text-align: center">Logical Content</p>
<p style="text-align: center" class="fragment"></p>
<p style="text-align: center">Physical Structure</p>
<p style="text-align: center" class="fragment" data-fragment-index="1"></p>
<p style="text-align: center" class="fragment" data-fragment-index="1">Physical Structure</p>
</section>
<section>
<p style="text-align: center">A <i>Bag</i> of $\lt Key \rightarrow Value \gt$ Pairs</p>
@ -332,7 +339,7 @@
<table>
<tr><td style="text-align: right;">Visual:</td><td><img src="figs/LinkedList.svg" style="margin: 0px;"/></td></tr>
<tr><td style="text-align: right;">UIL:</td><td>\begin{align}LL :=\;&|\;U(Sng(x: \mathbb R), a: LL)\\&|\;Sng(x)\end{align}</td></tr>
<tr><td style="text-align: right;">Logical:</td><td>$\{ x \} \uplus a$ or $\{ x \}</td></tr>
<tr><td style="text-align: right;">Logical:</td><td>$\{ x \} \uplus a$ or $\{ x \}$</td></tr>
</table>
<p class="fragment" data-fragment-index="1" style="clear: right; font-weight: bold;">
Many existing data structures can be expressed as syntactic restrictions on this grammar.
@ -381,6 +388,10 @@
</table>
</section>
<section>
<img src="figs/Legend.png">
</section>
<section>
<h3>Example</h3>
<svg width="300" height="300">
@ -470,10 +481,10 @@
<section>
<h3 style="margin-bottom: 60px">Insert</h3>
$$Insert: \mathbb P \times \mathbb P \rightarrow \mathbb P$$
$$Insert_{\mathbb P}: \mathbb P \rightarrow \mathbb P$$
<p style="font-weight: bold; margin-top: 60px" class="fragment">Do the least work possible (optimize later)</p>
<div class="fragment" style="margin-top: 60px">
$$Insert(a, b) \rightarrow \uplus(a, b)$$
$$Insert_{a}(old) \rightarrow \uplus(old, a)$$
</div>
</section>
<!-- Accessing Static Data Structures
@ -507,9 +518,9 @@
<section>
<h3>Example: Organize A Hybrid Data Structure</h3>
<img src="figs/Pushdown-Before.svg" style="vertical-align: middle;"/>
<span class="fragment" data-fragment-index="2"><img src="figs/Pushdown-Step1.svg" style="vertical-align: middle;" /></span>
<span class="fragment" data-fragment-index="1"><img src="figs/Pushdown-Step1.svg" style="vertical-align: middle;" /></span>
<span class="fragment" data-fragment-index="3"><img src="figs/Pushdown-Step2.svg" style="vertical-align: middle;" /></span>
<div class="fragment" data-fragment-index="1" style="font-size: smaller; margin-top: 30px">
<div class="fragment" data-fragment-index="2" style="font-size: smaller; margin-top: 30px">
$$\uplus(Sng(x), BT_k(a, b)) \rightarrow \begin{cases} BT_k(\uplus(Sng(x), a), b) & \text{if } x.key \lt k\\ BT_k(a, \uplus(Sng(x), b)) & \text{if } x.key \geq k\end{cases}$$
</div>
<div class="fragment" data-fragment-index="3" style="font-size: smaller; margin-top: 30px">
@ -670,6 +681,7 @@ public class TransitionMode extends Mode {
<li class="fragment" style="margin-top: 30px">Which rewrite to apply?</li>
<li class="fragment" style="margin-top: 30px">On what to apply it?</li>
</ol>
<p class="fragment" style="margin-top: 50px">A priority queue keeps track of available rewrite patterns</p>
</section>
<section>
@ -753,7 +765,7 @@ public class TransitionMode extends Mode {
<td style="text-align: left">$(300 \cdot N)$ ns to scan for 1 record</td></tr>
<tr>
<td style="padding-top: 60px; text-align: right; font-weight: bold;">$Sorted_N$:</td>
<td style="text-align: left">$(3 \cdot N \log N)$ ns to scan for 1 record</td></tr>
<td style="text-align: left">$(175 \cdot \log N)$ ns to scan for 1 record</td></tr>
<tr>
<td style="padding-top: 60px; text-align: right; font-weight: bold;">$BT$:</td>
<td style="text-align: left">Negligible</td></tr>
@ -803,7 +815,7 @@ public class TransitionMode extends Mode {
<h3>Just-in-Time Data Structures</h3>
<ul>
<li style="margin-top: 40px">The Universal Instance Language can describe the intermediate state of a data structure in transition.</li>
<li style="margin-top: 40px">Localized, event-driven rewrites can emulate the behaviors of existing data structures and be hybridized.</li>
<li style="margin-top: 40px">UIL + localized rewrite rules can emulate the behaviors of existing data structures and be hybridized.</li>
<li style="margin-top: 40px">Simulation + Cost-Analysis can be used to derive policies to drive direct rewrites.</li>
</ul>
<p class="fragment">Questions?</p>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 110 KiB