Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Курс «Информатика»
тема № 1
«Теория информации и структуры данных»
заведующий кафедрой доктор физико-математических наук
Роман Вячеславович Шамин
shamin.ru, lector.ru, calcs.ru
МИРЭА – Российский технологический университеткафедра информатики Института комплексной безопасности и специального приборостроения
Москва, 2019 г.
Лекции по информатике, Р.В. Шамин: shamin.ru, lector.ru, calcs.ru
Что такое информатика?
Информатика – это наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информациис применением компьютерных технологий, обеспечивающих возможность ее использования для принятия решений.
Большая российская энциклопедия, 2008.
Основным объектом информатики является понятие информации.«Информация – это сведения, независимо от формы их представления, воспринимаемые человеком илиспециальными устройствами как отражение фактов материального мира в процессе коммуникации». ГОСТ 7.0-99.
Свойства информации:▪ полезность▪ актуальность▪ достоверность▪ объективность▪ полнота▪ понятность
Носители информации:информация разделяется нааналоговую и цифровую. Приэтом информатика относитсяв основном к цифровойинформации, с которойработают компьютеры.
В XXI веке информация играет самуюглавную роль в нашей цивилизации иимеет самое большое значение дляразвития Человечества.«Кто владеет информацией, тот владеетмиром.» Натан Ротшильд, 1815 г. после битвы
при Ватерлоо.
Информатика в нашей жизни:телекоммуникация, математическоемоделирование, компьютерная графика,электронные банки данных, шифрование,машинное обучение и искусственныйинтеллект, цифровая экономика…
Запомните:Для успеха в жизни Вам не обойтись безинформационных технологий, поэтому кем быВы не хотели стать – учите программирование,изучайте методы машинного обучения, незабывайте о математике.
Лекции по информатике, Р.В. Шамин: shamin.ru, lector.ru, calcs.ru
Теория информации: единицы измерения
Мы будем изучать только цифровую информацию, поэтому важнейшим понятиемявляется единица измерения информации – бит. Бит – это минимальная единицаизмерения информации. Бит может принимать только два значения 0 или 1. Этосоответствует каком-либо физическому устройству, которое может быть только в двухположениях «0» или «1». Такие устройства легко конструируются.
Бит можно рассматривать как два варианта какого-либовысказывания, которое может быть истинным илиложным, хотя можно себе представить и вопрос, накоторый можно ответить «да», «нет» или «не знаю».Такая логика называется троичной логикой.
Бит – двоичное число. Игра слов: binary digit, англ. bit – это кусочек, частица.
С помощью битов формируются сообщения, при этом биты являются дискретными.
Лекции по информатике, Р.В. Шамин: shamin.ru, lector.ru, calcs.ru
Теория информации: единицы измерения
В современных компьютерахиспользуют следующие единицыизмерения:1 Б (байт) = 8 бит1 Кбайт (килобайт) = 1024 Б1 Мбайт (мегабайт) = 1024 Кбайт1 Гбайт (гигабайт) = 1024 Мбайт1 Тбайт (терабайт) = 1024 Гбайт
Задача:Сколько битов в 3 Мбайт?Решение:3 Мбайт = 3 * 1024 Кбайт = 3* 1024 * 1024 Б == 3* 1024 * 1024 * 8 бит = 25165824 бит
Цифровое сообщение – это упорядоченныйконечный набор битов. Длиной сообщения мыбудем называть количество бит, которое содержитданное сообщение и писать |S| = N, если сообщениеS = (s1, s2, …, sN).Сколько разных сообщений длины N? Ответ: 2N
различных сообщений.
N = 1: количество = 2; N = 2: количество = 2 * (количество дляN-1) = 4; …;количество для N = 2 * (количество N-1) = 2*2*…*2 = 2N.
Лекции по информатике, Р.В. Шамин: shamin.ru, lector.ru, calcs.ru
Теория информации
Лекции по информатике, Р.В. Шамин: shamin.ru, lector.ru, calcs.ru
Рассмотрим задачу: какое минимальноеколичество бит нужно для описания всех Kсостояний системы?Для этого нужно найти такое минимальное N,которое будет удовлетворять уравнению K = 2N.Логарифмируя по основанию 2, получаем N =log2K. Если в этой формуле N не будет четной, тоего нужно округлить (вверх!) до целого.
Формула N = log2K, где K –количество возможных состояний, аN – минимальное количествоинформации в битах, необходимоедля описания состояний системыназывается формулой Хартли. Пример:
Сколько нужно бит, чтобы описать состояниясистемы из 5 состояний? Нужно:
log25 = 2,322 => N = 3 бита.Заметим, что тремя битами можно описать исистемы и из 6, 7 и 8 состояний, но не из 9состояний. Почему? Потому что log29 = 3,17 > 3.
Буквы русского языка (без различия порегистру) можно описать 5-ю битами,если не различать Е и Ё, а еслиразличать, то 6-ю битами с избытком:
log232= 5; log233 = 5,044.
Теория информации: энтропия
Лекции по информатике, Р.В. Шамин: shamin.ru, lector.ru, calcs.ru
Пусть теперь система может находиться в одном из K состояний с разнымивероятностями. В состоянии 1 с вероятностью p1, в состоянии 2 с вероятностью p2 и т.д. всостоянии K с вероятностью pK, где pk ≥ 0. Тогда ценность знания, что система находится всостоянии pk зависит от распределения вероятностей.
Фундаментальное понятие теории информации – энтропияинформации. Под энтропией понимается мера неопределенностисистемы. Общей энтропией по Шеннону называется число H, ачастной для каждого состояния – число pilog2pi.
Прирост информации – это уменьшение энтропии.
H = – ∑ pilog2pi
сумма по всем состояниям
Если двоечник не поступил в РТУ МИРЭА, то тут мало информации,потому что «мы это и так знали», а вот если он поступил, то это«новость»!Полагая, что двоечник не поступает с вероятностью 0,9, а поступает свероятностью 0,1 то, общая энтропия равна: H = 0.469.А частная энтропия для не поступления равна: -0,9 * log20,9 = 0.137,а для поступления равна: -0,1 * log20,1 = 0,332.
Системы счисления
Лекции по информатике, Р.В. Шамин: shamin.ru, lector.ru, calcs.ru
Использование битов в качестве алфавита {0, 1} наводит на мысль, что компьютерамлучше использовать двоичную систему счисления.
Натуральное число в десятичной системесчисления представимо в виде:x = aN…a2a1a0, где каждое an – это цифра0..9. При этом число равно
x = a0100 + a1101 + … + aN10N.
В двоичной системе счисления число имеетвид: x = aN…a2a1a0, где каждое an – это цифра0 или 1.При этом число равно
x = a020 + a121 + … + aN2N.
В k-ичной системе счисления число имеет вид: x = aN…a2a1a0, где каждое an – это цифра от0 до k-1. А число равно x = a0k0 + a1k1 + … + aNkN. Если k > 10, то в качестве цифриспользуются заглавные буквы латинского языка, например в шестнадцатеричнойсистеме счисления цифры: 0, 1, …, 9, A, B, C, D, E, F.
Если число x записано в k-ичной системе счисления, то пишут xk.Наиболее распространены в информатике кроме десятичнойсистемы счисления еще двоичная и шестнадцатеричная.
Системы счисления
Лекции по информатике, Р.В. Шамин: shamin.ru, lector.ru, calcs.ru
Как перевести число из одной системы счисления в другую?
Чтобы любое число в k-ичной системе исчисления перевести в десятичную системунужно воспользоваться формулой: x = a0k0 + a1k1 + … + aNkN.Чтобы число X из десятичной системы перевести в k-ичную, нужно:Разделить X на k: пусть X1 – это целая часть отношения, а a0 – остаток от деления. Если X1
не равно нулю, то делим X1 на k, обозначаем через X2 целую часть, через a1 – остаток.Повторяем эту процедуру до тех пор пока целая часть от деления не станет равной нулю.В результате X = aNa(N-1)…a1a0 – это представление числа X в k-ичной системе счисления.
17 в двоичную систему:17 / 2 = 8 ост. 1; 8 / 2 = 4 ост. 0;4 / 2 = 2 ост. 0; 2 / 2 = 1 ост. 0;1 / 2 = 0 ост. 11710 = 100012
Перевести 234 в шестнадцатеричную систему:234 / 16 = 14 ост. A; 14 / 16 = 0 ост. E;23410 = EA16.Заметим, что при записи остатка мы пишем его вшестнадцатеричной записи: 1010=A16, 1410=E16.
10102 = 1 * 23 + 0 * 22 + 1 * 21 + 0 * 20 = 1 * 8 + 0 * 4 + 1 * 2 + 0 * 1 = 1010.
Представление чисел в компьютере
Лекции по информатике, Р.В. Шамин: shamin.ru, lector.ru, calcs.ru
В компьютере могут быть представлены числа только с конечным числом цифр послезапятой. В этом случае любое число может быть представлено в виде a,b, где a – этоцелое число, а b – целое положительное число. Например: -648,512, где a = -648, b = 512.
Более того, такое число может бытьпредставлено в виде a,b*10p, где a – целое, b –целое положительное, p – целое.Нормализованной называется запись, когда
1 ≤ |a| < 10.Например: -648,512 в нормализованной записи
-6,48512*102.
Число a,b в этой записи называетсямантиссой, а p – порядком.
Во многих языках программированияпишутa,b*10p = a.bEp, используя точку.Например: -6,48512*102 = -6,48512E2.
Следует иметь в виду, что вещественные числа часто представляются приближенно,поэтому всегда возможны ошибки машинного округления чисел.
Число ε > 0 называется машинным эпсилон, если a + ε = a, где равенство понимается каксравнение чисел на компьютере. Значение ε зависит от точности представления чисел.
Данные
Лекции по информатике, Р.В. Шамин: shamin.ru, lector.ru, calcs.ru
Основной задачей компьютера являетсяобработка данных. Под обработкой данныхпонимается как вычислительные процедуры, так ипроцедуры, преобразующие одни данные вдругие данные.
Данные – это форма представлениеинформации, доступная дляобработки.Формат представления данных – этопоследовательность бит (байт).
Физически данные хранятся в виде файлов или потоковданных на физических носителях информации.Поток данных – это абстракция для доступа к данным изфайлов, периферийных устройств и т.д.
Данные организованы в определенном формате, который определяется различнымиструктурами данных.
Строительным элементом данных является переменная.Переменная – это именованная область памяти определенноготипа. Тип переменной определяет и формат хранения данных.
Переменные
Лекции по информатике, Р.В. Шамин: shamin.ru, lector.ru, calcs.ru
Переменная – это понятие языка программирования. В языкахпрограммирования каждая переменная иметь уникальное имя,которое, как правило, содержит буквы, цифры и подчеркивания,при этом имя переменной не может начинаться с цифры.Большинство языков программирования различают большие ималые буквы.
Вот примеры именпеременных:Abc, ABC, _abc, a20,abc_20.
Неправильно: 20abc, _20.
Каждая переменная должна иметьопределенный тип данных. В некоторыхязыка программирования (C++, Java, C#)каждая переменная перед использованиемобъявляется и получает фиксированный типданных, который потом не может бытьизменен. Такие языки называются строготипизированными. В других языках (Python,PHP, JavaScript) тип данных не фиксирован именяется в зависимости от контекста.
Простейшие типы данных:▪ целочисленный (int)▪ вещественный (double, real, float)▪ строковый (string)▪ логический (bool, boolean)
Массивы
Лекции по информатике, Р.В. Шамин: shamin.ru, lector.ru, calcs.ru
При программировании серьезных проектовнеобходимо работать не только с переменными, но и сосоставными структурами данных. Простейшейструктурой данных является массив.
Массив – структура данных,хранящая набор однотипныхпеременных, доступных поиндексу.
Как правило, массивы индексируются,начиная с нуля. Т.е. первый элементмассива имеет индекс = 0.Каждый массив имеет определенныйразмер (количество элементов). Размермассива определяется либо в моментобъявления или инициализации.
Массив – это тоже переменнаяс именем, например, A.Доступ к первому элементуA[0], а к последнему A[Count –1], если Count – это количествоэлементов в массиве.
Массивы могут быть многомерными, когда каждыйэлемент индексируется не одним индексом, анесколькими. Например, двумерный массив A[i, j], атрехмерный A[i, j, k], где i, j, k – это индексы массива.
Списки
Лекции по информатике, Р.В. Шамин: shamin.ru, lector.ru, calcs.ru
Основная проблема массивов состоит в том, что массивимеет фиксированный размер. А как быть, если мызаранее не знаем количества элементов?Для этого необходимо использовать списки.
Список – структура данных,состоящая из узлов, хранящихкак данные, так и ссылку наследующий элемент.
При добавлении нового элемента ссылка последнего элемента заменяется на ссылку нановый элемент, а новый элемент получает ссылку на Null. Таким образом, количествоэлементов ограничивается только памятью.
Современные языки имеют встроенные списки, когда добавление нового элементаделается автоматически: List.append(X) – добавление X к списку List в Python.
Очередь
Лекции по информатике, Р.В. Шамин: shamin.ru, lector.ru, calcs.ru
Часто нам нужно организовать очередь, когда мы сохраняем и имеем доступ к элементамне по индексу, а по принципу «первый вошел, первый вышел» FIFO – «first in, first out».
Важной особенностью очереди является то, что новые данные вставляются только в конецочереди, а извлекать можно только первый элемент очереди.
Размер очереди может быть фиксированным илидинамическим как в случае списков.
Стек
Лекции по информатике, Р.В. Шамин: shamin.ru, lector.ru, calcs.ru
Стек представляет собой структуру данных, в которой принцип: «последний вошел,первый вышел» LIFO – «last in, first out».
Стек – это очень эффективное средствоорганизации данных, которая применяется врекурсивных обходах дерева, организациивызовов подпрограмм и др.
Обычно стек поддерживает три операции:1. push(X) – поместить в стек элемент X2. pop() – получить верхний элемент, удалив его из стека3. peek() – получить верхний элемент, без удаления из стека
Стек можно сравнитьсо стопкой книг илимагазином с патронами
Хеш-таблица или словарь
Лекции по информатике, Р.В. Шамин: shamin.ru, lector.ru, calcs.ru
Классический массив представляет собой наборэлементов, доступ к которым осуществляется спомощью индекса – целого числа 0, 1, …
А почему бы не сделать массив,доступ к элементам которого будет нес помощью чисел, а произвольногоключа-имени?Такой массив называется хеш-таблицей или словарем.
Хеш-таблица позволяет эффективно организоватьдоступ по принципу «ключ – значение».
Например, для описания студентов можно использоватьследующую структуру Students:
[key=“фамилия имя отчество”, data = “адрес”]
Например: адрес Лобанова Андрея Николаевича можно найтипо запросу:
Students[“Лобанов Андрей Николаевич”]
Заключение
Лекции по информатике, Р.В. Шамин: shamin.ru, lector.ru, calcs.ru
В этой лекции Вы познакомились со следующими понятиями:
1. Что такое информатика и информация2. Единицы измерения информации3. Энтропия информации по Шеннону4. Системы счисления и перевод из одной системы счисления в другую5. Представление чисел в компьютере6. Что такое данные7. Переменные и типы данных8. Массивы9. Списки10. Очередь11. Стек12. Хеш-таблица или словарь
Подготовка к тесту
Лекции по информатике, Р.В. Шамин: shamin.ru, lector.ru, calcs.ru
Вопрос № 1:«Что такое информация и какими она может обладать свойствами?»
Вопрос № 2:«Сколько бит в 5 гигабайтах?»
Вопрос № 3:«Какой смысл имеет энтропия информации?»
Вопрос № 4:«Чему равно F516?» «Записать в двоичной системе счисления число 21»
Вопрос № 5:«Записать в нормализованной форме число 120,34. Указать мантиссу и порядок»
Подготовка к тесту
Лекции по информатике, Р.В. Шамин: shamin.ru, lector.ru, calcs.ru
Вопрос № 6:«Что такое данные и чем они отличаются от информации?»
Вопрос № 7:«Какого типа данных могут быть переменные?»
Вопрос № 8:«Что такое массив?»
Вопрос № 9:«Чем список отличается от массива? от хеш-таблицы?»
Вопрос № 10:«В чем разница между стеком и очередью?»
Удачи на экзамене!