Ø «Структуры данных и алгоритмы на Python» (Data Structures and Algorithms in Python) от Michael T. Goodrich, Roberto Tamassia и Michael H. Goldwasser. Этот учебник предлагает подробное объяснение основных концепций и принципов структур данных и алгоритмов, используя язык программирования Python. Он включает множество примеров, упражнений и проектов для закрепления материала.


Ø «Введение в алгоритмы» (Introduction to Algorithms) от Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest и Clifford Stein. Это классическое учебное пособие, охватывающее широкий спектр тем по структурам данных и алгоритмам. Оно подходит для продвинутого уровня и требует хорошего знания математики и анализа алгоритмов.


Ø «Структуры данных и алгоритмы» (Data Structures and Algorithms) на платформе Coursera. Это серия онлайн-курсов, предлагающих интерактивное обучение по различным аспектам структур данных и алгоритмов. Курсы включают видеолекции, тесты, задачи и проекты, и доступны на разных языках, включая английский и русский.


Тестовые вопросы с вариантами ответов


1. Кто является основателем семантического подхода и отцом кибернетики?


o а) А. Харкевич


o б) Н. Винер


o в) Майкл Т. Гудрич


o г) Томас Х. Кормен


2. Какие единицы измерения информации используются для количественной оценки объёма и потока информации?


o а) Байт, нат, хартли


o б) Метр, килограмм, секунда


o в) Грамм, литр, метр


o г) Секунда, минута, час


3. Какая структура данных лучше всего подходит для двумерных данных?


o а) Линейная структура


o б) Табличная структура


o в) Иерархическая структура


o г) Сетевая структура


4. Какой метод позволяет сделать путь доступа к данным в иерархических структурах более компактным?


o а) Сортировка


o б) Дихотомия


o в) Хеширование


o г) Балансировка


5. Какое преимущество имеют иерархические структуры данных?


o а) Простота обновления данных


o б) Эффективное использование памяти


o в) Легкость упорядочения данных


o г) Простота реализации


Правильные ответы:


1. Правильный ответ: б)


2. Правильный ответ: а)


3. Правильный ответ: б)


4. Правильный ответ: б)


5. Правильный ответ: а)

1.7. Кодирование информации

Кодирование информации — это процесс представления информации в различных формах. Это может включать преобразование информации из одной формы в другую для улучшения её обработки, передачи, хранения и восприятия.


Часто кодирование применяется для перехода от исходного представления к представлению удобному для хранения, передачи и обработки. Обратный переход называется декодированием.


При кодировании могут достигаться различные цели и соответственно применяться различные методы.


Цели кодирования:


Ø экономность, т.е. уменьшение избыточности сообщения;


Ø повышение скорости передачи или обработки;


Ø надёжность, т.е. защита от случайных искажений;


Ø секретность, т.е. защита от нежелательного доступа к информации;


Ø удобство физической реализации;


Ø удобство восприятия.


Эти цели часто противоречат друг другу.


Экономные сообщения могут оказаться ненадёжными, т.к. они не содержат лишних символов, и искажение любого символа может изменить смысл сообщения.


Например, обычная запись числа цифрами гораздо экономичнее и удобнее для вычислений, чем запись символами. Однако искажение или удаление любой цифры изменит величину числа.


Поэтому в финансовых документах, где надёжность должна быть велика, цифровые сообщения в некоторых местах заменяются или дублируются словесными сообщениями. Дублирование повышает избыточность.


Теория кодирования подробно исследует проблемы разумного сочетания экономности и надёжности при передаче сообщения.


Экономное сообщение может существенно уменьшить объём передаваемой информации, уменьшить требования к пропускной способности канала связи, повысить оперативность передачи сообщения.