HILDA talk
|
@ -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;
|
||||
|
|
|
@ -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: [] });
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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>
|
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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 },
|
||||
|
|