SlideShare a Scribd company logo
1 of 11
Практическое занятие 7
Вычислительные модели
1.
2.
3.
4.

Теоретические сведения
Контрольные вопросы
Указания по выполнению заданий
Задания
Теоретические сведения
Для анализа алгоритмов и их сложностей
необходимо
точно
определить
модель
вычислительного устройства, используемого для
реализации алгоритмов и условиться, что
понимать под элементарным шагом вычисления.
Примерами вычислительных моделей могут
служить:
1) машина с произвольным доступом к памяти,
2) машина с произвольным доступом к памяти и
хранимой программой,
3) машина Тьюринга,
4) машина с языком высокого уровня.
Теоретические сведения

Модель машины с произвольным доступом к памяти
или равнодоступная адресная машина (RandomAccess Machine – RAM) – это модель обобщенной
однопроцессорной машины. В этой модели
команды
процессора
выполняются
последовательно. Набор команд:
- арифметические команды (сложение, вычитание,
умножение, деление, вычисление остатка деления,
приближение действительного числа ближайшим
меньшим или ближайшим большим целым),
- команды перемещения данных (загрузка, занесение
в память, копирование),
- управляющие команды (условное и безусловное
ветвление, вызов подпрограммы и возврат из нее).
Для выполнения каждой инструкции требуется
фиксированный промежуток времени.
Теоретические сведения

В модели RAM есть целочисленный тип данных и тип
чисел с плавающей точкой. Также предполагается,
что существует верхний предел размера слова
данных. При этом целые числа представлены
clog2n битами, где c ≥ 1.
Временная сложность в худшем случае (или просто
временная сложность) RAM-программы – это
функция f(n), равная наибольшей (по всем входам
размера n) из сумм времен, затраченных на
каждую
сработавшую
команду.
Временная
сложность в среднем – это среднее, взятое по
всем входам размера n, тех же самых сумм. Такие
же понятия определяются для оценки емкости
памяти RAM-программы.
Теоретические сведения
Чтобы точно определить временную и емкостную сложности, необходимо
указать время, необходимое для выполнения каждой RAM-команды, и
объем памяти, используемой каждым регистром (элементом хранения
данных). Имеются два весовых критерия для оценки сложностей RAMпрограмм.
При равномерном весовом критерии каждая RAM-команда затрачивает
одну единицу времени и каждый регистр использует одну единицу
памяти.
Второе определение принимает во внимание ограниченность размера
реальной ячейки памяти и называется логарифмическим весовым
критерием. Логарифмический весовой критерий основан на грубом
допущении, что цена выполнения команды (ее вес) пропорциональна
длине ее операндов. Пусть l(i) – логарифмическая функция на целых
числах, тогда, если i в команде представляет собой целое число
(непосредственный операнд), номер регистра с нужным значением или
номер регистра для косвенной адресации, то логарифмический вес
равен l(i), l(i) + l(c(i)) и l(i) + l(c(i)) + l(c(c(i))) соответственно. Здесь c(i) –
целое число, содержащееся в регистре i.
Теоретические сведения
Пример 1. Предположим, что имеется RAM-программа, в
которой используется команда ADD *i для сложения двух
чисел – первое число хранится в регистре-сумматоре
(регистр с номером 0), а второе определяется с помощью
косвенной адресации по значению в регистре i. Для
определения веса этой команды сначала необходимо
определить
трудоемкость
декодирования
операнда,
представленного адресом. Просмотр целого числа i
занимает время l(i). Затем, чтобы прочитать содержимое
c(i) регистра i и определить его местоположение,
понадобится
время
l(c(i)).
Наконец,
считывание
содержимого c(i) требует время l(c(c(i))). Так как команда
ADD *i прибавляет целое число c(c(i)) к целому числу c(0) в
сумматоре, то, ясно, что разумным весом, который следует
придать команде ADD *i, является l(c(0)) + l(i) + l(c(i)) +
l(c(c(i))).
Контрольные вопросы
1.
2.
3.
4.

Вычислительная модель.
Виды вычислительных моделей.
Вычислительная модель RAM.
Временная сложность RAM-программы в худшем
случае.
5. Временная сложность RAM-программы в среднем.
6. Емкостная сложность RAM-программы в худшем
случае.
7. Емкостная сложность RAM-программы в среднем.
8. Равномерный весовой критерий.
9. Логарифмический весовой критерий.
10. Логарифмическая емкостная сложность.
Указания по выполнению заданий
1.
2.
3.
4.

Получить задание
Определить временную и емкостную сложности
решения задачи при использовании равномерного и
логарифмического весовых критериев .
Подготовить отчет по выполнению задания. Отчет
должен включать задание и описание этапов
выполнения задания.
Ответить на вопросы по выполнению задания и
контрольные вопросы
Задания
Дана модель RAM, команды которой приведены в таблице. Составить
алгоритмы решения задач в данной модели.
1.
Найти значение функции f(0) = 0, f(n) = nn, n ≥ 1.
2.
Вычислить факториал n! целого числа n.
3.
Прочитать n положительных чисел, за которыми следует
концевой маркер 0, а затем напечатать их в порядке неубывания.
4.
Найти минимальный элемент целочисленной
последовательности, заканчивающейся 0.
5.
Ввести целые число a и n чисел. Найти номер числа в
последовательности, совпадающего с a.
6.
Упорядочить массив из n целых чисел по убыванию.
7.
Найти количество элементов целочисленной
последовательности, заканчивающейся 0, между минимальным и
максимальным элементами.
8.
Найти определитель матрицы третьего порядка.
9.
Определить самую длинную серию нулей в целочисленной
последовательности из n элементов.
10. Прочитать n положительных чисел, за которыми следует
концевой маркер 0, а затем напечатать их в обратном порядке.
№

Команда

Описание

1

LOAD a

c(0) ← v(a)

2

STORE i
STORE *i

c(i) ← c(0)
c(c(i)) ← c(0)

3

ADD a

c(0) ← c(0) + v(a)

4

SUB a

c(0) ← c(0) – v(a)

5

MULT a

c(0) ← c(0) × v(a)

6

DIV a

c(0) ← c(0) × v(a)

7

READ i
READ *i

8

WRITE a

c(i) ← очередной входной символ
с(c(i)) ← очередной входной символ
Печать v(a)

9

JUMP b

Счетчик команд устанавливается на команду с меткой b

10

JGTZ b

Если c(0) > 0, то счетчик команд устанавливается на команду с
меткой b, в противном случае – на следующую команду

11

JZERO b

Если c(0) = 0, то счетчик команд устанавливается на команду с
меткой b, в противном случае – на следующую команду

12

HALT

Останов
Задания
В таблице используются следующие обозначения:
1. x ← y – значение y заносится в регистр x;
2. операндами команды могут быть
=i – целое число i,
i – содержимое регистра с номером i, i ≥ 0,
*i – косвенная адресация: значением операнда является
содержимое регистра j, где j – целое число, находящееся в
регистре i, i ≥ 0; если j < 0, машина останавливается;
3. c(i) – содержимое регистра i;
4. c(0) – содержимое сумматора;
5. v(a) – значение операнда a:
v(=i) = i,
v(i) = c(i),
v(*i) = c(c(i)).

More Related Content

What's hot

Алгоритмическая конструкция следование
Алгоритмическая конструкция следованиеАлгоритмическая конструкция следование
Алгоритмическая конструкция следованиеAndrey Dolinin
 
тема множество для загрузки 2013
тема множество для загрузки 2013тема множество для загрузки 2013
тема множество для загрузки 2013AliyaAringazinova
 
Запись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка ПаскальЗапись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка ПаскальAndrey Dolinin
 
Одномерные массивы
Одномерные массивыОдномерные массивы
Одномерные массивыsneshachok
 
сортировка слияниями
сортировка слияниямисортировка слияниями
сортировка слияниямиDmitry Protopopov
 
Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыsimple_people
 
Параллельные алгоритмы обработки данных
Параллельные алгоритмы обработки данныхПараллельные алгоритмы обработки данных
Параллельные алгоритмы обработки данныхSergey Vasilyev
 
Советский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияСоветский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияPositive Hack Days
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...Alexey Paznikov
 
Программирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмовПрограммирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмовAndrey Dolinin
 
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Alexey Paznikov
 
семенищев
семенищевсеменищев
семенищевIvan
 
Урок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаУрок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаTatyanazaxarova
 
Probabilistic Verification in Computational Systems Design
Probabilistic Verification in Computational Systems DesignProbabilistic Verification in Computational Systems Design
Probabilistic Verification in Computational Systems DesignIosif Itkin
 
Обработка коллекций наизнанку: как применить много функций к одному аргументу...
Обработка коллекций наизнанку: как применить много функций к одному аргументу...Обработка коллекций наизнанку: как применить много функций к одному аргументу...
Обработка коллекций наизнанку: как применить много функций к одному аргументу...corehard_by
 
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...Alexey Paznikov
 

What's hot (19)

Алгоритмическая конструкция следование
Алгоритмическая конструкция следованиеАлгоритмическая конструкция следование
Алгоритмическая конструкция следование
 
тема множество для загрузки 2013
тема множество для загрузки 2013тема множество для загрузки 2013
тема множество для загрузки 2013
 
Запись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка ПаскальЗапись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка Паскаль
 
Одномерные массивы
Одномерные массивыОдномерные массивы
Одномерные массивы
 
сортировка слияниями
сортировка слияниямисортировка слияниями
сортировка слияниями
 
Алгоритмы поиска
Алгоритмы поискаАлгоритмы поиска
Алгоритмы поиска
 
Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмы
 
4 algoritm
4 algoritm4 algoritm
4 algoritm
 
Параллельные алгоритмы обработки данных
Параллельные алгоритмы обработки данныхПараллельные алгоритмы обработки данных
Параллельные алгоритмы обработки данных
 
Советский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияСоветский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисления
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
 
Программирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмовПрограммирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмов
 
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
 
семенищев
семенищевсеменищев
семенищев
 
Урок 6. Чистое лямбда-исчисление.
Урок 6. Чистое лямбда-исчисление. Урок 6. Чистое лямбда-исчисление.
Урок 6. Чистое лямбда-исчисление.
 
Урок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаУрок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметика
 
Probabilistic Verification in Computational Systems Design
Probabilistic Verification in Computational Systems DesignProbabilistic Verification in Computational Systems Design
Probabilistic Verification in Computational Systems Design
 
Обработка коллекций наизнанку: как применить много функций к одному аргументу...
Обработка коллекций наизнанку: как применить много функций к одному аргументу...Обработка коллекций наизнанку: как применить много функций к одному аргументу...
Обработка коллекций наизнанку: как применить много функций к одному аргументу...
 
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
 

Viewers also liked

лекция №2
лекция №2лекция №2
лекция №2student_kai
 
лекция №2
лекция №2лекция №2
лекция №2student_kai
 
лекция №5
лекция №5лекция №5
лекция №5student_kai
 
лекция 24 примеры внедрения
лекция 24 примеры внедрениялекция 24 примеры внедрения
лекция 24 примеры внедренияstudent_kai
 
лекция 18 управление непрерывностью
лекция 18 управление непрерывностьюлекция 18 управление непрерывностью
лекция 18 управление непрерывностьюstudent_kai
 
презентация14
презентация14презентация14
презентация14student_kai
 
практика 12
практика 12практика 12
практика 12student_kai
 
презентация 15
презентация 15презентация 15
презентация 15student_kai
 
лекция №7
лекция №7лекция №7
лекция №7student_kai
 

Viewers also liked (20)

лек8
лек8лек8
лек8
 
лекция 10
лекция 10лекция 10
лекция 10
 
лекция №2
лекция №2лекция №2
лекция №2
 
лекция №2
лекция №2лекция №2
лекция №2
 
лекция №5
лекция №5лекция №5
лекция №5
 
лекция 24 примеры внедрения
лекция 24 примеры внедрениялекция 24 примеры внедрения
лекция 24 примеры внедрения
 
лекция 18 управление непрерывностью
лекция 18 управление непрерывностьюлекция 18 управление непрерывностью
лекция 18 управление непрерывностью
 
лекция 9
лекция 9лекция 9
лекция 9
 
лекция 9
лекция 9лекция 9
лекция 9
 
презентация14
презентация14презентация14
презентация14
 
лаб № 8
лаб № 8лаб № 8
лаб № 8
 
практика 12
практика 12практика 12
практика 12
 
презентация 15
презентация 15презентация 15
презентация 15
 
п17
п17п17
п17
 
лекция 18
лекция 18лекция 18
лекция 18
 
лекция 31
лекция 31лекция 31
лекция 31
 
лекция №7
лекция №7лекция №7
лекция №7
 
п2 08
п2 08п2 08
п2 08
 
лекция 7
лекция 7лекция 7
лекция 7
 
лекция 17
лекция 17лекция 17
лекция 17
 

Similar to практика 7

Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовMikhail Kurnosov
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыMikhail Kurnosov
 
!Predictive analytics part_2
!Predictive analytics part_2!Predictive analytics part_2
!Predictive analytics part_2Vladimir Krylov
 
Yuriy Sherstyuk - Algorithms in Front End: from V8 to VDOM
Yuriy Sherstyuk - Algorithms in Front End: from V8 to VDOMYuriy Sherstyuk - Algorithms in Front End: from V8 to VDOM
Yuriy Sherstyuk - Algorithms in Front End: from V8 to VDOMOdessaJS Conf
 
03
0303
03JIuc
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыMikhail Kurnosov
 
практика 5
практика 5практика 5
практика 5student_kai
 
Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Technopark
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPMikhail Kurnosov
 
лабораторная работа №4
лабораторная работа №4лабораторная работа №4
лабораторная работа №4Gulnaz Shakirova
 
Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Javametaform
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Technopark
 
Лекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистикиЛекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистикиsimple_people
 
Урок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметикаУрок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметикаTatyanazaxarova
 
Запись алгоритмов на языках программирования
Запись алгоритмов на языках программированияЗапись алгоритмов на языках программирования
Запись алгоритмов на языках программированияssusere39acb
 

Similar to практика 7 (20)

Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмов
 
Алгоритм
АлгоритмАлгоритм
Алгоритм
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмы
 
!Predictive analytics part_2
!Predictive analytics part_2!Predictive analytics part_2
!Predictive analytics part_2
 
Yuriy Sherstyuk - Algorithms in Front End: from V8 to VDOM
Yuriy Sherstyuk - Algorithms in Front End: from V8 to VDOMYuriy Sherstyuk - Algorithms in Front End: from V8 to VDOM
Yuriy Sherstyuk - Algorithms in Front End: from V8 to VDOM
 
алгоритм
алгоритмалгоритм
алгоритм
 
03
0303
03
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмы
 
практика 5
практика 5практика 5
практика 5
 
Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1
 
лекция 5
лекция 5лекция 5
лекция 5
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
 
лабораторная работа №4
лабораторная работа №4лабораторная работа №4
лабораторная работа №4
 
лабораторная работа №4
лабораторная работа №4лабораторная работа №4
лабораторная работа №4
 
лабораторная работа №4
лабораторная работа №4лабораторная работа №4
лабораторная работа №4
 
Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Java
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1
 
Лекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистикиЛекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистики
 
Урок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметикаУрок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметика
 
Запись алгоритмов на языках программирования
Запись алгоритмов на языках программированияЗапись алгоритмов на языках программирования
Запись алгоритмов на языках программирования
 

More from student_kai

презентация
презентацияпрезентация
презентацияstudent_kai
 
презентации продолжение банкета
презентации продолжение банкетапрезентации продолжение банкета
презентации продолжение банкетаstudent_kai
 
основы программирования на языке C
основы программирования на языке Cосновы программирования на языке C
основы программирования на языке Cstudent_kai
 
презентация курсовой работы
презентация курсовой работыпрезентация курсовой работы
презентация курсовой работыstudent_kai
 
лекция№34
лекция№34лекция№34
лекция№34student_kai
 
лекция№32
лекция№32лекция№32
лекция№32student_kai
 
лекция№33
лекция№33лекция№33
лекция№33student_kai
 
лекция№31
лекция№31лекция№31
лекция№31student_kai
 
лекция№30
лекция№30лекция№30
лекция№30student_kai
 
лекция№29
лекция№29лекция№29
лекция№29student_kai
 
лекция№28
лекция№28лекция№28
лекция№28student_kai
 
лекция№27
лекция№27лекция№27
лекция№27student_kai
 
лекция№26
лекция№26лекция№26
лекция№26student_kai
 
лекция№25
лекция№25лекция№25
лекция№25student_kai
 
лекция№25
лекция№25лекция№25
лекция№25student_kai
 
лекция№24
лекция№24лекция№24
лекция№24student_kai
 
лекция№23
лекция№23лекция№23
лекция№23student_kai
 
лекция№22
лекция№22лекция№22
лекция№22student_kai
 
лекция№21
лекция№21лекция№21
лекция№21student_kai
 
лекция№20
лекция№20лекция№20
лекция№20student_kai
 

More from student_kai (20)

презентация
презентацияпрезентация
презентация
 
презентации продолжение банкета
презентации продолжение банкетапрезентации продолжение банкета
презентации продолжение банкета
 
основы программирования на языке C
основы программирования на языке Cосновы программирования на языке C
основы программирования на языке C
 
презентация курсовой работы
презентация курсовой работыпрезентация курсовой работы
презентация курсовой работы
 
лекция№34
лекция№34лекция№34
лекция№34
 
лекция№32
лекция№32лекция№32
лекция№32
 
лекция№33
лекция№33лекция№33
лекция№33
 
лекция№31
лекция№31лекция№31
лекция№31
 
лекция№30
лекция№30лекция№30
лекция№30
 
лекция№29
лекция№29лекция№29
лекция№29
 
лекция№28
лекция№28лекция№28
лекция№28
 
лекция№27
лекция№27лекция№27
лекция№27
 
лекция№26
лекция№26лекция№26
лекция№26
 
лекция№25
лекция№25лекция№25
лекция№25
 
лекция№25
лекция№25лекция№25
лекция№25
 
лекция№24
лекция№24лекция№24
лекция№24
 
лекция№23
лекция№23лекция№23
лекция№23
 
лекция№22
лекция№22лекция№22
лекция№22
 
лекция№21
лекция№21лекция№21
лекция№21
 
лекция№20
лекция№20лекция№20
лекция№20
 

практика 7

  • 1. Практическое занятие 7 Вычислительные модели 1. 2. 3. 4. Теоретические сведения Контрольные вопросы Указания по выполнению заданий Задания
  • 2. Теоретические сведения Для анализа алгоритмов и их сложностей необходимо точно определить модель вычислительного устройства, используемого для реализации алгоритмов и условиться, что понимать под элементарным шагом вычисления. Примерами вычислительных моделей могут служить: 1) машина с произвольным доступом к памяти, 2) машина с произвольным доступом к памяти и хранимой программой, 3) машина Тьюринга, 4) машина с языком высокого уровня.
  • 3. Теоретические сведения Модель машины с произвольным доступом к памяти или равнодоступная адресная машина (RandomAccess Machine – RAM) – это модель обобщенной однопроцессорной машины. В этой модели команды процессора выполняются последовательно. Набор команд: - арифметические команды (сложение, вычитание, умножение, деление, вычисление остатка деления, приближение действительного числа ближайшим меньшим или ближайшим большим целым), - команды перемещения данных (загрузка, занесение в память, копирование), - управляющие команды (условное и безусловное ветвление, вызов подпрограммы и возврат из нее). Для выполнения каждой инструкции требуется фиксированный промежуток времени.
  • 4. Теоретические сведения В модели RAM есть целочисленный тип данных и тип чисел с плавающей точкой. Также предполагается, что существует верхний предел размера слова данных. При этом целые числа представлены clog2n битами, где c ≥ 1. Временная сложность в худшем случае (или просто временная сложность) RAM-программы – это функция f(n), равная наибольшей (по всем входам размера n) из сумм времен, затраченных на каждую сработавшую команду. Временная сложность в среднем – это среднее, взятое по всем входам размера n, тех же самых сумм. Такие же понятия определяются для оценки емкости памяти RAM-программы.
  • 5. Теоретические сведения Чтобы точно определить временную и емкостную сложности, необходимо указать время, необходимое для выполнения каждой RAM-команды, и объем памяти, используемой каждым регистром (элементом хранения данных). Имеются два весовых критерия для оценки сложностей RAMпрограмм. При равномерном весовом критерии каждая RAM-команда затрачивает одну единицу времени и каждый регистр использует одну единицу памяти. Второе определение принимает во внимание ограниченность размера реальной ячейки памяти и называется логарифмическим весовым критерием. Логарифмический весовой критерий основан на грубом допущении, что цена выполнения команды (ее вес) пропорциональна длине ее операндов. Пусть l(i) – логарифмическая функция на целых числах, тогда, если i в команде представляет собой целое число (непосредственный операнд), номер регистра с нужным значением или номер регистра для косвенной адресации, то логарифмический вес равен l(i), l(i) + l(c(i)) и l(i) + l(c(i)) + l(c(c(i))) соответственно. Здесь c(i) – целое число, содержащееся в регистре i.
  • 6. Теоретические сведения Пример 1. Предположим, что имеется RAM-программа, в которой используется команда ADD *i для сложения двух чисел – первое число хранится в регистре-сумматоре (регистр с номером 0), а второе определяется с помощью косвенной адресации по значению в регистре i. Для определения веса этой команды сначала необходимо определить трудоемкость декодирования операнда, представленного адресом. Просмотр целого числа i занимает время l(i). Затем, чтобы прочитать содержимое c(i) регистра i и определить его местоположение, понадобится время l(c(i)). Наконец, считывание содержимого c(i) требует время l(c(c(i))). Так как команда ADD *i прибавляет целое число c(c(i)) к целому числу c(0) в сумматоре, то, ясно, что разумным весом, который следует придать команде ADD *i, является l(c(0)) + l(i) + l(c(i)) + l(c(c(i))).
  • 7. Контрольные вопросы 1. 2. 3. 4. Вычислительная модель. Виды вычислительных моделей. Вычислительная модель RAM. Временная сложность RAM-программы в худшем случае. 5. Временная сложность RAM-программы в среднем. 6. Емкостная сложность RAM-программы в худшем случае. 7. Емкостная сложность RAM-программы в среднем. 8. Равномерный весовой критерий. 9. Логарифмический весовой критерий. 10. Логарифмическая емкостная сложность.
  • 8. Указания по выполнению заданий 1. 2. 3. 4. Получить задание Определить временную и емкостную сложности решения задачи при использовании равномерного и логарифмического весовых критериев . Подготовить отчет по выполнению задания. Отчет должен включать задание и описание этапов выполнения задания. Ответить на вопросы по выполнению задания и контрольные вопросы
  • 9. Задания Дана модель RAM, команды которой приведены в таблице. Составить алгоритмы решения задач в данной модели. 1. Найти значение функции f(0) = 0, f(n) = nn, n ≥ 1. 2. Вычислить факториал n! целого числа n. 3. Прочитать n положительных чисел, за которыми следует концевой маркер 0, а затем напечатать их в порядке неубывания. 4. Найти минимальный элемент целочисленной последовательности, заканчивающейся 0. 5. Ввести целые число a и n чисел. Найти номер числа в последовательности, совпадающего с a. 6. Упорядочить массив из n целых чисел по убыванию. 7. Найти количество элементов целочисленной последовательности, заканчивающейся 0, между минимальным и максимальным элементами. 8. Найти определитель матрицы третьего порядка. 9. Определить самую длинную серию нулей в целочисленной последовательности из n элементов. 10. Прочитать n положительных чисел, за которыми следует концевой маркер 0, а затем напечатать их в обратном порядке.
  • 10. № Команда Описание 1 LOAD a c(0) ← v(a) 2 STORE i STORE *i c(i) ← c(0) c(c(i)) ← c(0) 3 ADD a c(0) ← c(0) + v(a) 4 SUB a c(0) ← c(0) – v(a) 5 MULT a c(0) ← c(0) × v(a) 6 DIV a c(0) ← c(0) × v(a) 7 READ i READ *i 8 WRITE a c(i) ← очередной входной символ с(c(i)) ← очередной входной символ Печать v(a) 9 JUMP b Счетчик команд устанавливается на команду с меткой b 10 JGTZ b Если c(0) > 0, то счетчик команд устанавливается на команду с меткой b, в противном случае – на следующую команду 11 JZERO b Если c(0) = 0, то счетчик команд устанавливается на команду с меткой b, в противном случае – на следующую команду 12 HALT Останов
  • 11. Задания В таблице используются следующие обозначения: 1. x ← y – значение y заносится в регистр x; 2. операндами команды могут быть =i – целое число i, i – содержимое регистра с номером i, i ≥ 0, *i – косвенная адресация: значением операнда является содержимое регистра j, где j – целое число, находящееся в регистре i, i ≥ 0; если j < 0, машина останавливается; 3. c(i) – содержимое регистра i; 4. c(0) – содержимое сумматора; 5. v(a) – значение операнда a: v(=i) = i, v(i) = c(i), v(*i) = c(c(i)).