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)
Дело в том, что нам незачем хранить день лучшей покупки для каждого дня на входе. Достаточно сохранить день лучшей покупки относительно дня лучшей продажи, найденной к настоящему моменту.