Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс ОПУП для Заочников / Лекции по ценообразованию.doc
Скачиваний:
71
Добавлен:
11.04.2015
Размер:
1.61 Mб
Скачать

Вывод уравнения работы.

Шаг 1. Допустим, что любая реализация какого-либо алгоритма заключается в N – кратном выборе из словаря, состоящего из элементов.

Шаг 2. Предположим далее, что каждый выбор из словаря неслучаен. Исследования методов сортировки показали, что самым быстрым способом поиска в упорядоченном списке является двоичный поиск. С помощью него список многократно делится пополам до тех пор, пока не будет найден нужный элемент. Полученное в результате число сравним равно двоичному логарифму числа элементов в списке. Следовательно, эффективный процесс, эквивалентный двоичному поиску, требуетlogсравнений для нахождения элемента.

Шаг 3. На основании шагов №1 и №2 можно заключить, что программа порождается выполнением N∙ logмысленных сравнений.

Шаг 4. Т. к. объём программы V определяется как

V = Nlog, (1)

то из шага №3 следует, что он равен числу мысленных сравнений, затрачиваемых на порождение программы.

Шаг 5. Каждое мысленное сравнение содержит ряд элементарных мыслительных различений. Их число является мерой сложности задачи. Из предыдущих результатов, полученных Холстедом, получается, что уровень программы Lявляется величиной, обратной её сложности.

Шаг 6. Объём V равен числу мыслительных сравнений. Величина, обратная уровню программы, т. е. 1/L, есть среднее число элементарных численных различений, входящих в каждое мысленное сравнение. Потому общее число элементарных мысленных различений Е, требуемых для порождения программы, должно задаваться выражением

Е = (2).

Более глубокий смысл уравнения работы при использовании выведенного ранее уравнения имеет вид:

L = V*/V, (2а)

где V* - общая работа на весь объём программы.

После подстановки (2а) во (2) получим:

Е = . (3)

Уравнение (3) показывает, что мысленная работа по реализации любого алгоритма с данным потенциальным объёмом в каждом языке пропорционально квадрату объёма программы. Т.к. “квадрат суммы больше суммы квадратов“, то правильное разбиение на модули может уменьшить работу по программированию реализаций, разбитых на отдельные части.

Теперь необходимо проверить уравнение работы (2) с практической точки зрения. Для разработки эксперимента перейдём от подсчёта элементарных мыслительных различений к измерению времени.

Различные измерения времени.

Рассмотрим понятие, введённое психологом Джоном Страудом в работе «Тонкая структура психологического времени».

Дж. Страуд определил «момент» как время, требуемое человеческому мозгу на выполнение наиболее элементарного различения. Он обнаружил, что в течение всего времени бодрствования человек воспринимает эти «моменты» со скоростью от 5 до 20 раз в секунду. Обозначим через S число «страудовских моментов» в секунду. Тогда можно записать интервал 5в сек. В дальнейшемS будем называть числом Страуда.

Естественно, что программист, занимающийся реализацией алгоритма, способен в зависимости от степени своей сосредоточенности отвлечь какую-то часть мыслительных различений на посторонние предметы. Пользуясь терминологий вычислительной техники, можно сказать, что если он находится “в режиме разделения времени“, то S представляет собой лишь верхнюю границу. С другой стороны, если программист выполняет эквивалент машинной операции, «запретить все прерывания» и сосредоточивает внимание на программировании, то применимо действительное значение S.

Требование мысленной сосредоточенности предполагает, что максимальное внимание должно быть проявлено в процессе экспериментального обоснования уравнения (2).

Уравнение (2) имеет размерность двоичных разрядов или различений. Для того, что бы перевести его в единицы времени разделим обе его части на число различений в единицу времени S. В результате получим:

= . (4)

Символ “^” здесь указывает на то, что с помощью этого уравнения вычисляется приближённое, а не наблюдаемое время программирования.

Если в уравнение (4) подставить выведенное Холстедом выражения основных параметров V и L, то будет получено выражение вида:

= , (5)

где N – длина реализации алгоритма, заключающаяся в N –кратном выборе из словаря, состоящего из элементов;

N– общее число некоторых счетных элементов программы, например операндов;

–число единых (или отдельных) элементов в программе, например операндов (т.е. количество параметров по порядку).

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

Подставим в уравнение (5) вместо N значение как уравнение длины реализации алгоритма:

= ,

где – число единых (или отдельных) элементов в программе, например операторов (т.е. количество данных параметров по порядку).

В результате приходим к выражению:

. (6)

В выражении (6), за исключением числа Страуда S, все параметры в правой части доступны непосредственному измерению для любой реализации алгоритма. Значение S выбирается из приведенного выше интервала значений.

Л е к ц и я №3