
- •Конспект лекций по дисциплине «основы дискретной математики»
- •Лекция № 1. Дискретное и непрерывное
- •Введение
- •Счетные и несчетные числовые множества
- •Лекция № 2. Системы счисления
- •Позиционные и непозиционные системы
- •Десятичная система
- •Двоичная система
- •Код Грея
- •Троичная система счисления
- •Восьмеричная и шестнадцатеричная системы счисления
- •Лекция № 3. Фракталы
- •3.1. Канторово множество
- •3.2. Ковер Серпинского и снежинка Коха
- •3.3. Стохастические фракталы
- •3.4. Энтропийная размерность
- •3.5. Фрактал Мандельброта
- •Лекция № 4. Основы математической логики
- •Виды доказательства
- •Логические высказывания, связки и операции
- •Набор истинностных значений 0001 в первой строке таблицы соответствует результатам операций:
- •Переменные и формулы в исчислении высказываний
- •Булевы функции
- •Основные эквивалентности:
- •Предикаты
- •Семантика исчисления предикатов
- •X(человек(X) смертный(X)),
- •Правило резолюции
- •Лекция № 5. Множества и подмножества
- •Задание множеств
- •Парадокс Рассела
- •Сравнение множеств
- •Операции над множествами
- •Свойства операций над множествами
- •Проблема континуума
- •Лекция № 6. Математическая индукция
- •Сумма нечетных чисел
- •Сумма натуральных чисел
- •Снова считаем подмножества
- •Биномиальные коэффициенты
- •Треугольник Паскаля
- •Бином Ньютона для дробных и отрицательных показателей
- •Гамма-функция
- •Лекция № 7. Комбинаторика
- •Введение
- •Размещения без повторений
- •Сочетания без повторений
- •Размещения с повторением
- •Сочетания с повторением
- •Формула Стирлинга
- •Подстановки
- •Лекция № 8. Числа фибоначчи и простые числа
- •Задача Фибоначчи
- •Сумма чисел Фибоначчи
- •Формула для чисел Фибоначчи
- •Простые числа
- •Лекция № 9. Кодирование
- •Введение
- •Алфавитное кодирование
- •Разделимые схемы
- •Помехоустойчивое кодирование
- •Лекция № 10. Шифрование
- •Введение
- •Модулярная арифметика
- •Шифрование с открытым ключом
Код Грея
Помимо двоичных чисел на практике применяются и другие коды, использующие два знака: 0 и 1. В этом разделе мы познакомимся с кодом Грея. При сортировке данных естественным представлением является обычное целочисленное описание, поскольку среди десяти цифр каждая на 1 больше предыдущей. При переходе к двоичному описанию эта естественность исчезает. Рассмотрим битовое представление чисел 6, 7, 8 и 9:
0110 0111 1000 1001.
Числа 6 и 7, а также 8 и 9 отличаются друг от друга на один бит. Однако числа 7 и 8 не имеют между собой ничего общего! Это свойство представления может вызвать большие проблемы при решении задач, требующих систематизации числовых данных. Для решения проблемы неоднородности представления используется код Грея.
Код Грея – система нумерации, в которой два соседних значения различаются только в одном разряде.
Код Грея показан в третьем столбце табл. 2.1. Наиболее часто на практике применяется рефлексивный двоичный код Грея, хотя в общем случае существует бесконечное множество кодов Грея для систем счисления с любым основанием. В большинстве случаев, под термином «код Грея» понимают именно рефлексивный бинарный код Грея. Название рефлексный (отражённый) двоичный код происходит от факта, что вторая половина значений в коде Грея эквивалентна первой половине, только в обратном порядке, за исключением старшего бита, который просто инвертируется. Если же разделить каждую половину ещё раз пополам, свойство будет сохраняться для каждой из половин половины и т.д.
Код Грея был разработан Фрэнком Греем, исследователем Bell Labs. Он использовал этот код в своей импульсной системе связи (на него был получен патент № 2632058).
При преобразовании
бинарного кода в десятичное число мы
умножаем ноль или единицу на
,
где
– номер позиции бита в бинарном коде
(
;
и т.д.), а затем суммируем полученные
результаты.
При преобразовании
кода Грея в десятичное число мы умножаем
ноль или единицу на (
),
где
– номер позиции бита в коде Грея (
;
и т.д.). Дальше вычитаем из результата,
соответствующего старшей единице,
результат, соответствующий единице
меньшего разряда, прибавляем результат,
соответствующий единице еще более
меньшего разряда и т.д. (смотри последний
столбец табл. 2.1).
Троичная система счисления
Троичная система счисления – позиционная система счисления с целочисленным основанием равным 3. Она существует в двух вариантах: несимметричная и симметричная троичные системы. Несимметричная система обычно использует символы: 0, 1 и 2. Симметричная: –1, 0, +1. В табл. 2.3 показаны десятичные числа и соответствующие им числа в троичной системе счисления.
Таблица 2.3
Десятичная |
-3 |
-2 |
-1 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
Троичная несимметричная |
-10 |
-2 |
-1 |
0 |
1 |
2 |
10 |
11 |
12 |
20 |
21 |
22 |
100 |
Троичная симметричная |
|
|
|
|
|
|
|
11 |
|
|
|
|
100 |
Элементы троичной системы существовали еще у древних шумеров. Полноценную симметричную троичную систему впервые предложил итальянский математик Фибоначчи (Леонардо Пизанский) (1170–1250). Симметричная троичная система позволяет изображать отрицательные числа, не используя отдельный знак минуса.
В момент зарождения компьютерной техники троичная система составляла серьезную конкуренцию двоичной системе. Ее преимущество заключается в том, что она обеспечивает наибольшую плотность записи чисел по сравнению с другими целочисленными системами. Поясним это на следующем примере.
Предположим, что
в компьютере мы используем числа в
позиционной системе с целочисленным
основанием
.
При этом каждое число имеет максимум
разрядов. Значит, для сохранения числа
в памяти компьютера требуется
ячеек памяти, причем каждая ячейка
должна быть способна находиться в
состояниях. Аппаратные затраты составляют:
.
Используя систему
с основанием
и
разрядов, мы способны представить
различных чисел. Эффективность применяемой
в компьютере системы счисления можно
оценить с помощью следующего числового
критерия:
.
(2.3)
Чем больше чисел мы можем представить в данной системе счисления, и чем меньше при этом аппаратные затраты, тем эффективнее система по данному критерию.
Чаще критерий эффективности используют в такой форме
. (2.4)
Практически
критерий (2.4) равнозначен критерию (2.3),
однако удобнее в использовании.
Равнозначность основана на факте: если
,
то
.
График функции
показан на рис. 2.1.
Рис.2.1. График функции
Эта функция имеет
максимум для
.
При целых значениях
максимум достигается для
= 3.
;
;
;
.
Таким образом, наиболее эффективной по критерию (2.4) является троичная система счисления (используемая в троичных компьютерах), следом за которой идут двоичная система счисления (традиционно используемая в большинстве распространённых компьютеров) и четверичная система счисления.
В 1958 году Николай Петрович Брусенцов из МГУ построил первую серийную электронную троичную ЭВМ «Сетунь» на ячейках из ферритдиодных магнитных усилителей переменного тока, работавших в двухбитном троичном коде, четвёртое состояние двух битов не использовалось. В 1970 году Брусенцов построил вторую серийную электронную троичную ЭВМ «Сетунь-70».
В 1973 году в США впервые был создан экспериментальный троичный компьютер, а в 2008 году там же была построена троичная цифровая компьютерная система TCA2 на 1484-х интегральных транзисторах.
Тем не менее, в настоящее время двоичные компьютеры доминируют в компьютерной технике благодаря своей простоте и высокой надежности.