- •1. Введение
- •2. Информатика
- •Предмет и основные понятия информатики
- •Понятие информации и её свойства
- •Классификация информации
- •1) По способам восприятия
- •3) По предназначению
- •Свойства информации
- •Объективность
- •Достоверность
- •Полнота
- •Понятие количества информации
- •Тема 1. Информация и информационные процессы
- •1.1. Информация. Информационные объекты различных видов
- •1.2. Виды и свойства информации
- •1.3. Основные информационные процессы. Хранение, передача и обработка информации
- •Информационная энтропия
- •Формальные определения
- •Определение по Шеннону
- •Определение с помощью собственной информации
- •Свойства
- •Математические свойства
- •Эффективность
- •Вариации и обобщения
- •Условная энтропия
- •Взаимная энтропия
- •История
- •Алгоритм Шеннона — Фано
- •Основные сведения
- •Основные этапы
- •Алгоритм вычисления кодов Шеннона — Фано
- •Пример кодового дерева
- •Информация
- •История понятия
- •Классификация информации
- •Значение термина в различных областях знания Философия
- •В информатике
- •Системология
- •В физике
- •В математике
- •В теории управления
- •В кибернетике
- •Информация в материальном мире
- •Информация в живой природе
- •Информация в человеческом обществе
- •Хранение информации
- •Передача информации
- •Обработка информации
- •Информация в науке
- •Теория информации
- •Теория алгоритмов
- •Теория автоматов
- •Семиотика
- •Дезинформация
- •1. Введение
- •Способы кодирования информации.
- •Теорема Шеннона — Хартли
- •Утверждение теоремы
- •История развития
- •Критерий Найквиста
- •Формула Хартли Теоремы Шеннона для канала с шумами
- •Теорема Шеннона — Хартли
- •Значение теоремы Пропускная способность канала и формула Хартли
- •1. Передача информации. Информационные каналы
- •2. Характеристики информационного канала
- •3. Абстрактный алфавит
- •4. Кодирование и декодирование
- •5. Понятие о теоремах Шеннона
- •6. Международные системы байтового кодирования
- •7. Кодирование информации
- •7.1. Двоичное кодирование текстовой информации
- •7.2. Кодирование графической информации
- •7.2.1. Кодирование растровых изображений
- •7.2.2. Кодирование векторных изображений.
- •7.3. Двоичное кодирование звука
- •Алгоритм
- •История термина
- •Определения алгоритма Неформальное определение
- •Формальное определение
- •Машина Тьюринга
- •Рекурсивные функции
- •Нормальный алгоритм Маркова
- •Стохастические алгоритмы
- •Другие формализации
- •Формальные свойства алгоритмов
- •Виды алгоритмов
- •Нумерация алгоритмов
- •Алгоритмически неразрешимые задачи
- •Анализ алгоритмов Доказательства корректности
- •Время работы
- •Наличие исходных данных и некоторого результата
- •Представление алгоритмов
- •Эффективность алгоритмов
- •1.1. Sadt-модели
- •1.2. Модель отвечает на вопросы
- •1.3. Модель имеет единственный субъект
- •1.4. У модели может быть только одна точка зрения
- •1.5. Модели как взаимосвязанные наборы диаграмм
- •1.6. Резюме
- •Классификация моделей
- •1) Классификация моделей по области использования:
- •2) Классификация моделей по фактору времени:
- •1.3.1. Основные признаки систем
- •Система
- •Различные определения
- •Свойства систем Связанные с целями и функциями
- •Связанные со структурой
- •Связанные с ресурсами и особенностями взаимодействия со средой
- •Классификации систем Ранги систем
- •Термодинамическая классификация
- •Другие классификации
- •Закон необходимости разнообразия (закон Эшби)
Виды алгоритмов
Особую роль выполняют прикладные алгоритмы, предназначенные для решения определённых прикладных задач. Алгоритм считается правильным, если он отвечает требованиям задачи (например, даёт физически правдоподобный результат). Алгоритм (программа) содержит ошибки, если для некоторых исходных данных он даёт неправильные результаты, сбои, отказы или не даёт никаких результатов вообще. Последний тезис используется в олимпиадах по алгоритмическому программированию, чтобы оценить составленные участниками программы.
Важную роль играют рекурсивные алгоритмы (алгоритмы, вызывающие сами себя до тех пор, пока не будет достигнуто некоторое условие возвращения). Начиная с конца XX — начала XXI века активно разрабатываются параллельные алгоритмы, предназначенные для вычислительных машин, способных выполнять несколько операций одновременно.
Нумерация алгоритмов
Нумерация алгоритмов играет важную роль в их исследовании и анализе[12]. Поскольку любой алгоритм можно задать в виде конечного слова (представить в виде конечной последовательности символов некоторого алфавита), а множество всех конечных слов в конечном алфавите счётное, то множество всех алгоритмов также счётное. Это означает существование взаимно однозначного отображения между множеством натуральных чисел и множеством алгоритмов, то есть возможность присвоить каждому алгоритму номер.
Нумерация алгоритмов является одновременно и нумерацией всех алгоритмически исчисляемых функций, причем любая функция может иметь бесконечное количество номеров.
Существование нумерации позволяет работать с алгоритмами так же, как с числами. Особенно полезна нумерация в исследовании алгоритмов, работающих с другими алгоритмами.
Алгоритмически неразрешимые задачи
Формализация понятия алгоритма позволила исследовать существование задач, для которых не существует алгоритмов поиска решений. Впоследствии была доказана невозможность алгоритмического вычисления решений ряда задач, что делает невозможным их решение на любом вычислительном устройстве. Функцию f называют вычисляемой (англ. computable), если существует машина Тьюринга, которая вычисляет значение f для всех элементов множества определения функции. Если такой машины не существует, функция f называют невычисляемой. Функция будет считаться невычисляемой, даже если существуют машины Тьюринга, способные вычислить значение для подмножества из всего множества входных данных[13].
Случай, когда результатом вычисления функции f является логическое выражение «истина» или «ложь» (или множество {0, 1}), называют задачей, которая может быть решаемой или нерешаемой в зависимости от вычисляемости функции f[13].
Важно точно указывать допустимое множество входных данных, поскольку задача может быть решаемой для одного множества и нерешаемой для другого.
Одной из первых задач, для которой была доказана нерешаемость, является проблема остановки. Формулируется она следующим образом:
Имея описание программы для машины Тьюринга, можно определить, завершит ли работу программа по истечению времени или будет работать бесконечно, получив некоторые входные данные.[14] |
Доказательство неразрешимости проблемы остановки важно тем, что к ней можно свести другие задачи. Например, проблему остановки на пустой строке (когда нужно определить для заданной машины Тьюринга, остановится ли она, будучи запущенной на пустой строке) можно свести к простой задаче остановки, доказав тем самым ее неразрешимость[13].