I. Системы счисления
Вычисления сводятся к работе с числами, потому что информация выражается в числах. Если сопоставить числа с буквами, можно будет записывать текст в цифровой форме. Цвета являются комбинацией интенсивности световых потоков красного, синего и зеленого — эту интенсивность можно задать в числовых значениях. Изображения легко представить в виде мозаики из цветных квадратов, так что они тоже выражаются через числа.
Рис. I.1.
Число 4321 в разных системах счисленияАрхаичные системы счисления (например, римские цифры — I, II, III и т. д.) составляют числа из сумм цифр. Система счисления, которая используется сегодня, тоже опирается на суммы, но значение каждой цифры в позиции
II. Метод Гаусса
Рассказывают, что как-то раз учитель в начальной школе в качестве наказания поставил Гауссу задачу: просуммировать все числа от 1 до 100. К изумлению учителя, Гаусс нашел ответ (5050) в течение нескольких минут. Его прием состоял в том, чтобы манипулировать порядком элементов
= 10 100
Разделив это на 2, мы получим 5050. Мы можем записать так:
Следовательно:
В последней строке
III. Множества
Мы используем слово
Рис. III.1.
S1 и S2 есть подмножества SПодмножества.
Множество объектов, содержащихся в другом множестве, называетсяОбъединение.
Какие обезьянки принадлежат либоПересечение.
Какие обезьянки принадлежат иСтепенные множества.
Обратите внимание, чтоIV. Алгоритм Кэдейна
В разделе «Полный перебор» главы 3 мы представили задачу «Лучшая сделка».
Лучшая сделка
В разделе «Динамическое программирование» той же главы мы показали алгоритм, который решил эту задачу с временной сложностью
function trade_kadane(prices):
····sell_day ← 1
····buy_day ← 1
····best_profit ← 0
····for each s from 2 to prices.length
········if prices[s] < prices[buy_day]
············b ← s
········else
············b ← buy_day
········profit ← prices[s] — prices[b]
········if profit > best_profit
············sell_day ← s
············buy_day ← b
············best_profit ← profit
····return (sell_day, buy_day)
Дело в том, что нам незачем хранить день лучшей покупки для каждого дня на входе. Достаточно сохранить день лучшей покупки относительно дня лучшей продажи, найденной к настоящему моменту.