Algorithms Part I - Coursera Class Notes

Class Notes for Algorithms, Part I https://class.coursera.org/algs4partI-2012-001/class/index

by DaveAlger

HTML

<a target="_blank" href="https://class.coursera.org/algs4partI-2012-001/class/index">
    Class Notes for Algorithms, Part I
</a>

<hr />
Week 1
<div class="tog">Steps for developing useful algorithms</div>
<div class="box">
    <div class="tog">1) Model the Problem</div>
    <div id="n1" class="indent-a"></div>
    <div class="tog">2) Find an algorithm to solve it</div>
    <div id="n1" class="indent-a"></div>
    <div class="tog">3) Is it Fast Enough? Is it too Resource Intensive?</div>
    <div id="n1" class="indent-a"></div>
    <div class="tog">4) Figure out why</div>
    <div id="n1" class="indent-a"></div>
    <div class="tog">5) Find a way to address the problem</div>
    <div id="n1" class="indent-a"></div>
    <div class="tog">6) Iterate (Goto Step 3)</div>
    <div id="n1" class="indent-a"></div>
</div>

<hr />

<!--
<div id="list"></div>
<button id="go">GO</button>
-->

CSS

body
{
    background: #eeeeee;
    color: #000000;
    padding: 4px;
}

div.fraction-inline
{
    display: inline-block;
    position: relative;
    vertical-align: middle;
}

div.math
{
    color: #333333;
}

div.math
{
    text-align: center;
    width: 100%;
    word-spacing: normal;
}

.title
{
    font-family: sans-serif;
    font-size: 1.5em;
    padding: 4px;
    margin-top: 10px;
    color: #333333;
}

.tog
{
    font-family: sans-serif;
    font-size: 1.2em;
    padding: 4px;
    border-bottom: 2px solid #eeeeee;
    margin-top: 5px;
    cursor: pointer;
    color: #666666;
}

.tog:hover
{
    background: #e0e0e0;
}

hr
{
    margin: 20px 0px 20px 0px;
    border: 1px dashed silver;
}

span.baseline
{
}

sub sub
{
    vertical-align: -0.4em;
    font-size: 80%;
}

sub
{
    vertical-align: -0.4em;
    font-size: 70%;
    padding-left: 2px;
}

sup
{
    vertical-align: 0.4em;
    font-size: 70%;
    padding-left: 2px;
}

.abs
{
    border-left: 1px solid #888888;
    border-right: 1px solid #888888;
    padding: 0px 3px 0px 3px;
    margin-left: 3px;
}

.formula-box
{
    border: 2px dashed #dadada;
    margin: 6px;
    padding: 12px;
}

.fraction-inline > span
{
    display: block;
    padding: 0;
}

.fraction-inline span.denominator
{
    border-top: 1px solid #333333;
    padding: 4px 8px 4px 8px;
}

.fraction-inline span.divider
{
    position: absolute;
    top: 0em;
    display: none;
    letter-spacing: -0.1em;
}

.list-item
{
    padding: 8px;
    margin: 4px 100px 4px 100px;
    border: 2px solid #eee;
    cursor: pointer;
    background: #abc;
}

.math,
i.mi
{
    word-spacing: -0.2ex;
}

.op
{
    padding: 0px 12px 0px 12px;
    color: #333333;
}

.root
{
    border-top: 1px solid #333333;
}

.state:after
{
    content: ' \232A';
    color: #333333;
}

.state:before
{
    content: '\2502';
    color: #777777;
    font-size: 0.8em;
}

.state
{
    font-size: 0.84em;
    padding: 1px;
    margin: 3px;
    border: 1px dotted...

JavaScript

var PSI = '&#968;';
var THETA = '&#952;';
var SIGNB = '&#348;';
var SQRT = '&#8730;';
var ANG = '&#9002;';
var _ = '<span class="bull"></span>';
var Cx = '<span class="complex-num"></span>';

// FORMULA START - END
var s1 = '<div class="formula-box w-a"><div class="math">';
var s2 = '<div class="formula-box w-b"><div class="math">';
var s3 = '<div class="formula-box w-c"><div class="math">';
var e = '</div></div>';

// OPERATORS
var P = '<span class="op">+</span>';
var M = '<span class="op">−</span>';
var EQ = '<span class="op">=</span>';
var GEQ = '<span class="op">≥</span>';
var LEQ = '<span class="op">≤</span>';
var NEQ = '<span class="op">&#8800;</span>';
var EQUIV = '<span class="op">&#8801;</span>';
var IS = '<span class="op">&#8712;</span>';
var NIS = '<span class="op">&#8713;</span>';

// VARS
var A_0 = '<span class="term">&#945;</span><sub>0</sub>';
var A_1 = '<span class="term">&#945;</span><sub>1</sub>';
var A_i = '<span class="term">&#945;</span><sub>i</sub>';
var A_j = '<span class="term">&#945;</span><sub>j</sub>';
var A_k = '<span class="term">&#945;</span><sub>k-1</sub>';
var B_0 = '<span class="term">&#946;</span><sub>0</sub>';
var B_1 = '<span class="term">&#946;</span><sub>1</sub>';
var B_i = '<span class="term">&#946;</span><sub>1</sub>';

// STATES
var S_0 = '<span class="state">0</span>';
var S_1 = '<span class="state">1</span>';
var S_P = '<span class="state">+</span>';
var S_N = '<span class="state">-</span>';
var S_k = '<span class="state">k-1</span>';
var S_j = '<span class="state">j</span>';
var S_psi = '<span class="state">&#968;</span>';

// SPREADS
var Sp_P = '<span class="spread">' + S_P + '</span>';
var Spn_P = '<span class="spreadn">' + S_P + '</span>';
var Sp_0 = '<span class="spread">' + S_0 + '</span>';
var Spn_0 = '<span class="spreadn">' + S_0 + '</span>';
var Sp_psi = '<span class="spread">' + S_psi + '</span>';
var Spn_psi = '<span class="spreadn">' + S_psi + '</span>';

// TERMS
var T_r2 = '<span...