Научная статья на тему 'Возможности физической терапии в коррекции тазовых расстройств у пациентов с травматическими поражениями спинного мозга'

Возможности физической терапии в коррекции тазовых расстройств у пациентов с травматическими поражениями спинного мозга Текст научной статьи по специальности «Математика»

CC BY
54
36
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Возможности физической терапии в коррекции тазовых расстройств у пациентов с травматическими поражениями спинного мозга»

информационные каналы и среды

УДК 681.142.2+519.2

оптимальное управление N р^-очередями на бесконечном времени

Е. А. Аксенова,

канд. физ.-мат. наук, научный сотрудник А. В. Соколов,

доктор физ.-мат. наук, ведущий научный сотрудник

Институт прикладных математических исследований Карельского научного центра РАН

А. В. Драц,

студент Петрозаводский государственный университет

Исследуются методы представления п FIFO-очередей в памяти размером m единиц. Решаются задача оптимального разбиения памяти между очередями в случае последовательного циклического представления очередей и задача анализа связанного представления очередей. В качестве математических моделей предложены случайные блуждания по целочисленной решетке в различных областях п-мерного пространства. Задачи решаются с помощью аппарата регулярных цепей Маркова.

Ключевые слова — FIFO-очередь, связанный список, случайное блуждание, регулярные цепи Маркова.

Введение

Во многих приложениях требуется работа с несколькими FIFO-очередями, расположенными в общем пространстве памяти. Для этого применяют различные программные или аппаратные решения [1-3]. В данной статье предлагаются математические модели для последовательного циклического и связанного способов представления очередей [1]. В обоих способах представления для каждой очереди нужны два указателя на начало и конец. В первом способе элементы равных длин располагаются циклически в последовательных адресах участка памяти, выделенного очереди. Во втором каждая очередь представлена в виде односвязанного списка элементов, и переполнение памяти наступает тогда, когда список свободных элементов пуст и требуется включить элемент в какую-либо очередь. В обоих способах операции включения и исключения выполняются за время 0(1). В качестве критерия оптимальности рассмотрена минимальная доля потерянных элементов при бесконечном времени работы очередей. Эту величину разумно минимизировать, когда переполнение очереди является не аварийной, а стандартной ситуацией (здесь мы подчеркиваем, что в некоторых приложениях при переполнении очереди работа программы заканчивается, и тогда в качестве критерия оптимальности надо рассматривать максимальное среднее время до переполнения памяти). То есть если очередь занимает всю предоставленную ей память, то все последующие элементы, поступающие в нее, отбрасываются до тех пор, пока не появится свободная память (т. е. до тех пор, пока не произойдет исключение элемента из очереди). Такая схема применяется, например, в работе сетевых маршрутизаторов [3] в том случае, когда по мере увеличения трафика очередь на исходящем интерфейсе маршрутизатора заполняется пакетами. Такое поведение маршрутизатора называется

«сбросом хвоста». Потери пакетов приводят к нежелательному результату, поэтому число таких ситуаций необходимо свести к минимуму. Мы в этой работе строим математические модели в виде случайных блужданий по целочисленной решетке. Первоначально такие модели в виде случайного блуждания в треугольнике [4-7] были построены для решения задачи анализа процесса работы с двумя стеками, растущими навстречу друг другу [1]. В этих моделях предполагается, что на каждом шаге дискретного времени с заданными вероятностями происходят некоторые операции со стеками. Время выполнения операций — это не случайная величина, а константа, поэтому фиксированным является и шаг времени. Рассмотрены случаи последовательного представления очередей для п = 2 [8] и п = 3 [9]. В данной статье рассмотрены последовательный и связанный способы представления FIFO-очередей для случая произвольного п. Необходимо определить, как распределить память между очередями в последовательном способе организации и какой из способов организации очередей является оптимальным.

В работе будем придерживаться следующих обозначений: т — размер памяти; п — количество стеков и/или очередей в быстрой памяти;

рг — вероятность включения элемента в 1-ю очередь;

qi — вероятность извлечения элемента из Ьй структуры данных;

г — вероятность того, что не произойдет операции включения или извлечения;

кг — размер памяти, выделенной для очереди с номером i при последовательном представлении;

— текущая длина структуры данных с номером I;

I — отношение размера узла к размеру указателя (для связанного представления);

— доля времени, которую проводит очередь в состоянии «сброса хвоста».

Одна очередь на бесконечном времени

Рассмотрим одну FIFO-очередь, расположенную в быстрой памяти размером т. В каждый момент дискретного времени может произойти одна из следующих операций: включение элемента с вероятностью р, исключение элемента с вероятностью q, очередь не изменяет своей длины с вероятностью г, где р + q + г = 1. Если происходит включение элемента при полностью заполненной памяти, то он считается потерянным. Требуется определить долю времени, в течение которого происходят потери элементов, при бесконечном времени работы.

Для описания процесса работы построим однородную регулярную цепь Маркова [10] с т + 2 состояниями, где состояния с номерами 0, ..., т соответствуют количеству элементов, находящихся в очереди. Состояние т + 1 соответствует «сбросу хвоста», т. е. пока процесс находится в этом состоянии, происходит потеря поступающих в очередь элементов.

Пусть процесс находится в состоянии т + 1, т. е. очередь заполнила всю выделенную память и произошла попытка включения еще одного элемента. Тогда с вероятностью р процесс остается на месте, так как при попытке включения элемента

в переполненную очередь он будет потерян и для процесса блуждания ничего не изменится, с вероятностью q процесс перейдет в состояние т - 1, т. е. исключается элемент из переполненной очереди и появляется одна свободная позиция в памяти, с вероятностью г процесс перейдет в состояние т. Переход процесса из состояния х в состояние х' определяется следующими правилами:

х, х = 0;

р ,

X,

1, 0 < х < т;

х = т + 1;

х — 1, 1 < х < т ;

х — 2, х = т + 1;

х, 0 < х < т;

х — 1, х = т + 1.

Построим матрицу переходных состояний Р. Для данной цепи она имеет вид

Р =

+ Г р 0 0 . .0 0 0 0'

Ч г Р 0 . .0 0 0 0

0 Ч г Р .0 0 0 0

0 0 0 0 . Ч г Р 0

0 0 0 0 .0 Ч г Р

0 0 0 0 . .0 Ч г Р,

У построенной цепи Маркова существует предельный век-

тор а = (а0,

1), который удовлетворяет уравне-

нию аР = а. По закону больших чисел, значение ai является долей времени, которое процесс проводит в состоянии i. Тогда ат + 1 является долей времени, которое процесс проводит в состоянии «сброса хвоста» при бесконечном времени работы.

Построим систему уравнений для определения предельных вероятностей:

1 — (ч + г) —ч 0 0 .. 0 0 0 0 0

—Р 1 — г —ч 0 .. 0 0 0 0 0

0 —Р 1 — г —ч 0 0 0 0 0

0 0 0 0 • — Р 1 — г —ч 0 0

0 0 0 0 0 —Р 1 — г —ч —ч

0 0 0 0 0 0 —Р 1 — г —г

0 0 0 0 .. 0 0 0 —Р 1 — Р

а0 0

а1 0

«2 0

ат—2 = 0

ат—1 0

ат 0

ат+1 _ 0

а

а

а

X

Вычеркнем первую строчку и добавим условие нормировки а0 + а1 + ... + ат + ат + 1 = 1:

- р 1 — г —ч 0 . 0 0 0 0 0 ' ' а0 ' 0'

0 — Р 1 — г —Ч 0 0 0 0 0 а1 0

«2 0

0 0 0 0 • — р 1 — г —ч 0 0

0 0 0 0 0 —Р 1 — г —ч —ч ат—2 0

0 0 0 0 0 0 —Р 1 — г —г ат—1 0

0 0 0 0 0 0 0 —Р 1 1 Р ат 0

1 1 1 1 . 1 1 1 1 1 ^ ат+1 _ 1

Найдем ат + 1 по формуле Крамера: а столбцу:

т + 1 = Дт + 1 / Д. Разложим определитель Дт + 1 по последнему

^т+1 —

—р 1 — г —ч 0 .. 0 0 0 0 0

—р 1 — г —ч 0 .. 0 о О О

0 —р 1 — г —ч .. 0 0 0 0 0

0 —р 1 — г —ч 0 0 0 0

0 0 0 0 .. • — р 1 — г —ч 0 0

— 0 0 0 0 • — р 1 — г — ч 0

0 0 0 0 .. 0 —р 1 — г —ч 0

0 0 0 0 0 —р 1 — г —а

0 0 0 0 .. 0 0 —р 1 — г 0

0 0 0 0 0 0 — 1 1

0 0 0 0 .. 0 0 0 —р 0

0 0 0 0 .. 0 1 О о

1 1 1 1 .. 1 1 1 1 1

= (-р)

т+1

Для вычисления Д прибавим к первой строке строки с номерами 2, ..., т, ко второй — с номерами 3, ..., т и т. д. Учитывая равенство р + д + г = 1, получаем

—р 1 — г —Ч 0 .. 0 0 0 0 0 —Р Ч 0 0 . 0 0 0 0 0

0 —Р 1 — г —Ч •• 0 0 0 0 0 0 —Р Ч 0 . 0 0 0 0 0

0 0 0 0 .. • — р 1 — г —Ч 0 0 0 0 0 0 . • —Р Ч 0 0 0

0 0 0 0 .. 0 —Р 1 — г —Ч —Ч 0 0 0 0 . 0 —Р Ч 0 0

0 0 0 0 .. 0 0 —Р 1 — г —г 0 0 0 0 . 0 0 —Р Ч Ч

0 0 0 0 .. 0 0 0 —Р 1 1 Р 0 0 0 0 . 0 0 0 —Р 1 1 Р

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

1 1 1 1 .. 1 1 1 1 1 1 1 1 1 . 1 1 1 1 1

Рассмотрим случай р Ф q. Умножим первый столбец на q/p и прибавим ко второму столбцу, затем умножим второй столбец на q/p и прибавим к третьему. Продолжим эту операцию до столбцов с номерами т и т + 1. Потом столбец с номером т умножим на q/p и прибавим к столбцу с номером т + 2. Тогда

—р 0 0 0 . 0 0 0 0 0

0 —р 0 0 . 0 0 0 0 0

0 0 0 0 . • — р 0 0 0 0

0 0 0 0 . 0 —р 0 0 0

0 0 0 0 . 0 0 —р 0 0

0 0 0 0 . 0 0 0 —р 1 1 р

1 s2 ^ . ■ sm-2 ^—1 sm sm+1 sm+1

где — сумма геометрической прогрессии:

л£—1

—1

—1

Умножим столбец с номером т + 1 на (1 - р)/р и прибавим к столбцу с номером т + 2, после чего получим диагональную матрицу, поэтому окончательно определитель

1 — Р1

А — в

т+1

(—Р)т+1 —

т+1

—1

—1

-(—р)т+1 —

т+1

—1

Тогда

ат+1 '

хт+1

Ч — Р

Ч — Р

-(—Р)

т+1

т+1

—1

Если д = р, то si будет суммой арифметической прогрессии и si = i. Тогда

п - Р

^т+1 -, •

т + 1

Окончательно получаем

ат+1

я—р

, т+1

я_ — 1

і р.

р

+ 9 т + 1

я — р-

(*)

Последовательное представление очередей

Постановка задачи.

Рассмотрим ге FIFO-очередей, расположенных в быстрой памяти размером т. Для последовательного представления каждой очереди необходимо выделить ki единиц памяти, где k1 + ... + + kn = т. Если очередь занимает всю предоставленную ей память, то все последующие элементы, поступившие в нее, отбрасываются до тех пор, пока не появится свободная память.

Рассмотрим очередь с номером i. Вероятность того, что ее длина останется прежней, будет

П

П - г + Е (Pj + Яj)- 1-Рь-Я1-j-1,j^i

*

В этом случае долю времени Р1, которое процесс проводит в состоянии «сброса хвоста», для ^й очереди можно вычислить по формуле (*). Тог-

да общая доля времени, проведенного в состояниях «сброса хвоста»:

1-1

Задача заключается в том, чтобы минимизировать долю потерянных элементов при переполнении какой-либо из очередей. Другими словами, необходимо определить такие значения ^, i = = 1, 2, ..., п, чтобы доля времени, проведенного в состояниях «сброса хвоста», была минимальной.

Случай равных вероятностей.

Рассмотрим случай, когда р1 = Тогда доля

времени, проведенного в состояниях «сброса хвоста», равна

і—1 і

Таким образом, необходимо найти

п

, Рі

Ш1П ---

к-1 +.. .+кп —т,—і к, +1

^ Рі ^ к; +1'

дим

п

^ Рі ^ к, + 1'

Рассмотрим функцию

п—1

^ к..к,-1) -Е утг + ,

;=1к+1 т-Е ,-1 к +1

и найдем ее минимум при условии ^ > 0, i = = 1, 2, ..., ге-1, ^ + ... + kn-l < т. Функция F(kl, ^_1) дважды непрерывно-дифференцируема на рассматриваемом множестве:

77/ р1 | ри

£ь. —-----7ГП-------------77 ;

№+1)2 т-е::>^1)2

2 Рі

Т?! > ____

- ,, 3

2 рп

л+1)" т-^к,+1

3 ’

Т?!! ___

V,. - ■

2 рп

Найдем точку, подозрительную на экстремум, из условия Fк,. (к,кп—1) — 0:

Рі _ Рп

Г, 1 < і < п — 1.

Введем новые переменные у1 = ki + 1. Для каждого i извлечем квадратный корень из обеих частей уравнения. Учитывая, что обе части неотрицательные, получаем

- 4рП

1 < і < п — 1.

Рассмотрим уравнения при і = 1 и при і = 2:

Тл _

и \—'П—1

У1 т + п — Т 1—1 Уі

4р2 — 4рП

у2 т + п — Т 1=1 Уі

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Вычтем второе уравнение из первого:

Получаем

— 0.

4р1 4р2

Уі У2

— Уі4р2 У 2 — /=^~ •

ЯР1

Аналогично выразим остальные переменные ^ через у1:

Уі4рЇ

Подставим в уравнение при і = 1:

Найдем у1:

Уі — -Уі

2 < і < га — 1.

4рП

Уі

и—і

Уі —

I-- / ,

т 1—1

(т + п)^[р

ТП—^

ЕТл

Получаем точку, подозрительную на экстремум:

к* — —1, 1 < і < п — 1.

‘ т—^ ~ <

Покажем, что эта точка является точкой минимума. Для этого по критерию Сильвестра нужно показать, что

. * т * ч т * ч -Г-.П ✓ т * т *

(к*...Ап—1) (к*.Ап—1) ... (к..Ап—і)

(А*...АП—1) К'2кг (кІ-,кІ_і) ... F4/Аn-1 (А1*.АП—1)

, * , *

> 0, 1< і < га — 1.

(к1,., к*—1) Fk2:kn-1 (к!.Ап*—1) ... (к*,., к*—1)

Введем обозначения

2 Рп _ А і ^ р II 2рі , 2 рл

- — I ^ ]. ркк —

77'' __

-

т

-Е п^+1

кікі з

(к +1)3

-е +1

= А + В.

Очевидно, что А > 0 и Ві > 0. Покажем, что определитель Д > 0, где

А + В А ... А

А; —

А А + В2 ... А

А А ... А + В;

, і >1.

По методу математической индукции:

1) база индукции i = 1: Д1 = А + В1 > 0;

2) пусть верно при i = ];

3) докажем при i = ] + 1:

А + В А ... А А

А А + В2 ... А А

д;+і -

А

А

А

А

А + В А А А

А А + В2 А А

А А . А + Ву А

А А А А

А + В А

А

+ В:

j+1

А + В А А 0

А А + В2 А 0

А А .. А + В 0

А А А В+1

і 0 А 0

0 В2 • А 0

— +

0 0 В А

0 0 0 А

А + В А А 0

А А + В2 А 0

А А .. А + В 0

А А А В+1

— АВі .. Ву + Ву*+іА: > 0.

Значит, точка (к*,к*—і) является единственной точкой минимума функции F(k1, ..., kn_1). Следовательно, в этой точке функция достигает своего наименьшего значения. Поскольку k■

и* и*

должны быть целыми, то значения % ,..., необходимо округлить до ближайшего целого и перебрать значения, удовлетворяющие условию k1 + ... + kn = т:

П—1

Ип — т — Е И* — т + п — 1 — і—1

— (т + п)Е г—1 4рІ = (т + п)4РП — і

Т,Пі—і4Рі Т,Пі—і4рі

Наименьшая доля времени, проведенного в состояниях «сброса хвоста»:

1

т + п

РР =у-^- = у

к ь+1 &

(Е пі=і4рі

ІРІ ^ Рі 1=1

т + п

Общий случай.

Введем обозначение

^т (А1’ Ап ) —

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Ш1П

-...+й„ =

Е р*(к1) І—1

где Zm — доля времени, которое процесс проводит в состоянии «сброса хвоста», при оптимальном разбиении памяти размером т между очередями; р) — доля времени, в течение которого происходит потеря элементов только для ^й очереди при размере памяти ki.

Рассмотрим рекуррентную формулу

%т (*1, • • •, *п ) = ^т-1 (*1, •*п ) _

(рНь ) - Р*(к1 +1))'

Начальное значение Z0 равно [по формуле (*)]

го (0,.... 0) = Е-^^_ = Еп

■ тах

1<Кл

<к_

Рі

— 1

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

Был реализован эффективный алгоритм решения задачи на основе предложенной модели динамического программирования, который за время О(тп) вычисляет оптимальное разбиение памяти и долю времени, проведенного в состояниях «сброса хвоста». Также была построена математическая модель этого процесса в виде случайного блуждания по целочисленному п-мер-ному параллелепипеду с вершиной в начале координат, ребрами, параллельными осям координат, и длинами ребер k1 + 1, ..., kn + 1. Гиперплоскости соответствуют состояниям «сброса хвоста». Была предложена нумерация состояний и на ее основе разработан алгоритм генерации соответствующей цепи Маркова и решения задачи с использованием результатов теории регулярных цепей Маркова. Этот метод решения задачи будет подробно изложен далее на примере анализа связанного представления очередей. Метод динамического программирования в данном случае приводит к более эффективному алгоритму.

Связанное представление очередей

При связанном представлении каждая очередь хранится в виде связанного списка, в кото-

ром 1/1-я часть памяти тратится на хранение указателей. Пусть Ш = m(1 - 1/1). В качестве математической модели рассмотрим блуждание по целочисленной п-мерной пирамиде с ребрами 0 < х1 < < Ш, 0 < х2 < Ш, ..., 0 < хп < Ши основанием х1 + х2 + ... + хп = Ш. Для каждого состояния (х1, х2, ..., хп) на плоскости х1 + х2 + ... + хп = Ш, т. е. когда вся память уже занята, введем состояние (х1;х2, ...,хп), соответствующее «сбросу хвоста». В это состояние можно попасть в случае попытки включить элемент в любую из очередей, когда вся память занята. Переход процесса из состояния (х1, х2, ..., хп) определяется по следующим правилам:

•)-

Рі

(. .., хі , . .., -

[(..., Хі +1,..., Xj, •), 0 < хі + . + хп < М;

!(•

,..., xj,...), хі +

(. . . , , . . . , Ху , . . .) -

- хп — М;

Чі

(. . ., Хі 1, . . ., Ху , . .), Хі < 0,

(. . . , Хі , . . . , Ху , . .), Хі ---- 0 ,

(. .., хі, . .., xj, ...)

(. .., хі , . .., х;, . .) -

>(. .., хі, . .., xj, . .), “>(. . ., Хі , . . ., Xj , . .);

Чі

(..., хі , ..., xj , ...)

(..., хі 1,..., xj,..хі > 0,

(..., хі,..., xj,..хі — 0,

(..., хі ,..., xj,. . ^ > (..., хі ,..., xj,..).

На плоскости х1 + х2 + ... + хп = М количество состояний «сброса хвоста»

(М + п — 1)!

С,

М

п+М—1

(п — 1)!М!

Перечислим все состояния области блуждания: (0, 0, 0, ..., 0, 0), (1, 0, 0, ..., 0, 0), ..., (М - 1, 0, 0, ..., 0, 0), (М, 0, 0, ..., 0, 0);

(0, 1, 0, ..., 0, 0), (1, 1, 0, ..., 0, 0), ..., (М - 2, 1, 0, ..., 0, 0), (М - 1, 1, 0, ..., 0, 0);

(0, М - 1, 0, ..., 0, 0), (1, М - 1, 0, ..., 0, 0);

(0, М, 0, ..., 0, 0);

(0, 0, 1, ..., 0, 0), (1, 0, 1, ..., 0, 0), ..., (М - 2, 0, 1, ..., 0, 0), (М - 1, 0, 1, ..., 0, 0);

(0, 1, 1, ..., 0, 0), (1, 1, 1, ..., 0, 0), ..., (М - 3, 1, 1, ..., 0, 0), (М - 1, 1, 1, ..., 0, 0);

(0, 0, М - 1, ..., 0, 0), (0, 0, М, ..., 0, 0);

(0, 0, 0, ..., 0, 1), (1, 0, 0, ..., 0, 1), ..., (М - 2, 0, 0, ..., 0, 1), (М - 1, 0, 0, ..., 0, 1);

(0, 1, 0, ..., 0, 1), (1, 1, 0, ..., 0, 1), ..., (Ш - 3, 1, 0, ...,

0, 1), (Ш - 2, 1, 0, ..., 0, 1);

(0, Ш - 2, 0, ..., 0, 1), (1, Ш - 2, 0, ..., 0, 1);

(0, Ш - 1, 0, ..., 0, 1);

(0, 0, 0, ..., 0, Ш).

Введем нумерацию этих состояний, начиная с 0. Для того чтобы построить матрицу переходных вероятностей, построим функцию F(X) = I,

X = (х,, х2, ..., хп), где X

1

, хп — текущие длины

очередей; I — номер состояния. Будем искать ее в виде

I х„

F(x1, ..., хп) = F(0, ..., 0, хп) + ^(0,

- F(0, ..., 0, хп)) + ... + ^(0, х2, х3,

- F(0, 0, х3, ..., хп-1, хп)) + ^(хх, х2, х3, ..., х

х„) - F(0,

''га-1

хп))’

"га-1, Хп) -■ х--Р хп) -«-Р

т. е. будем увеличивать значения аргументов, начиная с последнего, и вычислять, на сколько увеличится значение функции. Увеличение значения разности функций F(0, 0, ..., 0, хі, хі+1, ..., хп) - F(0, 0, ..., 0, 0, х;+1, ..., хп) зависит от номера і, от значения хі и от суммы хі+1 + ... + хп, т. е. от количества уже занятых ячеек памяти. Теперь пронумеруем состояния «сброса хвоста» таким образом, чтобы состоянию на плоскости х1 + х2 + . + + хп = М с меньшим номером соответствовало состояние «сброса хвоста» с меньшим номером.

На рисунке показан пример нумерации состояний при п = 2, М = 4. Для нахождения доли времени, проведенного в состояниях «сброса хвоста», необходимо найти предельный вектор а и просуммировать его компоненты с номерами от

)! (М + п — 1) (М + п — 1)!

до ----• В приведен-

(М +п п! М!

п! М!

(п — 1)! М!

ном примере необходимо найти сумму а15 + + а19.

+

■ Нумерация состояний при п = 2, М = 4

■ Таблица 1. М = 16, п = 5

г Р1 Р2 Р3 Р4 Р5 ?2 ?3 ?4 ?5 Р* 11 12 14 18

0 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.15 0.2273 0.1923 0.1786 0.1667

0 0.25 0.15 0.05 0.03 0.02 0.25 0.15 0.05 0.03 0.02 0.1208 0.2273 0.1923 0.1786 0.1667

0 0.3 0.03 0.15 0.1 0.05 0.05 0.03 0.05 0.04 0.03 0.61 0.6989 0.6923 0.6902 0.6886

0 0.05 0.2 0.05 0.04 0.03 0.3 0.2 0.15 0.1 0.05 0.01 0.012 0.0045 0.0027 0.0017

0 0.05 0.05 0.05 0.05 0.05 0.15 0.15 0.15 0.15 0.15 0.005413 0.0002506 0.000559 0.000113 0.000021

0 0.07 0.07 0.07 0.07 0.07 0.13 0.13 0.13 0.13 0.13 0.0249 0.0322 0.0168 0.0083 0.00395

■ Таблица 2. М = 16, п = 4

г Р1 Р2 Р3 Р4 ?1 ?2 ?3 ?4 Р* Р* Р2 11 12 14 18

0.2 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.08 0.08 0.1333 0.1143 0.1 0.089

0 0.44 0.02 0.02 0.02 0.44 0.02 0.02 0.02 0.1 0.06 0.1667 0.1429 0.125 0.1111

0 0.5 0.07 0.07 0.07 0.08 0.07 0.07 0.07 0.462 0.459 0.5964 0.5964 0.5964 0.5964

0 0.08 0.05 0.05 0.05 0.5 0.07 0.07 0.07 0.042 0.039 0.08 0.0677 0.0589 0.0517

0 0.15 0.08 0.05 0.02 0.35 0.2 0.1 0.05 0.0049 0.0061 0.0067 0.0022 0.00068 0.0000198

Численные результаты Был разработан комплекс программ для ЭВМ, который реализует вышеописанные алгоритмы нахождения доли времени, проведенного в состояниях «сброса хвоста». Приведем некоторые численные результаты. Сравним последовательное и связанное представление очередей с точки зрения доли времени, в течение которого происходят потери пакетов (табл. 1). В строке Р* указана минимальная доля времени, проведенного в состояниях «сброса хвоста», для последовательного представления. В строке 11 указана доля времени, проведенного в состояниях «сброса хвоста», для связанного представления, когда на связи тратится 1/2 часть памяти (размер информационной части равен размеру указателя), в строке 12 — когда на связи тратится 1/3 часть памяти (размер указателя равен 1/2 размера информационной части), в строке 14 — когда на связи тратится 1/5 часть памяти (размер указателя равен 1/4 информационной части), в строке 18 — когда на связи тратится 1/9 часть памяти (размер указателя равен 1/8 информационной части). На практике вероятности включения и исключения, которые считались известными, не всегда могут быть вычислены. В этом случае будет логичным разделить память поровну между всеми структурами данных в случае последовательного представления. В табл. 2 сравнивается связанное и последовательное представление в том случае, если память разделена поровну между очередями. В строке Р± указана доля времени, проведенного в состояниях «сброса хвоста», когда память разделена поровну между очередями, в строке /2 указана минимальная доля времени, проведенного в состояниях «сброса хвоста», когда память разделена оптимально. Строки 11, 12, 14, 18 такие же, как в табл. 1. Заключение Из приведенных таблиц видно, что связанное представление предпочтительнее использовать, если вероятности включения элемента в очереди меньше, чем вероятности исключения, и на связи тратится 1/3 часть памяти или меньше. В остальных случаях лучше использовать последовательное представление, даже если вероятностные характеристики очередей заранее неизвестны и разбиение памяти может быть неоптимальным. Работа выполнена при финансовой поддержке РФФИ, грант № 09-01-00330-а.

Литература 3. Боллапрагада В., Мэрфи К., Расс У. Структура операционной системы Cisco ЮS. — М.: Вильямс, 2002. — 208 с.

1. Кнут Д. Искусство программирования для ЭВМ. Т. 1. — М.: Вильямс, 2001. — 736 с. 2. Седжвик Р. Фундаментальные алгоритмы на С++. — Киев: Диасофт, 2001. — 688 с.

4. Соколов А. В. О распределении памяти для двух стеков // Автоматизация эксперимента и обработки данных: Сб. ст. / Карельский филиал АН СССР. Петрозаводск, 1980. С. 65-71. 5. Flajolet P. The evolution of two stacks in bounded space and random walks in a triangle // Lecture Notes 7. Аксенова Е. А., Соколов А. В. Оптимальное управление двумя параллельными стеками // Дискретная математика. 2007. № 1. С. 67-75. 8. Соколов А. В., Тарасюк А. В. Об оптимальном управлении циклическими FIFO-очередями // Системы управления и информационные технологии.

in Computer Science. 1986. Vol. 223. P. 325-340. 6. Louchard G., Schott R., Tolley M., Zimmermann P. Random walks, heat equation and distributed algorithms // Journal of Computational and Applied Mathematics. 1994. N 53. P. 243-274. 2005. № 3 (20). С. 29-33. 9. Аксенова Е. А. Оптимальное управление FIFO-очередями на бесконечном времени // Стохастическая оптимизация в информатике: Межвуз. сб. СПб.: СПбГУ, 2006. Вып. 2. С. 71-76.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

/

уважаемые авторы!

С сентября 2ОО9 г. основные элементы статей, размещенные на платформе РУНЭБ, индексируются в крупнейшей поисковой системе Интернета Google.

На сайте РУНЭБ (http://www.elibrary.ru) доступна новая услуга — «обсуждение статьи». Авторы и читатели теперь могут вступить в диалог и ответить на вопросы и комментарии друг друга.

i Надоели баннеры? Вы всегда можете отключить рекламу.