
- •Понятие алгоритма и свойства алгоритмов.
- •Формализация понятия алгоритма: машина Тьюринга. Представление машин Тьюринга с помощью диаграмм. Табличное представление программ машины Тьюринга. Композиция машин Тьюринга. Примеры.
- •Двумерная таблица
- •С помощью диаграммы
- •Формализация понятия алгоритма: нормальные алгорифмы Маркова, определение и выполнение. Примеры.
- •Вычислимые функции. Базовый набор функций и операции над функциями: суперпозиция, примитивная рекурсия, минимизация. Классы вычислимых функций. Примеры.
- •Проблема алгоритмической разрешимости. Примеры неразрешимых алгоритмических проблем.
- •Методы разработки алгоритмов. Суперпозиция, итерация, рекурсия и др.
- •Технология разработки программ. Технология и методы тестирования программ.
- •Составление алгоритма.
- •Создание документации, помощи.
- •Рекурсивные алгоритмы: определение и виды рекурсии. Реализация рекурсии и использование стека. Рекурсия и итерация. Примеры, сравнение.
- •Задача анализа сложности алгоритмов. Временная и емкостная сложности. Оценки сложности. Использование управляющего графа для оценки сложности линейных и ветвящихся алгоритмов.
- •Оценка сложности циклических алгоритмов. Примеры.
- •Количество повторений вложенного цикла не зависит от параметра внешнего цикла
- •Количество повторений вложенного цикла зависит от параметра внешнего цикла
- •Оценка сложности рекурсивных алгоритмов: рекурсия с одним и многими рекурсивными вызовами, случай косвенной рекурсии.
- •If … then процедура_1
- •Оптимизация алгоритмов. Примеры.
- •Понятие сложности задачи и классы сложности задач. Понятие сводимости, полиномиальная сводимость.
- •Методы сортировок: сортировка массивов простыми включениями, сортировка массивов простым выбором, сортировка обменами. Анализ сложности алгоритмов сортировки.
- •Сортировка методом простого выбора
- •Сортировка методом простых вставок (метод прямого (простого) включения)
- •2 Пересылки записей
- •1 Пересылка записи
- •Методы сортировок: алгоритм быстрой сортировки. Анализ сложности алгоритма быстрой сортировки.
- •Обзор методов сортировок: сортировка Шелла, пирамидальная сортировка, сортировка слияниями, Шейкер-сортировка, сортировка подсчетом, цифровая сортировка и др.
- •Методы поиска: линейный поиск, метод бинарного поиска, поиск с помощью бинарного дерева, метод случайного поиска и др.
- •Алгоритмы внешней сортировки: метод естественного слияния, метод сбалансированного слияния. Двухпутевая и многопутевая реализации. Фибоначчиева сортировка.
- •Метод квадратичного рехеширования.
- •Рекурсивные типы данных: определение, примеры.
- •Id:integer; {номер вершины}
- •Операции над линейными списками: создание списков, включение элементов в списки (рассмотреть различные способы). Виды связных списков.
- •Операции над линейными списками: удаление элементов списков. Поиск элементов списков, сравнение списков.
- •Операции над бинарными деревьями: включение вершины в дерево. Обход деревьев, подсчет числа вершин в дереве. Подсчет числа вершин, удовлетворяющих заданному условию.
- •Операции над бинарными деревьями: удаление вершины дерева.
- •Понятие сбалансированности бинарного дерева. Приведение дерева к авл-сбалансированному виду: виды и формулы поворотов.
- •Анализ сложности алгоритмов работы с бинарными деревьями.
- •Деревья со многими потомками. Специальные виды деревьев: деревья формул, б-деревья, 2-3 деревья, красно-черные деревья.
- •Понятие графа. Способы представления графов. Операции над графами: добавление вершины, добавление дуги, создание графа.
- •Операции над графами: поиск вершины, удаление вершины, удаление дуги, текстовый вывод графа.
- •Алгоритмы поиска на графах: поиск в глубину и в ширину.
- •Примеры алгоритмов на графах (поиск кратчайшего пути, поиск циклов, алгоритм построения остовного дерева, выделения связных компонентов…).
- •Формальные языки и грамматики. Определение языка, описание языка. Понятие грамматики.
- •Классификация формальных языков. Понятие вывода.
- •Описание синтаксиса языка с помощью синтаксических диаграмм и бнф. Примеры.
- •Основы теории информации. Понятие энтропии. Измерение информации: вероятностный и алфавитный подходы.
- •Основы теории кодирования информации. Метод Шеннона-Фано. Код Хаффмана.
- •1. Принцип программного управления.
- •2. Принцип однородности памяти.
- •3. Принцип адресности.
- •Конвейеризация вычислений.
- •Иерархия запоминающих устройств эвм
- •Устройство процессора. Понятие архитектуры cisc, risc, vliw.
- •Работа процессора
- •Cisc-процессоры
- •Risc-процессоры
- •Misc-процессоры
- •Vliw-процессоры
- •Типы данных, поддерживаемые процессорами Intel, форматы данных.
- •Система команд Intel, классификация команд, форматы команд.
- •Объектно-ориентированное программирование (ооп): основные понятия.
Основы теории кодирования информации. Метод Шеннона-Фано. Код Хаффмана.
Кодирование используется при передаче информации по техническим каналам связи. Наиболее распространенный способ – двоинчного кодирования.
Кодирование используют при передаче с шумами или с целью сжатия информации.
Исходное слово из m символов х=а1а2…аm
После кодирование получается слово В=Т(х) и должно существовать обратное преобразование Т-1(В)=х
Коды бывают
с возможностью обнаружения ошибки
х=а1а2…аm , B= b1b2…bm, bm+1
bi=ai, i=1..m
bm+1 – контрольная сумма (сумма всех предыдущих по модулю 2)
Позволяет обнаружить только нечетное количество ошибок.
с возможностью исправления ошибки.
х=а1а2…аm , B= а1 а1 … а1 а2 а2 … а2… аm аm… аm (каждый символ по к раз)
11 00 11 => (k=3) 111 111 000 000 111 111
После передачи 110 011 100 010 111 111 => 110011 (но может быть тоже неточно)
Методы сжатия информации – устранение избыточности кодов. Для часто встречающихся символов – короткие коды, для редких – длинные.
Метод Шеннона-Фано – таблица, упорядоченные вероятности, наименьшая разница между суммами вероятностей и т.д.
Код Хаффмана:
Упорядочиваем символы по возрастанию вероятностей. Каждому символу ставим в соответствие вершину дерева, которая в дальнейшем окажется листом.
Выбираем две вершины с наименьшими вероятностями и строим для них родительскую вершину, которой приписывается вес, равный сумме вероятностей дочерних вершин. Рассматриваем все оставшиеся концевые вершины и построенную, выбираем две с наименьшим весом и т.д. Пока не останется ни одной пары вершин, которые можно определить.
На последнем шаге - корень дерева Хаффмана. Для получения кода для каждой вершины дугу к левому соседу помечаем 0, правому – 1. Код символа будет получаться при движении от корня к листу данного символа, если по пути мы соберем все 0 и 1.
Понятие архитектуры ВС. Архитектурные принципы фон Неймана и обобщенная архитектура ЭВМ. Усовершенствования архитектуры современных процессоров и повышение степени параллелизма вычислений (конвейеризация, иерархия запоминающих устройств и кэш-память).
Архитектура ВС - совокупность характеристик и параметров, определяющих функционально-логическую и структурную организацию системы. Понятие архитектуры охватывает общие принципы построения и функционирования, наиболее существенные для пользователей, которых больше интересуют возможности систем, а не детали их технического исполнения.
Сведения:
- о составе и взаимодействии основных блоков ВС
- о системе команд
- о регистровой структуре ЦП
- Об организации памяти
- Об организации систем прерываний
- Об организации обмена данными с внешними устройствами
- о топологии связи устройств и модулей
Принципы Неймана
1. Принцип программного управления.
Этот принцип обеспечивает автоматизацию процессов вычислений на ЭВМ.
Программа состоит из набора команд, которые выполняются процессором автоматически друг за другом в определенной последовательности. Выборка программы из памяти осуществляется с помощью счетчика команд. Этот регистр процессора последовательно увеличивает хранимый в нем адрес очередной команды на длину команды. Так как команды программы расположены в памяти друг за другом, то тем самым организуется выборка цепочки команд из последовательно расположенных ячеек памяти. Если же нужно после выполнения команды перейти не к следующей, а к какой-то другой, используются команды условного или безусловного переходов, которые заносят в счетчик команд номер ячейки памяти, содержащей следующую команду. Выборка команд из памяти прекращается после достижения и выполнения команды “стоп”. Таким образом, процессор исполняет программу автоматически, без вмешательства человека