HILDA talk

pull/2/head
Oliver Kennedy 2023-06-13 17:53:12 -04:00
parent 4ba7f26522
commit f9caed49fb
Signed by: okennedy
GPG Key ID: 3E5F9B3ABD3FDB60
10 changed files with 1999 additions and 198 deletions

View File

@ -1513,158 +1513,158 @@ Converter.prototype.getValues = function(space) {
module.exports = convert;
},{"4":4}],6:[function(require,module,exports){
'use strict'
module.exports = {
"aliceblue": [240, 248, 255],
"antiquewhite": [250, 235, 215],
"aqua": [0, 255, 255],
"aquamarine": [127, 255, 212],
"azure": [240, 255, 255],
"beige": [245, 245, 220],
"bisque": [255, 228, 196],
"black": [0, 0, 0],
"blanchedalmond": [255, 235, 205],
"blue": [0, 0, 255],
"blueviolet": [138, 43, 226],
"brown": [165, 42, 42],
"burlywood": [222, 184, 135],
"cadetblue": [95, 158, 160],
"chartreuse": [127, 255, 0],
"chocolate": [210, 105, 30],
"coral": [255, 127, 80],
"cornflowerblue": [100, 149, 237],
"cornsilk": [255, 248, 220],
"crimson": [220, 20, 60],
"cyan": [0, 255, 255],
"darkblue": [0, 0, 139],
"darkcyan": [0, 139, 139],
"darkgoldenrod": [184, 134, 11],
"darkgray": [169, 169, 169],
"darkgreen": [0, 100, 0],
"darkgrey": [169, 169, 169],
"darkkhaki": [189, 183, 107],
"darkmagenta": [139, 0, 139],
"darkolivegreen": [85, 107, 47],
"darkorange": [255, 140, 0],
"darkorchid": [153, 50, 204],
"darkred": [139, 0, 0],
"darksalmon": [233, 150, 122],
"darkseagreen": [143, 188, 143],
"darkslateblue": [72, 61, 139],
"darkslategray": [47, 79, 79],
"darkslategrey": [47, 79, 79],
"darkturquoise": [0, 206, 209],
"darkviolet": [148, 0, 211],
"deeppink": [255, 20, 147],
"deepskyblue": [0, 191, 255],
"dimgray": [105, 105, 105],
"dimgrey": [105, 105, 105],
"dodgerblue": [30, 144, 255],
"firebrick": [178, 34, 34],
"floralwhite": [255, 250, 240],
"forestgreen": [34, 139, 34],
"fuchsia": [255, 0, 255],
"gainsboro": [220, 220, 220],
"ghostwhite": [248, 248, 255],
"gold": [255, 215, 0],
"goldenrod": [218, 165, 32],
"gray": [128, 128, 128],
"green": [0, 128, 0],
"greenyellow": [173, 255, 47],
"grey": [128, 128, 128],
"honeydew": [240, 255, 240],
"hotpink": [255, 105, 180],
"indianred": [205, 92, 92],
"indigo": [75, 0, 130],
"ivory": [255, 255, 240],
"khaki": [240, 230, 140],
"lavender": [230, 230, 250],
"lavenderblush": [255, 240, 245],
"lawngreen": [124, 252, 0],
"lemonchiffon": [255, 250, 205],
"lightblue": [173, 216, 230],
"lightcoral": [240, 128, 128],
"lightcyan": [224, 255, 255],
"lightgoldenrodyellow": [250, 250, 210],
"lightgray": [211, 211, 211],
"lightgreen": [144, 238, 144],
"lightgrey": [211, 211, 211],
"lightpink": [255, 182, 193],
"lightsalmon": [255, 160, 122],
"lightseagreen": [32, 178, 170],
"lightskyblue": [135, 206, 250],
"lightslategray": [119, 136, 153],
"lightslategrey": [119, 136, 153],
"lightsteelblue": [176, 196, 222],
"lightyellow": [255, 255, 224],
"lime": [0, 255, 0],
"limegreen": [50, 205, 50],
"linen": [250, 240, 230],
"magenta": [255, 0, 255],
"maroon": [128, 0, 0],
"mediumaquamarine": [102, 205, 170],
"mediumblue": [0, 0, 205],
"mediumorchid": [186, 85, 211],
"mediumpurple": [147, 112, 219],
"mediumseagreen": [60, 179, 113],
"mediumslateblue": [123, 104, 238],
"mediumspringgreen": [0, 250, 154],
"mediumturquoise": [72, 209, 204],
"mediumvioletred": [199, 21, 133],
"midnightblue": [25, 25, 112],
"mintcream": [245, 255, 250],
"mistyrose": [255, 228, 225],
"moccasin": [255, 228, 181],
"navajowhite": [255, 222, 173],
"navy": [0, 0, 128],
"oldlace": [253, 245, 230],
"olive": [128, 128, 0],
"olivedrab": [107, 142, 35],
"orange": [255, 165, 0],
"orangered": [255, 69, 0],
"orchid": [218, 112, 214],
"palegoldenrod": [238, 232, 170],
"palegreen": [152, 251, 152],
"paleturquoise": [175, 238, 238],
"palevioletred": [219, 112, 147],
"papayawhip": [255, 239, 213],
"peachpuff": [255, 218, 185],
"peru": [205, 133, 63],
"pink": [255, 192, 203],
"plum": [221, 160, 221],
"powderblue": [176, 224, 230],
"purple": [128, 0, 128],
"rebeccapurple": [102, 51, 153],
"red": [255, 0, 0],
"rosybrown": [188, 143, 143],
"royalblue": [65, 105, 225],
"saddlebrown": [139, 69, 19],
"salmon": [250, 128, 114],
"sandybrown": [244, 164, 96],
"seagreen": [46, 139, 87],
"seashell": [255, 245, 238],
"sienna": [160, 82, 45],
"silver": [192, 192, 192],
"skyblue": [135, 206, 235],
"slateblue": [106, 90, 205],
"slategray": [112, 128, 144],
"slategrey": [112, 128, 144],
"snow": [255, 250, 250],
"springgreen": [0, 255, 127],
"steelblue": [70, 130, 180],
"tan": [210, 180, 140],
"teal": [0, 128, 128],
"thistle": [216, 191, 216],
"tomato": [255, 99, 71],
"turquoise": [64, 224, 208],
"violet": [238, 130, 238],
"wheat": [245, 222, 179],
"white": [255, 255, 255],
"whitesmoke": [245, 245, 245],
"yellow": [255, 255, 0],
"yellowgreen": [154, 205, 50]
};
'use strict'
module.exports = {
"aliceblue": [240, 248, 255],
"antiquewhite": [250, 235, 215],
"aqua": [0, 255, 255],
"aquamarine": [127, 255, 212],
"azure": [240, 255, 255],
"beige": [245, 245, 220],
"bisque": [255, 228, 196],
"black": [0, 0, 0],
"blanchedalmond": [255, 235, 205],
"blue": [0, 0, 255],
"blueviolet": [138, 43, 226],
"brown": [165, 42, 42],
"burlywood": [222, 184, 135],
"cadetblue": [95, 158, 160],
"chartreuse": [127, 255, 0],
"chocolate": [210, 105, 30],
"coral": [255, 127, 80],
"cornflowerblue": [100, 149, 237],
"cornsilk": [255, 248, 220],
"crimson": [220, 20, 60],
"cyan": [0, 255, 255],
"darkblue": [0, 0, 139],
"darkcyan": [0, 139, 139],
"darkgoldenrod": [184, 134, 11],
"darkgray": [169, 169, 169],
"darkgreen": [0, 100, 0],
"darkgrey": [169, 169, 169],
"darkkhaki": [189, 183, 107],
"darkmagenta": [139, 0, 139],
"darkolivegreen": [85, 107, 47],
"darkorange": [255, 140, 0],
"darkorchid": [153, 50, 204],
"darkred": [139, 0, 0],
"darksalmon": [233, 150, 122],
"darkseagreen": [143, 188, 143],
"darkslateblue": [72, 61, 139],
"darkslategray": [47, 79, 79],
"darkslategrey": [47, 79, 79],
"darkturquoise": [0, 206, 209],
"darkviolet": [148, 0, 211],
"deeppink": [255, 20, 147],
"deepskyblue": [0, 191, 255],
"dimgray": [105, 105, 105],
"dimgrey": [105, 105, 105],
"dodgerblue": [30, 144, 255],
"firebrick": [178, 34, 34],
"floralwhite": [255, 250, 240],
"forestgreen": [34, 139, 34],
"fuchsia": [255, 0, 255],
"gainsboro": [220, 220, 220],
"ghostwhite": [248, 248, 255],
"gold": [255, 215, 0],
"goldenrod": [218, 165, 32],
"gray": [128, 128, 128],
"green": [0, 128, 0],
"greenyellow": [173, 255, 47],
"grey": [128, 128, 128],
"honeydew": [240, 255, 240],
"hotpink": [255, 105, 180],
"indianred": [205, 92, 92],
"indigo": [75, 0, 130],
"ivory": [255, 255, 240],
"khaki": [240, 230, 140],
"lavender": [230, 230, 250],
"lavenderblush": [255, 240, 245],
"lawngreen": [124, 252, 0],
"lemonchiffon": [255, 250, 205],
"lightblue": [173, 216, 230],
"lightcoral": [240, 128, 128],
"lightcyan": [224, 255, 255],
"lightgoldenrodyellow": [250, 250, 210],
"lightgray": [211, 211, 211],
"lightgreen": [144, 238, 144],
"lightgrey": [211, 211, 211],
"lightpink": [255, 182, 193],
"lightsalmon": [255, 160, 122],
"lightseagreen": [32, 178, 170],
"lightskyblue": [135, 206, 250],
"lightslategray": [119, 136, 153],
"lightslategrey": [119, 136, 153],
"lightsteelblue": [176, 196, 222],
"lightyellow": [255, 255, 224],
"lime": [0, 255, 0],
"limegreen": [50, 205, 50],
"linen": [250, 240, 230],
"magenta": [255, 0, 255],
"maroon": [128, 0, 0],
"mediumaquamarine": [102, 205, 170],
"mediumblue": [0, 0, 205],
"mediumorchid": [186, 85, 211],
"mediumpurple": [147, 112, 219],
"mediumseagreen": [60, 179, 113],
"mediumslateblue": [123, 104, 238],
"mediumspringgreen": [0, 250, 154],
"mediumturquoise": [72, 209, 204],
"mediumvioletred": [199, 21, 133],
"midnightblue": [25, 25, 112],
"mintcream": [245, 255, 250],
"mistyrose": [255, 228, 225],
"moccasin": [255, 228, 181],
"navajowhite": [255, 222, 173],
"navy": [0, 0, 128],
"oldlace": [253, 245, 230],
"olive": [128, 128, 0],
"olivedrab": [107, 142, 35],
"orange": [255, 165, 0],
"orangered": [255, 69, 0],
"orchid": [218, 112, 214],
"palegoldenrod": [238, 232, 170],
"palegreen": [152, 251, 152],
"paleturquoise": [175, 238, 238],
"palevioletred": [219, 112, 147],
"papayawhip": [255, 239, 213],
"peachpuff": [255, 218, 185],
"peru": [205, 133, 63],
"pink": [255, 192, 203],
"plum": [221, 160, 221],
"powderblue": [176, 224, 230],
"purple": [128, 0, 128],
"rebeccapurple": [102, 51, 153],
"red": [255, 0, 0],
"rosybrown": [188, 143, 143],
"royalblue": [65, 105, 225],
"saddlebrown": [139, 69, 19],
"salmon": [250, 128, 114],
"sandybrown": [244, 164, 96],
"seagreen": [46, 139, 87],
"seashell": [255, 245, 238],
"sienna": [160, 82, 45],
"silver": [192, 192, 192],
"skyblue": [135, 206, 235],
"slateblue": [106, 90, 205],
"slategray": [112, 128, 144],
"slategrey": [112, 128, 144],
"snow": [255, 250, 250],
"springgreen": [0, 255, 127],
"steelblue": [70, 130, 180],
"tan": [210, 180, 140],
"teal": [0, 128, 128],
"thistle": [216, 191, 216],
"tomato": [255, 99, 71],
"turquoise": [64, 224, 208],
"violet": [238, 130, 238],
"wheat": [245, 222, 179],
"white": [255, 255, 255],
"whitesmoke": [245, 245, 245],
"yellow": [255, 255, 0],
"yellowgreen": [154, 205, 50]
};
},{}],7:[function(require,module,exports){
/**
@ -3759,7 +3759,9 @@ module.exports = function(Chart) {
var me = this;
config = initConfig(config);
console.log("Config init")
console.log(config)
var context = platform.acquireContext(item, config);
var canvas = context && context.canvas;
var height = canvas && canvas.height;

View File

@ -56,7 +56,9 @@ var RevealChart = window.RevealChart || (function(){
if ( comments !== null ) for (var j = 0; j < comments.length; j++ ){
comments[j] = comments[j].replace(/<!--/,'');
comments[j] = comments[j].replace(/-->/,'');
console.log("comment: "+ comments[j])
var config = parseJSON(comments[j]);
console.log(config)
if ( config ) {
if ( config.data ) {
mergeRecursive( chartData, config.data);
@ -97,7 +99,10 @@ var RevealChart = window.RevealChart || (function(){
}
}
canvas.chart = new Chart(ctx, { type: canvas.getAttribute("data-chart"), data: chartData, options: chartOptions });
console.log("Creating chart...")
console.log(chartOptions)
canvas.chart = new Chart(ctx, { type: canvas.getAttribute("data-chart"), data: chartData, options: chartOptions, plugins: [] });
}

View File

@ -74,7 +74,7 @@ title: "Overlay Spreadsheets"
</section>
<section>
<h3>Spreadsheets" in Workflows</h3>
<h3>Spreadsheets in Workflows</h3>
<img src="graphics/2023-06-18/wrangler.png" height="200px">
<attribution>(Wrangler: Interactive Visual Specification of Data Transformation Scripts; Kandel et al; CHI 2011)
<aside class="notes">
@ -86,7 +86,7 @@ title: "Overlay Spreadsheets"
</section>
<section>
<h3>“Spreadsheets" in Workflows</h3>
<h3>Spreadsheets in Workflows</h3>
<img src="graphics/2023-06-18/mito.jpg" height="400px">
<attribution>(trymito.io)
<aside class="notes">
@ -246,32 +246,182 @@ title: "Overlay Spreadsheets"
</section>
<section>
example 1: Purely row-centric formulas
<p>Only materialize the subset of visible rows <br/><span class="fragment">(and/or columns)</span></p>
<aside class="notes">
<p>So, we're only going to materialize a subset of the rows. The frontend will keep us informed about what's on (or near to) the screen, and we're going to do our best to ignore everything that's offscreen.</p>
<p>Note: While we're going to focus on limiting rows here for simplicity, the same ideas apply to columns as well.</p>
</aside>
</section>
<section>
example 2: Formulas jutting out of the visible bounds (fixed cell dependencies, offset by 1)
<h3>Restricting the Source Data</h3>
<svg data-src="graphics/2023-06-18/focus-source.svg" style="scale: 80%; "/>
<aside class="notes">
We have our mapping functions, so we can figure out what rows of the source dataset need to be retrieved. For Vizier, we built a simple LRU cache over spark to make this sort of access efficient, but most storage engines with efficient support for LIMIT/OFFSET queries can handle this gracefully.
</aside>
</section>
<section>
example 3: Recursive patterns
<h3>Restricting the Overlay</h3>
<svg data-src="graphics/2023-06-18/focus-overlay-simple.svg"/>
<aside class="notes">
<p>So that leaves the overlay. We need to be able to compute the contents of each cell, given its formula. Remember, we're storing all of the patterns, but we're only materializing the specific cells we're interested in.</p>
<p>(click) So, we've restrict ourselves to <b>materializing</b> a specific set of rows. (click) If we're lucky, all of the cells our formula references are defined in this restricted region and we're basically done. On the other hand, maybe we're not so lucky...</p>
</aside>
</section>
<section>
We can simplify recursive patterns in two ways:
<h3>Restricting the Overlay</h3>
1. Simple closed-form representation
2. Windowed aggregate
<svg data-src="graphics/2023-06-18/focus-overlay-offset.svg"/>
<aside class="notes">
<p>... in which case a dependency points outside of our materialized range (click)</p>
</aside>
</section>
<section>
Key idea: batch process (and cache) values of upstream dependencies that fall outside of the visible area.
<p>We need to materialize the <br/><b>transitive closure</b><br/> of the cell dependencies.</p>
<aside class="notes">
<p>... so we need the transitive closure. Now again, if we're lucky, we're done here... but what if a cell defined by some pattern depends on a different cell defined by the same pattern.</p>
</aside>
</section>
<section>
Performance comparison
<h3>Restricting the Overlay</h3>
<svg data-src="graphics/2023-06-18/focus-overlay-recursive.svg"/>
<aside class="notes">
<p>In the worst case, the pattern depends on itself. A common example is the "running sum", where each cell's value is defined by summing the value for the previous row with the value for the current row.</p>
<p>In this case, the cell's dependencies stretch all the way to the beginning of the dataset. Not a problem if we're viewing the first 100 rows, but it becomes a problem once we scroll down to the millionth row or so.</p>
<p>We call this case, where one cell defined by a pattern references a different cell defined by the same pattern: <b>a recursive pattern</b></p>
</aside>
</section>
<section>
conclusions
<p>Spreadsheets are optimized for reactive, interactive computation over cells.</p>
<p class="fragment">... but here we have a big bulk computation.</p>
</section>
<section>
<h3>Recursive Patterns</h3>
<svg data-src="graphics/2023-06-18/focus-overlay-recursive-batch.svg"/>
<aside class="notes">
<p>Compute values that fall outside of the materialized region using a batch-processing query engine (e.g., Spark). Cache them. It's still necessary to figure out if some update invalidates the cached value, but you only need to cache the single value, and computing it through a system optimized for batch computation is going to be a lot faster.</p>
<p>So, how do we convert the formula to a query?</p>
</aside>
</section>
<section>
<h3>Recursive Patterns</h3>
<div style="margin-top: 50px;">
$$H[0] = G[n]$$
$$H[n] = G[n] + H[n-1]$$
</div>
<div class="fragment" style="margin-top: 10px;">
$$H[n] = sum(G[0:n])$$
</div>
<p class="fragment" style="margin-top: 50px">Many common patterns have an <br/>equivalent closed-form representation.</p>
<aside class="notes">
So at least for common patterns, we can rewrite them into simple closed-form aggregates that can be sent directly to a SQL engine (like Spark in Vizier).
</aside>
</section>
<section>
<h3>Recursive Patterns</h3>
<div style="margin-top: 50px;">
$$H[0:1] = G[0:1]$$
$$H[n] = G[n] + H[n-2]$$
</div>
<div class="fragment" style="margin-top: 10px;">
<pre><code class="sql">
SELECT G + lag(H, 2) AS H OVER (ORDER BY row) FROM ...
</code></pre>
</div>
<p class="fragment" style="margin-top: 50px">Window queries work for the rest.</p>
<aside class="notes">
And while we don't have a formal proof, we're pretty certain that any patterns that we can't get a closed form for, we can express as a window query.
</aside>
</section>
<section>
<h3>Recursive Patterns</h3>
<canvas data-chart="line">
<!--
{
"data": {
"datasets":[
{"fill": false, "borderColor":"#0000FF", "borderDash": [], "borderWidth": 5},
{"fill": false, "borderColor":"#008080", "borderDash": [], "borderWidth": 5},
{"fill": false, "borderColor":"#008000", "borderDash": [], "borderWidth": 5}
]
},
"options": {
"scales": {
"xAxes": [{
"scaleLabel": {
"display": true,
"labelString": "First Visible Row Index"
}
}],
"yAxes": [{
"type": "logarithmic",
"position": "left",
"scaleLabel": {
"display": true,
"labelString": "Time to Quiescence (s)"
}
}]
}
}
}
-->
Axis,60,600,6000,60000
Vizier,0.24214023499999998,0.416489697,4.6895117310000005,48.321868185
Vizier-Batch,0.292034878,0.291488883,0.31172266200000004,0.457365417
DataSpread,26.404142864,28.609918545,42.390664963,221.393066346
</canvas>
<aside class="notes">
<p>So let's see how it works. We have a large dataset (600k rows) of TPCH-Lineitem. We generate a spreadsheet that roughly models Q1, albeit with a running total column. We're measuring the time until the system is done working.</p>
<p>There's a bit of scrolling overhead in Dataspread, but basically, until we get quite far into the dataset, the runtime is fairly stable at about 30-40 seconds to quiescence. Vizier is a bit faster until we get considerably further in, because we're computing a lot less stuff. However when we simulated batching in Vizier, we get sub-second quiescence time, even 60k records into the dataset.</p>
</aside>
</section>
<section>
<a href="https://vizierdb.info">
<img src="graphics/2022-06-20/vizier.svg" height="150px"><br/>
https://vizierdb.info
</a>
<ul style="font-size: 70%">
<li>Scientists love spreadsheets, but spreadsheets hate workflows.</li>
<li>Overlays let us decouple the user's edits from existing data to plug a spreadsheet into a workflow.</li>
<li>Through overlays, we can support a hybrid batch/reactive execution model that is far faster than existing systems.</li>
</ul>
</section>

View File

@ -0,0 +1,271 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="134.29977mm"
height="56.968616mm"
viewBox="0 0 134.29978 56.968616"
version="1.1"
id="svg15440"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="focus-overlay-offset.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview15442"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.3266287"
inkscape:cx="-108.92272"
inkscape:cy="33.166778"
inkscape:window-width="1920"
inkscape:window-height="1011"
inkscape:window-x="26"
inkscape:window-y="23"
inkscape:window-maximized="0"
inkscape:current-layer="layer1" />
<defs
id="defs15437">
<marker
style="overflow:visible"
id="Arrow1"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow1"
markerWidth="4.0606604"
markerHeight="6.7071066"
viewBox="0 0 4.0606602 6.7071068"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
d="M 3,-3 0,0 3,3"
id="path5057"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-59.229347,-58.185865)">
<g
id="g14558"
transform="translate(-31.802352,43.288319)">
<g
id="g14341"
transform="matrix(0.71187818,0,0,0.71187818,16.162449,4.4278608)">
<g
id="g14303"
transform="translate(95.250005)">
<g
id="g8642"
transform="matrix(1.0024576,0,0,1.0066772,-20.071325,9.2629207)"
style="fill:#87cdde">
<rect
style="fill:#87cdde;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect8975"
width="10.000903"
height="9.8253908"
x="89.940933"
y="5.5644517" />
<rect
style="fill:#87cdde;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15674"
width="9.9865494"
height="69.035316"
x="89.977531"
y="15.38116" />
</g>
</g>
<g
id="g8642-3"
transform="matrix(1.0024576,0,0,1.0066772,54.939833,19.418543)"
style="fill:#87cdde">
<rect
style="fill:#6f6f91;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15676"
width="10.069507"
height="39.630474"
x="100.01946"
y="5.3422446" />
</g>
<g
id="g14339"
transform="translate(85.238286,-5.2928681)">
<rect
style="fill:none;stroke:#000000;stroke-width:0.739329;stroke-linecap:round;stroke-linejoin:bevel"
id="rect14305"
width="89.260674"
height="79.260674"
x="20.369663"
y="20.369663" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 30.132591,20.025788 V 100.02579"
id="path14307" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 40.132591,20.025788 V 100.02579"
id="path14309" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 50.132591,20.025788 V 100.02579"
id="path14311" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 60.132591,20.025788 V 100.02579"
id="path14313" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 70.132591,20.025788 V 100.02579"
id="path14315" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 80.132591,20.025788 V 100.02579"
id="path14317" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 90.132591,20.025788 V 100.02579"
id="path14319" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 100.1323,20.025788 V 100.02579"
id="path14321" />
<g
id="g14337"
transform="rotate(-90,60.032871,60.125509)">
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 40.140611,20.025788 V 110.02579"
id="path14323" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 50.137403,20.025788 V 110.02579"
id="path14325" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 60.134195,20.025788 V 110.02579"
id="path14327" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 70.130987,20.025788 V 110.02579"
id="path14329" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 80.127779,20.025788 V 110.02579"
id="path14331" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 90.124571,20.025788 V 110.02579"
id="path14333" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 30.14081,20.025788 V 110.02579"
id="path14335" />
</g>
</g>
</g>
</g>
<g
id="g1086">
<g
id="g8642-1"
transform="matrix(0.71362769,0,0,0.71663153,45.180541,66.73148)"
style="fill:#87cdde">
<rect
style="fill:#87cdde;stroke:none;stroke-width:0.557914;stroke-linecap:round;stroke-linejoin:bevel"
id="rect8975-2"
width="9.8090363"
height="9.7679205"
x="122.16709"
y="10.613985" />
</g>
<text
xml:space="preserve"
style="font-size:5.29167px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;stroke-width:0.264583"
x="139.6705"
y="79.361794"
id="text16108"><tspan
sodipodi:role="line"
id="tspan16106"
style="font-size:5.29167px;stroke-width:0.264583"
x="139.6705"
y="79.361794">G[n] = A[n]+ E[n]</tspan></text>
</g>
<g
id="g15259"
transform="translate(0.52916667,0.52916667)">
<rect
style="opacity:0.94;fill:#ffffff;stroke-width:0.765;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15253"
width="83.835068"
height="22.123394"
x="45.033455"
y="49.776543" />
<rect
style="opacity:0.94;fill:#ffffff;stroke-width:0.765;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15255"
width="83.835068"
height="22.123394"
x="45.033455"
y="100.52666" />
</g>
<g
id="g15737"
transform="matrix(0.71362769,0,0,0.71663153,45.147744,75.440027)"
style="fill:#87cdde">
<rect
style="fill:#6f6f91;fill-opacity:1;stroke:none;stroke-width:0.557914;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15735"
width="9.8090363"
height="9.7679205"
x="122.16709"
y="10.613985" />
</g>
<text
xml:space="preserve"
style="font-size:5.29167px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;stroke-width:0.264583"
x="139.63771"
y="88.070343"
id="text16118"><tspan
sodipodi:role="line"
style="font-size:5.29167px;stroke-width:0.264583"
x="139.63771"
y="88.070343"
id="tspan16206">F[n] = max(C[n], C[n-1])</tspan></text>
<rect
style="fill:#ffb380;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:bevel;stroke-dasharray:none"
id="rect3578"
width="7.0050082"
height="7.0050082"
x="73.6371"
y="65.413429"
class="fragment" />
<g
id="g3518">
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1)"
d="m 99.284127,76.226575 c -7.97077,-6.92679 -15.060792,-5.52551 -21.213872,0.20801"
id="path2336"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1)"
d="M 99.284127,76.226575 C 91.313357,69.299785 84.223335,63.037203 78.070255,68.770723"
id="path3514"
sodipodi:nodetypes="cc" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,350 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="147.93372mm"
height="72.873512mm"
viewBox="0 0 147.93372 72.873512"
version="1.1"
id="svg15440"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="focus-overlay-recursive-batch.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview15442"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.8761363"
inkscape:cx="313.14356"
inkscape:cy="122.59237"
inkscape:window-width="1920"
inkscape:window-height="1011"
inkscape:window-x="26"
inkscape:window-y="23"
inkscape:window-maximized="0"
inkscape:current-layer="g4045" />
<defs
id="defs15437">
<marker
style="overflow:visible"
id="Arrow3"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="arrow3"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-45.562622,-50.305709)">
<g
id="g14558"
transform="translate(-31.802352,43.288319)">
<g
id="g14341"
transform="matrix(0.71187818,0,0,0.71187818,16.162449,4.4278608)">
<g
id="g14303"
transform="translate(95.250005)">
<g
id="g8642"
transform="matrix(1.0024576,0,0,1.0066772,-20.071325,9.2629207)"
style="fill:#87cdde">
<rect
style="fill:#87cdde;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect8975"
width="10.000903"
height="9.8253908"
x="89.940933"
y="5.5644517" />
<rect
style="fill:#87cdde;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15674"
width="9.9865494"
height="69.035316"
x="89.977531"
y="15.38116" />
</g>
<rect
style="fill:#6f918a;stroke:none;stroke-width:0.567578;stroke-linecap:round;stroke-linejoin:bevel"
id="rect8636-6"
width="10.083802"
height="79.356705"
x="80.067696"
y="15.105042" />
</g>
<g
id="g8642-3"
transform="matrix(1.0024576,0,0,1.0066772,54.939833,19.418543)"
style="fill:#87cdde">
<rect
style="fill:#6f6f91;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15676"
width="10.069507"
height="39.630474"
x="100.01946"
y="5.3422446" />
</g>
<g
id="g14339"
transform="translate(85.238286,-5.2928681)">
<rect
style="fill:none;stroke:#000000;stroke-width:0.739329;stroke-linecap:round;stroke-linejoin:bevel"
id="rect14305"
width="89.260674"
height="79.260674"
x="20.369663"
y="20.369663" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 30.132591,20.025788 V 100.02579"
id="path14307" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 40.132591,20.025788 V 100.02579"
id="path14309" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 50.132591,20.025788 V 100.02579"
id="path14311" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 60.132591,20.025788 V 100.02579"
id="path14313" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 70.132591,20.025788 V 100.02579"
id="path14315" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 80.132591,20.025788 V 100.02579"
id="path14317" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 90.132591,20.025788 V 100.02579"
id="path14319" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 100.1323,20.025788 V 100.02579"
id="path14321" />
<g
id="g14337"
transform="rotate(-90,60.032871,60.125509)">
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 40.140611,20.025788 V 110.02579"
id="path14323" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 50.137403,20.025788 V 110.02579"
id="path14325" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 60.134195,20.025788 V 110.02579"
id="path14327" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 70.130987,20.025788 V 110.02579"
id="path14329" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 80.127779,20.025788 V 110.02579"
id="path14331" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 90.124571,20.025788 V 110.02579"
id="path14333" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 30.14081,20.025788 V 110.02579"
id="path14335" />
</g>
</g>
</g>
</g>
<g
id="g1086">
<g
id="g8642-1"
transform="matrix(0.71362769,0,0,0.71663153,45.180541,66.73148)"
style="fill:#87cdde">
<rect
style="fill:#87cdde;stroke:none;stroke-width:0.557914;stroke-linecap:round;stroke-linejoin:bevel"
id="rect8975-2"
width="9.8090363"
height="9.7679205"
x="122.16709"
y="10.613985" />
</g>
<text
xml:space="preserve"
style="font-size:5.29167px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;stroke-width:0.264583"
x="139.6705"
y="79.361794"
id="text16108"><tspan
sodipodi:role="line"
id="tspan16106"
style="font-size:5.29167px;stroke-width:0.264583"
x="139.6705"
y="79.361794">G[n] = A[n]+ E[n]</tspan></text>
</g>
<g
id="g15259"
transform="translate(0.52916667,0.52916667)">
<rect
style="opacity:0.94;fill:#ffffff;stroke-width:0.765;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15253"
width="83.835068"
height="22.123394"
x="45.033455"
y="49.776543" />
<rect
style="opacity:0.94;fill:#ffffff;stroke-width:0.765;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15255"
width="83.835068"
height="22.123394"
x="45.033455"
y="100.52666" />
</g>
<g
id="g4045"
transform="translate(0.05536329,0.48918269)">
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 112.87185,96.843493 -7.91076,-0.04374"
id="path2336"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 112.87185,89.787726 -7.91076,-0.04374"
id="path4033"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 112.87185,82.626506 -7.91076,-0.04374"
id="path4035"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 112.87185,75.535796 -7.91076,-0.04374"
id="path4039"
sodipodi:nodetypes="cc" />
<rect
style="fill:#ffb380;stroke:none;stroke-width:1.02389;stroke-linecap:round;stroke-linejoin:bevel;stroke-dasharray:none"
id="rect3578"
width="7.1936879"
height="7.1510344"
x="109.13842"
y="64.810974" />
<g
id="g4148">
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 112.87185,97.337084 0.0586,-5.654102"
id="path4052"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 112.87185,90.31689 0.0586,-5.654102"
id="path4056"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 112.87185,83.08516 0.0586,-5.654102"
id="path4058"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 112.87185,75.958874 0.0586,-5.654102"
id="path4060"
sodipodi:nodetypes="cc" />
</g>
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 137.75676,62.05298 -24.55444,5.944836"
id="path5901"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-size:5.29167px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;stroke-width:0.264583"
x="138.76578"
y="62.896702"
id="text5905"><tspan
sodipodi:role="line"
id="tspan5903"
style="font-weight:bold;font-size:5.29167px;stroke-width:0.264583"
x="138.76578"
y="62.896702">Batch compute this</tspan></text>
</g>
<g
id="g15737"
transform="matrix(0.71362769,0,0,0.71663153,45.147744,75.440027)"
style="fill:#87cdde">
<rect
style="fill:#6f6f91;fill-opacity:1;stroke:none;stroke-width:0.557914;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15735"
width="9.8090363"
height="9.7679205"
x="122.16709"
y="10.613985" />
</g>
<text
xml:space="preserve"
style="font-size:5.29167px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;stroke-width:0.264583"
x="139.63771"
y="88.070343"
id="text16118"><tspan
sodipodi:role="line"
style="font-size:5.29167px;stroke-width:0.264583"
x="139.63771"
y="88.070343"
id="tspan16206">F[n] = max(C[n], C[n-1])</tspan></text>
<g
id="g4072"
transform="matrix(0.71362769,0,0,0.71663153,45.147744,84.118232)"
style="fill:#6f918a;fill-opacity:1">
<rect
style="fill:#6f918a;fill-opacity:1;stroke:none;stroke-width:0.557914;stroke-linecap:round;stroke-linejoin:bevel"
id="rect4070"
width="9.8090363"
height="9.7679205"
x="122.16709"
y="10.613985" />
</g>
<text
xml:space="preserve"
style="font-size:5.29167px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;stroke-width:0.264583"
x="139.63771"
y="96.748535"
id="text4076"><tspan
sodipodi:role="line"
style="font-size:5.29167px;stroke-width:0.264583"
x="139.63771"
y="96.748535"
id="tspan4074">H[n] = G[n]+H[n-1]</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,380 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="147.93372mm"
height="72.873512mm"
viewBox="0 0 147.93372 72.873512"
version="1.1"
id="svg15440"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="focus-overlay-recursive.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview15442"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="5.3065148"
inkscape:cx="233.20391"
inkscape:cy="106.84979"
inkscape:window-width="1920"
inkscape:window-height="1011"
inkscape:window-x="26"
inkscape:window-y="23"
inkscape:window-maximized="0"
inkscape:current-layer="g14303" />
<defs
id="defs15437">
<marker
style="overflow:visible"
id="marker5544"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="path5542"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
<marker
style="overflow:visible"
id="Arrow3"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow3"
markerWidth="4.2071066"
markerHeight="7"
viewBox="0 0 4.2071068 7"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:round"
d="M 3,-3 0,0 3,3"
id="arrow3"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-45.562622,-50.305709)">
<g
id="g14558"
transform="translate(-31.802352,43.288319)">
<g
id="g14341"
transform="matrix(0.71187818,0,0,0.71187818,16.162449,4.4278608)">
<g
id="g14303"
transform="translate(95.250005)">
<g
id="g8642"
transform="matrix(1.0024576,0,0,1.0066772,-20.071325,9.2629207)"
style="fill:#87cdde">
<rect
style="fill:#87cdde;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect8975"
width="10.000903"
height="9.8253908"
x="89.940933"
y="5.5644517" />
<rect
style="fill:#87cdde;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15674"
width="9.9865494"
height="69.035316"
x="89.977531"
y="15.38116" />
</g>
<rect
style="fill:#6f918a;stroke:none;stroke-width:0.567578;stroke-linecap:round;stroke-linejoin:bevel"
id="rect8636-6"
width="10.083802"
height="79.356705"
x="80.067696"
y="15.105042" />
</g>
<g
id="g8642-3"
transform="matrix(1.0024576,0,0,1.0066772,54.939833,19.418543)"
style="fill:#87cdde">
<rect
style="fill:#6f6f91;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15676"
width="10.069507"
height="39.630474"
x="100.01946"
y="5.3422446" />
</g>
<g
id="g14339"
transform="translate(85.238286,-5.2928681)">
<rect
style="fill:none;stroke:#000000;stroke-width:0.739329;stroke-linecap:round;stroke-linejoin:bevel"
id="rect14305"
width="89.260674"
height="79.260674"
x="20.369663"
y="20.369663" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 30.132591,20.025788 V 100.02579"
id="path14307" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 40.132591,20.025788 V 100.02579"
id="path14309" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 50.132591,20.025788 V 100.02579"
id="path14311" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 60.132591,20.025788 V 100.02579"
id="path14313" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 70.132591,20.025788 V 100.02579"
id="path14315" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 80.132591,20.025788 V 100.02579"
id="path14317" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 90.132591,20.025788 V 100.02579"
id="path14319" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 100.1323,20.025788 V 100.02579"
id="path14321" />
<g
id="g14337"
transform="rotate(-90,60.032871,60.125509)">
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 40.140611,20.025788 V 110.02579"
id="path14323" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 50.137403,20.025788 V 110.02579"
id="path14325" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 60.134195,20.025788 V 110.02579"
id="path14327" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 70.130987,20.025788 V 110.02579"
id="path14329" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 80.127779,20.025788 V 110.02579"
id="path14331" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 90.124571,20.025788 V 110.02579"
id="path14333" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 30.14081,20.025788 V 110.02579"
id="path14335" />
</g>
</g>
</g>
</g>
<g
id="g1086">
<g
id="g8642-1"
transform="matrix(0.71362769,0,0,0.71663153,45.180541,66.73148)"
style="fill:#87cdde">
<rect
style="fill:#87cdde;stroke:none;stroke-width:0.557914;stroke-linecap:round;stroke-linejoin:bevel"
id="rect8975-2"
width="9.8090363"
height="9.7679205"
x="122.16709"
y="10.613985" />
</g>
<text
xml:space="preserve"
style="font-size:5.29167px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;stroke-width:0.264583"
x="139.6705"
y="79.361794"
id="text16108"><tspan
sodipodi:role="line"
id="tspan16106"
style="font-size:5.29167px;stroke-width:0.264583"
x="139.6705"
y="79.361794">G[n] = A[n]+ E[n]</tspan></text>
</g>
<g
id="g15259"
transform="translate(0.52916667,0.52916667)">
<rect
style="opacity:0.94;fill:#ffffff;stroke-width:0.765;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15253"
width="83.835068"
height="22.123394"
x="45.033455"
y="49.776543" />
<rect
style="opacity:0.94;fill:#ffffff;stroke-width:0.765;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15255"
width="83.835068"
height="22.123394"
x="45.033455"
y="100.52666" />
</g>
<g
id="g4045"
transform="translate(0.05536329,0.48918269)"
class="fragment"
data-fragment-index="1">
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 112.87185,96.843493 -7.91076,-0.04374"
id="path2336"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 112.87185,89.787726 -7.91076,-0.04374"
id="path4033"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 112.87185,82.626506 -7.91076,-0.04374"
id="path4035"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 112.87185,75.535796 -7.91076,-0.04374"
id="path4039"
sodipodi:nodetypes="cc" />
<rect
style="fill:#ffb380;stroke:none;stroke-width:2.00972;stroke-linecap:round;stroke-linejoin:bevel;stroke-dasharray:none"
id="rect3578"
width="14.189439"
height="13.967698"
x="102.14266"
y="57.994305"
class="fragment"
data-fragment-index="3" />
<g
id="g4148"
class="fragment"
data-fragment-index="2">
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5544)"
d="m 112.87185,61.459841 -7.91076,-0.04374"
id="path4068"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 112.87185,68.480035 -7.91076,-0.04374"
id="path4066"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 112.87185,97.337084 0.0586,-5.654102"
id="path4052"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 112.87185,90.31689 0.0586,-5.654102"
id="path4056"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 112.87185,83.08516 0.0586,-5.654102"
id="path4058"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 112.87185,75.958874 0.0586,-5.654102"
id="path4060"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 112.87185,68.93868 0.0586,-5.654101"
id="path4062"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow3)"
d="m 112.87185,61.953427 0.0586,-5.654101"
id="path4064"
sodipodi:nodetypes="cc" />
</g>
</g>
<g
id="g15737"
transform="matrix(0.71362769,0,0,0.71663153,45.147744,75.440027)"
style="fill:#87cdde">
<rect
style="fill:#6f6f91;fill-opacity:1;stroke:none;stroke-width:0.557914;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15735"
width="9.8090363"
height="9.7679205"
x="122.16709"
y="10.613985" />
</g>
<text
xml:space="preserve"
style="font-size:5.29167px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;stroke-width:0.264583"
x="139.63771"
y="88.070343"
id="text16118"><tspan
sodipodi:role="line"
style="font-size:5.29167px;stroke-width:0.264583"
x="139.63771"
y="88.070343"
id="tspan16206">F[n] = max(C[n], C[n-1])</tspan></text>
<g
id="g4072"
transform="matrix(0.71362769,0,0,0.71663153,45.147744,84.118232)"
style="fill:#6f918a;fill-opacity:1">
<rect
style="fill:#6f918a;fill-opacity:1;stroke:none;stroke-width:0.557914;stroke-linecap:round;stroke-linejoin:bevel"
id="rect4070"
width="9.8090363"
height="9.7679205"
x="122.16709"
y="10.613985" />
</g>
<text
xml:space="preserve"
style="font-size:5.29167px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;stroke-width:0.264583"
x="139.63771"
y="96.748535"
id="text4076"><tspan
sodipodi:role="line"
style="font-size:5.29167px;stroke-width:0.264583"
x="139.63771"
y="96.748535"
id="tspan4074">H[n] = G[n]+H[n-1]</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,232 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="134.29977mm"
height="56.968616mm"
viewBox="0 0 134.29978 56.968616"
version="1.1"
id="svg15440"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="focus-overlay-simple.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview15442"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.93806815"
inkscape:cx="280.89644"
inkscape:cy="-43.706846"
inkscape:window-width="1920"
inkscape:window-height="1011"
inkscape:window-x="26"
inkscape:window-y="23"
inkscape:window-maximized="0"
inkscape:current-layer="layer1" />
<defs
id="defs15437">
<marker
style="overflow:visible"
id="Arrow1"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Arrow1"
markerWidth="4.0606604"
markerHeight="6.7071066"
viewBox="0 0 4.0606602 6.7071068"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
d="M 3,-3 0,0 3,3"
id="path5057"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc" />
</marker>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-59.229347,-58.185865)">
<g
id="g14558"
transform="translate(-31.802352,43.288319)">
<g
id="g14341"
transform="matrix(0.71187818,0,0,0.71187818,16.162449,4.4278608)">
<g
id="g14303"
transform="translate(95.250005)">
<g
id="g8642"
transform="matrix(1.0024576,0,0,1.0066772,-20.071325,9.2629207)"
style="fill:#87cdde">
<rect
style="fill:#87cdde;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect8975"
width="10.000903"
height="9.8253908"
x="89.940933"
y="5.5644517" />
<rect
style="fill:#87cdde;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15674"
width="9.9865494"
height="69.035316"
x="89.977531"
y="15.38116" />
</g>
</g>
<g
id="g14339"
transform="translate(85.238286,-5.2928681)">
<rect
style="fill:none;stroke:#000000;stroke-width:0.739329;stroke-linecap:round;stroke-linejoin:bevel"
id="rect14305"
width="89.260674"
height="79.260674"
x="20.369663"
y="20.369663" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 30.132591,20.025788 V 100.02579"
id="path14307" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 40.132591,20.025788 V 100.02579"
id="path14309" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 50.132591,20.025788 V 100.02579"
id="path14311" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 60.132591,20.025788 V 100.02579"
id="path14313" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 70.132591,20.025788 V 100.02579"
id="path14315" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 80.132591,20.025788 V 100.02579"
id="path14317" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 90.132591,20.025788 V 100.02579"
id="path14319" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 100.1323,20.025788 V 100.02579"
id="path14321" />
<g
id="g14337"
transform="rotate(-90,60.032871,60.125509)">
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 40.140611,20.025788 V 110.02579"
id="path14323" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 50.137403,20.025788 V 110.02579"
id="path14325" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 60.134195,20.025788 V 110.02579"
id="path14327" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 70.130987,20.025788 V 110.02579"
id="path14329" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 80.127779,20.025788 V 110.02579"
id="path14331" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 90.124571,20.025788 V 110.02579"
id="path14333" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 30.14081,20.025788 V 110.02579"
id="path14335" />
</g>
</g>
</g>
</g>
<g
id="g1086">
<g
id="g8642-1"
transform="matrix(0.71362769,0,0,0.71663153,45.180541,66.73148)"
style="fill:#87cdde">
<rect
style="fill:#87cdde;stroke:none;stroke-width:0.557914;stroke-linecap:round;stroke-linejoin:bevel"
id="rect8975-2"
width="9.8090363"
height="9.7679205"
x="122.16709"
y="10.613985" />
</g>
<text
xml:space="preserve"
style="font-size:5.29167px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;stroke-width:0.264583"
x="139.6705"
y="79.361794"
id="text16108"><tspan
sodipodi:role="line"
id="tspan16106"
style="font-size:5.29167px;stroke-width:0.264583"
x="139.6705"
y="79.361794">G[n] = A[n]+ E[n]</tspan></text>
</g>
<g
id="g15259"
class="fragment"
transform="translate(6.4699187,0.48786805)"
data-fragment-index="1">
<rect
style="opacity:0.94;fill:#ffffff;stroke-width:0.765;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15253"
width="83.835068"
height="22.123394"
x="45.033455"
y="49.776543" />
<rect
style="opacity:0.94;fill:#ffffff;stroke-width:0.765;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15255"
width="83.835068"
height="22.123394"
x="45.033455"
y="100.52666" />
</g>
<g
id="g2354"
class="fragment"
data-fragment-index="2">
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1)"
d="M 105.66857,76.272614 C 91.961157,63.762086 78.755832,64.03235 63.766616,76.480624"
id="path1427"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#d40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1)"
d="m 105.66857,76.272614 c -7.970776,-6.926782 -7.778147,-5.525511 -13.931219,0.20801"
id="path2336"
sodipodi:nodetypes="cc" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@ -0,0 +1,406 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="162.80612mm"
height="76.982353mm"
viewBox="0 0 162.80612 76.982353"
version="1.1"
id="svg16383"
sodipodi:docname="focus-source.svg"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview16385"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.4723801"
inkscape:cx="307.66511"
inkscape:cy="145.3429"
inkscape:window-width="1920"
inkscape:window-height="1011"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs16380" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(12.039929,-50.536031)">
<g
id="g1321"
transform="matrix(0.71082104,0,0,0.71082104,74.153686,52.159982)">
<g
id="g1250">
<rect
style="fill:#d40000;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect575"
width="60.116589"
height="39.445316"
x="9.9323921"
y="15.336538" />
<rect
style="fill:#008080;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect1185"
width="60.116589"
height="29.528345"
x="9.9323921"
y="64.790268" />
<rect
style="fill:#808000;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect1234"
width="79.742142"
height="10.038256"
x="9.9323921"
y="54.679386" />
<rect
style="fill:#6c5353;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect1236"
width="19.614645"
height="39.592056"
x="70.119492"
y="15.164111" />
<rect
style="fill:#a05a2c;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect1238"
width="19.473637"
height="29.589264"
x="70.161949"
y="64.747635" />
</g>
<g
id="g521"
transform="translate(-10.011719,-5.2928681)">
<rect
style="fill:none;stroke:#000000;stroke-width:0.697056;stroke-linecap:round;stroke-linejoin:bevel"
id="rect234"
width="79.302948"
height="79.30294"
x="20.348528"
y="20.348528" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 30.132591,20.025788 V 100.02579"
id="path342" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 40.132591,20.025788 V 100.02579"
id="path452" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 50.132591,20.025788 V 100.02579"
id="path454" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 60.132591,20.025788 V 100.02579"
id="path456" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 70.132591,20.025788 V 100.02579"
id="path458" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 80.132591,20.025788 V 100.02579"
id="path460" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 90.132591,20.025788 V 100.02579"
id="path462" />
<g
id="g503"
transform="rotate(-90,60.032871,60.125509)">
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 30.132591,20.025788 V 100.02579"
id="path482" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 40.132591,20.025788 V 100.02579"
id="path484" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 50.132591,20.025788 V 100.02579"
id="path486" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 60.132591,20.025788 V 100.02579"
id="path488" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 70.132591,20.025788 V 100.02579"
id="path490" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 80.132591,20.025788 V 100.02579"
id="path492" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 90.132591,20.025788 V 100.02579"
id="path494" />
</g>
</g>
</g>
<g
id="g14531"
transform="translate(-162.24226,47.674437)">
<g
id="g14446"
transform="matrix(0.71187818,0,0,0.71187818,89.24458,4.4278608)">
<g
id="g14408"
transform="translate(95.250005)">
<rect
style="fill:#808000;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect14394"
width="59.763874"
height="9.5895605"
x="10.356019"
y="84.515778" />
<rect
style="fill:#808000;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect14396"
width="19.424206"
height="9.3570938"
x="80.195946"
y="84.781166" />
<rect
style="fill:#d40000;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect14398"
width="60.116589"
height="39.445316"
x="9.9323921"
y="15.336538" />
<rect
style="fill:#008080;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect14400"
width="60.097031"
height="29.961065"
x="9.9323921"
y="54.700611" />
<rect
style="fill:#6c5353;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect14402"
width="19.614645"
height="39.592056"
x="80.118996"
y="15.164111" />
<rect
style="fill:#a05a2c;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect14404"
width="19.584085"
height="30.073484"
x="80.161453"
y="54.657978" />
<rect
style="fill:#536c53;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect14406"
width="10.053292"
height="79.124115"
x="70.048714"
y="15.071852" />
<g
id="g8642-2"
transform="matrix(1.0024576,0,0,1.0066772,-20.079708,9.3665583)"
style="fill:#87cdde">
<rect
style="fill:#87cdde;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect8636-8"
width="19.857861"
height="39.984009"
x="80.118996"
y="15.164111" />
<rect
style="fill:#87cdde;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect8975-9"
width="10.023149"
height="78.852028"
x="89.940933"
y="5.5644517" />
</g>
<g
id="g8642-3-7"
transform="matrix(1.0024576,0,0,1.0066772,-40.207538,19.480186)"
style="fill:#87cdde">
<rect
style="fill:#87cdde;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect8636-6-3"
width="19.949583"
height="39.905231"
x="80.118996"
y="15.164111" />
</g>
</g>
<g
id="g14444"
transform="translate(85.238286,-5.2928681)">
<rect
style="fill:none;stroke:#000000;stroke-width:0.739329;stroke-linecap:round;stroke-linejoin:bevel"
id="rect14410"
width="89.260674"
height="79.260674"
x="20.369663"
y="20.369663" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 30.132591,20.025788 V 100.02579"
id="path14412" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 40.132591,20.025788 V 100.02579"
id="path14414" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 50.132591,20.025788 V 100.02579"
id="path14416" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 60.132591,20.025788 V 100.02579"
id="path14418" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 70.132591,20.025788 V 100.02579"
id="path14420" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 80.132591,20.025788 V 100.02579"
id="path14422" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 90.132591,20.025788 V 100.02579"
id="path14424" />
<path
style="fill:none;stroke:#000000;stroke-width:0.265182px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 100.1323,20.025788 V 100.02579"
id="path14426" />
<g
id="g14442"
transform="rotate(-90,60.032871,60.125509)">
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 40.140611,20.025788 V 110.02579"
id="path14428" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 50.137403,20.025788 V 110.02579"
id="path14430" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 60.134195,20.025788 V 110.02579"
id="path14432" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 70.130987,20.025788 V 110.02579"
id="path14434" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 80.127779,20.025788 V 110.02579"
id="path14436" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 90.124571,20.025788 V 110.02579"
id="path14438" />
<path
style="fill:none;stroke:#000000;stroke-width:0.281223px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 30.14081,20.025788 V 110.02579"
id="path14440" />
</g>
</g>
</g>
</g>
<g
id="g15259"
class="fragment"
transform="translate(-57.073384,4.8093891)"
data-fragment-index="1">
<rect
style="opacity:0.94;fill:#ffffff;stroke-width:0.765;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15253"
width="83.835068"
height="22.123394"
x="45.033455"
y="49.776543" />
<rect
style="opacity:0.94;fill:#ffffff;stroke-width:0.765;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15255"
width="83.835068"
height="22.123394"
x="45.033455"
y="100.52666" />
</g>
<g
id="g15259-4"
class="fragment"
transform="translate(21.897669,4.868344)"
data-fragment-index="2">
<rect
style="opacity:0.94;fill:#ffffff;stroke-width:0.710707;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15253-7"
width="72.357506"
height="22.123394"
x="56.511013"
y="49.776543" />
<rect
style="opacity:0.94;fill:#ffffff;stroke-width:0.632841;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15255-8"
width="83.835068"
height="15.139732"
x="45.033455"
y="107.51031" />
<rect
style="opacity:0.94;fill:#ffffff;stroke-width:0.398977;stroke-linecap:round;stroke-linejoin:bevel"
id="rect16933"
width="71.339272"
height="7.071661"
x="56.142132"
y="86.232643" />
</g>
<text
xml:space="preserve"
style="font-size:8.46667px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;stroke-width:0.264583"
x="8.3944016"
y="57.106167"
id="text16937"><tspan
sodipodi:role="line"
id="tspan16935"
style="font-weight:bold;font-size:8.46667px;stroke-width:0.264583"
x="8.3944016"
y="57.106167">Spreadsheet</tspan></text>
<text
xml:space="preserve"
style="font-size:8.46667px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;stroke-width:0.264583"
x="85.414101"
y="57.106167"
id="text16941"><tspan
sodipodi:role="line"
id="tspan16939"
style="font-weight:bold;font-size:8.46667px;stroke-width:0.264583"
x="85.414101"
y="57.106167">Source Data</tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;stroke-width:0.264583"
x="69.306198"
y="126.9937"
id="text16945"
class="fragment"
data-fragment-index="2"><tspan
sodipodi:role="line"
id="tspan16943"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:'Courier New';-inkscape-font-specification:'Courier New';text-align:center;text-anchor:middle;stroke-width:0.264583"
x="69.306198"
y="126.9937">SELECT * FROM ... OFFSET ... LIMIT ...</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -2,9 +2,9 @@
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="127.29889mm"
width="134.29977mm"
height="56.968616mm"
viewBox="0 0 127.29889 56.968616"
viewBox="0 0 134.29978 56.968616"
version="1.1"
id="svg15440"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
@ -25,14 +25,14 @@
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.3266287"
inkscape:cx="51.257747"
inkscape:cy="-12.060646"
inkscape:cx="334.68294"
inkscape:cy="-11.306856"
inkscape:window-width="1920"
inkscape:window-height="1011"
inkscape:window-x="26"
inkscape:window-y="23"
inkscape:window-maximized="0"
inkscape:current-layer="g16141" />
inkscape:current-layer="layer1" />
<defs
id="defs15437" />
<g
@ -84,7 +84,7 @@
x="80.118996"
y="15.164111"
class="fragment"
data-fragment-index="3" />
data-fragment-index="4" />
<rect
style="fill:#6f6f91;stroke:none;stroke-width:0.564999;stroke-linecap:round;stroke-linejoin:bevel"
id="rect15676"
@ -93,7 +93,7 @@
x="100.01946"
y="5.3422446"
class="fragment"
data-fragment-index="3" />
data-fragment-index="4" />
</g>
</g>
<g
@ -177,18 +177,6 @@
id="g16141"
class="fragment"
data-fragment-index="4">
<g
id="g8642-1"
transform="matrix(0.71362769,0,0,0.71663153,45.180541,66.73148)"
style="fill:#87cdde">
<rect
style="fill:#87cdde;stroke:none;stroke-width:0.557914;stroke-linecap:round;stroke-linejoin:bevel"
id="rect8975-2"
width="9.8090363"
height="9.7679205"
x="122.16709"
y="10.613985" />
</g>
<g
id="g15737"
transform="matrix(0.71362769,0,0,0.71663153,45.180541,75.439951)"
@ -213,17 +201,6 @@
x="122.16709"
y="10.613985" />
</g>
<text
xml:space="preserve"
style="font-size:5.29167px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;stroke-width:0.264583"
x="139.6705"
y="79.361794"
id="text16108"><tspan
sodipodi:role="line"
id="tspan16106"
style="font-size:5.29167px;stroke-width:0.264583"
x="139.6705"
y="79.361794">[n] = A[n] + E[n-1]</tspan></text>
<text
xml:space="preserve"
style="font-size:5.29167px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;stroke-width:0.264583"
@ -234,7 +211,7 @@
style="font-size:5.29167px;stroke-width:0.264583"
x="139.6705"
y="88.070267"
id="tspan16206">[n] = max(C[n], D[n])</tspan></text>
id="tspan16206">F[n] = max(C[n], C[n-1])</tspan></text>
<text
xml:space="preserve"
style="font-size:5.29167px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;stroke-width:0.264583"
@ -245,7 +222,35 @@
id="tspan16122"
style="font-size:5.29167px;stroke-width:0.264583"
x="139.6705"
y="96.77874">[n] = A[n] * (1+B[n])</tspan></text>
y="96.77874">D:E[n] = A[n] * (1+B[n])</tspan></text>
</g>
<g
id="g1086"
class="fragment"
data-fragment-index="3">
<g
id="g8642-1"
transform="matrix(0.71362769,0,0,0.71663153,45.180541,66.73148)"
style="fill:#87cdde">
<rect
style="fill:#87cdde;stroke:none;stroke-width:0.557914;stroke-linecap:round;stroke-linejoin:bevel"
id="rect8975-2"
width="9.8090363"
height="9.7679205"
x="122.16709"
y="10.613985" />
</g>
<text
xml:space="preserve"
style="font-size:5.29167px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;stroke-width:0.264583"
x="139.6705"
y="79.361794"
id="text16108"><tspan
sodipodi:role="line"
id="tspan16106"
style="font-size:5.29167px;stroke-width:0.264583"
x="139.6705"
y="79.361794">G[n] = A[n]+ E[n]</tspan></text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -118,7 +118,7 @@
{ src: '<%=reveal_js_dir%>/plugin/zoom-js/zoom.js', async: true },
{ src: '<%=reveal_js_dir%>/plugin/notes/notes.js', async: true },
// Chart.min.js
{ src: '<%=reveal_js_dir%>/plugin/chart/Chart.min.js'},
{ src: '<%=reveal_js_dir%>/plugin/chart/Chart.js'},
// the plugin
{ src: '<%=reveal_js_dir%>/plugin/chart/csv2chart.js'},
{ src: '<%=reveal_js_dir%>/plugin/svginline/es6-promise.auto.js', async: false },